crazybird

【原创】数据位宽的定义原来还可以这么表示的

0
阅读(3637)

在Verilog HDL中,定义一个(MSB-LSB+1)位的变量或端口a格式如下所示:

reg [MSB:LSB] a;或者wire [MSB:LSB] a;或者input/inout/output [MSB:LSB] a;

其中,我们见得最多和用得最多的是MSB和LSB都是正整数。前段时间,不小心看到MSB和LSB可以用负数表示,于是用Verilog HDL写了个功能模块验证了一下,发现确实可以。举个例子,定义一个8位的无符号数,其中4位整数、4位小数,如下所示:

reg [7:0] cnt; //4位整数、4位小数

等价于

reg [3:-4] cnt;

这倒好了,有了这种写法后,当进行定点运算时,再也不用定义了一个变量后还要添加多少位整数、多少位小数的注释了。正数和0表示整数,负数表示小数,一看就知道多少位整数、多少位小数,很方便。再也不会因为这次忘了注释,下次翻看时忘记了多少位整数、多少位小数了。

Baidu
map