verilog学习 (五)

这次看的东西很简单,是(参数化模块 <中式翻译>)Parameterized Modules.http://www.asic-world.com/verilog/para_modules1.html 这种东西在别的语言中也很常见c语言中就用宏,c++中使用参数模版,vhdl中使用GENERIC来达到程序在编译过程的参数化.

verilog中使用还是很简单的.

直接使用关键字parameter来进行声明常量在使用模块时可以对常量进行覆盖.

覆盖默认常量有三种方法.

1.使用defparameter

2.使用#()

3.使用带名字的#(),这种方法是在verilog 2001中加进来的,好处是不容易出错,坏处当然是多打很多字母了.

代码如下:

module secrect_number;
parameter my_secrect = 0;

initial
begin
$display("My secret number is %d",my_secrect);
end
endmodule

//method 1
module defparam_example();
defparam U0.my_secrect = 11;
defparam U1.my_secrect = 22;

secrect_number U0();
secrect_number U1();
endmodule

//method 2
module param_overide_instance_example();

secrect_number #(11) U0();
secrect_number #(22) U1();
endmodule

//method 3
module param_overide_instance_example1();

secrect_number #(.my_secrect(11)) U0();
secrect_number #(.my_secrect(22)) U1();
endmodule

今天比较偷懒了.好了看龙珠啦.....

你可能感兴趣的:(Verilog)