大学时,学过一段时间FPGA编程,但是后来一直没有碰过,本来以为温习起来应该很快,但是一做才发现,基本全忘完了,又得重新学习,于是把学习过程中的笔记记下来。
一、TestBench学习:testbench用来测试和验证自己的模块功能是否正确,以前一直认为直接用FPGA开发软件产生一些激励即可仿真,但是实际上对于大型工程,这些就显得力不从心了!因此应该学会自己编写testbench来测试自己的模块是否正确;
一般简单testbench:激励的产生、复位信号的产生、或者其他测试激励的产生。
1、时钟的产生:
对于Verilog 可以使用initial语句和always语句,下面分别写下:
'timescale 1ns/1ps //时间单位为1ns,时间精度为1ps
parameter PERIOD=20;//周期为20ns
initial begin//使用initial语句
clk=0 ;
forever
#(PERIOD/2) clk=~clk ;
end
always begin//always语句单元是顺序执行的
#(PERIOD/2) clk=0 ;//
#(PERIOD/2) clk=1 ;//注意这里使用阻塞赋值啊
end
2、复位信号的产生
这里使用任务,来复用复位信号的产生
initial begin
reset_task(100) ;
end
task reset_task ;
input[15:0] wait_time ;
begin
Rst_n=1 ;
#wait_time ;
Rst_n=0 ;
end
endtask ;