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

上传人:wuy****n92 文档编号:70104128 上传时间:2023-01-16 格式:PPT 页数:94 大小:797.50KB
返回 下载 相关 举报
EDA课件-时序逻辑电路.ppt_第1页
第1页 / 共94页
EDA课件-时序逻辑电路.ppt_第2页
第2页 / 共94页
点击查看更多>>
资源描述

《EDA课件-时序逻辑电路.ppt》由会员分享,可在线阅读,更多相关《EDA课件-时序逻辑电路.ppt(94页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、时序逻辑电路设计时序逻辑电路设计u 时序电路主要有触发器、寄存时序电路主要有触发器、寄存器、计数器、序列信号发生器和序器、计数器、序列信号发生器和序列信号检测器等。列信号检测器等。下一页 返回一、时钟信号和复位信号一、时钟信号和复位信号u1.时钟信号的描述时钟信号的描述(1)若进程的敏感信号是时钟信号,这若进程的敏感信号是时钟信号,这时时钟信号出现在时时钟信号出现在PROCESS后的括号后的括号中。中。例:例:PROCESS(时钟信号名时钟信号名)BEGINIF(时钟信号变化条件时钟信号变化条件)THEN 顺序语句;顺序语句;END IF;END PROCESS;下一页 返回(2)在进程中用在

2、进程中用WAIT ON语句等待时钟语句等待时钟这样的电路没有敏感信号,进程通常停留这样的电路没有敏感信号,进程通常停留在在WAIT ON 语句上,只有时钟信号到来且语句上,只有时钟信号到来且满足一定条件时,其余语句才能执行。满足一定条件时,其余语句才能执行。例:例:PROCESSBEGINWAIT ON(时钟信号名时钟信号名)UNTIL(时钟信号时钟信号变化条件变化条件)顺序语句;顺序语句;END PROCESS;下一页 返回上一页(3)时钟信号的边沿描述时钟信号的边沿描述时钟信号时钟信号上升沿上升沿VHDL描述如下:描述如下:IF(clk event and clk=1)或或WAIT UNT

3、IL RISING_EDGE(clk);时钟信号时钟信号下降沿下降沿VHDL描述如下:描述如下:IF(clk event and clk=0)或或WAIT UNTIL FALLING_EDGE(clk);下一页 返回上一页u2.复位信号复位信号(1)同步复位同步复位 同步复位是指,当时钟边沿有效同步复位是指,当时钟边沿有效且且复位信号有效复位信号有效时,时序电路复位。时,时序电路复位。同步信号复位的同步信号复位的VHDL描述如下:描述如下:PROCESS(时钟信号名时钟信号名)IF(时钟信号变化条件时钟信号变化条件)THEN IF(复位信号变化条件复位信号变化条件)THEN 复位语句;复位语句

4、;ELSE 顺序语句;顺序语句;END IF;END IF;END PROCESS;下一页 返回上一页(2)异步复位异步复位异步复位指的时,异步复位指的时,只要复位信号有效只要复位信号有效,时序电路,时序电路就被复位,复位信与时钟信号外无关。就被复位,复位信与时钟信号外无关。异步信号复位的异步信号复位的VHDL描述如下:描述如下:PROCESS(时钟信号名时钟信号名)IF(复位信号变化条件复位信号变化条件)THEN 复位语句;复位语句;ELSIF(时钟信号变化条件时钟信号变化条件)THEN 顺序语句;顺序语句;END IF;END PROCESS;下一页 返回上一页u二、触发器二、触发器u触发

5、器是构成时序逻辑电路的基本元件触发器是构成时序逻辑电路的基本元件,常常用的触发器包括用的触发器包括RS触发器、触发器、JK触发器、触发器、D触发器等类型。触发器等类型。u1.D触发器触发器u例例1:同步清零:同步清零D触发器触发器VHDL程序。程序。下一页 返回上一页集成触发器:集成触发器:是一种最常用的具有记忆功能,能存是一种最常用的具有记忆功能,能存储数字信号的单元电路。储数字信号的单元电路。触发器有两个基本特性:触发器有两个基本特性:它有两个稳定状态,分别用来表示二进制数码它有两个稳定状态,分别用来表示二进制数码0 0和和1 1表示。表示。在输入信号作用下,触发器两个稳定可相互转在输入信

6、号作用下,触发器两个稳定可相互转换,输入信号消失后,可使触发器能够换,输入信号消失后,可使触发器能够记忆记忆二进制信二进制信息。息。它有一个或多个输入端;有两个互补输出端,它有一个或多个输入端;有两个互补输出端,分别用分别用Q或或 表示。表示。当当Q=1,时,称为触发器的时,称为触发器的1 1状态。状态。当当Q=0,时,称为触发器的时,称为触发器的0 0状态。状态。现态:现态:指触发器输入信号变化前的状态,用指触发器输入信号变化前的状态,用Qn表表示。示。次态:次态:指触发器输入信号变化后的状态,用指触发器输入信号变化后的状态,用Qn+1表示。表示。同步同步D触发器触发器 主要特点主要特点:同

7、步:同步D触发器解决了同步触发器解决了同步RS触发器的约束问题,触发器的约束问题,但缺点是存在着空翻现象。空翻是指在但缺点是存在着空翻现象。空翻是指在CP=1期间,如果输期间,如果输入信号发生多次变化,入信号发生多次变化,D触发器触发器的状态也会发生相应的变的状态也会发生相应的变化。化。同步同步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_LO

8、GIC);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_

