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

    EDA VHDL第三章顺序语句课件.ppt

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

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

    EDA VHDL第三章顺序语句课件.ppt

    3.4 VHDL的描述语句,第 三 章,VHDL有两种类型的语句:1.顺序语句(Sequential)2.并发语句(Concurrent),硬件执行:并发执行(VHDL本质)仿真执行:顺序执行,3.4 VHDL描述语句,执行顺序与书写顺序一致,与传统软件设计语言的特点相似.顺序语句只能用在进程与子程序中.可用来描述组合逻辑电路 时序逻辑电路,3.4 VHDL描述语句,顺序语句:,1.赋值语句 2.WAIT语句3.IF 语句4.CASE 语句5.L00P 语句6.NEXT语句,7.EXIT语句8.RETURN语句9.NULL 语句10.过程调用语句11.断言语句,3.4 VHDL描述语句,顺序语句:,一、对象与赋值语句,要求:表达式的值必须与对象的类型.宽度一致,所有对象分:变量和信号 对象:=表达式;-变量赋值 对象=表达式;-信号赋值,3.4 VHDL描述语句,2.变量赋值与信号赋值,变量赋值与信号赋值的差异,1)赋值方式的不同:变量:=表达式;信号=表达式;,2)硬件实现的功能不同:信号代表电路单元、功能模块间的互联,代表实际的硬件连线;变量代表电路单元内部的操作,代表暂存的临时数据。,3.4 VHDL描述语句,3)有效范围的不同,信号:程序包、实体、结构体:全局量变量:进程、子程序:局部量ARCHITECTURESIGNAL Declarations label1:PROCESS VARIABLE Declarations.label2:PROCESS VARIABLE Declarations,3.4 VHDL描述语句,4)赋值行为的不同 信号赋值延迟更新数值、时序电路;变量赋值立即更新数值、组合电路;,5)信号的多次赋值 a.一个进程:最后一次赋值有效 b.多个进程:多源驱动 线与、线或、三态,3.4 VHDL描述语句,例:信号的多次赋值,architecture rtl of ex is signal a:std_logic;begin process()begin a=b;end process;process()begin a=c;.end process;end ex;,architecture rtl of ex is signal a:std_logic;begin process()begin a=b;a=c;end process;end rtl;,3.4 VHDL描述语句,信号赋值与变量赋值的比较,信号赋值ARCHITECTURE rt1 of sig is signal a,b:std_logic;-定义了a和b两个信号begin process(a,b)begin a=b;b=a;end process;end rt1;-结果是a和b的值交换,3.4 VHDL描述语句,信号赋值与变量赋值的比较,ARCHITECTURE rt1 of sig is variable a,b:std_logic;begin process(a,b)begin a:=b;b:=a;end process;end rt1;,变量赋值,-结果是a和b的值b的值,3.4 VHDL描述语句,例:变量赋值实现循环语句功能process(indicator,sig)variable temp:std_logic;begin temp:=0;for i in 0 to 3 loop temp:=temp xor(sig(i)and indicator(i);end loop;output=temp;end process;,3.4 VHDL描述语句,process(indicator,sig).variable temp:std_logic;.process(indicator,sig,temp)begintemp:=0;temp:=temp xor(sig(0)and indicator(0);temp:=temp xor(sig(1)and indicator(1);temp:=temp xor(sig(2)and indicator(2);temp:=temp xor(sig(3)and indicator(3);output=temp;end process;,等价:,3.4 VHDL描述语句,如改成信号,则无法实现原功能;.signal temp:std_logic;.process(indicator,sig,temp)begintemp=0;temp=temp xor(sig(0)and indicator(0);temp=temp xor(sig(1)and indicator(1);temp=temp xor(sig(2)and indicator(2);temp=temp xor(sig(3)and indicator(3);output=temp;end process;,3.4 VHDL描述语句,进程在仿真时两个状态:执行和挂起 进程状态的变化受WAIT语句或敏感信号变化量的控制可设置4种不同的条件:,二、WAIT语句,WAIT-无限等待 WAIT ON-敏感信号量变化 WAIT UNTIL 表达式-表达式成立时进程启动 WAIT FOR 时间表达式-时间到,进程启动,3.4 VHDL描述语句,WAIT ON 信号,信号以下两种描述是完全等价的process(a,b)beginy=a and b;end process;,1)WAIT ON语句,processbeginy=a and b;wait on a,b;end process;,敏感信号量例表与WAIT语句只能选一,两者不能同时用,3.4 VHDL描述语句,2、wait until 语句(可综合),wait until 表达式;表示式的值为“真”时,进程被启动,否则被挂起,3.4 VHDL描述语句,wait until 语句的三种表达方法:wait until 信号=value;wait until 信号event and 信号=value;wait until not(信号stable)and 信号=value;,时钟信号CLK的上升沿的描述:wait until clk=1;wait until rising_edge(clk);wait until clkevent and clk=1;wait until not(clkstable)and clk=1;以上描述可实现相同的电路,3.4 VHDL描述语句,时钟信号CLK的下降沿的描述:wait until clk=0;wait until rising_edge(clk);wait until clkevent and clk=0;wait until not(clkstable)and clk=0;以上描述可实现相同的电路,3.4 VHDL描述语句,用WAIT UNTIL 描述时钟沿D触发器,ARCHITECTURE bhv OF DFF1 ISSIGNAL Q1:STD_LOGIC;BEGIN PROCESS BEGIN WAIT UNTIL CLKEVENT AND CLK=1 Q1=D;END PROCESS;Q=Q1;-将内部的暂存数据向端口输出(双横线-是注 释符号)END bhv;,3.4 VHDL描述语句,同步复位功能触发器电路processbegin rst_loop:loop wait until clkevent and clk=1;if rst=1 then x=0 else x=a;end if;end loop rst_loop;end process,3.4 VHDL描述语句,IF语句根据指定条件确定语句执行顺序,共3种类型,三、IF语句,例:IF(ena=1)then Q=D;END if;综合器生成锁存器(LATCH),3.4 VHDL描述语句,(1)用于门闩控制的IF语句,把时钟改成时钟沿,则生成D触发器,3.4 VHDL描述语句,Entity dff1 is port(clk,d:in bit;q:out bit);End dff1;Architecture bhv of dff1 is signal q1:bit;begin process(clk,q1)begin if clkevent and clk=1 then q1=d;end if;end process;q=q1;End bhv;,(2)用于二选一控制的IF语句,用条件来选择两条不同程序执行的路径,3.4 VHDL描述语句,此描述的典型电路是二选一电路:,architecture rt1 of mux21 isbegin process(a,b,sel)begin if(sel=1)then y=a;else y=b;end if;end process;end rt1;,3.4 VHDL描述语句,(3)用于多选择控制的IF语句,3.4 VHDL描述语句,例:四选一电路,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux4 IS PORT(input:IN std_logic_vector(3 DOWNTO 0);sel:IN std_logic_vector(1 DOWNTO 0);y:OUT std_logic);END mux4;ARCHITECTURE rt1 OF mux4 ISBEGIN PROCESS(input,sel)BEGIN IF(sel=“00”)THEN y=input(0);ELSIF(sel=“01”)THEN y=input(1);ELSIF(sel=“10”)THEN y=input(2);ELSE y=input(3);END IF;END PROCESS;END rt1;,3.4 VHDL描述语句,IF-THEN-ELSIF 语句隐含优先级的判断 最先出现的IF语句优先级最高可用于设计具有优先级的电路,用IF语句设计一个83编码器,3.4 VHDL描述语句,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder IS PORT(I:IN STD_LOGIC_VECTOR(0 TO 7)Y:OUT STD_LOGIC_VECTOR(0 TO 2);END coder;,实 体 设 计,功能:设计元件外观,3.4 VHDL描述语句,结构体设计,功能:描述输入和输出之间的逻辑关系,ARCHITECTURE a1 or coder IS Begin IF(I(7)=1)THEN Y=“111”;ELSIF(I(6)=1)THEN Y=“110”;ELSIF(I(5)=1)THEN Y=“101”;ELSIF(I(4)=1)THEN Y=“100”;ELSIF(I(3)=1)THEN Y=“011”;ELSIF(I(2)=1)THEN Y=“010”;ELSIF(I(1)=1)THEN Y=“001”;ELSE Y=“000”;END IF;END a1;,3.4 VHDL描述语句,CASE语句常用来描述总线行为、编码器和译码器的结构。CASE语句可读性比IF语句强,非常简洁。,四、CASE语句,3.4 VHDL描述语句,CASE语句的一般格式为:CASE 条件表达式 IS WHEN 分支条件表达式的值 顺序处理语句;WHEN 分支条件表达式的值 顺序处理语句;END CASE;,WHEN 值 顺序处理语句;WHEN 值 to 值 顺序处理语句;WHEN 值|值|值 顺序处理语句;以上三种方法的混合:WHEN others 顺序处理语句;,其中分支条件可有以下的形式:,3.4 VHDL描述语句,分支条件的值必须在表达式的取值范围内容两个分支条件不能重叠CASE语句是无顺序的,所有表达式并行处理CASE语句执行时必须选中,且只能选中一个分支条件如果没有others分支条件存在,则分支条件必须覆盖表达式所有可能的值,CASE语句使用注意事项,注意:对std_logic std_logic_vector数据类型要特别注意使用others分支条件,3.4 VHDL描述语句,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux IS PORT(input:IN std_logic_vector(3 DOWNTO 0);sel:IN std_logic_vector(1 DOWNTO 0);y:OUT std_logic);END mux;ARCHITECTURE rt1 OF mux ISBEGIN PROCESS(input,sel)BEGIN CASE sel IS WHEN 00=y y y y NULL;END CASE;END PROCESS;END rt1;,用CASE语句描述四选一电路,3.4 VHDL描述语句,语句的误用,signal value:integer range 0 to 15;signal out_1:bit;case value isend case;,case value is when o to 10=out_1out_1=0;end case;,case value is when o=out_1out_1=0;end case;,-缺少条件语句,-分支条件不包含到15,-在到上发生重叠,3.4 VHDL描述语句,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux41 IS PORT(s4,s3,s2,s1:IN std_logic;z4,z3,z2,z1:OUT std_logic;END mux41;ARCHITECTURE art OF mux41 IS SIGNAL sel:integer range 0 to 15;BEGIN,例:根据输入确定输出值,3.4 VHDL描述语句,PROCESS(s4,s3,s2,s1)BEGIN sel=0;IF s1=1 THEN sel=sel+1;ELSIF s2=1 THEN sel=sel+2;ELSIF s3=1 THEN sel=sel+4;ELSIF s4=1 THEN sel=sel+8;ELSE null;END if;,3.4 VHDL描述语句,z1z1z2z3z4=1;END case;END process;END art;,3.4 VHDL描述语句,IF语句与CASE语句比较,1、IF语句是有序的,先处理最起始、最优先的条件,后处理次优先的条件。2、case语句是无序的3、case语句的条件表达式的值必须举穷尽,不能重复,不能穷尽的条件表达式的值用OTHERS表示,3.4 VHDL描述语句,作业:设计一个简单组合电路3*8译码器,逻辑电路图:,真值表:,3.4 VHDL描述语句,LOOP语句使程序能进行有规则的循环,循环次数受迭代算法控制。与其他高级语言中的语句相似。,五、LOOP语句,1)无限LOOP语句,标号:LOOP EXIT 标号 END LOOP;,3.4 VHDL描述语句,VHDL重复执行LOOP循环内的语句,直至遇到EXIT语句结束循环,LOOP语句有三种格式:,.L2:LOOP a:=a+1;exit L2 when a10;end loop L2;.,3.4 VHDL描述语句,2)FORLOOP语句,上述格式中:循环变量是LOOP内部自动声明的局部量,仅在 LOOP内可见。离散范围必须是可计算的整数范围:整数表达式 to 整数表达式 整数表达式 downto 整数表达式,3.4 VHDL描述语句,书写格式为:标号:FOR 循环变量 IN 离散范围 LOOP END 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 parity_check;ARCHITECTURE rt1 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 rt1;,用FOR.LOOP语句描述8位奇偶校验电路,a7.0,y,in7.0,data_out7.0,out8,3.4 VHDL描述语句,3)WHILE条件下的LOOP语句,3.4 VHDL描述语句,书写形式为:标号:WHILE 条件 LOOP END LOOP 标号;,例:sum:=0;i:=0;-与FOR语句不同 abcd:while(i10)loop sum:=sum+i;i:=i+1;-与FOR语句不同循环变量i需事先定义,赋初值,并指定其变化方式综合器工具不支持,PROCESS(a)VARIABLE tmp:STD_LOGIC;VARIABLE i:integer;tmp:=0;i:=0;-循环变量需要定义 WHILE(i 8)LOOP tmp:=tmp XOR a(i);i:=i+1;-i变化方式+1 END LOOP;y=tmp;END PROCESS;,用while.LOOP语句描述8位奇偶校验电路,3.4 VHDL描述语句,在LOOP循环中NEXT语句用来跳出循环语句,六、NEXT-LOOP语句,3.4 VHDL描述语句,1)next;-无条件地终止当前循环,跳回到本次循环 LOOP语句开始处,开始下次循环 2)next 标号;-无条件地终止当前循环,跳回到指 定标号的LOOP语句开始处,开始下次循环 3)next 标号 WHEN条件;当条件表达式的值是真,则执行NEXT语句,进入跳转操作,否则继续执行下去,NEXT语句的书写格式为:NEXT 标号 WHEN条件,分三种情况:,例1:L1:while i10 loop L2:while j20 loop.next L1 when i=j;.end loop L2;end loop L1;,3.4 VHDL描述语句,L_X:for cnt_value in 1 to 8 loop S:a(cnt_value):=0;k:=0;L_Y:loop-无限循环语句 S2:b(k);=0;next L_X when(ef);S3:b(k+8):=0;k:=k+1;next loop L_Y;next loop L_x;,例2:,3.4 VHDL描述语句,EXIT语句将结束循环状态书写格式为:EXIT 标号 WHEN 条件;NEXT语句与EXIT语句的格式与操作功能非常相似.区别:EXIT语句用于跳向LOOP语句的终点。而NEXT语句在LOOP语句中跳向LOOP 语句的起点。,七、EXIT-LOOP语句,3.4 VHDL描述语句,例: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;,3.4 VHDL描述语句,比较两个数的大小,signal a,b:std_logic_vector(3 downto 0);signal a_less_than_b:boolean;.a_less_than_b=false;for i in 3 downto 0 loop if a(i)=1 and bi=0 then-最高位比较 a_less_than_b=false;exit;elsif a(I)=0 and b(I)=1 then a_less_than_b=true;exit;else null;end if;end loop;,3.4 VHDL描述语句,八、return 语句 return 语句只能用于子程序中,并用来终止一个子程序的执行。格式:分为:1)return;用于过程,只是结束过程,不返回任何值。2)return 表达式;用于函数,并且必须返回一个值。,return 表达式;,3.4 VHDL描述语句,例:用于过程的return语句 procedure rs(s,r:in std_logic;q,nq:inout std_logic)is begin if s=1 and r=1 then report“forbidden state:s and r are equal to 1”;return;else q=s and nq after 5 ns;nq=a and q after 5 ns;end if;end procedure rs;,3.4 VHDL描述语句,例:用于函数的return语句 function opt(a,b,sel:std_logic)return std_logic is begin if sel=1 then return(a and b);else return(a or b);end if;end function opt;,3.4 VHDL描述语句,NULL是一个空语句,表示不做任何操作。类似汇编的NOP语句,执行NULL语句只是使程序到下一个语句。格式为:NULL;常见错误:y=NULL;,九、NULL语句,3.4 VHDL描述语句,3.4 VHDL描述语句,其它语句和说明 属性(attribute)描述:属性是某一对象的特征表示,是一个内部预定义函数。格式为:综合器支持的属性有:left、right、high、low、range、rverse_range、length、event、stable,对象名属性标识符,3.4 VHDL描述语句,属性 event 对在当前的一个极小的时间段内发生的事件的情况进行检测。如发生事件,则返回 true,否则返回 false。发生事件:信号电平发生变化。clockevent,3.4 VHDL描述语句,时钟信号的上升沿描述:clockevent and clock=1时钟信号的下降沿描述:clockevent and clock=0上升沿触发器描述:process(clock)begin if clockevent and clock=1 then q=data;end if;end process;,3.4 VHDL描述语句,属性stable 属性 stable 的测试功能与 event刚好相反,信号在时间段内无事件发生,则返回 true,否则返回 false。以下两语句的功能相同:clockevent and clock=1 not(clockstable)and clock=1,3.4 VHDL描述语句,3.4.2 VHDL并行语句,Architecture,3.4 VHDL描述语句,Concurrent Signal Assignment-并行信号赋值语句Component instantiations-元件例化语句Process-进程语句Concurrent Procedure Call-并发过程调用语句Block-块语句ASSERT-并行断言语句Genera-生成语句(硬件的拷贝),VHDL语言是并行处理语言,能够进行并行处理的语句有:,3.4 VHDL描述语句,(1)简单信号赋值语句(CONCURRENT SIGNAL ASSIGNMENT)(2)条件信号赋值语句(CONDITIONAL SIGNAL ASSIGNMENT)(3)选择信号赋值语句(SELECTIVE SIGNAL ASSIGNMENT),1、并行信号赋值语句分3种类型:,3.4 VHDL描述语句,共同特点:1、赋值目标必须是信号,与其它并发语句同时执行,与书写及是否在块语句中无关。2、每一信号赋值语句等效与一个进程语句。所有输入信号的变化都将启动该语句的执行,书写格式为:信号=表达式;,1)简单信号赋值语句,一个简单信号赋值语句相当于一个进程语句的缩写,两种表达式完全等同,ARCHITECTURE rt1 OF m4 ISBEGINy=a and b;END rt1;,ARCHITECTURE rt1 OF m4 ISBEGINprocess(a,b)beginy=a and b;end process;END rt1;,3.4 VHDL描述语句,两种表达式等效,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex IS PORT(a,b:IN STD_LOGIC;y:OUT STD_LOGIC);END ex2;ARCHITECTURE r1 OF ex ISSIGNAL c:STD_LOGICBEGIN c=a and b;y=c;END r1;,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex2 IS PORT(a,b:IN STD_LOGIC;y:OUT STD_LOGIC);END ex2;ARCHITECTURE rt1 OF ex ISSIGNAL c:STD_LOGICBEGIN process1:PROCESS(a,b)BEGIN c=a and b;END PROCESS process1;process2:PROCESS(c)BEGIN y=c;END PROCESS process2;END rt1;,3.4 VHDL描述语句,两种表达式不等效,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex2 IS PORT(a,b:IN STD_LOGIC;y:OUT STD_LOGIC);END ex2;ARCHITECTURE r1 OF ex ISSIGNAL c:STD_LOGICBEGIN c=a and b;y=c;END r1;,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex2 IS PORT(a,b:IN STD_LOGIC;y:OUT STD_LOGIC);END ex2;ARCHITECTURE r1 OF ex ISBEGINSIGNAL c:STD_LOGIC process1:PROCESS(a,b,c)BEGIN c=a and b;y=c;END PROCESS process1;END r1;,3.4 VHDL描述语句,2)条件信号赋值语句(Conditional Signal Assignment),3.4 VHDL描述语句,属于并发描述语句的范畴,可以根据不同的条件将不同的表达式的值代入目标信号。书写格式为:目标信号=表达式1 WHEN条件1 ELSE 表达式2 WHEN条件2 ELSE 表达式3 WHEN条件3 ELSE.表达式n-1 WHEN条件n-1 ELSE 表达式n;,例:四选一电路,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux IS PORT(input:IN std_logic_vector(3 DOWNTO 0);sel:IN std_logic_vector(1 DOWNTO 0);y:OUT std_logic);END mux;ARCHITECTURE rt1 OF mux ISBEGIN y=input(0)WHEN sel=00 ELSE input(1)WHEN sel=01 ELSE input(2)WHEN sel=10 ELSE input(3);END rt1;,3.4 VHDL描述语句,条件信号赋值语句与进程中的多选择IF语句等价(功能上):,q=a WHEN sela=1 ELSE b WHEN selb=1 ELSE c;,PRCESS(sela,selb,a,b,c)BEGINIF sela=1 THEN q=a;ELSIF selb=1 THEN q=b;ELSE q=c;END PROCESS;,3.4 VHDL描述语句,WITH 表达式 SELECT目标信号 表达式1 WHEN 条件1,表达式2 WHEN 条件2,表达式3 WHEN 条件3,表达式n WHEN 条件n;,1)不能有重叠的条件分支.2)最后条件可为others,否则其它条件必须能包含表达式的 所有可能值3)选择信号代入语句与进程中的case语句等价,3.4 VHDL描述语句,3)选择信号赋值语句的格式为:,例:四选一电路,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux IS PORT(input:IN std_logic_vector(3 DOWNTO 0);sel:IN std_logic_vector(1 DOWNTO 0);y:OUT std_logic);END mux;ARCHITECTURE rt1 OF mux ISBEGIN WITH sel SELECT y=input(0)WHEN 00,input(1)WHEN 01,input(2)WHEN 10,input(3)WHEN OTHERS;END rt1;,3.4 VHDL描述语句,选择信号赋值语句与进程中的多选择CASE语句等价:,WITH sel SELECTq=a WHEN 00,b WHEN 01,c WHEN 01,d WHEN others;,PRCESS(sel,a,b,c,d)BEGINCASE sel IS WHEN 00=q q q q=d;END CASE;END PROCESS;,3.4 VHDL描述语句,简单的指令译码器LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;ENTITY decoder IS PORT(a,b,c:IN std_logic;data1,data2:in std_logic;dataout:out std_logic);END decoder;,3.4 VHDL描述语句,ARCHITECTURE art OF decoder IS SIGNAL ins:std_logic_vector(2 downto 0);BEGIN ins=cEND art,3.4 VHDL描述语句,练 习,设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用when else 语句来描述该数据选择器MUX的实体与结构体。,模块图,功能表,3.4 VHDL描述语句,Library ieee;Use ieee.std_logic_1164.all;Entity mymux isPort(sel:in std_logic_vector(1 downto 0);Ain,Bin:in std_logic_vector(1 downto 0);Cout:out std_logic_vector(1 downto 0);End mymux;Architecture three of mymux isBeginCout=ain or bin when sel=“00”else Ain xor bin when sel=“01”else Ain and bin when sel=“10”else ain nor bin;End three;,3.4 VHDL描述语句,复习上一次课堂教学主要内容,并行信号赋值语句(Concurrent Signal Assignment),(1)简单信号赋值语句(2)条件信号赋值语句(3)选择信号赋值语句,3.4 VHDL描述语句,本次课的内容,元件例化语句生成语句,3.4 VHDL描述语句,层次化设计示意,3.4 VHDL描述语句,VHDL层次化设计示意:,3.4 VHDL描述语句,元件声明类似实体ENTITY声明,元件例化语句(元件声明和元件调用),语法:COMPONENT 元件名 IS GENERIC说明;-类属参数说明 PORT 说明;-端口数据说明END COMPONENT 元件名;,元件声明定义:对所调用的较低层次的实体模块(元件)名称的类属参数、端口数据类型的声明。,3.4 VHDL描述语句,例:元件声明(调用元件之前要先元件声明),component add is generic(n:positive);port(x,y:in bit_vector(n-1 downto o);z:out bit_vector(n-1 downto 0);carry:out bit);end component add;,3.4 VHDL描述语句,component and2 port(i1,i2:in bit;O1:out bit);end component;,可在以下部分声明元件:结构体(Architecture)程序包(Package)块(Block),3.4 VHDL描述语句,被声明元件的来源:1.VHDL设计实体;2.其它HDL设计实体;3.另外一种标准格式的元件,如EDIF或XNF 4.厂商提供的工艺库中的元件、IP核,例:U1:ADD generic map(N=4);port map(x,y,z,carry);,元件例化语句(元件声明和元件调用),例化名称:元件名称 generic map(类属名称=表达式;,类属名称=表达式);port map(端口名称=当前端口或者信号;,端口名称=当前端口或者信号);,元件调用定义:把低层元件安装(调用)到当前层次设计实体内部的过程。包括:类属参数传递(映射)、元件端口映射。,3.4 VHDL描述语句,PORT端口映射方式,名称关联方式 port map(低层次端口名=当前层次端口名,.);例:or2 port map(o=n6,i1=n3,i2=n1);位置关联方式 port map(当前层次端口名,当前层次端口名,.);例:or2 port map(n3,n1,n6);,注:位置关联方式中,例化的端口表达式(信号)必须与元件声明语句中的端口顺序一致。,3.4 VHDL描述语句,一个低层次设计在被调用前必须有一个元件声明.ENTITY exam is PORT(ea,eb:IN BIT_VECTOR(3 DOWNTO 0);ey:OUT BIT_LOGIC);END exam;ARCHITECTURE exam_arch OF exam IS BEGIN END exam_arch;,u1:compare PORT MAP(ea,eb,ey);-元件调用,COMPONENT compare PORT(a:IN BIT_VECTOR(3 DOWNTO 0);b:IN BIT_VECTOR(3 DOWNTO 0);y:OUT BIT);END COMPONENT;-元件声明,3.4 VHDL描述语句,4位移位寄存器,4位移位寄存器由四个结构相同的DFF组成,对应的元件例化语句如下:,ENTITY shift IS port(a,clk:IN BIT;b:OUT BIT);END shift;,3.4 VHDL描述语句,architecture gen_shift of shift is component dff port(d,clk:in BIT;g:out BIT);end component;SIGNAL X:BIT_VECTOR(0 TO 4);BEGINX(0)=a;b=X(4)dff1:dff PORT MAP(X(0),clk,x(1);dff2:dff PORT MAP(X(1),clk,x(2);dff3:dff PORT MAP(X(2),clk,x(3);dff4:dff PORT MAP(X(3),CLK,x(4);end architecture;,3.4 VHD

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开