3.6.1 VHDL的预定义数据类型
1)布尔(BOOLEAN)数据类型
程序包STANDARD中定义布尔数据类型的源代码如下:
布尔数据类型实际上是一个二值枚举型数据类型,它的取值有FALSE和TRUE两种。综合器将用一个二进制位表示布尔型变量或信号。
例如,当a大于b时,在IF语句中的关系运算表达式(a>b)的结果是布尔量TRUE,反之为FALSE。综合器将其变为1或0信号值。
2)位(BIT)数据类型
位数据类型也属于枚举型,取值只能是1或0。位数据类型的数据对象,如变量、信号等,可以参与逻辑运算,运算结果仍是位的数据类型。VHDL综合器用一个二进制位表示BIT。在程序包STANDARD中定义的源代码是:
3)位矢量(BIT_VECTOR)数据类型
位矢量只是基于BIT数据类型的数组,在程序包STANDARD中定义的源代码是:
使用位矢量必须注明位宽,即数组中的元素个数和排列,例如:
信号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综合器无法综合未限定的整数类型的信号或变量。
例如:
这个语句规定整数a的取值范围是0~15共16个值,可用4位二进制数来表示,因此,a将被综合成由四条信号线构成的信号。
自然数是整数的一个子类型,非负的整数,即零和正整数;正整数也是整数的一个子类型,它包括整数中非零和非负的数值。它们在STANDARD程序包中定义的源代码如下:
6)实数(REAL)数据类型
VHDL的实数类型类似于数学上的实数,或称浮点数。实数的取值范围为-1.0E38~+1.0E38。通常情况下,实数类型仅能在VHDL仿真器中使用,VHDL综合器不支持实数,因为实数类型的实现相当复杂,目前在电路规模上难以承受。
实数常量的书写方式举例如下:
7)字符串(TRING)
字符串数据类型是字符数据类型的一个非约束型数组,或称为字符串数组。字符串必须用双引号标明。例如:“VHD”,“VERR GOOD”等。
8)时间(TIME)数据类型
VHDL中惟一的预定义物理类型是时间。完整的时间类型包括整数和物理量单位两部分,整数和单位之间至少留一个空格,如25 ms,30 ns。
时间类型一般用于仿真,而不用于逻辑综合。
STANDARD程序包中也定义了时间。定义如下:
9)错误等级(SEVERITY_LEVEL)
在VHDL仿真器中,错误等级用来指示设计系统的工作状态,共有四种可能的状态值:NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)。在仿真过程中,可输出这四种值来提示被仿真系统当前的工作情况。其定义如下:
TYPE SEVERITY_LEVEL IS(NOTE,WARNING,ERROR,FAILURE);
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。