目录
3.1 `define与parameter(localparam)的区别
1、语法(声明)
`define data 8’d14
parameter data = 8‘d14;
localparam data = 8‘d14;
使用:
define定义的变量用`引用,例如:`data;
而parameter和localparam定义的变量直接调用就好,例如:data。
2、作用域
`define(宏定义):对同时编译的多个文件起作用。从编译器读到这条指令开始到编译结束都有效,直至遇到重新定义为止;
parameter:本module内有效的定义,可用于参数传递;
localparam:本module内有效的定义,不可用于参数传递。
3、举例具体说明
3.1 `define与parameter(localparam)的区别
在使用状态机时候区别挺大的。状态机的定义可以用parameter (或者localparam)定义,但是不推荐使用`define 宏定义的方式,因为'define 宏定义在编译时自动替换整个设计中所定义的宏,而parameter(或者localparam) 仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机混淆。例如一个工程里面有两个module 各包含一个FSM,如果设计时都有IDLE 这一名称的状态,如果使用'define 宏定义就会混淆起来,如果使用parameter 则不会造成任何不良影响。
一旦`define指令被编译,其在整个编译过程中都有效。例如,通过另一个文件中的`defin