zoukankan      html  css  js  c++  java
  • VHDL数据类型的转换

    在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 IEEE STD_LOGIC_1164.ALL;
    USE IEEE STD_LOGIC_UNSIGNED.ALL;
    ENTITY add5 IS
    PORT (num:IN STD_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;

  • 相关阅读:
    Number Sequence
    不容易系列之(3)—— LELE的RPG难题
    又见回文
    统计元音
    数列
    regular expression
    野兽男孩
    GameStd
    boost and qt compile.
    kde4 + compiz只有两个桌面的问题
  • 原文地址:https://www.cnblogs.com/dujianzw/p/3931406.html
Copyright © 2011-2022 走看看