两忘而化其道

parameter localparam `define的使用

0
阅读(2514)

parameter localparam `define的使用

——两忘而化其道(fei199311

昨天在看代码时,遇见了localparam这个参数定义的关键字,感觉不是太懂,所以就查了查,今天彬哥的书,发现他的书上也写了关于这三个参数定义的内容(P366),就这个内容写一个总结吧。


Verilog中可以用关键字parameter定义常数,其作用范围是一个module的内部。参数代表的是常数,不可以被赋值,即不能成为左值,但是每个参数值可以在module实例化的编译阶段被重新赋值或保持原始的赋值。通过模块实例化调用参数赋值或使用defparam语句可以改变参数值,这个过程叫做改写(覆盖)参数。


Verilog中也允许使用关键字localparam定义常数,其作用范围同parameter相同,都是module的内部,但是与parameter不同之处在于它定义的常量不能被修改。最常用的地方就是用于定义状态机的状态编码。


`define属于Verilog提供的编译指令,用于文本宏定义,其使用的一般形式是[`define标识符(宏名) 字符串(宏内容)],其作用范围可以跨模块。在编译阶段,当编译器遇到`<宏名>时,使用预定义的宏文本进行替换。在使用预定义的常数或文本宏时,要注意在宏名前加上“`”,这个符号是键盘左上角Esc键正下方的那个键。注意:宏定义不是Verilog语句,其后不需要分号“;”结尾;宏定义要在一行内进行。


建议:在使用parameterlocalparam`define时,参数名(宏名)使用大写,与其他的小写的变量名相区别。

Baidu
map