VHDL数据类型的转换

    技术2022-05-19  22

    3.数据类型的转换

    VHDL程序中,不同类型的对象不能代入,因此要进行类型转换.类型转换的方法有:

    (1)类型标记法.用类型名称来实现关系密切的标量类型之间的

    转换.

    例如: VARIABLE x:INTEGER;

    VARIABLE y:REAL;

    使用类型标记(即类型名)实现类型转换时,可采用赋值语句:

    x :=INTEGER(y); y :=REAL(x).

    (2)类型函数法.

    VHDL程序包中提供了多种转换函数,使得某些类型的数据之间可以相互转换,以实现正确的赋值操作.常用的类型转换函数有:

    CONV_INTEGER ( ):STD_LOGIC_VECTOR类型转换成

    INTEGER类型.

    CONV_STD_LOGIC_VECTOR( ):INTEGER类型,UNSIGNED

    类型或SIGNED类型转换成STD_LOGIC_VECTOR类型.

    TO_BIT( ):STD_LOGIC类型转换成BIT类型.

    TO_BIT_VECTOR( ):STD_LOGIC_VECTOR类型转换

    BIT_VECTOR类型.

    TO_STD_LOGIC( ):BIT类型转换成STD_LOGIC类型.

    TO_STD_LOGIC_VECTOR( ):BIT_VECTOR类型转换成

    STD_LOGIC_VECTOR类型.

    注意:引用时必须首先 打开库和相应的程序包.

    该函数由STD_LOGIC_UNSIGNED

    程序包定义

    该函数由STD_LOGIC_ARITH

    程序包定义

    以下函数由STD_LOGIC_1164

    -0-----------------------------------------------

    类型转换

    STD_LOGIC_VECTOR转换成INTEGER

    STD_LOGIC_UNSIGNED包含集

    CONV_INTEGER(A)

    INTEGER,UNSDGNED,SIGNED转换成STD_LOGIC_VECTOR

    UNSIGNED,SIGNED转换成INTEGER

    STD_LOGIC_ARITH包集合

    CONV_STD_LOGIC_VECTOR(A,位长)

    CONV_INTEGER(A)

    BIT_VECTOR转换为STD_LOGIC_VECTOR

    STD_LOGIC_VECTO转换为BIT_VECTOR

    BIT转换成STD_LOGIC

    STD_LOGIC转换成BIT

    STD_LOGIC_1164包集合

    TO_STDLOGICVECTOR(A)

    TO_BITVECTOR(A)

    TO_STDLOGIC(A)

    TO_BIT(A)

    "STD_LOGIC_VECTOR"变换成"INTEGER"的实例

    LIBRARY IEEE;

    USE IEEESTD_LOGIC_1164.ALL;

    USE IEEESTD_LOGIC_UNSIGNED.ALL;

    ENTITY add5 IS

    PORT (num:INSTD_LOGIC_VECTOR (2 DOWNTO 0);

    );

    END add5;

    ARCHITECTURE rtl OF add5 IS

    SIGNAL in_num:INTEGER RANGE 0 TO 5;

    BEGIN

    in_num<=CONV_INTEGER (num);位矢量转换成整数变换式

    END rtl;

    ^0^

    ------------------------

                                                          

    STD_LOGIC_1164包集合          

    TO_STDLOGICVECTOR(A) BIT_VECTOR转换为STD_LOGIC_VECTOR

    TO_BITVECTOR(A)           STD_LOGIC_VECTO转换为BIT_VECTOR

    TO_STDLOGIC(A)             BIT转换成STD_LOGIC

    TO_BIT(A)                      STD_LOGIC转换成BIT

    STD_LOGIC_ARITH包集合

    CONV_STD_LOGIC_VECTOR(A,INTEGER,UNSDGNED,SIGNED转换

    位长)                                       STD_LOGIC_VECTOR

    CONV_INTEGER(A)                 UNSIGNED,SIGNED转换成INTEGER

    STD_LOGIC_UNSIGNED包含集 

    CONV_INTEGER(A)                  STD_LOGIC_VECTOR转换成INTEGER

     

     

    n         LIBRARY IEEE

    n      USE IEEE STD_LOGIC_1164.ALL

    n      USE IEEE STD_LOGIC_UNSIGNED.ALL

    n      ENTITY add5 IS

    n      PORT (num:IN STD_LOGIC_VECTOR (2 DOWNTO 0)

    n      

    n                         );

    n      END add5

    n      ARCHITECTURE rtl OF add5 IS

    n      SIGNAL in_num:INTEGER RANGE 0 TO 5

    n      

    n      BEGIN

    n      in_num<=CONV_INTEGER(num);位矢量转换成整数变换式

    n      

    n      END rtl


    最新回复(0)