首页 百科知识 的预定义数据类型

的预定义数据类型

时间:2022-10-10 百科知识 版权反馈
【摘要】:在使用整数时,VHDL综合器要求用RANGE子句为所定义的数限定范围,然后根据所限定的范围来决定表示此信号或变量的二进制数的位数,因为VHDL综合器无法综合未限定的整数类型的信号或变量。通常情况下,实数类型仅能在VHDL仿真器中使用,VHDL综合器不支持实数,因为实数类型的实现相当复杂,目前在电路规模上难以承受。VHDL中惟一的预定义物理类型是时间。

3.6.1 VHDL的预定义数据类型

1)布尔(BOOLEAN)数据类型

程序包STANDARD中定义布尔数据类型的源代码如下:

img54

布尔数据类型实际上是一个二值枚举型数据类型,它的取值有FALSE和TRUE两种。综合器将用一个二进制位表示布尔型变量或信号。

例如,当a大于b时,在IF语句中的关系运算表达式(a>b)的结果是布尔量TRUE,反之为FALSE。综合器将其变为1或0信号值。

2)位(BIT)数据类型

位数据类型也属于枚举型,取值只能是1或0。位数据类型的数据对象,如变量、信号等,可以参与逻辑运算,运算结果仍是位的数据类型。VHDL综合器用一个二进制位表示BIT。在程序包STANDARD中定义的源代码是:

img55

3)位矢量(BIT_VECTOR)数据类型

位矢量只是基于BIT数据类型的数组,在程序包STANDARD中定义的源代码是:

img56

使用位矢量必须注明位宽,即数组中的元素个数和排列,例如:

img57

信号a被定义为一个具有8位位宽的矢量,它的最左位是a(7),最右位是a(0)。

4)字符(CHARACTER)数据类型

字符类型通常用单引号引起来,如‘a’ 。字符类型区分大小写,如‘B’不同于‘b’ 。字符类型已在STANDARD程序包中作了定义,在VHDL程序设计中,标识符的大小写一般是不分的,但用了单引号的字符的大小写是有区分的。

5)整数(INTEGER)数据类型

整数类型的数代表正整数、负整数和零。在VHDL中,整数的取值范围是-21473647~+21473647,即可用32位有符号的二进制数表示。

在实际应用中,VHDL仿真器通常将INTEGER类型作为有符号数处理,而VHDL综合器则将INTEGER作为无符号数处理。在使用整数时,VHDL综合器要求用RANGE子句为所定义的数限定范围,然后根据所限定的范围来决定表示此信号或变量的二进制数的位数,因为VHDL综合器无法综合未限定的整数类型的信号或变量。

例如:

img58

这个语句规定整数a的取值范围是0~15共16个值,可用4位二进制数来表示,因此,a将被综合成由四条信号线构成的信号。

自然数是整数的一个子类型,非负的整数,即零和正整数;正整数也是整数的一个子类型,它包括整数中非零和非负的数值。它们在STANDARD程序包中定义的源代码如下:

img59

6)实数(REAL)数据类型

VHDL的实数类型类似于数学上的实数,或称浮点数。实数的取值范围为-1.0E38~+1.0E38。通常情况下,实数类型仅能在VHDL仿真器中使用,VHDL综合器不支持实数,因为实数类型的实现相当复杂,目前在电路规模上难以承受。

实数常量的书写方式举例如下:

img60

7)字符串(TRING)

字符串数据类型是字符数据类型的一个非约束型数组,或称为字符串数组。字符串必须用双引号标明。例如:“VHD”,“VERR GOOD”等。

8)时间(TIME)数据类型

VHDL中惟一的预定义物理类型是时间。完整的时间类型包括整数和物理量单位两部分,整数和单位之间至少留一个空格,如25 ms,30 ns。

时间类型一般用于仿真,而不用于逻辑综合。

STANDARD程序包中也定义了时间。定义如下:

img61

9)错误等级(SEVERITY_LEVEL)

在VHDL仿真器中,错误等级用来指示设计系统的工作状态,共有四种可能的状态值:NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)。在仿真过程中,可输出这四种值来提示被仿真系统当前的工作情况。其定义如下:

TYPE SEVERITY_LEVEL IS(NOTE,WARNING,ERROR,FAILURE);

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

我要反馈