资源描述:
《同步状态机的原理、结构和设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、同步状态机的原理、结构和设计汪彦刚FSM状态机分类Moore型状态机设计状态机复位Moore型状态机信号输出方法Mealy型状态机状态机容错设计状态机一般定义(FiniteStateMachine,FSM)◆状态机——一个离散数学模型。给定一个输入集合,根据对输入的接受次序来决定一个输出集合。(摩尔状态机)◆状态——系统的基本数学特征。◆有限状态机——输入集合和输出集合都是有限的,并只有有限数目的状态。什么是状态机有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,
2、通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实现逻辑功能的过程。为什么使用状态机有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。设计方案相对固定,结构模式简单,可定义符号化枚举类型的状态。状态机的HDL描述层次分明,结构清晰,易读易懂。状态机容易构成性能良好的同步时序逻辑模块。在高速运算和控制方面,状态机更有其巨大的优势。基于有限状态机技术设计的控制器其工作速度大大优于CPU。就可靠性而言,状态机的优势也是十分明显的。基于有限状态机技术设计的控制器其可靠性也优于CPU。输入集合A输出集合X状态记
3、忆输出形成状态迁移状态机一般结构CLK组合逻辑时序逻辑同步当前状态后续状态Sa1,a2,…,anx1,x2,…,xn状态位置状态名称转移方向输入集合(触发事件)输出集合(执行动作)状态等待状态迁移图nna1,a2,…,anx1,x2,…,xn状态位置状态名称转移方向输入集合(触发事件)输出集合(执行动作)状态等待状态迁移图S状态编码FSM应用FSM通过状态图描述状态转换过程FSM:数字系统控制单元的建模数字系统:受控模块:功能模块,设计较易控制模块实现CPUFSM执行耗费时间,执行时间的确定性方面,FSM优于CPUF
4、SM构成FSM用来解决一般时序逻辑电路问题,包括同步/异步时序逻辑状态寄存器当前状态(现态)寄存器组合逻辑电路下一状态(次态)组合逻辑输出组合逻辑FSM分类Moore型:输出信号仅与现态相关Mealy型:输出信号与现态和输入相关DFFsOutputComb.LogicFeedbackComb.LogicDFFsOutputComb.LogicFeedbackComb.LogicMooreMealy现态次态输入输出现态次态输出输入Moore型状态机设计方法摩尔型状态机的典型结构Moore型状态机设计方法More
5、型状态机输出仅和存储电路的状态有关,与外部输入无关,即:外部输出是内部状态的函数。状态转移图描述方式:Si/ZOiData_INiMealy型状态机设计方法米勒型状态机的典型结构Mealy型状态机输出不仅和存储电路状态有关,还和外部输入信号有关,即:外部输出是内部状态和外部输入的函数状态图描述方式:SiData_INi/ZOiMealy型状态机设计方法Exampleofa5-stateMealyFSMmodulemealy(data_in,data_out,reset,clock);outputdata_out;in
6、put[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;
7、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;defau
8、lt: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_