在VHDL语言里,基本数据对象有三种:常量,变量以及信号。
常量
常量就是常数,它的数值不能更改。它必须初始化。它的一般定义格式如下:
CONSTANT 常量名:数据类型 := 表达式; --表达式是用来初始化常量的
变量
变量的格式如下:
VARIABLE 变量名:数据类型 := 初值; --初值可以不赋。
变量赋值的时候使用“:=”来赋值。变量的值可以更改。对于变量的赋值是没有延迟的。
信号
信号的定义格式如下:
SIGNAL 信号名:数据类型 := 初值; --初值可以不赋。
对于信号而言,我们认为它对应于一个实际物理部分。它的赋值不是立即生效的,而是有延迟的。
标准数据类型
整数与数学意义上的一致。它可以作为对信号总线状态的一种抽象;
位用来表示一个信号的状态,它有两种取值‘0’和‘1’。在实际应用中,位可以用来描述总线的值。
位矢量,它是一组位的集合。每一位都可以取‘0’和‘1’。通常用于表示总线状态。
布尔量,它是二值枚举。包括两种状态:“TRUE”和“FALES”。
上面这些数据类型都是定义在STD中的,这是VHDL语言的标准。一般在VHDL语言设计中,我们还经常使用IEEE标准委员会制定的IEEE库的STD_LOGIC_1164程序包中的STD_LOGIC类型和STD_LOGIC_VECTOR类型。
用户自定义数据类型
用户自定义数据类型的格式如下:
TYPE 数据类型名 IS 数据类型;
常用的有数组类型,整数类型,枚举类型,时间类型。
定义一个数组名为num的STD_LOGIC类型的数组,定义如下:
TYPE num IS ARRAY(0 TO 3) OF STD_LOGIC;
数据类型之间的转换
VHDL是一门强数据类型语言。它的数据类型之间的转换有两种方式。
强制类型转换
这种方式和C语言的非常类似,例如可以如下:
VARIABLE a:INTEGER;
VARIABLE b:REAL;
a:=INTEGER(y);
函数转换法