在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;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/henhen2002/archive/2010/02/24/5322737.aspx
|