在VHDL中,用户自定义库的类型有几种类型:枚举类型、整数和实数类型、数组类型、记录类型、子类型。 VHDL自定义类型定义语句TYPE和子类型定义语句SUBTYPE实现用户自定义数据类型。 (1)枚举类型 枚举该类型的所有可能的值。格式: 如:type std_logic is('U','X','0','1','Z','W','L','H','-) type 类型名称 is (枚举文字{,枚举文字}); 枚举类型的编码: 综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为0,以后的依次加1。 编码用位矢量表示,位矢量的长度将取所需表达的所有枚举元素的最小值。 (2)整数类型 用户定义的整数类型是标准包中整数类型的子范围。格式: 例:type my_integer is integer range 0 to 9; (3)数组类型 数组:同类型元素的集合。VHDL支持多维数组。 多维数组的声明: type byte is array(7 downto 0) of bit; type vector is array(3 downto 0) of byte; 限定数组、非限定数组、属性: type 类型名称 is range 整数范围; 限定数组: 其索引范围有一定的限制。 type 数组名 is array(数组范围) of 数据类型; 非限定数组:数组索引范围被定义成一个类型范围。 type 数组名 is array(类型名称 range <>) of 数据类型; 属性:VHDL为多种类型定义了属性。 (4)记录类型 记录是不同类型的名称域的集合。 格式如下: 访问记录体元素的方式:记录体名.元素名 type 记录类型名is record 元素名:数据类型名; 元素名:数据类型名; (5)子类型 子类型是已定义的类型或子类型的一个子集。 格式: bit_vector 类型定义如下: type bit_vector is array (natural range <>) of bit; 如设计中只用16bit;可定义子类型如下: subtype my_vector is bit_vector(0 to 15); 注:子类型与基(父)类型具有相同的操作符和子程序。可以直接进行赋值操作。 |
电工学习网 ( )
GMT+8, 2023-4-21 05:22