您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 同步状态机的原理、结构和设计
同步状态机的原理、结构和设计FSM状态机分类Moore型状态机设计状态机复位Moore型状态机信号输出方法Mealy型状态机状态机容错设计状态机一般定义(FiniteStateMachine,FSM)◆状态机——一个离散数学模型。给定一个输入集合,根据对输入的接受次序来决定一个输出集合。(摩尔状态机)◆状态——系统的基本数学特征。◆有限状态机——输入集合和输出集合都是有限的,并只有有限数目的状态。什么是状态机有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实现逻辑功能的过程。为什么使用状态机•有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。•设计方案相对固定,结构模式简单,可定义符号化枚举类型的状态。•状态机的HDL描述层次分明,结构清晰,易读易懂。•状态机容易构成性能良好的同步时序逻辑模块。•在高速运算和控制方面,状态机更有其巨大的优势。基于有限状态机技术设计的控制器其工作速度大大优于CPU。•就可靠性而言,状态机的优势也是十分明显的。基于有限状态机技术设计的控制器其可靠性也优于CPU。输入集合A输出集合X状态记忆输出形成状态迁移状态机一般结构CLK组合逻辑时序逻辑同步当前状态后续状态Sa1,a2,…,anx1,x2,…,xn状态位置状态名称转移方向输入集合(触发事件)输出集合(执行动作)状态等待状态迁移图nna1,a2,…,anx1,x2,…,xn状态位置状态名称转移方向输入集合(触发事件)输出集合(执行动作)状态等待状态迁移图S状态编码FSM应用FSM通过状态图描述状态转换过程FSM:数字系统控制单元的建模数字系统:•受控模块:功能模块,设计较易•控制模块实现CPUFSM•执行耗费时间,执行时间的确定性方面,FSM优于CPUFSM构成FSM用来解决一般时序逻辑电路问题,包括同步/异步时序逻辑状态寄存器•当前状态(现态)寄存器组合逻辑电路•下一状态(次态)组合逻辑•输出组合逻辑FSM分类Moore型:输出信号仅与现态相关Mealy型:输出信号与现态和输入相关DFFsOutputComb.LogicFeedbackComb.LogicDFFsOutputComb.LogicFeedbackComb.LogicMooreMealy现态次态输入输出现态次态输出输入Moore型状态机设计方法摩尔型状态机的典型结构状态寄存器组合电路输出Yc1k组合电路输入XMoore型状态机设计方法More型状态机输出仅和存储电路的状态有关,与外部输入无关,即:外部输出是内部状态的函数。状态转移图描述方式:Si/ZOiData_INiMealy型状态机设计方法输入X状态寄存器下一个状态输出Y当前状态clk组合逻辑电路米勒型状态机的典型结构Mealy型状态机输出不仅和存储电路状态有关,还和外部输入信号有关,即:外部输出是内部状态和外部输入的函数状态图描述方式:SiData_INi/ZOiMealy型状态机设计方法Exampleofa5-stateMealyFSMmodulemealy(data_in,data_out,reset,clock);outputdata_out;input[1:0]data_in;inputreset,clock;regdata_out;reg[2:0]pres_state,next_state;parameterst0=3'd0,st1=3'd1,st2=3'd2,st3=3'd3,st4=3'd4;//FSMregisteralways@(posedgeclockornegedgereset)begin:stateregif(!reset)//asynchronousresetpres_state=st0;elsepres_state=next_state;end//statereg//FSMcombinationalblockalways@(pres_stateordata_in)begin:fsmcase(pres_state)st0:case(data_in)2'b00:next_state=st0;2'b01:next_state=st4;2'b10:next_state=st1;2'b11:next_state=st2;endcasest1:case(data_in)2'b00:next_state=st0;2'b10:next_state=st2;default:next_state=st1;endcasest2:case(data_in)2'b0x:next_state=st1;2'b1x:next_state=st3;endcasest3:case(data_in)2'bx1:next_state=st4;default:next_state=st3;endcasest4:case(data_in)2'b11:next_state=st4;default:next_state=st0;endcasedefault:next_state=st0;endcaseend//fsm//Mealyoutputdefinitionusingpres_statew/data_inalways@(data_inorpres_state)begin:outputscase(pres_state)st0:case(data_in)2'b00:data_out=1'b0;default:data_out=1'b1;endcasest1:data_out=1'b0;st2:case(data_in)2'b0x:data_out=1'b0;default:data_out=1'b1;endcasest3:data_out=1'b1;st4:case(data_in)2'b1x:data_out=1'b1;default:data_out=1'b0;endcasedefault:data_out=1'b0;endcaseend//outputsendmoduleExampleofa5-stateMooreFSMmodulemoore(data_in,data_out,reset,clock);outputdata_out;input[1:0]data_in;inputreset,clock;regdata_out;reg[2:0]pres_state,next_state;parameterst0=3'd0,st1=3'd1,st2=3'd2,st3=3'd3,st4=3'd4;//FSMregisteralways@(posedgeclockornegedgereset)begin:stateregif(!reset)pres_state=st0;elsepres_state=next_state;end//statereg//FSMcombinationalblockalways@(pres_stateordata_in)begin:fsmcase(pres_state)st0:case(data_in)2'b00:next_state=st0;2'b01:next_state=st4;2'b10:next_state=st1;2'b11:next_state=st2;endcasest1:case(data_in)2'b00:next_state=st0;2'b10:next_state=st2;default:next_state=st1;endcasest2:case(data_in)2'b0x:next_state=st1;2'b1x:next_state=st3;endcasest3:case(data_in)2'bx1:next_state=st4;default:next_state=st3;endcasest4:case(data_in)2'b11:next_state=st4;default:next_state=st0;endcasedefault:next_state=st0;endcaseend//fsm//Mooreoutputdefinitionusingpres_stateonlyalways@(pres_state)begin:outputscase(pres_state)st0:data_out=1'b1;st1:data_out=1'b0;st2:data_out=1'b1;st3:data_out=1'b0;st4:data_out=1'b1;default:data_out=1'b0;endcaseend//outputsendmodule//Mooreverilog语言描述FSM的建立过程跟据具体要求分析控制过程,建立状态转移图后:1。定义枚举类型的信号描述状态2。建立第1个always,描述次态组合逻辑,现态和输入信号作为敏感量,3。在进程中定义状态转移•CASE语句的一条表示一个状态,状态转移通过IFELSE语句实现4。对于双进程FSM,建立第2个进程,现态寄存器描述进程,CLK,RST为敏感量;对于单进程FSM,则在一个进程中完成同步状态转移。•Mealy状态机:如果时序逻辑的输出不仅取决于状态还取决于输入,那么称之为Mealy机。而有些时序逻辑电的输出只取决于当前状态,即输出信号=G(当前状态),这样的就称为Moore状态机。•两种电路结构除了在输出电路部分有些不同外,其他地方都是相同的。在设计高速电路时,常常有必要使状态机的输出与时钟几乎完全同步。有一个办法是把状态变量直接用作输出,为此在指定状态编码时多费一些脑力,有可能会多用几个寄存器。•设计告诉状态机还有一个办法,在输出逻辑G后面再加一组与时钟同步的寄存器输出流水线寄存器,让G所有的输出信号在下一个时钟跳变沿时同时存入寄存器组,即完全同步的输出,这种输出称为流水线化的输出的Mealy状态机。Flip-FlopsFLIP-FLOPsaretrivialFSMsUsestatediagramstorememberflip-flopsfunctions10DDDDD10TTTTT10JKJKJK10S&RS&RSRSRFSMperformanceMaximumfrequencyofoperationiscomputedas:Out1Q1Q2D2D1Q1Q2in1ClkNextState01outdsetupnextstateTTTTf11minmaxTnextstateTsetupTdToutFSMEquationsOut1Q1Q2D2D1Q1Q2in1ClkNextState01out010011in1in1in11in1StructureofaFSMwithtwoF-FsofDtypeSamplepartofastatediagramWhatvaluesofD1andD2willmovetheFSMtothestate01?FSMnextstateandoutputlogiccanbeeasilyderivedbyinspectingthestatediagram.TomovetheFSMtostate01thenextstatelogicmustproduce‘1’onD2and‘0’onD1.D2=Q2+=in1&00#in1&11#in1&01#...D1=Q1+=Out1Q1Q2D2D1Q1Q2in1ClkNextState01out010011in1in1in11in1comingfromstate:001101FSMEquationsTheoutputlogiccan
本文标题:同步状态机的原理、结构和设计
链接地址:https://www.777doc.com/doc-5716361 .html