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

    EDA课件-时序逻辑电路.ppt

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

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

    EDA课件-时序逻辑电路.ppt

    时序逻辑电路设计,时序电路主要有触发器、寄存器、计数器、序列信号发生器和序列信号检测器等。,下一页,返回,一、时钟信号和复位信号,1.时钟信号的描述(1)若进程的敏感信号是时钟信号,这时时钟信号出现在PROCESS后的括号中。例:PROCESS(时钟信号名)BEGINIF(时钟信号变化条件)THEN 顺序语句;END IF;END PROCESS;,下一页,返回,(2)在进程中用WAIT ON语句等待时钟这样的电路没有敏感信号,进程通常停留在WAIT ON 语句上,只有时钟信号到来且满足一定条件时,其余语句才能执行。例:PROCESSBEGINWAIT ON(时钟信号名)UNTIL(时钟信号变化条件)顺序语句;END PROCESS;,下一页,返回,上一页,(3)时钟信号的边沿描述时钟信号上升沿VHDL描述如下:IF(clk event and clk=1)或WAIT UNTIL RISING_EDGE(clk);时钟信号下降沿VHDL描述如下:IF(clk event and clk=0)或WAIT UNTIL FALLING_EDGE(clk);,下一页,返回,上一页,2.复位信号(1)同步复位 同步复位是指,当时钟边沿有效且复位信号有效时,时序电路复位。同步信号复位的VHDL描述如下:PROCESS(时钟信号名)IF(时钟信号变化条件)THEN IF(复位信号变化条件)THEN 复位语句;ELSE 顺序语句;END IF;END IF;END PROCESS;,下一页,返回,上一页,(2)异步复位异步复位指的时,只要复位信号有效,时序电路就被复位,复位信与时钟信号外无关。异步信号复位的VHDL描述如下:PROCESS(时钟信号名)IF(复位信号变化条件)THEN 复位语句;ELSIF(时钟信号变化条件)THEN 顺序语句;END IF;END PROCESS;,下一页,返回,上一页,二、触发器触发器是构成时序逻辑电路的基本元件,常用的触发器包括RS触发器、JK触发器、D触发器等类型。1.D触发器例1:同步清零D触发器VHDL程序。,下一页,返回,上一页,集成触发器:是一种最常用的具有记忆功能,能存储数字信号的单元电路。触发器有两个基本特性:它有两个稳定状态,分别用来表示二进制数码0和1表示。在输入信号作用下,触发器两个稳定可相互转换,输入信号消失后,可使触发器能够记忆二进制信息。,它有一个或多个输入端;有两个互补输出端,分别用Q或 表示。当Q=1,时,称为触发器的1状态。当Q=0,时,称为触发器的0状态。现态:指触发器输入信号变化前的状态,用Qn表示。次态:指触发器输入信号变化后的状态,用Qn+1表示。,主要特点:同步D触发器解决了同步RS触发器的约束问题,但缺点是存在着空翻现象。空翻是指在CP=1期间,如果输入信号发生多次变化,D触发器的状态也会发生相应的变化。,同步D触发器的特征方程,例程一(无清零端):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff1 IS PORT(d:IN STD_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC);END dff1;ARCHITECTURE bhv OF dff1 IS signal q1:std_logic;BEGIN PROCESS(clk,q1)BEGIN IF clkevent and clk=1 THEN q1=d;end if;END PROCESS;q=q1;END bhv;,下一页,返回,上一页,例程二(有清零端):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff IS PORT(d:IN STD_LOGIC;clk:IN STD_LOGIC;clr:IN STD_LOGIC;q:OUT STD_LOGIC);END dff;ARCHITECTURE behav2 OF dff ISBEGINPROCESS(clk)BEGIN IF clkEVENT AND clk=1 THEN IF clr=1 THEN q=0;ELSE q=d;END IF;END IF;END PROCESS;END behav2;,下一页,返回,上一页,课堂练习:用VHDL设计异步清零D触发器。,下一页,返回,上一页,例2:异步清零D触发器VHDL程序(只写出了结构体)ARCHITECTURE behavl OF dff_y IS BEGIN PROCESS(clk,clr,d)BEGIN IF clr=1 THEN q=0;ELSIF clkEVENT AND clk=1 THEN q=d;END IF;END PROCESS;END behavl;,下一页,返回,上一页,CP=1期间有效,(约束条件),同步RS触发器的特征方程,基本RS触发器的特性表如下:,课堂练习:用VHDL语言设计RS触发器。,下一页,返回,上一页,2RS触发器【例6-12】RS触发器VHDL程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY rsff IS PORT(r,s:IN STD_LOGIC;q,qb:OUT STD_LOGIC);END rsff;ARCHITECTURE behavl OF rsff IS SIGNAL q_temp,qb_temp:STD_LOGIC;BEGIN PROCESS(r,s)BEGIN IF s=1AND r=0 THEN q_temp=0;qb_temp=1;,下一页,返回,上一页,ELSIF s=0AND r=1 THEN q_temp=1;qb_temp=0;ELSE q_temp=q_temp;qb_temp=qb_temp;END IF;END PROCESS;q=q_temp;qb=qb_temp;END behavl;,下一页,返回,上一页,课后作业:,用VHDL语言设计JK触发器。,下一页,返回,上一页,课后作业:,3.JK触发器【例6-13】JK触发器VHDL程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY JKCFQ IS PORT(J,K,CLK:IN STD_LOGIC;Q,QB:BUFFER STD_LOGIC);END JKCFQ;ARCHITECTURE ART OF JKCFQ IS SIGNAL Q_S,QB_S:STD_LOGIC;BEGIN PROCESS(CLK,J,K)BEGIN,下一页,返回,上一页,IF(CLKEVENT AND CLK=1)THEN IF(J=0 AND K=1)THEN Q_S=0;QB_S=1;ELSIF(J=1 AND K=0)THEN Q_S=1;QB_S=0;ELSIF(J=1 AND K=1)THEN Q_S=NOT Q_S;QB_S=NOT QB_S;END IF;END IF;Q=Q_S;QB=QB_S;END PROCESS;END ART;,下一页,返回,上一页,寄存器和移位寄存器1.寄存(锁存)器 寄存器用于寄存一组二值代码,广泛用于各类数字系统。因为一个触发器能储存1位二值代码,所以用N个触发器组成的寄存器能储存一组N位的二值代码。具有三态输出的8D锁存器元件符号如图6-3所示。CLR是复位控制输入端,当CLR=0时,8位数据输出Q7.0=00000000。ENA是使能控制输入端,当ENA=1时,锁存器处于工作状态,输出Q7.0D7.0;ENA=0时,锁存器的状态保持不变。OE是三态输出控制端,当OE=1时,输出为高阻态;OE=0时,锁存器为正常输出状态。,下一页,返回,上一页,图6-3 8D锁存器元件,返回,【例6-14】8D锁存器。LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY latch8 ISPORT(clr,clk,ena,oe:IN std_logic;d:IN std_logic_VECTOR(7 DOWNTO 0);q:BUFFER std_logic_VECTOR(7 DOWNTO 0);END latch8;,下一页,返回,上一页,ARCHITECTURE one OF latch8 ISSIGNAL q_temp:std_logic_VECTOR(7 DOWNTO 0);BEGIN u1:PROCESS(clk,clr,ena,oe)BEGIN IF clr=0 THEN q_temp=00000000;ELSIF clkEVENT AND clk=1 THENIF(ena=1)THEN q_temp=d;END IF;END IF;IF oe=1 THEN q=ZZZZZZZZ;ELSE q=q_temp;END IF;END PROCESS u1;END one;,下一页,返回,上一页,6.2 时序逻辑电路设计,2.移位寄存器 移位寄存器除了具有存储代码的功能以外,还具有移位功能。所谓移位功能,是指寄存器里存储的代码能在移位脉冲的作用下依次左移或右移。因此,移位寄存器不但可以用来寄存代码,还可用来实现数据的串并转换、数值的运算以及数据处理等。,下一页,返回,上一页,课堂练习,VHDL程序设计:设计具有左移一位或右移一位、并行输入和同步复位功能的8位移位寄存器VHDL程序。,下一页,返回,上一页,具有左移一位或右移一位、并行输入和同步复位功能的8位移位寄存器VHDL程序。LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY SHIFTER IS PORT(DATA:IN std_logic_VECTOR(7 DOWNTO 0);clk:IN std_logic;SHIFT_LEFT:IN std_logic;SHIFT_RIGHT:IN std_logic;RESET:IN std_logic;,下一页,返回,上一页,MODE:IN std_logic_VECTOR(1 DOWNTO 0);QOUT:BUFFER std_logic_VECTOR(7 DOWNTO 0);END SHIFTER;ARCHITECTURE ART OF SHIFTER IS BEGINPROCESS BEGINWAIT UNTIL(RISING_EDGE(CLK);IF(RESET=1)THEN QOUT=00000000;-同步复位功能的实现,下一页,返回,上一页,ELSE CASE MODE ISWHEN 01=QOUTQOUTQOUTNULL;END CASE;END IF;END PROCESS;END ART;,下一页,返回,上一页,计数器,计数器是在数字系统中使用最多的时序电路,它不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。,下一页,返回,上一页,1.具有清零端的4位二进制计数器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt4 IS PORT(clk:IN STD_LOGIC;clr:IN STD_LOGIC;q:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END cnt4;,下一页,返回,上一页,ARCHITECTURE behav OF cnt4 IS BEGIN PROCESS(clk,clr)BEGIN IF clr=1 THEN q=0000;ELSIF clkEVENT AND clk=1 THEN q=q+1;END IF;END PROCESS;END behav;,下一页,返回,上一页,信号名是外部端口(或接口)信号的标志符。信号分为5种模式,详细说明信号的方向,这5种模式为:in输入实体的信号。如时钟(clk)、复位(reset)、使能信号、地址输入等信号。out输出实体的信号。如计数输出、寄存器输出、控制其他单元的信号等。注意:这类信号不能被实体内部的结构体引用,只能被其他实体使用。,下一页,返回,上一页,buffer输出实体的信号,是可读的,即可以被实体内部的结构体引用,形成内部反馈。inout输入或输出实体的信号。这种模式经常用于可编程逻辑器件PLD中的三态输入/输出引脚,如用于设计双向数据总线等。linkage不指定实体端口的方向,可以与任意方向的数据或信号相连。其中,out和buffer都可以定义输出端口,但它们之间有区别,如图5-5所示。,图5-5 out和buffer模式的区别,(a)out模式;(b)buffer模式,返回,课堂练习2异步复位和同步时钟使能的十进制加法计数器。(课本P89),下一页,返回,上一页,38位异步复位的可预置加减计数器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY counter8 IS PORT(clk:IN STD_LOGIC;reset:IN STD_LOGIC;ce,load,dir:IN STD_LOGIC;din:IN INTEGER RANGE 0 TO 255;count:OUT INTEGER RANGE 0 TO 255);END counter8;,下一页,返回,上一页,ARCHITECTURE counter8_arch OF counter8 ISBEGIN PROCESS(clk,reset)VARIABLE counter:INTEGER RANGE 0 TO 255;BEGIN IF reset=1 THEN counter:=0;ELSIF clkEVENT AND clk=1 THEN IF load=1 THEN counter:=din;ELSE,下一页,返回,上一页,IF ce=1 THEN IF dir=1 THEN IF counter=255 THEN counter:=0;ELSE counter:=counter+1;END IF;ELSE IF counter=0 THEN counter:=255;ELSE counter:=counter-1;END IF;END IF;END IF;END IF;END IF;count=counter;END PROCESS;END counter8_arch;,下一页,返回,上一页,课后作业1.4位移位寄存器型扭环计数器VHDL程序;2.具有异步复位,模为60的8421BCD码加法计数器VHDL程序。,下一页,返回,上一页,参考程序:34位移位寄存器型扭环计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_cnt4 IS-本例的4位扭环计数器采用高位取反后移至低位的循环码编码方式,下一页,返回,上一页,PORT(clr,clk:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END shift_cnt4;ARCHITECTURE behav OF shift_cnt4 IS SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d0:STD_LOGIC;-描述最低位的输入信号,扭环计数器的设计关键所在 BEGIN PROCESS(clk,clr)BEGIN,下一页,返回,上一页,IF clr=1 THEN q=1111;-置计数器的初始状态 ELSIF clkEVENT AND clk=1 THEN q(0)=d0;q(3 DOWNTO 1)=q(2 DOWNTO 0);-时钟上沿到来时移位 END IF;IF(q=1111OR q=1110OR q=1100OR q=1000OR q=0000OR q=0001OR q=0011OR q=0111)THEN d0=NOT q(3);ELSE,下一页,返回,上一页,IF q=1010OR q=0101THEN-如果进入非法状态,电路能够自启动 d0=NOT q(3);ELSE d0=q(3);END IF;END IF;END PROCESS;Y=q;END behav;,下一页,返回,上一页,4具有异步复位,模为60的8421BCD码加法计数器。参考程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNTM60 IS PORT(CLK,RESET:IN STD_LOGIC;CO:OUT STD_LOGIC;QH:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END CNTM60,下一页,返回,上一页,ARCHITECTURE ART OF CNTM60 IS BEGIN CO=1WHEN(QH=0101AND QL=1001)ELSE0;PROCESS(CLK,RESET)BEGINIF(RESET=0)THEN QH=0000;QL=0000;ELSIF(CLKEVENT AND CLK=1)THEN IF(QL=9)THEN QL=0000;,下一页,返回,上一页,IF(QH=5)THEN QH=0000;ELSE QH=QH+1;END IF;ELSE QL=QL+1;END IF;END IF;END PROCESS;END ART;,下一页,返回,上一页,可逆计数器,8位二进制加减计数器的元件符号如图6-4所示,CLR是复位控制输入端;ENA是使能控制输入端;LOAD是预置控制输入端;D7.0是8位并行数据输入端;UPDOWN是加减控制输入端,当UPDOWN=0时,计数器作加法操作,UPDOWN=1时,计数器作减法操作;COUT是进位/借位输出端。,下一页,返回,上一页,图6-4 8位二进制加减计数器,返回,用VHDL描述的8位二进制加减计数器源程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY updowncnt8 IS PORT(clr,clk,ena,load,updown:IN STD_LOGIC;d:IN INTEGER RANGE 0 TO 255;cout:OUT STD_LOGIC;q:BUFFER INTEGER RANGE 0 TO 255);END updowncnt8;,下一页,返回,上一页,ARCHITECTURE one OF updowncnt8 ISBEGIN PROCESS(clk,ena,clr,d,load,updown)BEGIN IF CLR=0 THEN q=0;ELSIF clkEVENT AND clk=1 THEN,下一页,返回,上一页,IF load=1 THEN q=d;ELSIF ena=1 THEN IF updown=0 THEN q=q+1;IF q=255 THEN COUT=1;END IF;ELSE q=q-1;IF q=0 THEN COUT=0;END IF;END IF;END IF;END IF;END PROCESS;END one;,下一页,返回,上一页,序列信号发生器和检测器,1.序列信号发生器 在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号,产生序列信号的电路称为序列信号发生器。【例6-22】“01111110”序列发生器VHDL程序。LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY xulie IS PORT(CLK,LOAD,EN:IN std_logic;DATA:IN std_logic_VECTOR(20 DOWNTO 0);LOUT:BUFFER std_logic);END xulie;,下一页,返回,上一页,ARCHITECTURE ART OF xulie 0 IS CONSTANT LEN:INTEGER:=20;SIGNAL LFSR_VAL:std_logic_VECTOR(LEN DOWNTO 0);SIGNAL DOUT:std_logic_VECTOR(LEN DOWNTO 0);BEGIN PROCESS(LOAD,EN,DOUT)BEGIN IF(LOAD=1)THEN LFSR_VAL=DATA;ELSIF(EN=1)THEN LFSR_VAL(0)=DOUT(3)XOR DOUT(LEN);LFSR_VAL(LEN DOWNTO 1)=DOUT(LEN-1 DOWNTO 0);,下一页,返回,上一页,END IF;END PROCESS;PROCESS(CLK)BEGIN IF(CLKEVENT AND CLK=1)THEN DOUT=LFSR_VAL;LOUT=LFSR_VAL(LEN);END IF;END PROCESS;END ART;,下一页,返回,上一页,2.序列信号检测器VHDL程序设计:设计一个“11100101”序列信号检测器的VHDL程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN,CLK,CLR:IN STD_LOGIC;-串行输入数据位/工作时钟/复位信号 AB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-检测结果输出END SCHK;,下一页,返回,上一页,ARCHITECTURE behav OF SCHK IS SIGNAL Q:INTEGER RANGE 0 TO 8;SIGNAL D:STD_LOGIC_VECTOR(7 DOWNTO 0);-8位待检测预置数BEGIN D=11100101;-8位待检测预置数:密码:E5H PROCESS(CLK,CLR)BEGIN IF CLR=1 THEN Q=0;ELSIF CLKEVENT AND CLK=1 THEN-时钟到来时,判断并处理当前输入的位,下一页,返回,上一页,CASE Q IS WHEN 0=IF DIN=D(7)THEN Q IF DIN=D(6)THEN Q IF DIN=D(5)THEN Q IF DIN=D(4)THEN Q IF DIN=D(3)THEN Q IF DIN=D(2)THEN Q IF DIN=D(1)THEN Q IF DIN=D(0)THEN Q Q=0;END CASE;,下一页,返回,上一页,END IF;END PROCESS;PROCESS(Q)-检测结果判断输出 BEGIN IF Q=8 THEN AB=1010;-序列数检测正确,输出 A ELSE AB=1011;-序列数检测错误,输出 B END IF;END PROCESS;END behav;,下一页,返回,上一页,6.4 状态机设计,状态机概述 状态机就是一组触发器的输出状态随着时钟和输入信号按照一定的规律变化的一种机制或过程。任何时序电路都可以表示为有限状态机(Finite State Machine,FSM),有限状态机是实现高可靠逻辑控制的重要途径,是大型数字系统设计中的重要组成部分,尤其是进行复杂时序逻辑电路的实现。有限状态机根据输出信号与当前状态以及输入信号的关系来分,可以分为Moore型和Mealy型两种:输出信号只和当前状态有关的状态机称为Moore型状态机,如图6-7所示;输出信号不仅和当前状态有关,而且也和输入信号有关的状态机称为Mealy型状态机,如图6-8所示。,下一页,返回,图6-7 Moore型有限状态机示意图,返回,图6-8 Mealy型有限状态机示意图,返回,6.4 状态机设计,状态机设计时一般用枚举类型列举说明状态机的状态,通过进程来描述状态的转移和输出。状态机的内部逻辑也可使用多进程方式来描述。例如,可使用两个进程来描述,一个进程描述时序逻辑,包括状态寄存器的工作和寄存器状态的输出,另一个进程描述组合逻辑,包括进程间状态值的传递逻辑以及状态转换值的输出。必要时还可以引入第三个进程完成其他的逻辑功能。6.4.2 Moore型状态机设计 下面以一个具体的双向步进电机控制的例子来讲述Moore型状态机的设计过程。该控制电路的输入信号有3个:时钟信号clk,复位信号reset和方向控制信号dir。输出信号为phase3.0,用来控制步进电机的动作。,下一页,返回,上一页,6.4 状态机设计,当方向控制信号dir为1时,要求输出信号phase3.0 按照“0001”、“0010”、“0100”、“1000”、“0001”的顺序循环变化。当方向控制信号dir为0时,要求输出信号phase3.0按照“1000”、“0100”、“0010”、“0001”、“1000”的顺序循环变化。根据控制器的功能要求,画出状态转换图和状态与输出信号的关系,分别如图6-9和表6-4所示。,下一页,返回,上一页,图6-9 步进电机控制器的状态转换图,返回,表6-4 步进电机状态与输出信号的对应关系,返回,6.4 状态机设计,【例6-26】步进电机控制器VHDL程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY stepmotor IS PORT(clk,reset:IN STD_LOGIC;dir:IN STD_LOGIC;phase:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY stepmotor;ARCHITECTURE arc1 OF stepmotor ISTYPE states IS(s0,s1,s2,s3);,下一页,返回,上一页,6.4 状态机设计,SIGNAL current_state:states;BEGIN PROCESS(clk)BEGIN IF clkEVENT AND clk=1 THEN IF reset=1 THEN current_state=s0;ELSE CASE current_state IS,下一页,返回,上一页,6.4 状态机设计,WHEN s0=IF dir=1 THEN current_state IF dir=1 THEN current_state=s2;ELSE current_state=s0;END IF;,下一页,返回,上一页,6.4 状态机设计,WHEN s2=IF dir=1 THEN current_state IF dir=1 THEN current_state=s0;ELSE current_state=s2;END IF;,下一页,返回,上一页,6.4 状态机设计,WHEN OTHERS=current_state phase=0001,下一页,返回,上一页,6.4 状态机设计,WHEN s1=phase phase phase=1000;END CASE;END PROCESS;END ARCHITECTURE arc1;步进电机控制器的仿真波形图如图6-10所示。,下一页,返回,上一页,图6-10 步进电机控制器的仿真波形图,返回,6.4 状态机设计,从图6-10可以看出,该状态机是将状态寄存器和次态逻辑用一个进程描述,将输出逻辑用另一个进程描述,所以输出信号中有一些毛刺信号。如果要消除这个现象,可以采用单进程有限状态机进行描述。如果是作组合逻辑电路的驱动信号,则可以忽略。,下一页,返回,上一页,6.4 状态机设计,6.4.3 Mealy型状态机设计与Moore型状态机不同,Mealy型状态机的输出信号不仅与当前状态有关,而且与输入信号有关,因此输入信号可以直接影响输出信号,不依赖与时钟的同步,属于异步时序的概念。但是,设计方法与Moore型状态机基本类似,区别在于输出逻辑的建模中,进程敏感信号不仅包括当前状态,也包含输入信号。因此与Moore型状态机相比,输出信号的变化要领先一个周期。,下一页,返回,上一页,下面以一个具体的例子来讲述Mealy型状态机的设计过程,如【例6-27】所示,该状态机也是将状态寄存器和次态逻辑用一个进程描述,将输出逻辑用另一个进程描述。【例6-27】Mealy型状态机VHDL程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY pacheck IS PORT(clk,rst:IN STD_LOGIC;id:IN STD_LOGIC_VECTOR(3 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);,下一页,返回,上一页,END ENTITY pacheck;ARCHITECTURE arc1 OF pacheck is TYPE states IS(state0,state1,state2,state3,state4);SIGNAL state:states;SIGNAL y1:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN PROCESS(clk,rst)BEGIN IF rst=1 then state=state0;ELSIF(clkEVENT and clk=1)then,下一页,返回,上一页,CASE state IS WHEN state0=IF id=x3 THEN state IF id=x1 THEN state=state2;ELSE state=state1;END IF;,下一页,返回,上一页,WHEN state2=IF id=x7 THEN state IF id xb THEN state=state4;ELSE state=state3;END IF;,下一页,返回,上一页,WHEN state4=IF id=x5 THEN state state=state0;END CASE;END IF;END PROCESS;PROCESS(state,clk,id)VARIABLE tmp:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN,下一页,返回,上一页,CASE state IS WHEN state0=IF id=x3 THEN tmp:=01;ELSE tmp:=00;END IF;WHEN state1=IF id=x1 THEN tmp:=10;ELSE tmp:=00;END IF;WHEN state2=IF id=x7 THEN tmp:=11;ELSE tmp:=00;END IF;WHEN state3=IF id=xB THEN tmp:=00;ELSE tmp:=00;END IF;WHEN state4=IF id=x5 THEN tmp:=01;ELSE tmp:=00;END IF;WHEN OTHERS=y=00;END CASE;IF clkEVENT AND clk=1 THEN y1=tmp;,下一页,返回,上一页,END IF;END PROCESS;y=y1;END arc1;Mealy型有限状态机的仿真波形如图6-11所示。从仿真波形图中可以看出,状态机的输出信号Y不仅和当前状态有关,而且和输入信号有关,如图中状态机的当前状态为state 1时,由于输入信号不同,输出信号Y分别为“01”和“00”。,返回,上一页,图6-11 Mealy型有限状态机仿真波形,返回,8位数码扫描显示电路设计 如下图所示的是8位数码扫描显示电路,其中每个数码管的8个段:h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、k8来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。,返回,上一页,8位数码扫描显示电路设计 根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。,返回,上一页,8位数码扫描显示电路,返回,上一页,扫描显示的示例程序中,其中clk是扫描时钟;SG为7段控制信号,由高位至低位分别接g、f、e、d、c、b、a 7个段;BT是位选控制信号,接图中的8个选通信号:k1、k2、k8。,返回,上一页,程序中CNT8是一个3位计数器,作扫描计数信号,由进程P2生成;进程P3是7段译码查表输出程序;进程P1是对8个数码管选通的扫描程序,例如当CNT8等于001 时,K2对应的数码管被选通,同时,A被赋值3,再由进程P3译码输出1001111,显示在数码管上即为“3”;当CNT8扫变时,将能在8个数码管上显示数据:13579BDF。,返回,上一页,数控分频器的设计 数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。,返回,上一页,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开