1、assign
assign为连续赋值语句,通常用于组合逻辑电路,例如:
assign led_out = (key_in == 0)? a : b;
2、timescale
例如:
`timescale 1ns/1ps
定义了一个仿真精度。
'1ns'为仿真步进,例如设置100的延时'#100',则实际延时100*1ns。
'1ps'为仿真精度,设定延时,可以精确到小数点后两位,例如'#100.001'。
'`'为键盘左上角的按键
3、激励信号与检测信号
在testbench中,激励信号定义为reg型,检测信号定义为wire型。
4、initial块
initial块可以理解为一个初始化块。
在initial的起始位置的语句在0时刻即开始执行,之后如果遇到延时,则延时之后执行接下来的语句。
如果initial中有多条语句,则置于begin…end之间。
例如:
initial begin
signal_a = 0;signal_b = 0;signal_c = 0;
#100; //延时100*1ns
signal_a = 0;signal_b = 0;signal_c = 1;
#100;
signal_a = 0;signal_b = 1;signal_c = 0;
#100;
signal_a = 0;signal_b = 1;signal_c = 1;
#100;
signal_a = 1;signal_b = 0;signal_c = 0;
#100;
signal_a = 1;signal_b = 0;signal_c = 1;
#100;
signal_a = 1;signal_b = 1;signal_c = 0;
#100;
signal_a = 1;signal_b = 1;signal_c = 1;
#200;
$stop; //使用系统函数stop将系统停止下来
end
5、在testbench中例化待测模块
例如:
led_test led_test0( //设置例化名称为led_test0
.a(signal_a),
.b(signal_b),
.key_in(signal_c),
.led_out(led)
);
将待测试模块的信号端口与testbench中的端口进行连接
'.'之后紧跟的是待测试模块端口
'()'内的是testbench中的端口
待测试模块定义好后,可以多次在testbench中实例化,例如:
led_test led_test1( //设置例化名称为led_test1
.a(),
.b(),
.key_in(),
.led_out()
);
标签:led,入门,FPGA,signal,initial,001,延时,testbench,100
From: https://www.cnblogs.com/little55/p/17834498.html