Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1204549
  • 博文数量: 232
  • 博客积分: 7563
  • 博客等级: 少将
  • 技术积分: 1930
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-21 11:17
文章分类

全部博文(232)

文章存档

2011年(17)

2010年(90)

2009年(66)

2008年(59)

分类: 嵌入式

2011-01-05 16:05:19

在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

阅读(15204) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~