verilog中reg和integer的区别及举例
发布网友
发布时间:2022-05-01 01:21
我来回答
共1个回答
热心网友
时间:2022-06-21 20:43
integer类型也是一种寄存器数据类型,integer类型的变量为有符号数,而reg类型的变量则为无符号数,除非特别声明为有符号数,还有就是integer的位宽为宿主机的字的位数,但最小为32位,用integer的变量都可以用reg定义,只是对于用于计数更方便而已。reg,integer,real,time都是寄存器数据类型,定义在Verilog中用来保存数值的变量,和实际的硬件电路中的寄存器有区别
今天看代码时遇到了integer,只知道这是个整数类型,可详细的内容却一窍不通,查看了资料---《verilog数字VLSI设计教程》。其中是这么写到的:
大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做有符号数。通常,real类型是不可综合的。
假设在没有溢出的情况下,不管是无符号数还是有符号数,它们都是二进制的一串数值而已;而当这个值被当做某种类型比较时:又符号数的MSB被用来表示这个数字的符号,而无符号数的MSB则是位权最高的那一位。无论采用什么样的二进制格式,一个无符号数永远也不能成为负值。