ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Verilog 学习日志#第三天

2021-11-05 14:58:37  阅读:140  来源: 互联网

标签:reset clk clear 第三天 激励 Verilog 信号 设计 日志


设计的仿真与测试

一个设计一旦完成就应当对它进行测试。通过编写激励块,输入激励信号然后检测结果可以检测一个设计功能的正确性。将激励块和设计块分离开来是设计者应该养成的一个好习惯。通常测试块也被称为测试凳(Test Bench),应用不同的测试凳可以对一个设计块进行全方位的测试。激励信号的应用方式大致被分为两种。

第一种,在激励块内调用设计块,并且直接驱动设计块的信号。在图中,激励块成为顶层模块,对输入信号clk 和reset 进行操作,检测并显示输出信号q。
激励块调用设计块示意图
第二种,在顶层的假模块内同时调用激励块和设计块,激励块和设计块仅通过接口相互作用,如下图所示。激励模块驱动信号d_clk 和d_reset,这两个信号与设计块的两个端口clk 和 reset分别相连。它也检测并显示输出信号c_q,该信号与设计块的输出端口q相连。顶层假模块的功能仅仅是为了调用设计块和激励块。
顶层假模块内调用激励块和设计块
下面对昨天学习的行波计数器进行仿真测试。
昨天行为级描述的代码为

module cnt_4bit (q,clear,clock);
	output [3:0] q;
	input clear,clock;

	reg [3:0] q;

	always @(posedge clear or negedge clock)
	begin
		if (clear)
			q=4'd0;
		else
			q=(q+1) % 16;
	end
endmodule

现在改为

module cnt_4bit (q,clear,clock);
	output [3:0] q;
	input clear,clock;

	reg [3:0] q;
	
	always @(posedge clear or negedge clock)
	begin
		if (clear)
			q=4'd0;
		else
			q=(q+1) % 16;
	end
endmodule

现在必须写出激励块以检测行波计数器功能是否正确。在此,必须控制信号clk和reset以检测行波计数器的计数功能和异步复位机制是否都正确。我们将使用下图所示的波形来检测设计块。图中显示了输入信号clk,reset以及4bit的输出信号q。时钟信号clk的时钟周期为10个时间单位;复位信号 reset从0到15保持为高,然后变低,直到195再次变高,至205后变低,输出信号q的范围是从0到15。
激励和输出波形示意图

下面就准备写出激励块,生成上图中的波形。我们将使用如最开始的图所示的激励方式。在此不要过多考虑Verilog 的语法,将精力集中在激励模块是如何调用设计模块上。

编写激励块

module stimulusl;
reg clk;
reg reset;
wire [3:0] q;
cnt_4bit r1(q,reset,clk);   //调用设计块cnt_4bit生成实例r1

//控制信号clk以驱动设计块,时钟周期设为10个时间单位
initial
	clk=1'b0;	//设置clk到0
always
	#5 clk=~clk;
	
//控制复位信号reset以驱动设计块,0~15为高,15~195为低,195~205为高,然后变低
initial
begin
	reset=1'b1;
	#15 reset=1'b0;
	#180 reset=1'b1;
	#10 reset=1'b0;
	#20 $finish;
end

//监视输出
initial
	$monitor($time,"output q=%d,q);
endmodule

下面就可以运行仿真器了,以检测设计块功能的正确性。仿真的输出结果如图所示。
在这里插入图片描述

标签:reset,clk,clear,第三天,激励,Verilog,信号,设计,日志
来源: https://blog.csdn.net/weixin_43756556/article/details/121161312

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有