欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第7章VHDL基本语句与基本设计ppt课件.ppt

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

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

    第7章VHDL基本语句与基本设计ppt课件.ppt

    第7章 VHDL基本语句与基本设计,EDA技术与VHDL设计,7.1,顺序语句,并行语句,VHDL组合逻辑电路设计,VHDL时序逻辑电路设计,7.2,7.3,7.4,VHDL基本语句与基本设计,顺序语句的执行顺序与书写顺序一致,与传统软件设计语言的特点相似。顺序语句只能用于进程和子程序中,被用来描述组合逻辑和时序逻辑。常用的顺序描述语句有:赋值语句、IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句、子程序、RETURN语句、WAIT语句和NULL语句。,7.1 顺序语句,信号赋值语句:,7.1.1 赋值语句,赋值目标=赋值源;,变量赋值语句:,赋值目标:=赋值源;,根据语句所设条件,if语句有选择地执行指定的语句,其语法格式由简单到复杂可以分为三种:(1)具有开关控制的IF语句(2)具有二选择控制的IF语句(3)具有多选择控制的IF语句,7.1.2 IF语句,一般格式:if 条件 then 顺序语句;end if;当条件成立,执行顺序语句,否则跳过语句。,具有开关控制的IF语句,if(EN=1)then A=B;-当条件EN=1时,A随B变化;否则,该语句不执行end if;,具有开关控制的IF语句举例,一般格式:if 条件 then 顺序语句;else 顺序语句;end if;条件成立执行then后顺序语句;否则执行else后的顺序语句。,具有二选择控制的IF语句,if OE=0 thenY=not x;elseY=Z;-高阻符号“Z”要大写end if;,用IF语句描述三态非门,一般格式:if 条件 then 顺序语句;elsif 条件 then 顺序语句;elsif 条件 then 顺序语句;else 顺序语句;end if;,具有多选择控制的IF语句,case语句根据表达式的取值直接从多组顺序语句中选择一组执行,其语句格式为:case 表达式 is when 选择值=顺序语句;when 选择值=顺序语句;.when others=顺序语句;end case;,7.1.3 CASE语句,一般格式:(1)关键词others只能出现一次,且只能作为最后一种条件取值。使用others的目的是为了使条件句中的所有选择值能涵盖表达式的所有取值,以免综合器会插入不必要的锁存器。,使用CASE语句注意事项,一般格式:(2)条件句中的选择值必须在表达式的取值范围内。(3)case语句中每一条件句的选择值只能出现一次,不能有相同选择值的条件语句出现。(4)case语句执行必须选中,且仅能选中所列语句中的一条。,使用CASE语句注意事项,(1)WHEN 取值=顺序语句:(2)WHEN 取值|取值|取值=顺序语句:(3)WHEN 取值 TO 取值=顺序语句;(4)WHEN 取值 DOWNTO 取值=顺序语句;(5)WHEN OTHERS=顺序语句;,CASE语句中WHEN字句书写格式,d0d0d1d2d3=d;END CASE;,CASE语句应用举例,LOOP语句与其它高级语言中的循环语句相似,它可以使所包含的一组顺序语句被循环执行,其执行次数可由设定的循环参数决定。LOOP语句有三种格式:(1)无限LOOP语句(2)FOR_LOOP语句(3)WHILE_LOOP语句,7.1.4 LOOP语句,标号:LOOP 顺序语句 EXIT 标号;END LOOP;举例:L2:LOOP a:=a+1;EXIT L2 WHEN a10;END LOOP L2;,无限LOOP语句,标号:FOR 循环变量 IN 离散范围 LOOP 顺序处理语句;END LOOP 标号;注意:(1)循环变量是LOOP内部自动声明的局部量,仅在LOOP内可见。(2)离散范围必须是可计算的整数范围。循环次数范围规定LOOP语句中的顺序语句被执行的次数。,FOR_LOOP语句,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY parity_check IS PORT(a:IN STD_LOGIC_VECTOR(7 DOWNTO 0);y:OUT STD_LOGIC);END ENTITY parity_check;ARCHITECTURE one OF parity_check ISBEGIN PROCESS(a)VARIABLE tmp:STD_LOGIC;BEGIN tmp:=1;FOR i IN 0 TO 7 LOOP tmp:tmp xor a(i);END LOOP;y=tmp;END PROCESS;END;,用FOR LOOP语句描述8位奇偶校验电路,标号:WHILE 循环条件 LOOP 顺序处理语句;END LOOP 标号;例:sum:=0;i:=0;abcd:WHILE(i10)LOOP sum:=sum+i;i:=i+1;END LOOP abcd;,WHILE_LOOP语句,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY parity_check IS PORT(a:IN STD_LOGIC_VECTOR(7 DOWNTO 0);y:OUT STD_LOGIC);END ENTITY parity_check;ARCHITECTURE one OF parity_check ISBEGIN PROCESS(a)VARIABLE tmp:STD_LOGIC;VARIABLE i:INTEGER;BEGIN tmp:=0;i:=0;WHILE(i8)LOOP tmp:tmp xor a(i);i:=i+1;END LOOP;y=tmp;END PROCESS;END;,用WHILE_LOOP语句描述8位奇偶校验电路,在LOOP语句中,NEXT语句用来跳出本次循环。其格式分三种:(1)NEXT:无条件终止当前的循环,跳回到本次循环LOOP语句开始处,开始下次循环。(2)NEXT:标号;无条件终止当前的循环,跳转到指定标号的LOOP语句开始处,重新开始执行循环操作。(3)NEXT 标号 WHEN 条件表达式;,7.1.5 NEXT语句,L1:WHILE i10 LOOP L2:WHILE j20 LOOP NEXT L1 WHEN i=j;END LOOP L2;END LOOP L1;,NEXT语句举例,EXIT语句是LOOP语句的内部循环控制语句,作用是结束循环状态。而区别在于NEXT语句是跳向LOOP语句的起始点,EXIT语句则是跳向LOOP语句的终点。EXIT的语句格式也有3种:(1)EXIT;(2)EXIT LOOP 标号;(3)EXIT LOOP 标号 WHEN 条件表达式;,7.1.6 EXIT语句,PROCESS(a)VARIABLE int_a:INTEGER;BEGIN int_a:=a;FOR i IN 0 TO max_limit LOOP IF(int_a=0)THEN EXIT;ELSE int_a:=int_a-1;END IF;END LOOP;END PROCESS;,EXIT语句举例,在进程中(包括过程中),当执行到WAIT(等待语句时),运行程序将被挂起,直到满足此语句设置的结束挂起条件后,才重新开始执行进程或过程中的程序。WAIT语句有以下四种不同的语句格式:(1)WAIT-无限等待(2)WAIT ON-敏感信号量变换(3)WAIT UNTIL-条件满足(可综合)(4)WAIT FOR-时间到,7.1.7 WAIT语句,进程中其一般格式为:WAIT ON 信号,信号;例如,以下两种描述是完全等价的:PROCESS(a,b)PROCESS BEGIN BEGIN y=a AND b;y=a AND b;END PROCESS;WAIT ON a,b;END PROCESS;敏感信号量列表和WAIT语句选其一,不能同时使用。,1.WAIT ON语句,进程中其一般格式为:WAIT UNTIL 表达式;例如,WAIT UNTIL语句有三种表达方式:(1)WAIT UNTIL 信号某个数值;(2)WAIT UNTIL 信号EVENT AND 信号某个数值;(3)WAIT UNTIL NOT(信号STABLE)AND 信号某个数值;,2.WAIT UNTIL语句,在进程中允许对子程序进行调用。对子程序的调用语句是顺序语句的一部分。子程序包括过程和函数,可以在VHFL的结构体或程序包中的任何位置对子程序进行调用。子程序调用可以在任何地方根据其名称调用子程序。,7.1.8 子程序调用语句,调用过程的语句格式如下:过程名(参数名=表达式,参数名=表达式);其中表达式也称为实参,它可以是一个具体的数值,也可以是一个标识符,是当前调用程序中过程形参的接受体。,过程调用,函数调用与过程调用十分类似,不同之处是调用函数将返回一个指定类型的值,函数的参量只能是输入值。函数调用的一般格式为:函数名(参数名=表达式,参数名=表达式);,函数调用,7.2 并行语句,并行信号赋值语句进程语句并行过程调用语句元器件例化语句生成语句,33/38,7.2.1 并行信号赋值语句,三种并行信号赋值:简单信号赋值条件信号赋值选择信号赋值,34/38,1.并行简单信号赋值语句,35/38,2.条件信号赋值语句,36/38,用when-else语句描述2选一的MUX,entity mux2to1 is port(a,b:in bit;sel:in bit;y:out bit);end mux2to1;architecture one of mux2to1 isbegin y=b when sel=1 else a;end one;,信号定义成比特类型,可取0和1。,如果把=1去掉,结果如何?,37/38,用when-else语句描述4选1的MUX,entity mux4to1 is port(a,b,c,d:in bit;sel1,sel0:in bit;y:out bit);end mux4to1;architecture one of mux4to1 isbegin y=a when(sel1=0)and(sel0=0)else b when(sel1=0)and(sel0=1)else c when(sel1=1)and(sel0=0)else d;end one;,问题:如果00时选a,01时选b,10和11时都选c,怎么办?,y=a when(sel1=0)and(sel0=0)else b when(sel1=0)and(sel0=1)else c when(sel1=1)and(sel0=0)else d;,38/38,3.选择信号赋值语句,39/38,问题:如果00时选a,01时选b,10和11时都选c,怎么办?,architecture one of mux4to1 issignal sel:bit_vector(1 downto 0);begin sel(1)=sel1;sel(0)=sel0;with sel select y=a when 00,b when 01,c when others;end one;,entity mux4to1 is port(a,b,c:in bit;sel1,sel0:in bit;y:out bit);end mux4to1;,注意:when others包含那些未被列出的可能。,40/38,如果信号类型换成STD_LOGIC,library ieee;use ieee.std_logic_1164.all;entity mux4to1 is port(a,b,c:in std_logic;sel1,sel0:in std_logic;y:out std_logic);end mux4to1;,architecture one of mux4to1 issignal sel:std_logic_vector(1 downto 0);begin sel(1)=sel1;sel(0)=sel0;with sel select y=a when 00,b when 01,c when others;end one;,41/38,VHDL模型并行信号赋值,library ieee;use ieee.std_logic_1164.all;entity cmpl_sig isport(a,b,sel:in std_logic;x,y,z:out std_logic);end cmpl_sig;,architecture logic of cmpl_sig isbegin x=(a and not sel)or(b and sel);y=a when sel=0 else b;with sel select z=a when 0,b when 1,0 when others;end logic;,信号赋值执行是并行的,与语句放置的位置先后无关。,42/38,7.2.2 进程语句,过程语句有(1)隐含的过程:并行信号赋值语句元件语句过程的敏感信号在表达式右边。(2)直接的过程:也是并行语句只包括顺序语句,-Explicit Process StatementPROCESS(敏感信号表)Constant Declarations Type Declarations Variable DeclarationsBEGIN-顺序语句#1;-.-顺序语句#N;END PROCESS;,43/38,Process语句的执行,process语句靠wait语句和敏感信号表来控制语句执行次数。敏感信号表隐含着在process的后面有一个wait语句。一个process可以有多个wait语句。Process必须具有敏感信号表和wait语句中的一个。.注意:逻辑综合将对wait和敏感信号表作出限制。,process(a,b)begin-sequential statementsend process;processbegin-sequential statementswait on(a,b);end process;,44/38,多进程语句,一个构造体可以有多个process。process之间是并发的。在process内部,语句执行是有顺序的。,构造体,process1,processN,信号,信号,45/38,VHDL模型多进程语句,process语句的执行是并行的,与位置没有关系。,在process内的语句执行是顺序的。,process语句内也可进行信号赋值。,46/38,信号赋值延时(Delay),信号赋值可以在process语句内部也可以在外部进行(如三种并行赋值语句)。信号赋值发生时会有时延,延时的类型有两种:固有(Inertial)延时(缺省的)信号在传输过程中会时间长度增加。传输延时无论距离多近,都有传输延时。在VHDL中,除此之外的延时均不考虑。,47/38,请看两个程序是否等效?,并行赋值语句右边的变量全为敏感信号。,48/38,这两个程序等效吗?,不等效!process内部时顺序语句。要从时序上看。,49/38,变量说明,变量在process内部说明变量的说明使用::=信号说明使用::=;variable temp:std_logic_vector(7 downto 0);变量赋值是立即执行的,没有延时。,50/38,为变量赋值,variable temp:std_logic_vector(7 downto 0);所有比特:temp:=“10101010”;temp:=x”AA”;(1076-1993)单个比特:temp(7):=1;几个比特:temp(7 downto 4):=“1010”;单个比特使用单引号,多个比特使用双引号。,51/38,变量使用举例1,变量说明,变量赋值,变量赋值给信号,52/38,变量使用举例2,val是个变量,只要有赋值给它,它就更新。,因此,更新过的val的值用于case语句。,53/38,信号与变量的区别,54/38,信号与变量类比,赋值,使用,范围,行为,y=a,y:=a,表示电路内连,表示局部存储,全局(process之间进行通信),局部(process内部使用),process结束时更新,立即更新,表决电路地址译码七段显示译码器双向总线优先编码器8位加法器,7.3 VHDL组合逻辑电路设计,触发器寄存器计数器分频器,7.4 VHDL时序逻辑电路设计,

    注意事项

    本文(第7章VHDL基本语句与基本设计ppt课件.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开