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