【Verilog HDL】FPGA-testbench基础知识(1)

本文详细介绍了如何为一个LED闪烁模块编写Verilog测试激励文件,包括设置timescale仿真单位和精度,定义宏、模块名、输入输出信号,实例化模块,以及使用initial和always语句生成激励信号。
摘要由CSDN通过智能技术生成
//------<testbench文件的基本结构>------

//`timescale 仿真单位/仿真精度
`timescale xx/xx

//仿真文件模块名
module xx_tb;
	
	//定义声明信号或变量
	...
	...
	
	//例化设计模块
	...
	...
	
	//使用always语句产生激励波形
	...
	...
	
	//使用initial产生激励波形
	initial begin
		...
		...
		...
		$stop;
	
	end

endmodule


🎈举个例子详细说明一下:
目前已经编写好了一个led闪烁的模块,我们需要对该模块进行测试,以确保模块设计的正确性,模块代码如下:

led_flash.v:

//------<模块代码>------
module led\_flash(
	input 		Clk;
	input 		Rst_n;
	output reg	led
);
	
	//定义led状态
	parameter led_on  = 1'b0;
	parameter led_off = 1'b1; 
	
	//定义计数器寄存器
	reg [24:0]cnt;
	
	//定义计数器参数
	parameter cnt_max = 24'd24_999_999;
	parameter cnt_min = 24'd0;
	parameter cnt_add = 1'b1;
	
	//计数器
	always@(posedge Clk or negedge Rst_n)begin
		if(!Rst_n)
			cnt <= cnt_min;
		else if(cnt == cnt_max)
			cnt <= cnt_min;
		else
			cnt <= cnt + cnt_add;
	end
	
	//led
	always@(posedge Clk or negedge Rst_n)begin
		if(!Rst_n)
			led <= led_off;
		else if(cnt == cnt_max)
			led <= ~led;
		else
			led <= led;
	end

endmodule


接下来根据上述模块编写测试激励文件。

3.1 声明仿真的单位和精度

`timescale时间刻度指令用来说明模块工作的时间单位时间精度,基本语句如下:

`timescale 时间单位/时间精度

时间单位和时间精度可以以秒、毫秒、纳秒、皮秒或飞秒作为度量,具体数值可以选择1、10或100,如:

`timescale 10ns/1ns

该语句定义了当前模块中的仿真时间单位是10ns,仿真精度是1ns,语法上要求时间精度必须小于等于时间单位,即前面的数值要大于等于后面的数值。

测试模块中经常使用 #号 延迟来生成信号,例如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值