- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 例: constant len:integer:= 8 ; subtype byte_vec is bit_vector(len-1 downto 0); type byte_and_ix is record byte : byte_vec; ix : integer range 0 to len; end record ; signal x, y, z : byte_and_ix ; signal data : byte_vec ; signal num : integer ; ……. x.byte = ; x.ix = 2 ; data = y.byte ; num = y.ix ; z = x ; * 3.7 数据类型转换 VHDL是一种强类型语言,不同类型的数据 对象必须经过类型转换,才能相互操作。两种实现数据类型转换的常见方法: 1)写一段专用于数据类型转换的VHDL代码 2)调用包集中预定义的数据类型转换函数,如包集std_logic_1164。 * 例:不同类型数据的合法与非法操作 TYPE long IS INTEGER RANGE -100 TO +100; TYPE short IS INTEGER RANGE -10 TO +10; SIGNAL x: short; SIGNAL y: long; y = 2*x+5 ; ---非法(数据类型不匹配,虽然都是INTEGER的子类型!) y = long(2*x+5); ---合法(运算结果已经强制转换成long类型。) * ieee.std_logic_arith中提供了多种数据类型转换函数: 不包括std_logic_vector类型, 如有需要,须使用std_logic_unsigned/signed包集 * 例:数据类型转换 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; ……. signal a: IN unsigned(7 DOWNTO 0); signal b: IN unsigned(7 DOWNTO 0); signal y: OUT std_logic_vector(7 DOWNTO 0); ……. y=CONV_STD_LOGIC_VECTOR((a+b),8); * 3.8 可综合的数据类型 数据类型 可综合的数值 BIT, BIT_VECTOR ‘0’, ‘1’ STD_LOGIC, STD_LOGIC_VECTOR ‘X’, ‘0’, ‘1’, ‘Z’, 不是全部的8值都可综合的;另, 在不需要’X’,’Z’两种取值时可用BIT类型混用。 STD_ULOGIC, STD_ULOGIC_VECTOR ‘X’, ‘0’, ‘1’, ‘Z’, 不是全部的8值都可综合的;另, 在不需要’X’,’Z’两种取值时可用BIT类型混用。 BOOLEAN True, False NATURAL / UNSIGNED 0到+2 147 483 647 INTEGER / SIGNED -2 147 483 647到+2 147 483 647 用户自定义整型 INTEGER的子集 用户自定义枚举类型 根据用户自定义进行编码得到 SUBTYPE 任何预定义或用户自定义类型的子集 ARRAY 上述任一种类型数据的集合 RECORD 上述多种类型数据的集合 * 例子:常用数据类型的声明与赋值 signal a: BIT; signal b: BIT_VECTOR(7 DOWNTO 0); signal c: STD_LOGIC; signal d: STD_LOGIC_VECTOR(7 DOWNTO 0); signal e: INTEGER RANGE 0 TO 255; a=b(5); a=c; b(0)=a; b=d; 类型不匹配 c=d(5); e=b; d(0)=c; e=d; b=(7=’0’,1=’1’,OTHERS=’1’); C=‘Z’; * 例子: 单个位和位矢量 ENTITY an
文档评论(0)