硬件描述语言与数字系统开发(第4章)-10.ppt

硬件描述语言与数字系统开发(第4章)-10.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
硬件描述语言与数字系统开发(第4章)-10.ppt

例如: TYPE Std_logic IS (‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’_’); 而 Std_logic_Vector 是 std_logic的组合,属工业标准的逻辑类型 如: data: in std_logic_vector(7 downto 0); 则data表示8根数据线。 如给data赋值5AH可写为: data=;或data=X “ 5A”(X表示16进制)。 自定义----枚举类型 初值 不定 高阻 弱不定 弱低 弱高 不可能 STD_LOGIC_VECTOR类型定义如下: TYPE STD_LOGIC_VECTOR IS ARRAY ( NATURAL RANGE ) OF STD_LOGIC ; 自定义----物理类型 关键字:TYPE 一般格式: TYPE 数据类型名 IS 范围; 例如: TYPE T IS RANGE –1E18 TO 1E18; UNITS fs; ps=1000fs; ns=1000ps; us=1000ns; ms=1000us; sec=1000ms; min=60sec; hr=60min; END UNITS; 无符号数据类型(UNSIGNED TYPE) VARIABLE var : UNSIGNED(0 TO 10) ; SIGNAL sig : UNSIGNED(5 DOWNTO 0); 有符号数据类型(SIGNED TYPE) SIGNED(0101) 代表 +5,5 SIGNED(1011) 代表 –5 VARIABLE var :SIGNED(-10 TO 10); UNSIGNED(1000)代表 +8,8 不同数据类型间的转换 VHDL语言对数据类型有着极为严格的分类和定义,不同类型的数据、对象不能随意赋值、代入,必要时,应进行类型转换。 常用的数据类型转换方法有二: 类型标记法与函数转换法 如:a=real(b) -- 将integer转换为real; 如:to bit(a) / bit_vector(a) -- 将std_logic(矢量)转换为bit(矢量); 如:to std_logic(a) / std_logic_vector(a) -- 将bit(矢量)转换为 std_logic(矢量); 如:conv std_logic_vector(a,位长) --将integer,unsigned转换为std_logic_vector; 如:conv integer -- 将std_logic_vector,unsigned转换为integer。 前3个转换函数在ieee库的std_logic_1164程序包中; 后2个转换函数在ieee库的std_logic_arith及std_logic_unsigned程序包中。 std库/ieee库中的程序包 library ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; USE ieee.std_logic_unsigned.all; ENTITY add_arith_4 IS PORT (A, B : IN std_logic_vector (3 downto 0); cin : IN std_logic; S : OUT std_logic_vector (3 downto 0); cout : OUT std_logic); END add_arith_4; ARCHITECTURE behave OF add_arith_4 IS begin process(a,b,cin) variable a_v,b_v: integer range 0 to 15; variable s_v: integer range 0 to 31; variable cin_v: integer range 0 to 1; begin if (cin=1) then cin_v:=1; else cin_v:=0; end if; a_v:=conv_integer(a); b_v:=conv_integer(b); s_v:=a_v+b_v+cin_v; if (s_v=16) then s_v:=s_v-16; cout=1; e

文档评论(0)

cai + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档