parameter和defparam的用法
1.parameter
(1)“C语言中的宏定义”功能
对于parameter来说,在我们的verilog语言中,在写.v的文件中,对于同一个变量多次出现,每次都是同时改变这些变量,可以使用parameter来替换变量值,类似于C语言中的宏定义
parameter Count=1000_000;
等价于C语言中#define Count 1000000
2.defparam
(1)优化testbench的仿真时间
我们在进行仿真时,延时0.5s对于仿真来说会比较耗费时间,一般常在testbench中缩短延时时间来更加专注与电平的变换,方便我们验证程序的可行性,所以在不改变原文件.v的前提下,我们经常在testbench中使用defparam
.v原文件->面向实际生活设计
//(module My_timer)
parameter Max_Count = 20_000_000-1;//减一因为Count从最大变到最小要一个时间周期 实际:0-20_000_000-1
always@(posedge Clk or negedge Rst)if(!Rst)Count<=0;else if(Count==Max_Count)Count<=0;else Count<=Count+1'b1;
//上述设计实现一个计数器,但是在仿真程序中Max_Count的值过大,很久才能看到结果,故在testbench文件中改为:
defparam My_timer.Max_Count=2000-1;//写法一
My_timer#(.Max_Count(2000-1))My_timer_inst0(...)//写法二