9、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;下一页 返回上一页课堂练习:课堂练习:u用用VHDL设计异步清零设计异步清零D触发器。触发器。下一页 返回上一页u例例2:异步清零:异步清零D触发器触发器VHDL程序(只写出了结构体)程序(只写出了结构体)ARCHITECTURE behavl OF dff_y IS BEGIN P

10、ROCESS(clk,clr,d)BEGIN IF clr=1 THEN q=0;ELSIF clkEVENT AND clk=1 THEN q=d;END IF;END PROCESS;END behavl;下一页 返回上一页 电路组成和逻辑符号电路组成和逻辑符号信号输入端,低电平有效。信号输入端,低电平有效。图是同步图是同步RS触发器的基本逻辑电路。触发器的基本逻辑电路。R、S是信号输入端,是信号输入端,CP为时钟脉冲输入端。为时钟脉冲输入端。同步同步RS触发器触发器CP=1期间有效期间有效(约束条件)(约束条件)同步同步RS触发器的特征方程触发器的特征方程同步同步RS触发器触发器工工作作

11、波波形形l基本RS触发器的特性表如下:输入变量触发器状态变换说明000触发器状态不定 0010100触发器置0 01101001触发器置1 10111100触发器保持原状态不变 1111u课堂练习:课堂练习:用用VHDL语言设计语言设计RS触发器。触发器。下一页 返回上一页u2RS触发器触发器u【例例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

12、 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;下一页 返回上一页课后作业:课后作业:u用用VHDL语言设计语言设计JK触发器。触发器。下一页 返回上一页课后作业:课

13、后作业:u3.JK触发器触发器u【例例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=

14、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;下一页 返回上一页u寄存器和移位寄存器寄存器和移位寄存器u1.寄存寄存(锁存锁存)器器u 寄存器用于寄存一组二值代码,广泛用于各寄存器用于寄存一组二值代码,广泛用于各类数字系统。因为一个触发器能储存类数字系统。因为一个触发器能储存1位二值代码,位二值代码,所以用所以用N个触发器组成的寄存器能储存一组个触发器组成的寄

15、存器能储存一组N位的位的二值代码。二值代码。u 具有三态输出的具有三态输出的8D锁存器元件符号如锁存器元件符号如图图6-3所所示。示。CLR是复位控制输入端,当是复位控制输入端,当CLR=0时,时,8位数位数据输出据输出Q7.0=00000000。ENA是使能控制输入端,是使能控制输入端,当当ENA=1时,锁存器处于工作状态,输出时,锁存器处于工作状态,输出Q7.0D7.0;ENA=0时,锁存器的状态保持不变。时,锁存器的状态保持不变。OE是三态输出控制端,当是三态输出控制端,当OE=1时,输出为高阻时,输出为高阻态;态;OE=0时,锁存器为正常输出状态。时,锁存器为正常输出状态。下一页 返回

16、上一页图图6-3 8D锁存器元件锁存器元件返回u【例例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);BEGI

17、N 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 时序逻辑电路设计时序逻辑电路设计u2.移位寄存器移位寄存器u 移位寄存器除了具有存储代码的功移位寄存器除了具有存储代码的功能以外,还具有移位功能。所谓移位功能以外,还具有移位功能

