27,verilog中整数运算的位宽和符号规则

微信公众号:FPGA动力联盟

博主微信号:fpga_start

微信公众号原文链接:verilog中整数运算的位宽和符号规则

在verilog中,整数(integer number)可以用作表达式中的操作数。一个整数可以表示为:

1, 一个无位宽(size)、无基数(base)的整数(例如:12,默认32bit)

2, 一个无位宽、有基数的整数(例如:'d12、'sd12,默认32bit)

3, 一个有位宽、有基数的整数(例如:16’d12、16’sd12,16bit)

下面的例子大家都能理解吗?不了解的话,请继续下滑!

integer IntA;IntA = -12 / 3; // The result is -4. -12为32bit有符号负数,3为32bit有符号正数IntA = -’d 12 / 3; // The result is1431655761. -’d 12为32bit无符号数,3为32bit有符号正数IntA = -’sd 12 / 3; // The result is -4. -’sd12为32bit有符号负数,3为32bit有符号正数IntA = -4'sd 12 / 3; // The result is 1. -4’sd12为4bit有符号正数4,3为32bit有符号正数

此示例展示了verilog的四种书写表达式“负12 除以 3”的方式。我们要特别注意:-12 和 -'d12 虽然都是以相同的二进制补码的形式表示,但是在verilog表达式中,-'d12 被认为是无符号数,而-12被认为是有符号数。

总结:没有基数base说明符的整数的负值应与具有基数说明符的整数的含义不同,没有基数说明符的整数应看作是有符号数,而带有无符号基数说明符的整数应看作为无符号数。

参考文献:

1,IEEE verilog-2001标准

上一篇:访问其伪造属性操作


下一篇:力扣 1342. 将数字变成 0 的操作次数