我是靠谱客的博主 健康哈密瓜,这篇文章主要介绍integer型变量的理解,现在分享给大家,希望可以做个参考。

转载:http://www.cnblogs.com/dangxia/archive/2012/03/10/2389685.html

今天看代码时遇到了integer,只知道这是个整数类型,可详细的内容却一窍不通,查看了资料---《verilog数字VLSI设计教程》。其中是这么写到的:

大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做有符号数。通常,real类型是不可综合的。

假设在没有溢出的情况下,不管是无符号数还是有符号数,它们都是二进制的一串数值而已;而当这个值被当做某种类型比较时:又符号数的MSB被用来表示这个数字的符号,而无符号数的MSB则是位权最高的那一位。无论采用什么样的二进制格式,一个无符号数永远也不能成为负值。

下面是一个和符号位有关的例子:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
reg[31:0] A; integer I; ... A=-1; I=-1;//both A and I hold 32'hffffffff // if(I>32'h0) $display("I is positive.") else $display("I is not positive");//Prints "I is not positive" if(A>32'h0) $display("A is positive");//Prints "A is positive" else $display("I is not positive");

                                     

==========================================================================================

转载:https://blog.csdn.net/liqiang9410/article/details/76983900 

integer类型也是一种寄存器数据类型,integer类型的变量为有符号数,而reg类型的变量则为无符号数,除非特

别声明为有符号数,还有就是integer的位宽为宿主机的字的位数,但最小为32位,用integer的变量都可以用reg定

义,只是用于计数更方便而已。reg,integer,real,time都是寄存器数据类型,定义在Verilog中用来保存数值的变

量,和实际的硬件电路中的寄存器有区别。

      大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做有符号数。

通常,real类型是不可综合的。

=========================================================================================

总结:integer型也是寄存器的一种,与reg型相比是符号数。位数为宿主机的字的位数,最小32位(故可不定义位数)

所以有例子:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module Voter7( input [6:0] voter; output reg pass ); reg [2:0] sum; integer i;//定义符号数i,并未定义位数 always@(vote)begin sum = 0; for(i = 0;i <= 6;i = i + 1) if(vote[i]) sum = sum + 1; else sum = sum if(sum[2]) pass = 1; else pass = 0; end endmoudle

最后

以上就是健康哈密瓜最近收集整理的关于integer型变量的理解的全部内容,更多相关integer型变量内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(82)

评论列表共有 0 条评论

立即
投稿
返回
顶部