`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} 这样的赋值也是错误的。
经常在复位初始化中可能用到。使用看看。