上述的4种数据类型可以作为预定义数据类型,放在现有的程序包中,供程序设计时共享,也可以由用户自己定义。VHDL的预定义数据类型都是在VHDL标准程序包STANDARD中定义的,在实际使用中,已自动包含在VHDL的源文件内,因而不必通过USE语句以显式调用。
(1)布尔(BOOLEAN)数据类型
程序包STANDARD中定义布尔数据类型的源代码如下:
布尔量是一个二值枚举量,只有真(TRUE)和假(FALSE)两种状态。它没有数量多少的概念,不能进行算术运算,只能用于关系运算和逻辑判断。若某个客体被定义为布尔量,则EDA工具对设计进行仿真时,自动地对其赋值情况进行核查。
(2)位(BIT)数据类型
位数据类型也属于枚举型,用来表示一个信号的值,取值只能是1或0。位数据类型的数据对象,如变量、信号等,可以参与逻辑运算,运算结果仍是位的数据类型。位通常用单引号来把它的值引起来。如TYPE BIT IS(‘0’,‘1’);
(3)位矢量(BIT_VECTOR)数据类型
位矢量只是基于BIT数据类型的数组,在程序包STANDARD中定义的源代码是
使用位矢量必须注明位宽,即数组中的元素个数和排列方式。
例如:
(4)字符(CHARACTER)数据类型
字符类型通常用单引号引起来,如‘A’。字符类型区分大小写,如‘B’不同于‘b’。字符‘1’,‘3’仅是符号,不表示数值大小。
(5)字符串(STRING)数据类型
字符串数据类型是字符数据类型的一个约束型数组,或称为字符串数组。字符串必须用双引号标明。
例如:
(6)自然数(NATURAL)和正整数(POSITIVE)数据类型(www.xing528.com)
自然数是整数的一个子类型,非负的整数,即零和正整数;正整数也是一个子类型,它包括整数中非零和非负的数值。
(7)实数(REAL)数据类型
VHDL的实数类型类似于数学上的实数,或称浮点数。实数的取值范围为-1.0E38~+1.0E38。通常情况下,实数类型仅能在VHDL仿真器中使用,VHDL综合器不支持实数,因为实数类型的实现相当复杂,目前在电路规模上难以承受。
实数常量的书写方式举例如下:
65971.333333——十进制浮点数;8#43.6#E+4——八进制浮点数;43.6E-4——十进制浮点数。
(8)整数(INTEGER)数据类型
整数类型的数代表正整数、负整数和零。在VHDL中,整数的取值范围是-2147483647~+2147483647,即可用32位有符号的二进制数表示。在实际应用中,VHDL仿真器通常将INTEGER类型作为有符号数处理,而VHDL综合器将INTEGER作为无符号数处理。在使用整数时,VHDL综合器要求用RANGE子句为所定义的数限定范围,然后根据所限定的范围来决定表示此信号或变量的二进制的位数,因为VHDL综合器无法综合未限定的整数类型的信号或变量。
如语句“SIGNAL TYPEI:INTEGER RANGE0TO15;”规定整数TYPEI的取值范围是0~15共16个值,可用4位二进制数来表示,因此TYPEI将被综合成由4条信号线构成的信号。
整数常量的书写方式示例如下:
3——十进制整数;10E4——十进制整数;16#D2#——十六进制整数;2#11011010#——二进制整数。
(9)时间(TIME)数据类型
VHDL中唯一预定义物理类型是时间。完整的时间类型包括整数和物理量单位两部分,整数和单位之间至少留一个空格,如50ms、30ns。
时间类型值的范围从-2147483647到+2147483647,时间类型的完整书写格式应包括整数和单位两部分,整数和单位两部分之间至少要留一个空格。如12ns、5min。时间一般用于仿真,而不用于逻辑综合。
(10)错误等级(SEVERITY_LEVEL)
在VHDL仿真器中,错误等级用来指示设计系统的工作状态,共有4种可能的状态值:NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)。在仿真过程中,可输出这4种值来提示被仿真系统当前的工作情况。其定义如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。