视频讲解: https://www.bilibili.com/video/BV1HK411L76G.
1.Testbench基本结构
PS:通常Testbench没有输入与输出端口,通常应包括信号或变量定义,产生激励波形语句,例化设计模块,监控和比较响应输出语句。
//Testbench基本结构
module test bench;
//信号或变量定义声明
//使用initial或always语句来产生激励波形
//例化设计模块(我们主要做的东西)
//监控和比较输出响应
endmodule
2.常用产生激励描述方式
2.1产生时钟的几种方式(注意代码的符号改为中文符号才能用)
1、使用initial方式产生占空比为50%的时钟
initial
begin
clk=0;
#delay;//延时一段时间
forever
#(period/2)clk=~clk;//延时半个周期翻转
end
period为一个周期,自己定义大小,后面的也是一样。
2、使用always方式
initial
clk=0;
always //反复
#(period/2)clk=~clk;
3、使用repeat市式产生确定数目的时钟脉冲
initial
begin
clk=0;
repeat(6)//以下语句执行6次
#(period/2)clk=~clk;
end
3个周期。
4、产生占空比非50%的时钟
initial
clk=0;
always
begin
#3 clk=~clk;//#N:表示等待N个系统时间单位
#2 clk=~clk;
end
2.2产生复位信号的几种方式
1、异步复位(以下为高电平有效)
initial
begin
rst=1;//复位信号
#100;//经过100个时间单位
rst=0;
#500;
rst=1;
end
举例:
initial
begin
rst=0;//复位信号
#100;//经过100个时间单位
rst=1;
#20;
rst=1;
end
PS:多个脉冲也是一样的写法,注意时间间隔就行了。
2、同步复位1
initial
begin
rst=1;//赋初值
@(negedge clk);//等待时钟下降沿,“@”--“等待”,“negedge clk”———“时间下降沿”
rst=0;
#30;//等待30个时间单位
@(negedge clk);//等待时钟下降沿
rst=1;
end
PS:1)本来在50rst置为1的但是后面有“等待一个时间下降沿”。
2)时间上升沿posedge clk 依葫芦画瓢。
3、同步复位2
initial
begin
rst=1;
@(negedge clk);//等待时钟下降沿
repeat(3)@(negedge clk);//经过3个时钟下降沿
rst=1;
end
咱们有货再见!