第2节 VHDL的基本语法结构(2)
第2节 VHDL的基本语法结构(2)
数据类型
- 标量类型
--整数类型、浮点类型、枚举类型、物理类型 - 复合类型
--数组类型:由相同类型的标量元素组成
--记录类型:由不同类型的标量元素组成 - 存取类型、文件类型、子类型
整数类型
- 保留字:INTEGER
- 范围为-214783647到214783647(232)
- 整数不是位矢量,不能对整数进行按位访问,不能对整数使用逻辑运算符;
- 需要综合时,要对范围加以限制;
- 仿真器通常将整数作为有符号数处理;而综合器则将它们作为无符号数处理;
VARIABLE Tmp : Integer range –255 To 255;
浮点类型
- 保留字:REAL
- 范围为:-1.0E38到1.0E38
- 主要用于仿真,综合器通常不支持该类型
枚举类型
- 保留字:TYPE
--TYPE States IS (S1,S2,S3,S4) - Bit和Boolean
-- TYPE Bit IS (‘0’,’1’);
--TYPE Boolean IS (‘False’,’True’) - Std_Ulogic和Std_Logic
--TYPE Std_Ulogic IS (‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-’)
--SUBTYPE Std_Logic IS resolved Std_Ulogic - Std_Ulogic_Vector和Std_Logic_Vector
- 典型应用:
--处理器所有指令
--状态机中的状态
物理类型
- 保留字:TIME
TYPE TIME IS RANG –2147483647 TO 2147483647
UNITS fs;
ps=1000 fs;
ns=1000 ps;
us=1000 ns;
ms=1000 us;
sec=1000 ms;
min=60 sec;
hr=60 min;
END UNITS; - 只对仿真有意义。
- 用户可创建新的物理类型,如电压、电流等
数组类型
- 由相同类型的多个标量元素组成,即同构复合类型;
- 分一维数组、二维数组、多维数组;
- 分限定性数组和非限定性数组
TYPE Bit_Vector IS ARRAY (Natural RANGE<>) OF Bit;
TYPE Word IS ARRARY (31 downto 0) OF Bit;
TYPE String IS ARRARY (Positive RANGE<>) OF Character;
SIGNAL address : IN Bit_Vector(15 downto 0);
记录类型
- 由不同类型的标量元素组成的集合,即异构复合类型;

存取类型,文件类型
- 存取类型
--即一种指针类型
--保留字:LINE (指向字符串值的指针)
--一般很少用到
--只有变量才可以声明为存取类型 VARIABLE line_buffer : Line - 文件类型
--保留字:TEXT
--很少用到
自定义类型和子类型
- 保留字:TYPE和SUBTYPE
- 子类型:对已经存在的数据类型作一些范围限制而形成的新的数据类型。
SUBTYPE natural IS integer range 0 to +2147483647
数据类型的转换
- 在VHDL中,数据类型的定义十分严格,赋值时必须保证数据类型的一致性。为了使不同类型的对象之间能够进行赋值和运算,需要先进行数据类型的转换。
- 函数转换法:
--to_stdlogicvector(), to_bitvector(), conv_integer(),
--加上程序包说明语句 - 类型标识符转换法:
--如a:=(integer)b; b:=(real)a; - 常量转换法:
--作一个常量表格


