EDA VHDL第三章顺序语句课件.ppt
《EDA VHDL第三章顺序语句课件.ppt》由会员分享,可在线阅读,更多相关《EDA VHDL第三章顺序语句课件.ppt(103页珍藏版)》请在三一办公上搜索。
1、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描述语句,顺序语
2、句:,一、对象与赋值语句,要求:表达式的值必须与对象的类型.宽度一致,所有对象分:变量和信号 对象:=表达式;-变量赋值 对象=表达式;-信号赋值,3.4 VHDL描述语句,2.变量赋值与信号赋值,变量赋值与信号赋值的差异,1)赋值方式的不同:变量:=表达式;信号=表达式;,2)硬件实现的功能不同:信号代表电路单元、功能模块间的互联,代表实际的硬件连线;变量代表电路单元内部的操作,代表暂存的临时数据。,3.4 VHDL描述语句,3)有效范围的不同,信号:程序包、实体、结构体:全局量变量:进程、子程序:局部量ARCHITECTURESIGNAL Declarations label1:PROCE
3、SS 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 proces
4、s;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
5、 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描述语句,
6、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描述语句,如改成信号,则无法实现原功能;.si
7、gnal 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种不同的条件:,
8、二、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 表达式;表示
9、式的值为“真”时,进程被启动,否则被挂起,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描述语句,时钟信号
10、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;-将内部的暂存数据向端口
11、输出(双横线-是注 释符号)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触发器
12、,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 pr
13、ocess(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 r
14、t1 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_LOG
15、IC_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(
16、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 值 顺序处理语句;WH
17、EN 值|值|值 顺序处理语句;以上三种方法的混合: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.
18、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 rang
19、e 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;E
20、ND 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;
21、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重
22、复执行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;E
23、NTITY 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,dat
24、a_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
25、(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 标
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA VHDL第三章顺序语句课件 VHDL 第三 顺序 语句 课件
链接地址:https://www.31ppt.com/p-2166794.html