首页 百科知识 其他预定义标准数据类型

其他预定义标准数据类型

时间:2022-10-10 百科知识 版权反馈
【摘要】:如Synopsys公司在IEEE库中加入的程序包STD_LOGIC_ARITH中定义了如下的数据类型:无符号型、有符号型、小整型。在IEEE程序包中,UNMERIC_STD和NUMERIC_BIT程序包中也定义了UNSIGNED型及SIGNED型,NUMERIC_STD是针对于STD_LOGIC型定义的,而NUMERIC_BIT是针对于BIT型定义的。例如,十进制的8可以作如下表示:如果要定义一个变量或信号的数据类型为UNSIGNED,则其位矢长度越长,所能代表的数值就越大。如一个4位变量的最大值为15,一个8位变量的最大值则为255,0是其最小值,不能用UNSIGNED定义负数。

3.6.3 其他预定义标准数据类型

VHDL综合工具配的扩展程序包中,定义了一些有用的类型。如Synopsys公司在IEEE库中加入的程序包STD_LOGIC_ARITH中定义了如下的数据类型:无符号型(UNSIGNED)、有符号型(SIGNED)、小整型(SMALL _INT)。

在程序包STD_LOGIC_ARITH中的类型定义如下:

img65

如果将信号或变量定义为这几个数据类型,就可以使用本程序包中定义的运算符。在使用之前,请注意必须加入下面的语句:

img66

UNSIGNED类型和SIGNED类型是用来设计可综合的数学运算程序的重要类型,UNSIGNED用于无符号数的运算,SIGNED用于有符号数的运算。在实际应用中,大多数运算都需要用到它们。

在IEEE程序包中,UNMERIC_STD和NUMERIC_BIT程序包中也定义了UNSIGNED型及SIGNED型,NUMERIC_STD是针对于STD_LOGIC型定义的,而NUMERIC_BIT是针对于BIT型定义的。在程序包中还定义了相应的运算符重载函数。有些综合器没有附带STD_ LOGIC_ARITH程序包,此时只能使用NUMBER_STD和NUMERIC_BIT程序包。

在STANDARD程序包中没有定义STD_LOGIC_VECTOR的运算符,而整数类型一般只在仿真的时候用来描述算法,或作数组下标运算,因此UNSIGNED和SIGNED的使用率是很高的。

1)无符号数据类型(UNSIGNED TYPE)

UNSIGNED数据类型代表一个无符号的数值,在综合器中,这个数值被解释为一个二进制数,这个二进制数的最左位是其最高位。例如,十进制的8可以作如下表示:

img67

如果要定义一个变量或信号的数据类型为UNSIGNED,则其位矢长度越长,所能代表的数值就越大。如一个4位变量的最大值为15,一个8位变量的最大值则为255,0是其最小值,不能用UNSIGNED定义负数。以下是两个无符号数据定义的示例:

img68

其中,变量var有11位数值,最高位是var(0),而非var(10);信号sig有6位数值,最高位是sig(5)。

2)有符号数据类型(SIGNED TYPE)

SIGNED数据类型表示一个有符号的数值,综合器将其解释为补码,此数的最高位是符号位。

例如:

img69

若将上例的var定义为SIGNED数据类型,则数值意义就不同了,如:

img70

其中,变量var有11位,最左位var(0)是符号位。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