Verilog中parameter与define的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Verilog中parameter与define的区别
1.语法定义
parameter xx = yy;
`define xx yy
2. 作用范围
paremeter作用于声明的那个文件;`define从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效
3. 功能
状态机的定义可以用parameter定义,但是不推荐使用`define宏定义的方式,因为`define宏定义在编译时自动替换整个设计中所定义的宏,而parameter仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机混淆。

例如一个工程里面有两个module各包含一个FSM,如果设计时都有IDLE这个名称的状态,如果使用`define宏定义就会混淆起来,如果使用parameter则不会造成任何不良影响。

`define
一旦`define指令被编译,其在整个编译过程中都有效。

例如,通过另一个文件中的`define指令,定义的常量可以其他文件中调用。

直到遇到`undef。

parameter只在定义的文件是有效,在其它文件中无效。

For instance:
`define plus 3’d0
`define minus 3’d1
`define band 3’d2
`define bor 3’d3
`define oppo 3’d4
module test (
input [7:0] a,
input [7:0] b,
input [2:0] opcode,
output [7:0] out);
reg [7:0] rout;
always @(a or b or opcode)
case(opcode)
`plus:rout=a+b;
`minus:rout=(a>b)?b:a;
`band:rout=a&b;
`bor:rout=a|b;
`oppo:rou=~a;
default:rout=8’hxx;
case
assign out=rout;
endmodule。

相关文档
最新文档