(精品)VHDL实用教程第2章_2.ppt
《(精品)VHDL实用教程第2章_2.ppt》由会员分享,可在线阅读,更多相关《(精品)VHDL实用教程第2章_2.ppt(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、类型转换类型转换 VHDL是一种强类型语言,意谓着既使非常接近的是一种强类型语言,意谓着既使非常接近的数据类型的数据对象,在相互操作时也需要进行数据类型的数据对象,在相互操作时也需要进行数据类型的转换,或者使用重载运算符函数。数数据类型的转换,或者使用重载运算符函数。数据类型转换有两种方式:类型转换函数和直接类据类型转换有两种方式:类型转换函数和直接类型转换。型转换。类型转换函数类型转换函数 类型转换函数可将一种类型的数据对象转换成另类型转换函数可将一种类型的数据对象转换成另一种类型的数据对象。先要定义一个类型转换函一种类型的数据对象。先要定义一个类型转换函数,使其参数类型被变换为被转换的类型
2、,返回数,使其参数类型被变换为被转换的类型,返回值为转换后的类型。有值为转换后的类型。有2种:种:预定义的类型转换函预定义的类型转换函数和自定义的类型转换函数。数和自定义的类型转换函数。VHDL的标准程序的标准程序包中提供一些常用的预定义类型转换函数见表:包中提供一些常用的预定义类型转换函数见表:程序包程序包函数函数说明STD_LOGIC_1164TO_STDLOGICVECTOR(A)由BIT_VECTOR转换成STD_LOGIC_VECTORTO_BITVECTOR(A)由STD_LOGIC_VECTOR转换成BIT_VECTORTO_STDULOGIC(A)由BIT转换成STD_LOGI
3、CTO_BIT(A)由STD_LOGIC转换成BITSTD_LOGIC_ARITHCONV_STD_LOGIC_VECTOR(A,位长)由INTEGER,UNSIGNED和SIGNED转换成STD_LOGIC_VECTORCONV_INTEGER(A)由UNSIGNED和SIGNED转换成INTEGERSTD_LOGIC_UNSIGNEDCONV_INTEGER(A)STD_LOGIC_VECTOR转换成INTEGER例如:例如:LIBRARYIEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALLENTITY add5
4、ISPORT(snum:IN STD_LOGIC_VECTOR(2DOWNTO 0)););END add5;ARCHITECTURE rtl OF add5 ISSIGNAL inum:INTEGER RANGE 0 TO 5;BEGINinum=CONV_INTEGER(snum);END rtl;例如:例如:Signal a:bit_vector(11 downto 0);Signal b:std_logic_vector(11 downto 0);a=x”0A8”;-十六进制可以赋予位矢量十六进制可以赋予位矢量b=x”0A8”;-错误,十六进制不可以赋予逻辑矢量,错误,十六进制不可以赋
5、予逻辑矢量,逻辑量中只能赋予二进制逻辑量中只能赋予二进制,Synplify其实也可以其实也可以加入语句加入语句use ieee.std_logic_1164;下面语句可用:下面语句可用:b=TO_STDLOGICVECTOR(X”AF7”);-十六进制变换十六进制变换 b=TO_STDLOGICVECTOR(O”5177”);-八进制变换八进制变换 b=TO_STDLOGICVECTOR(B”1010_1111_0111”);-三位二进制变换三位二进制变换自定义转换函数:自定义一个函数,使输入参自定义转换函数:自定义一个函数,使输入参数转变为另一种数据类型,返回值为转换后的数数转变为另一种数据
6、类型,返回值为转换后的数据类型。就可以自由地进行类型转换。据类型。就可以自由地进行类型转换。直接类型转换:可以直接利用直接类型转换:可以直接利用VHDL的类型转的类型转换语句进行数据类型的转换。类型转换语句的格换语句进行数据类型的转换。类型转换语句的格式是:式是:数据类型标识符(表达式)数据类型标识符(表达式)例如:例如:variable v:integer;v:=integer(78.69);直接类型转换仅限于非常关联的数据类型之间直接类型转换仅限于非常关联的数据类型之间转换,必须遵循以下规则:转换,必须遵循以下规则:所有抽象数字类型是非常关联的类型(如整型、所有抽象数字类型是非常关联的类型
7、(如整型、浮点型)如浮点数转换为整数,转换结果是最接浮点型)如浮点数转换为整数,转换结果是最接近的一个整数近的一个整数如果两个数组有相同维数,两个数组的元素是同如果两个数组有相同维数,两个数组的元素是同一类型,并在各自的下标范围内索引是同一类型一类型,并在各自的下标范围内索引是同一类型和非常接近的类型(如整型、浮点型)和非常接近的类型(如整型、浮点型),那么这,那么这两个数组是非常关联的。两个数组是非常关联的。如果类型标识符指的是非限定性数组,将被转换如果类型标识符指的是非限定性数组,将被转换数组的下标范围去掉,转换后的数组成为非限定数组的下标范围去掉,转换后的数组成为非限定性数组;如果类型标
8、识符指的是限定性数组,转性数组;如果类型标识符指的是限定性数组,转换后的数组下标范围与类型标识符所指的数组下换后的数组下标范围与类型标识符所指的数组下标范围相同。转换后数组中的元素值等价原数组标范围相同。转换后数组中的元素值等价原数组的元素值。的元素值。枚举类型不能被转换枚举类型不能被转换2.4 运算符运算符 VHDL为构造计算表达式提供了许多预定义运算符,为构造计算表达式提供了许多预定义运算符,可分为四种类型:可分为四种类型:算术运算符,关系运算符,逻算术运算符,关系运算符,逻辑运算符与连接运算符辑运算符与连接运算符。算术运算符:算术运算符:+、-、*、/、*、MOD、REM、ABS、SLL
9、、SRL、SLA、SRA、ROL、ROR和符号运算符:和符号运算符:+正,正,-负。负。关系运算符:关系运算符:=、/=、=。逻辑运算符:逻辑运算符:AND、OR、NOT、NAND、NOR、XOR、XNOR。连接运算符:连接运算符:&,将多个对象或矢量连接成维数更,将多个对象或矢量连接成维数更大的矢量。大的矢量。VHDL运算符优先级别说明:运算符优先级别说明:运算符运算符运算符符号运算符符号优级优级操作数的数据操作数的数据类类型型高高级级算算术术运运算符算符NOT取反取反高高Boolean、BIT、STD_LOGIC及其一及其一维维数数组组*指数、指数、ABS取取绝对值绝对值INTEGER乘除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 VHDL 实用教程 _2
限制150内