module例化前的#()是什么意思?
时间:10-02
整理:3721RD
点击:
本人是新手,在下载的一些verilog代码中看到一个这样的现象,如:
dpram #(
.adr_width( 7 ),
.dat_width( 33 )
) tag_ram (
.clk ( clk ),
.adr0( wb_adr_set ),
.dout0( tag_load ),
.din0( tag_store ),
.we0( tag_we ),
.adr1( ls_tag_adr ),
.dout1( ls_tag_load ),
.din1( ls_tag_store ),
.we1( ls_tag_we )
);
module ddr_clkgen
#(
parameter phase_shift = 0,
parameter clk_multiply = 13,
parameter clk_divide = 5
) (
input clk,
input reset,
output locked,
output write_clk,
output write_clk90,
input ddr_clk_fb,
output read_clk,
input [2:0] rot
);
i2c_slave_model #(SADR) i2c_slave (
.scl(scl),
.sda(sda)
);
就是这个红色字体的部分,在module名之后,例化名之前的部分,不知道这个是什么意思,是在仿真的时候用,还是有其他含义?
望高手指点一下,或者给个说明的链接或资料,因不知道怎么搜索,所以在网上也没搜到资料,3Q!
dpram #(
.adr_width( 7 ),
.dat_width( 33 )
) tag_ram (
.clk ( clk ),
.adr0( wb_adr_set ),
.dout0( tag_load ),
.din0( tag_store ),
.we0( tag_we ),
.adr1( ls_tag_adr ),
.dout1( ls_tag_load ),
.din1( ls_tag_store ),
.we1( ls_tag_we )
);
module ddr_clkgen
#(
parameter phase_shift = 0,
parameter clk_multiply = 13,
parameter clk_divide = 5
) (
input clk,
input reset,
output locked,
output write_clk,
output write_clk90,
input ddr_clk_fb,
output read_clk,
input [2:0] rot
);
i2c_slave_model #(SADR) i2c_slave (
.scl(scl),
.sda(sda)
);
就是这个红色字体的部分,在module名之后,例化名之前的部分,不知道这个是什么意思,是在仿真的时候用,还是有其他含义?
望高手指点一下,或者给个说明的链接或资料,因不知道怎么搜索,所以在网上也没搜到资料,3Q!
verilog2001语法:参数的例化。
类似module的例化,按照name例化。
参数传递,和VHDL的generic类似
我也没有看懂,希望指教
yong_1789 说得对。一般在对端口进行参数配置的时候,用到parameter的时候需要用到#(),否则直接用parameter,编译时语法会报错。我也是昨天才知道这个问题的。
