| (2)用户定义的数据类型 用户定义的数据类型的一般格式:
 TYPE  数据类型名 {,数据类型名} 数据类型定义
 不完整的数据类型格式:
 TYPE  数据类型名 {,数据类型名};
 可由用户定义的数据类型为:
 * 枚举(ENUMERATED)
 格式:TYPE 数据类型名 IS(元素、元素、…);
 例1: TYPE week IS(Sun,Mon,Tue,wed,Thu,Fri,Sat);
 例2: TYPE STD_LOGIC IS
 (‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-‘);
 * 整数(INTEGER)
 格式:TYPE 数据类型名 IS 数据类型定义 约束范围
 例:TYPE  digit IS INTEGER RANGE 0 TO 9
 * 实数(REAL)
 格式:TYPE 数据类型名 IS 数据类型定义 约束范围
 例:TYPE  current IS REAL RANGE -1E4 TO 1E4
 * 数组(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;
 TYPE instruction IS (ADD,SUB,INC,SRL,SRF,LDA,LDB);
 SUBTYPE digit IS INTEGER 0 TO 9;
 TYPE indflag IS ARRAY (instruction ADD TO SRF) OF digit;
 数组常在总线、ROM和RAM中使用。
 * 时间(TIME)
 格式: TYPE 数据模型名不副实 IS 范围
 UNITS 基本单位
 单位;
 END UNITS;
 TYPE time RANGE –1E18 TO 1E18
 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;
 * 记录(RECODE)
 将不同的数据类型放在一块,就是记录类型数据
 格式:TYPE 数组类型名 IS RECORD
 元素名:数据类型名;
 元素名:数据类型名;
 :
 :
 END RECORD;
 例:TYPE bank IS RECORD
 addr0: STD_LOGIC_VECTOR(7 DOWNTO 0);
 addr1: STD_LOGIC_VECTOR(7 DOWNTO 0);
 r0: INTEGER;
 END RECORD;
 存取(ACCESS)
 文件(FILE)
 |