外国产品设计网站,o2o电子商务网站,绵阳做网站的公司,常用的搜索引擎parameter能够定义一个常量
例如 parameter [7:0]A 8d123;
在仿真时我们可以用它来改变模块的参数#xff0c;而不会影响综合的结果。
考虑下面的模块#xff0c;输入时钟是clk#xff0c;频率为24MHz#xff0c;输出一个1Hz的方波驱动小灯让其闪烁
module test1(in…parameter能够定义一个常量
例如 parameter [7:0]A 8d123;
在仿真时我们可以用它来改变模块的参数而不会影响综合的结果。
考虑下面的模块输入时钟是clk频率为24MHz输出一个1Hz的方波驱动小灯让其闪烁
module test1(input clk,//24MHz的时钟output reg led
);
reg [25:0]cnt;
initial beginled 1b0;cnt 1b0;
end
always (posedge clk)beginif(cnt 26d11_999_999)begincnt 1b0;led ~led;end else begincnt cnt 1b1;end
end
endmodule
如果我们要对这个模块进行仿真因为计数值非常大所以需要仿真很长时间我们才会看到结果。
不妨对代码进行如下修改。用MAX这个常数替代11_999_999模块的行为没有任何改变。
module test1(input clk,output reg led
);
parameter [25:0]MAX 26d11_999_999;
reg [25:0]cnt;
initial beginled 1b0;cnt 1b0;
end
always (posedge clk)beginif(cnt MAX)begincnt 1b0;led ~led;end else begincnt cnt 1b1;end
end
endmodule
好了下面我们编写测试用例
timescale 1ns/1ps
module sim_test1();reg clk;wire led;initial beginclk 1b0;endalways #5 clk ~clk;test1 #(.MAX(10))UUT(.clk(clk),.led(led));
endmodule #(.MAX(10)) 这段代码就是对UUT这个实例中的长度临时进行了修改让仿真的时间缩短了。
又因为作为test1的顶层模块并没有变动所以不会改变配置到FPGA时的效果。当我们把配置文件下载到FPGA中时会发现led灯还是按照1Hz的频率在闪烁。