02_VHDL数据类型_教材版
1. 预定义的数据类型
1.1 位(BIT)和位矢量(BIT_VECTOR)
Bit:位类型
Bit_vector 位矢量
Boolean
Integer
Real 实数类型
time 时间类型
std库 默认的 开发系统能够自动调用里面的信息
实例:
x <= ‘1’
1.2 STD_LOGIC和STD_LOGIC_VECTOR
都在ieee的std_logic_1164包集中,可以取下面所描述的八种值。
‘U’:初始化值
‘X’:不定值(强的不定)
‘Z’:高阻态值
‘W’: 不定值(弱的不定)
‘L’:弱的0
‘H’:弱的1
‘-’:是一种无关项,不考虑的,不可能出现的情况
‘0’:低电平,强0
‘1’:高电平,强1
例:
注意!!!!!!
变量赋值“ := ”,信号赋值" <= "
注意!!!仅仅只支持逻辑运算,不支持算数运算
为了解决这个问题同时声明这两个包集就可以解决这个问题。
1.3 其他预定义数据类型
案例:
2. 用户自定义数据类型
2.1 自定义整数类型
实例:
2.2 用户自定义枚举类型
实例:
2.3 自定义数组类型
二维数组 vector 因为byte就是一个数组类型
2.3.1 限定数组
2.3.2 非限定性数组
integer range<> 数据值限定在整数的范围内
注意!!!!!
使用的时候(变量、信号定义时)不可能使用一个不确定范围的数组,要给他一个范围的限定。
3. 子类型
To 0-15
Downto 15-0
案例:
4. 记录类型
5. 数组
5.1 数组的分类
只有这些定义的数组类型是可综合的:
5.2 自定义二维数组
VHDL 没有自带的二维数组,需要自己定义,通过一维数组。
第一种方式:
第二种方式:
第三种方式:
5.3 数组的初始化
数组赋值注意事项!!!!!!!!
注意观察数组的取值。和高级语言不一样的是高级语言[ ]取值,他是通过();而且二维数组1*1数组取值还有所区别。
6. 端口数组
7. 有符号数和无符号数
有符号数和无符号数是在ieee库中std_logic_arith的包集中。
说明:
仅仅只支持算数运算
8.数据类型的转换
8.1 类型转换函数
案例:
8.2 直接类型转换方式
案例1:
案例2:
9. 数据类型可综合的数值