您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 第8章 有限状态机设计(1)
Chapter5有限状态机计算机与信息学院毕春跃2011.10.25引子:有一自动门,它可以被锁上,也可以开锁。当门锁上时,某人可以在它的槽中塞进一枚硬币。这样,门就会自动开锁,转变到开锁的状态;人通过后,门就会自动锁上。加锁开锁投币/开锁通过/加锁初始状态Φ/加锁通过/报警投币/谢谢加锁开锁投币/开锁通过/加锁初始状态Φ/加锁声光报警投币传感器通过传感器加锁执行控制器开锁执行“谢谢”时钟CLK一、概述关于状态机状态机的特点状态机的基本结构和功能关于状态机状态机就是事物存在状态的一种综合描述。例:一个单向路口的一盏红绿灯:红灯、黄灯、绿灯。状态机就是对这盏红绿灯的3种状态进行综合描述,说明任意两个状态之间的转变条件。What?什么是状态机有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实现逻辑功能的过程。WHY?为什么使用状态机有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。状态机的结构模式相对简单。状态机容易构成性能良好的同步时序逻辑模块。状态机的VHDL表述丰富多样。在高速运算和控制方面,状态机更有其巨大的优势。就可靠性而言,状态机的优势也是十分明显的。有限状态机的基本概念有限状态机:指那些输出取决于过去输入部分和当前输入部分的时序逻辑电路。有限状态机一般有三部分:输入部分、输出部分和状态寄存器。根据输出信号产生的机理不同,状态机可以分成两类:摩尔(Moore)型状态机--输出信号仅和状态有关米勒(Mealy)型状态机--输出信号和状态与输入信号有关Moore型有限状态机的结构图状态寄存器组合电路输出Yc1k组合电路输入XMealy型有限状态机的结构图有限状态机的主要功能:实现一个数字系统设计中的控制部分。有限状态机中的每一个状态对应于控制单元的一个控制步;有限状态机中的次态和输出对应于控制单元中与每一个控制步有关的转移条件。Moore型状态机设计方法More型状态机输出仅和存储电路的状态有关,与外部输入无关,即:外部输出是内部状态的函数。状态转移图描述方式:Si/ZOiData_INi例:设计一个序列检测器。要求检测器连续收到串行码{1101}后,输出检测标志1,否则输出0。状态机设计步骤:①分析设计要求,列出全部可能状态;②画出状态转移图;③用VHDL语言描述状态机。Moore型状态机设计方法(1)分析设计要求,列出全部可能状态:未收到一个有效位(0):S0收到一个有效位(1):S1连续收到两个有效位(11):S2连续收到三个有效位(110):S3连续收到四个有效位(1101):S4(3)用VHDL语言描述状态机定义状态机—枚举类型状态转换描述输出信号描述(2)状态转移图:(2)状态转移图:1101S0/0S1/0S2/0S4/1S3/01101010100Si/ZOiData_INiMoore型状态机设计方法LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmooreISPORT(clk,data:INSTD_LOGIC;zo:OUTSTD_LOGIC);ENDmoore;实体设计Moore型状态机设计方法ARCHITECTUREaOFmooreISTYPESTATEIS(S0,S1,S2,S3,S4);SIGNALpstate:STATE;BEGINPROCESS(clk)BEGINIF(clk’EVENTANDclk=‘1’)THENCASEpstateisWHENS0=IFdata=‘1’THENpstate=S1;ELSEpstate=S0;ENDIF;WHENS1=IFdata=‘1’THENpstate=S2;ELSEpstate=S0;ENDIF;WHENS2=IFdata=‘0’THENpstate=S3;ELSEpstate=S2;ENDIF;WHENS3=IFdata=‘1’THENpstate=S4;ELSEpstate=S0;ENDIF;WHENS4=IFdata=‘1’THENpstate=S1;ELSEpstate=S0;ENDIF;ENDCASE;ENDIF;ENDPROCESS;zo=‘1’WHENpstate=s4ELSE‘0’;ENDa;定义状态机输出信号描述状态转移描述8421循环计数器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityautocntisport(clk:instd_logic;q:outstd_logic_vector(3downto0));endautocnt;architectureaofautocntistypestateis(s0,s1,s2,s3);signalst:state;signaln:state;beginprocess(clk)beginifclk'eventandclk='1'thenst=n;endif;endprocess;process(st)begincasestiswhens0=n=s1;q=1000;whens1=n=s2;q=0100;whens2=n=s3;q=0010;whenothers=n=s0;q=0001;endcase;endprocess;enda;循环彩灯控制器libraryieee;useieee.std_logic_1164.all;entityloopledisport(clr,clk:instd_logic;t1,t2,t3:outstd_logic);endloopled;architecturertlofloopledistypestateis(s0,s1,s2,s3,s4,s5);signalst:state;beginprocess(clk,clr)beginif(clr='0')thenst=s0;elsif(clk'eventandclk='1')thencasestiswhens0=st=s1;whens1=st=s2;whens2=st=s3;whens3=st=s4;whens4=st=s5;whens5=st=s0;endcase;endif;endprocess;process(st,clr)beginif(clr='0')thent1='0';t2='0';t3='0';elsecasestiswhens0=t1='1';t2='0';t3='0';whens1=t1='0';t2='1';t3='0';whens2=t1='0';t2='1';t3='0';whens3=t1='0';t2='0';t3='1';whens4=t1='0';t2='0';t3='1';whens5=t1='1';t2='0';t3='0';endcase;endif;endprocess;endrtl;二、一般有限状态机的组成说明部分说明部分中使用TYPE语句定义新的数据类型,此数据类型一般为枚举类型例如:TYPEstate_typeIS(start_state,run_state,error_state);SIGNALstate:state_type;说明部分一般放在结构体的ARCHITECTURE和BEGIN之间。说明部分:主要是设计者使用TYPE语句定义新的数据类型,如:TYPEstatesIS(st0,st1,st2,st3,st4,st5);SIGNALpresent_state,next_state:states;一般有限状态机的VHDL组成主控时序逻辑部分:任务是负责状态机运转和在外部时钟驱动下实现内部状态转换的进程。时序进程的实质是一组触发器,因此,该进程中往往也包括一些清零或置位的输入控制信号,如Reset信号。主控组合逻辑部分:任务是根据状态机外部输入的状态控制信号(包括来自外部的和状态机内部的非进程的信号)和当前的状态值current_state来确定下一状态next_state的取值内容,以及对外部或对内部其他进程输出控制信号的内容。辅助逻辑部分:辅助逻辑部分主要是用于配合状态机的主控组合逻辑和主控时序逻辑进行工作,以完善和提高系统的性能。时序进程组合进程current_statenext_statecomb_outputs状态机State_inputsclkreset一般状态机工作示意图LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtwo_process_state_machineISPORT(clk,reset:INSTD_LOGIC;state_inputs:INSTD_LOGIC;comb_outputs:OUTSTD_LOGIC_VECTOR(0TO1));ENDENTITYtwo_process_state_machine;ARCHITECTUREbehvOFtwo_process_state_machineISTYPEstatesIS(st0,st1,st2,st3);--定义states为枚举型数据类型,构造符号化状态机SIGNALcurrent_state,next_state:states;BEGINREG:PROCESS(reset,clk)--时序逻辑进程BEGINIFreset='1'THEN--异步复位current_state=st0;ELSIFclk='1'ANDclk'EVENTTHEN--出现时钟上升沿时进行状态转换current_state=next_state;ENDIF;ENDPROCESS;COM:PROCESS(current_state,state_inputs)--组合逻辑进程BEGINCASEcurrent_stateISWHENst0=comb_outputs=00;--系统输出及其初始化IFstate_inputs='0'THEN--根据外部输入条件决定状态转换方向next_state=st0;ELSEnext_state=st1;ENDIF;WHENst1=comb_outputs=01;IFstate_inputs=‘0’THENnext_state=st1;ELSEnext_state=st2;ENDIF;WHENst2=comb_outputs=10;IFstate_inputs=‘0’THENnext_state=st2;ELSEnext_state=st3;ENDIF;WHENst3=comb_outputs=11;IFstate_inputs=‘0’THENnext_state=st3;ELSEnext_state=st0;ENDIF;ENDCASE;ENDPROCESS;ENDARCHITECTUREbehv;resetst3st0st1st21/011/101/110/110/000/000/010/10state_inputsclkresetst0st1st2clkresetstate_inputscomb_outputs[0..1]current_state状态转换图时序仿真图RTL图三、Moore型状态机的设计从状态机的信号输出方式看:Mealy型:同步输出状态机,输出是当前状态和所有输入信号的函数,输出是在输入变化后立即发生的,不依赖时钟的同步。Moore型:异步输出状态机,输出仅为当前状态的函数,等待时钟,时钟使状态发生变化时才导致输出变化。三、Moore型状态机的设计组合逻辑组合逻辑寄存器inputsclkreset当前状态outputsMoore型状态机框图状态译码器状
本文标题:第8章 有限状态机设计(1)
链接地址:https://www.777doc.com/doc-3576484 .html