Verilog中parameter与define的区别

Verilog中parameter与define的区别  

1.语法定义

 parameter xx = yy; 

define xx yy  

2. 作用范围 

paremeter作用于声明的那个文件;

define从编译器读到这条指令开始到编译结束都有效,或者遇到undef命令使之失效  

3. 功能 

状态机的定义可以用parameter定义,但是不推荐使用define宏定义的方式,

因为define宏定义在编译时自动替换整个设计中所定义的宏,

而parameter仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机混淆。

例如一个工程里面有两个module各包含一个FSM,如果设计时都有IDLE这个名称的状态,

如果使用define宏定义就会混淆起来,如果使用parameter则不会造成任何不良影响。

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

你可能感兴趣的:(Verilog)