18、。所谓移位功能,是指寄存器里存储的代码能在移位能,是指寄存器里存储的代码能在移位脉冲的作用下依次左移或右移。因此,脉冲的作用下依次左移或右移。因此,移位寄存器不但可以用来寄存代码,还移位寄存器不但可以用来寄存代码,还可用来实现数据的串并转换、数值的运可用来实现数据的串并转换、数值的运算以及数据处理等。算以及数据处理等。下一页 返回上一页课堂练习课堂练习uVHDL程序设计:设计具有左移一位程序设计:设计具有左移一位或右移一位、并行输入和同步复位功或右移一位、并行输入和同步复位功能的能的8位移位寄存器位移位寄存器VHDL程序。程序。下一页 返回上一页u具有左移一位或右移一位、并行输入和同步复位功具

19、有左移一位或右移一位、并行输入和同步复位功能的能的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_log

20、ic_VECTOR(7 DOWNTO 0);END SHIFTER;ARCHITECTURE ART OF SHIFTER IS BEGINPROCESS BEGINWAIT UNTIL(RISING_EDGE(CLK);IF(RESET=1)THEN QOUTQOUTQOUTQOUTNULL;END CASE;END IF;END PROCESS;END ART;下一页 返回上一页计数器计数器u 计数器是在数字系统中使用最多的计数器是在数字系统中使用最多的时序电路,它不仅能用于对时钟脉冲计时序电路,它不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍数,还可以用于分频、定时、产生节拍脉

21、冲和脉冲序列以及进行数字运算等。脉冲和脉冲序列以及进行数字运算等。下一页 返回上一页u1.具有清零端的具有清零端的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

22、(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输出实体的信号。如计数输出、寄存器输输出实体的信号。如计数输出

23、、寄存器输出、控制其他单元的信号等。注意出、控制其他单元的信号等。注意:这类信这类信号不能被实体内部的结构体引用号不能被实体内部的结构体引用,只能被其只能被其他实体使用。他实体使用。下一页 返回上一页buffer输出实体的信号输出实体的信号,是可读的是可读的,即可以被即可以被实体内部的结构体引用实体内部的结构体引用,形成内部反馈。形成内部反馈。inout输入或输出实体的信号。这种模式经常输入或输出实体的信号。这种模式经常用于可编程逻辑器件用于可编程逻辑器件PLD中的三态输入中的三态输入/输出输出引脚引脚,如用于设计双向数据总线等。如用于设计双向数据总线等。linkage不指定实体端口的方向不指

24、定实体端口的方向,可以与任意可以与任意方向的数据或信号相连。方向的数据或信号相连。其中,其中,out和和buffer都可以定义输出端口,但都可以定义输出端口,但它们之间有区别,如它们之间有区别,如图图5-5所示。所示。图图5-5 out和和buffer模式的区别模式的区别(a)out模式;模式;(b)buffer模式模式 返回u课堂练习课堂练习u2异步复位和同步时钟使能的十进制加法计异步复位和同步时钟使能的十进制加法计数器。(课本数器。(课本P89)下一页 返回上一页u38位异步复位的可预置加减计数器。位异步复位的可预置加减计数器。LIBRARY IEEE;USE IEEE.STD_LOGIC

25、_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

26、=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;

27、END counter8_arch;下一页 返回上一页课后作业课后作业1.4位移位寄存器型扭环计数器位移位寄存器型扭环计数器VHDL程序;程序;2.具有异步复位,模为具有异步复位,模为60的的8421BCD码加法计数器码加法计数器VHDL程序。程序。下一页 返回上一页参考程序:参考程序:u34位移位寄存器型扭环计数器位移位寄存器型扭环计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_cnt4 IS-本例的本例的4位扭环位扭环计数器采用高位取反后移至低位的循环计数器采用高位取反后移至低位的循环码编码方式码编码方式下一页 返回上一页

28、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

29、 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

30、=q;END behav;下一页 返回上一页u4具有异步复位,模为具有异步复位,模为60的的8421BCD码加法码加法计数器。计数器。u参考程序:参考程序: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 CNTM6

31、0 下一页 返回上一页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;下一页 返回上一页可逆计数器可

32、逆计数器u 8位二进制加减计数器的元件符号如位二进制加减计数器的元件符号如图图6-4所示所示,CLR是复位控制输入端是复位控制输入端;ENA是使能控是使能控制输入端制输入端;LOAD是预置控制输入端是预置控制输入端;D7.0是是8位并行数据输入端位并行数据输入端;UPDOWN是加减控制输是加减控制输入端入端,当当UPDOWN=0时时,计数器作加法操作计数器作加法操作,UPDOWN=1时时,计数器作减法操作计数器作减法操作;COUT是进是进位位/借位输出端。借位输出端。下一页 返回上一页图图6-4 8位二进制加减计数器位二进制加减计数器返回u用用VHDL描述的描述的8位二进制加减计数器源程序。位

33、二进制加减计数器源程序。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 I

34、F 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;下一页 返回上一页序列信号发生器和检测器序列信号发生器和检测器u1.序列信号发生器序列信号发生器u 在数字信号的传输和数字系统的测试中,有时需要用在数字信号的传

35、输和数字系统的测试中,有时需要用到一组特定的串行数字信号,产生序列信号的电路称为序到一组特定的串行数字信号,产生序列信号的电路称为序列信号发生器。列信号发生器。u【例例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 A

36、RT 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

37、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;下一页 返回上一页u2.序列信号检测器序列信号检测器uVHDL程序设计:设计一个程序设计:设计一个“11100101”序序列信号检测器的列信号检测器的VHDL程序。程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN,CLK,CLR :IN STD_LOGIC;-串行输入数据位

38、串行输入数据位/工作时钟工作时钟/复位信号复位信号 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 IF DIN=D

39、(7)THEN Q=1;ELSE Q IF DIN=D(6)THEN Q=2;ELSE Q IF DIN=D(5)THEN Q=3;ELSE Q IF DIN=D(4)THEN Q=4;ELSE Q IF DIN=D(3)THEN Q=5;ELSE Q IF DIN=D(2)THEN Q=6;ELSE Q IF DIN=D(1)THEN Q=7;ELSE Q IF DIN=D(0)THEN Q=8;ELSE Q Q=0;END CASE;下一页 返回上一页 END IF;END PROCESS;PROCESS(Q)-检测结果判断输出检测结果判断输出 BEGIN IF Q=8 THEN AB=1

40、010;-序列数序列数检测正确,输出检测正确,输出 A ELSE AB=1011;-序列数检序列数检测错误,输出测错误,输出 B END IF;END PROCESS;END behav;下一页 返回上一页6.4 状态机设计状态机设计u状态机概述状态机概述u 状态机就是一组触发器的输出状态随着时钟和输入信号按照状态机就是一组触发器的输出状态随着时钟和输入信号按照一定的规律变化的一种机制或过程。任何时序电路都可以表示一定的规律变化的一种机制或过程。任何时序电路都可以表示为有限状态机为有限状态机(Finite State Machine,FSM),有限状态机是实),有限状态机是实现高可靠逻辑控制的

41、重要途径,是大型数字系统设计中的重要现高可靠逻辑控制的重要途径,是大型数字系统设计中的重要组成部分,尤其是进行复杂时序逻辑电路的实现。组成部分,尤其是进行复杂时序逻辑电路的实现。u 有限状态机根据输出信号与当前状态以及输入信号的关系来有限状态机根据输出信号与当前状态以及输入信号的关系来分,可以分为分,可以分为Moore型和型和Mealy型两种:输出信号只和当前状态型两种:输出信号只和当前状态有关的状态机称为有关的状态机称为Moore型状态机,如型状态机,如图图6-7所示;输出信号不所示;输出信号不仅和当前状态有关,而且也和输入信号有关的状态机称为仅和当前状态有关,而且也和输入信号有关的状态机称

42、为Mealy型状态机,如型状态机,如图图6-8所示。所示。下一页 返回图图6-7 Moore型有限状态机示意图型有限状态机示意图返回图图6-8 Mealy型有限状态机示意图型有限状态机示意图返回6.4 状态机设计状态机设计u 状态机设计时一般用枚举类型列举说明状态机的状态,通过状态机设计时一般用枚举类型列举说明状态机的状态,通过进程来描述状态的转移和输出。状态机的内部逻辑也可使用多进程来描述状态的转移和输出。状态机的内部逻辑也可使用多进程方式来描述。例如,可使用两个进程来描述,一个进程描进程方式来描述。例如,可使用两个进程来描述,一个进程描述时序逻辑,包括状态寄存器的工作和寄存器状态的输出,另

43、述时序逻辑,包括状态寄存器的工作和寄存器状态的输出,另一个进程描述组合逻辑,包括进程间状态值的传递逻辑以及状一个进程描述组合逻辑,包括进程间状态值的传递逻辑以及状态转换值的输出。必要时还可以引入第三个进程完成其他的逻态转换值的输出。必要时还可以引入第三个进程完成其他的逻辑功能。辑功能。u6.4.2 Moore型状态机设计型状态机设计u 下面以一个具体的双向步进电机控制的例子来讲述下面以一个具体的双向步进电机控制的例子来讲述Moore型型状态机的设计过程。该控制电路的输入信号有状态机的设计过程。该控制电路的输入信号有3个:时钟信号个:时钟信号clk,复位信号复位信号reset和方向控制信号和方向

44、控制信号dir。输出信号为。输出信号为phase3.0,用来控制步进电机的动作。用来控制步进电机的动作。下一页 返回上一页6.4 状态机设计状态机设计u 当方向控制信号当方向控制信号dir为为1时,要求输出信号时,要求输出信号phase3.0 按照按照“0001”、“0010”、“0100”、“1000”、“0001”的顺序的顺序循环变化。当方向控制信号循环变化。当方向控制信号dir为为0时,要求输出信号时,要求输出信号phase3.0按照按照“1000”、“0100”、“0010”、“0001”、“1000”的的顺序循环变化。顺序循环变化。u 根据控制器的功能要求,画出状态转换图和状态与输出

45、信号根据控制器的功能要求,画出状态转换图和状态与输出信号的关系,分别如的关系,分别如图图6-9和和表表6-4所示。所示。下一页 返回上一页图图6-9 步进电机控制器的状态转换图步进电机控制器的状态转换图返回表表6-4 步进电机状态与输出信号的对应关系步进电机状态与输出信号的对应关系返回6.4 状态机设计状态机设计u【例例6-26】步进电机控制器步进电机控制器VHDL程序。程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY stepmotor IS PORT(clk,reset:IN STD_LOGIC;dir:IN STD_LOGIC;phas

46、e: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_stateu IF dir=1 THENu current_state=s1;u ELSE u current_

47、stateu IF dir=1 THENu current_state=s2;u ELSE u current_state IF dir=1 THEN current_state=s3;ELSE current_state IF dir=1 THEN current_state=s0;ELSE current_state current_state phase phase phase phase=1000;END CASE;END PROCESS;END ARCHITECTURE arc1;u步进电机控制器的仿真波形图如步进电机控制器的仿真波形图如图图6-10所示。所示。下一页 返回上一页图图

48、6-10 步进电机控制器的仿真波形图步进电机控制器的仿真波形图返回6.4 状态机设计状态机设计u 从图从图6-10可以看出,该状态机是将可以看出,该状态机是将状态寄存器和次态逻辑用一个进程描述,状态寄存器和次态逻辑用一个进程描述,将输出逻辑用另一个进程描述,所以输将输出逻辑用另一个进程描述,所以输出信号中有一些毛刺信号。如果要消除出信号中有一些毛刺信号。如果要消除这个现象,可以采用单进程有限状态机这个现象,可以采用单进程有限状态机进行描述。如果是作组合逻辑电路的驱进行描述。如果是作组合逻辑电路的驱动信号,则可以忽略。动信号,则可以忽略。下一页 返回上一页6.4 状态机设计状态机设计u6.4.3

49、 Mealy型状态机设计型状态机设计u与与Moore型状态机不同,型状态机不同,Mealy型状态机的输型状态机的输出信号不仅与当前状态有关,而且与输入信出信号不仅与当前状态有关,而且与输入信号有关,因此输入信号可以直接影响输出信号有关,因此输入信号可以直接影响输出信号,不依赖与时钟的同步,属于异步时序的号,不依赖与时钟的同步,属于异步时序的概念。但是,设计方法与概念。但是,设计方法与Moore型状态机基型状态机基本类似,区别在于输出逻辑的建模中,进程本类似,区别在于输出逻辑的建模中,进程敏感信号不仅包括当前状态,也包含输入信敏感信号不仅包括当前状态,也包含输入信号。因此与号。因此与Moore型

50、状态机相比,输出信号型状态机相比,输出信号的变化要领先一个周期。的变化要领先一个周期。下一页 返回上一页u 下面以一个具体的例子来讲述下面以一个具体的例子来讲述Mealy型状态机的设计过程,型状态机的设计过程,如如【例例6-27】所示,该状态机也是将状态寄存器和次态逻辑所示,该状态机也是将状态寄存器和次态逻辑用一个进程描述,将输出逻辑用另一个进程描述。用一个进程描述,将输出逻辑用另一个进程描述。u【例例6-27】Mealy型状态机型状态机VHDL程序。程序。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