欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第五章VHDL语言的对象和数据类型及运算操作符.ppt

    • 资源ID:2582522       资源大小:307.51KB        全文页数:29页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第五章VHDL语言的对象和数据类型及运算操作符.ppt

    第5章 VHDL语言的对象和数据类型及运算操作符,5.1 VHDL文字规则,5.1.1 数字,整数:整数都是十进制的数,如: 5, 678, 0, 156E2(=15600), 45_234_287 (=45234287),实数:实数也都是十进制的数,但必须带有小数点,如: 1.335, 88_670_551.453_909(=88670551.453909),1.0,44.99E-2(=0.4499),以数制基数表示的文字:用这种方式表示的数由五个部分组成。 SIGNAL d1,d2,d3,d4,d5 : INTEGER RANGE 0 TO 255; d1 = 10#170# ; - (十进制表示,等于 十进制 170) d2 = 16#FE# ; - (十六进制表示,等于 十进制 254) d3 = 2#1111_1110#; - (二进制表示,等于 十进制 254) d4 = 8#376# ; - (八进制表示,等于 十进制 254) d5 = 16#E#E1 ; - (十六进制表示,等于 十进制 224),物理量文字(VHDL综合器不接受此类文字)。如: 60s (60秒), 100m (100米), k (千欧姆), 177A (177安培),5.1 VHDL文字规则,5.1.2 字符串,(2)文字字符串,(3)数位字符串,用单引号括起来的ASCII字符,如:R,a,1,-,B:二进制基数符号,表示二进制位0或1,在字符串中的每位表示一个Bit。,O:八进制基数符号,在字符串中的每一个数代表一个八进制数,即代表一个3 位(BIT)的二进制数。,X:十六进制基数符号(0F),代表一个十六进制数,即一个4位的二进制数。,data1 = B“1_1101_1110“ - 二进制数数组,位矢数组长度是9 data2 = O“15“ - 八进制数数组,位矢数组长度是6 data3 = X“AD0“ - 十六进制数数组,位矢数组长度是12 data4 = B“101_010_101_010“ - 二进制数数组,位矢数组长度是12 data5 = “101_010_101_010“ -表达错误,缺B。 data6 = “0AD0“ -表达错误,缺X。,(1)字符,“ERROR“ , “Both S and Q equal to 1“ , “X“ , “BB$CC“,5.1 VHDL文字规则,5.1.3 标识符,标识符是最常用的操作符,可以是常数、变量、信号、端口、子程序或参数的名字。VHDL基本标识符的书写需遵循如下规则: l有效的字符:包括26个大小写英文字母,数字包括09 以及下划线“_”。 l任何标识符必须以英文字母开头。 l必须是单一下划线“_”,且其前后都必须有英文字母或数字。 l标识符中的英语字母不分大小写。 l允许包含图形符号(如回车符、换行符等),也允许包含空格符。,合法的标识符: A, fft,and_4, max2uc,非法的标识符: 21A, _fft,and_ _4, max#2uc,a-b,return,5.1 VHDL文字规则,5.1.4 下标名,下标名用于指示数组型变量或信号的某一元素。 格式: 标识符(表达式) 标识符必须是数组型的变量或信号的名字,表达式所代表的值必须是数组下标范围中的一个值,这个值将对应数组中的一个元素。如果这个表达式是一个可计算的值,则此操作数可很容易地进行综合。如果是不可计算的,则只能在特定的情况下综合。,下例的两个下标名中一个是m,属不可计算,另一个是3,属可计算的。 SIGNAL a,b : BIT_VECTOR (0 TO 3) ; SIGNAL m : INTEGER RANGE 0 TO 3 ; SIGNAL y,z : BIT ; y = a(m) ; - 不可计算型下标表示 z = b(3) ; - 可计算型下标表示,5.2 数据类型,标量型(Scalar Type),复合类型(Composite Type),存取类型(Access Type),文件类型(Files Type),5.2.1 VHDL的预定义数据类型,1. 布尔(BOOLEAN)数据类型,2. 位(BIT)数据类型 如:constant a: bit :=1; variable q: bit :=0; signal a,b: bit;,3. 位矢量(BIT_VECTOR)数据类型 如:signal s: bit_vector (15 downto 0); constant q: bit_vector (3 downto 0) :=“0110”;,5.2.1 VHDL的预定义数据类型,4. 字符(CHARACTER)数据类型 通常用单引号括起来,区分大小写。,6. 实数(REAL)数据类型 如:variable q: real range 0.0 to 255.0; constant a: real :=1.0;,1.0 十进制浮点数 0.0 十进制浮点数 65971.333333 十进制浮点数 65_971.333_3333 与上一行等价 8#43.6#e+4 八进制浮点数 43.6E4 十进制浮点数,5. 字符串(STRING)数据类型,如:VARIABLE string_var : STRING (0 TO 3 ) ; string_var := “a b c d“ ;,8. 时间(TIME)数据类型,TYPE time IS RANGE 2147483647 TO 2147483647 units fs ; - 飞秒,VHDL中的最小时间单位 ps = 1000 fs ; - 皮秒 ns = 1000 ps ; - 纳秒 us = 1000 ns ; - 微秒 ms = 1000 us ; - 毫秒 sec = 1000 ms ; - 秒 min = 60 sec ; - 分 hr = 60 min ; - 时 end units ;,5.2.1 VHDL的预定义数据类型,7. 整数(INTEGER)数据类型 如:signal b: integer range 7 to 7; variable a : integer :=5;,5.2.2 IEEE预定义标准逻辑位与矢量,1. 标准逻辑位STD_LOGIC数据类型,2. 标准逻辑矢量(STD_LOGIC_VECTOR)数据类型,5.2 数据类型,5.2.3 其他预定义数据类型,1. 无符号数据类型(UNSIGNED TYPE),2. 有符号数据类型(SIGNED TYPE),5.2 数据类型,十进制的8可以作如下表示: UNSIGNED'(“1000“),两则无符号数据定义的示例: VARIABLE var : UNSIGNED(0 TO 10) ; SIGNAL sig : UNSIGNED(5 TO 0) ;,例如: SIGNED'(“0101“) 代表 +5,5 SIGNED'(“1011“) 代表 5,5.2.4 用户自定义数据类型,1. 枚举类型,2. 物理类型,5.2 数据类型,如: Type year is(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec); Signal thismoth :year; result= sep else 0;,如: Type voltage is range 0 to 1000000000 Units uv; (基本单位) mv=1000uv; v=1000mv; End units;,5.2.5 数组类型,5.2 数据类型,限定性数组,限定性数组定义语句格式如下: TYPE 数组名IS ARRAY (数组范围)OF 数据类型 ; 如:type word is array(0 to 7)of std_logic;,非限定性数组,非限制性数组的定义语句格式如下: TYPE 数组名IS ARRAY (数组下标名RANGE )OF 数据类型; 如:type word is array (natural range)of bit;,5.2.5 数组类型,5.2 数据类型,数组的元素可以是任何一种数据类型,用以定义数组元素的下标范围子句决定了数组中元素的个数,以及元素的排序方向,既下标数是由高到低,或是由低到高。 如子句“0 TO 7”是由低到高排序的8个元素; 即:a(0)a(1)a(2)a(7)。 “15 DOWNTO 0”是由高到低排序的16个元素; 即:a(15)a(14)a(13) a(0) 。,5.3 VHDL操作符,5.3.1 逻辑操作符,表5-1 VHDL操作符列表,表5-1 VHDL操作符列表,接上页,表5-2 VHDL操作符优先级,5.3.1 逻辑操作符,【例5-4】 SIGNAL a ,b,c : STD_LOGIC_VECTOR (3 DOWNTO 0) ; SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0) ; SIGNAL h,I,j,k : STD_LOGIC ; SIGNAL l,m,n,o,p : BOOLEAN ; . a=b AND c; -b、c 相与后向a赋值,a、b、c的数据类型同属4位长的位矢量 d=e OR f OR g ; - 两个操作符OR相同,不需括号 h=(i NAND j)NAND k ; - NAND不属上述三种算符中的一种,必须加括号 l=(m XOR n)AND(o XOR p); - 操作符不同,必须加括号 h=i AND j AND k ; - 两个操作符都是AND,不必加括号 h=i AND j OR k ; - 两个操作符不同,未加括号,表达错误 a=b AND e ; - 操作数b 与 e的位矢长度不一致,表达错误 h=i OR l ; - i 的数据类型是位STD_LOGIC,而l的数据类型是 . - 布尔量BOOLEAN,因而不能相互作用,表达错误。,5.3.1 逻辑操作符,5.3.2 关系操作符,【例5-5】 ENTITY relational_ops_1 IS PORT ( a,b : IN BITVECTOR (0 TO 3) ; m : OUT BOOLEAN) ; END relational_ops_1 ; ARCHITECTURE example OF relational_ops_1 IS BEGIN output = (a = b) ; END example ;,【例5-6】 ENTITY relational_ops_2 IS PORT (a,b : IN INTEGER RANGE 0 TO 3 ; m : OUT BOOLEAN) ; END relational_ops_2 ; ARCHITECTURE example OF relational_ops_2 IS BEGIN output = b) ; END example ;,六种关系运算操作符: “ = ”(等于)、 “/=”(不等于)、 “ ”(大于)、 “=”(大于等于) “=”(小于等于),5.3.3 算术操作符,表5-3 算术操作符分类表,1. 求和操作符,【例5-7】 VARIABLE a,b ,c ,d ,e ,f : INTEGER RANGE 0 TO 255 ; . a := b + c ; d := e f ;,【例5-8】 PROCEDURE adding_e (a :IN INTEGER ; b :INOUT INTEGER )IS . b := a + b ;,【例5-9】 PACKAGE example_arithmetic IS TYPE small_INt IS RANGE 0 TO 7 ; END example_arithmetic ; USE WORK.example_arithmetic.ALL ; ENTITY arithmetic IS PORT (a,b : IN SMALL_INT ; c : OUT SMALL_INT) ; END arithmetic ; ARCHITECTURE example OF arithmetic IS BEGIN c = a + b ; END example ;,2. 求积操作符,5.3.3 算术操作符,3. 符号操作符,求积操作符包括 * (乘)、 / (除)、MOD(取模)和RED(取余)四种操作符。,符号操作符“+”和“”的操作数只有一个,5.3.3 算术操作符,4. 混合操作符,【例5-10】 SIGNAL a,b : INTEGER RANGE 8 to 7 ; SIGNAL c : INTEGER RANGE 0 to 15 ; SIGNAL d : INTEGER RANGE 0 to 3 ; a = ABS(b) ; c = 2 * d ;,混合操作符包括乘方“*”操作符和取绝对值“ABS”操作符两种,SLL逻辑左移 SRL逻辑右移 移空的位补零 SLA算术左移 SRA算术右移 移空的位由最初首位补 ROL逻辑循环左移 ROR逻辑循环右移 移出的位依次填补移空的位,5.3.3 算术操作符,5. 移位操作符,移位操作符的语句格式是: 标识符 移位操作符 移位位数 ;,例: “1001001” SLL 1=“0010010” “1001001” SRL 1=“0100100” “1001001” SLA 1=“0010011” “1001001” SRA 1=“1100100” “1001001” ROL 1=“0010011” “1001001” ROR 1=“1100100”,5.4 VHDL数据对象(Data Objects),常量(Constant) 固定值,不能在程序中被改变 增强程序的可读性,便于修改程序 可在Package、Entity、Architecture、Process、Function、Procedure中进行定义,其有效范围也相应限定 书写格式: Constant 常量名,常量名:数据类型:=表达式; 例:Constant data_bus_width: integer := 8;,5.4 VHDL数据对象(Data Objects),信号(Signals) 代表连线,Port也是一种信号 没有方向性,可给它赋值,也可当作输入 在Package、Entity、Architecture中定义 设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。 用 = 进行赋值 用 : = 进行初始化 signal count:bit_vector(3 downto 0):=“0011”;,5.4 VHDL数据对象(Data Objects),变量(Variable) 临时数据,没有物理意义 只能在Process、Function、 Procedure中定义,并只在其内部有效, 要使其全局有效,先转换为Signal。 用 := 进行赋值 用 := 进行初始化 variable result : std_logic := 0;,信号与变量的区别,architecture rtl of start is signal count : integer range 0 to 7; begin process(clk) begin if (clk'event and clk='1') then count = count + 1; if(count=0) then carryout = '1' else carryout = '0' end if; end if; end process; end rtl;,architecture rtl of start is begin process(clk) variable count : integer range 0 to 7; begin if (clk'event and clk='1') then count := count + 1; if(count=0) then carryout = '1' else carryout = '0' end if; end if; end process; end rtl;,信号与变量的区别,architecture a of start is signal tmp : std_logic; begin process(a_bus) begin tmp = '1' for i in 3 downto 0 loop tmp = a_bus(i) and tmp; end loop; carryout = tmp; end process; end a;,architecture a of start is begin process(a_bus) variable tmp:std_logic; begin tmp := '1' for i in 3 downto 0 loop tmp := a_bus(i) and tmp; end loop; carryout = tmp; end process; end a;,

    注意事项

    本文(第五章VHDL语言的对象和数据类型及运算操作符.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开