Verilog参数化与连接操作符{}



`define ND 16

parameter N = 16

localparam NX = N-1;    //内部参数使用localparam 定义


对一个16位的寄存器,对其进行初始化,现在有以下三种表达方式,

1 IMAX <= {N{1'b0}};         //OK
2 IMAX <= N'd0;                //编译错误ERROR:unexpected token: 'N'
3 IMAX <= `ND'd0;            //OK

4 IMAX <= {`ND{1'b0}};     //OK


编译结果:

ERROR:HDLCompilers:26 - "xx.v" line 2  unexpected token: 'N',

即第二行代码表示是有错误的,语法错误,注意避免。

第3行,使用宏定义,是正确的,


第1、4行两种形式,使用位连接运算符{}才正确,但是,1、4两行的赋值,外面的大括号{}必须有,否则也是错误的,即IMAX <= `ND{1'b0} 这样的赋值也是错误的。


经常在复位初始化中可能用到。使用看看。


你可能感兴趣的:(Verilog)