VHDL数据类型

VHDL数据类型可以分为四大类

标量型

最基本的数据类型。

  • 实数类型
  • 整数类型
  • 枚举类型
  • 时间类型

复合类型

可由标量型复合而成。

  • 数组型(Array)
  • 记录型(Record)

存取类型

文件类型

以上的数据类型都已在VHDL的标准程序包STANDARD(使用时不需使用use引入)和STD_LOGIC_1164及其他的标准可中做了定义,可调用。

需要注意的是,虽然VHDL仿真器支持上述所有的数据类型,但VHDL综合器并不支持所有的预定义数据类型,如REAL、TIME、FILE等类型。

VHDL预定义数据类型

VHDL预定义数据类型都在标准可STADARD中定义,在实际使用中无需使用USE显式调用,而是自动包含进VHDL源文件中。

布尔型(BOOLEAN)

取值为FALSE或者TRUE

位(BIT)

取值为'0''1'

位矢量(BIT_VECTOR)

使用位矢量必须注明位宽

SIGNAL a : BIT_VECTOR(7 DOWNTO 0)

字符(CHARACTER)

整数(INTEGER)

整数包括整数、负数和零。可以使用加减乘除运算。在使用整数时,VHDL综合器要求使用RANGE给定义的整数限定范围,否则无法综合。

SINGAL i : INTEGER RANGE 0 TO 15;

实数(REAL)

字符串(STRING)

时间(TIME)

IEEE预定义标准逻辑位与矢量

IEEE库的程序包STD_LOGIC_1164中包含了两个非常重要的数据类型,即STD_LOGICSTD_LOGIC_VECTOR

标准逻辑位STD_LOGIC

STD_LOGIC在程序包中的定义为:

TYPE STD_LOGIC IS(
​           'U',        ---- 未初始化
​           ‘X',        ---- 强未知的
​           ’0',        ---- 强0
​           ‘1’,        ---- 强1
​           ‘Z’,        ---- 高阻态
​           ‘W’,        ---- 弱未知的
​           ‘L’,        ---- 弱0
​           ‘H’,        ---- 弱1
​           '-',        ---- 忽略
​   );

在程序中使用此数据类型前需先声明

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

由定义可见,STD_LOGIC时标准BIT的扩展,它是九值逻辑。目前在设计中通常使用STD_LOGIC,而BIT则很少使用。

注意:对于综合器而言,只有 '-'忽略态、‘Z’高阻态、0、1可用,其余五种值都不存在。当时这九种值对于VHDL的行为仿真都有重要意义。

标准逻辑矢量(STD_LOGIC_VECTOR)

STD_LOGIC_VECTOR是标准的一维数组,数组中每一个元素的数据类型都是STD_LOGIC

SIGNAL t_data : STD_LOGIC_VECTOR(0 TO 7);

整数类型

虽然VHDL的标准程序包中已经对INTEGER做了定义。但是在综合时,由于这章数据类型的定义范围太大,综合其无法进行综合。因此,定义为整数的数据对象具体的数据类型必须由用户重新定义,并限定其取值范围,以便能为综合器所接受。

TYPE num1 IS RANGE 0 TO 100;        -- 7位二进制源码

TYPE num2 IS RANGE -100 TO 100    --8位二进制补码

数组类型

数组类型属于复合类型,时将一组具有相同数据类型的元素集合在一起,作为一个数据对象来处理的数据类型。

定义方法:TYPE array_name IS ARRAY (数组范围) OF 数据类型

TYPE INT_VECTOR IS ARRAY(INTEGER RANGE <>) OF INTEGER;

VARIABLE v1 : INT_VECTOR(1 TO 6);

Last modification:May 26th, 2020 at 07:46 pm
如果觉得我的文章对你有用,请随意赞赏