标准数据类型
1,整数(INTEGER)
范围:-46
2,实数(REAL)
范围:(综合器不支持)
书写时一定要有小数?
3,位(BIT)
在数字系统中,信号经常用位值表示,位值用带单引号的'1'和'0'来表示标准数据类型
4,位矢量(BIT_VECTOR)
位矢量是用双引号括起来的一组位数据
"010101"
5,布尔量(BOOLEAN)
只有"真”和"假”两个状态,可以进行关系运算
6,字符(CHARACTER)
字符量通常用单引号括起来,对大小写敏感
明确说明1是字符时:CHARACTER'('1')
标准数据类型
7,字符串(STRING)
字符串是双引号括起来的由字母,数字或@,%,$组成的一串字符.区分大小写"laksdklakld" "10"
8,时间(TIME)
时间的单位:fs,ps,ns,ms,sec,min,hr
例:10 ns
整数数值和单位之间应有空格标准数据类型
9,错误等级(SEVERITY LEVEL)
在VHDL仿真器中,错误等级用来表示系统的状态,它共有4种:
NOTE注意)
WARNING警告)
ERROR错误)
FAILURE(失败)
标准数据类型
10,自然数(NATURAL)正整数(POSITIVE)
自然数是整数的一个子类型,包括0和正整数;正整数也是整数的一个子类型
只能是正整数数据除定义类型外,有时还需要定义约束范围?
INTEGER RANGE 100 DOWNTO 0
BIT_ VECTOR (3 DOWNTO 0)
REAL RANGE TO
IEEE定义的逻辑位与矢量
在IEEE |的程序包std_logic_1164 中定义了两个非常重要的数据类型:
1 ,std_logic
取值:0,1,Z,X,W,L,H
Z:高阻X:不定W:弱信号不定
L:弱信号0 H:弱信号1
2,Std_logic_vector
注意
1,在使用"std_logic" 和"std」ogic_vector" 时,在程序中必须声明库及程序包说明语句,即
LIBRARY ieee和这两句在程序中必不可少.
2,std_logic 有多个取值,与BIT不同,在编程时应特别注意,需要考虑全所有情况
用户自定义的数据类型
1,枚举类型
格式:TYPE数据类型名IS(元素,元素,…);
TYPE STD_LOGIC IS
(U';X;0';V;Z':W:L:H';-y;
TYPE week IS (Su n,Mo n,Tue,wed,Thu,Fri,Sat);
TYPE color IS (red,gree n,yellow,blue)
TYPE lift_state IS
(stop on 1,doorpee n, doorclose, doorwait1, doorwait2, doorwait3,
doorwait4, doorwait5,up,dow n, stop)
枚举类型的声明
TYPE color IS (red,gree n, yellow,blue);
VARIABLE A:COLOR;
SIGNAL B:COLOR;
A:=RED;
B<=YELLOW;
TYPE lever IS ('0','1','z');
SIGNAL V:lever;
V<='1';
用户自定义的数据类型
2,整数(INTEGER)
格式:TYPE数据类型名IS数据类型定义约束范围
例TYPE digit IS INTEGER RANGE 0 TO 9
VARIABLE A:DIGIT;
A:=5;
A:=28;
用户自定义的数据类型
3,实数(REAL)
格式:TYPE数据类型名IS数据类型定义约束范围TYPE current IS REAL RANGE -1E4 TO 1E4 VARIABLE A:CURRENT;
A:=1E3;
A:=1E10;
用户自定义的数据类型
4,数组(ARRAY)
格式:TYPE数据类型名IS ARRAY范围OF原数据类型名例:TYPE word IS ARRAY (1 TO 8) OF STD_LOGIC; TYPE word IS ARRAY (INTEGER 1 TO 8) OF STD_LOGIC; 数组常在总线,ROM和RAM中使用.
用户自定义的数据类型
5,记录(RECODE)类型
将不同的数据类型放在一块,就是记录类型数据
格式:TYPE记录类型名IS RECORD
元素名:数据类型名;
元素名:数据类型名;
END RECORD S录类型名];
记录(RECODE)类型
例:TYPE ba nk IS RECORD
addrO: STD_LOGIC_VECTOR(7 DOWNTO 0);
addr1: STD_LOGIC_VECTOR(7 DOWNTO 0);
r0: INTEGER;
END RECORD;
记录(RECODE)类型
例:CONSTANT LEN:i nteger:=100;
TYPE array logic IS ARRAY (99 dow nto 0)OF STD_LOGIC_VECTOR(7 DOWNTO 0) TYPE table IS RECORD
a: array logic;
b: STD_LOGIC_VECTOR(7 DOWNTO 0);
c: in teger RANGE 0 to len ;
END RECORD;
数据类型的转换
数据类型转换函数有VHDL语言的包提供
例如:STD_LOGIC_1164,
STD_LOGICARITH
STD_LOGIC_UNSIGNED等
函数
说明
1、STD_LOGIC_1164包
TO_STDLOGIC_VECTOR(A)