IT评测·应用市场-qidao123.com技术社区

标题: 状态机 [打印本页]

作者: 锦通    时间: 6 天前
标题: 状态机
Moore型状态机和Mealy型状态机

一、状态机的定义

状态机就是可以或许根据控制信号按照预先设定的状态举行状态转移,是和谐相关信号动作、完成特定动作的控制中心。状态机简写为 FSM (Finite State Machine),分为两类:
    1:输出只和当前状态有关而与输入无关,则称为摩尔(Moore)状态机;
    2:输出不仅和当前状态有关而且和输入有关,则称为米利(Mealy)状态机;
二、两种状态机的区别

1:在波形上区别:以一个序列检测器为例,检测到输入信号11时输出z为1,其他时候为0。用摩尔型FSM实现需要用到三个状态(A,B,C)。而用米利型FSM实现则需要两个状态(A,B)。摩尔型FSM输出函数的输入只由状态变量决定,要想输出z=1,必须C状态形成,即寄存器中的两个1都打进去后才可以。输出z=1会在下一个有用沿到来的时候被赋值。而米利型FSM输出函数是由输入和状态变量共同决定的。状态在B的时候如果输入为1,则直接以组合电路输出z=1,不需要等到下个有用沿到来。从而也就不需要第三个状态C。
2:摩尔状态机更安全:输出在时钟边沿变革(总是在一个周期后)。在Mealy机器中,输入更改可能会在逻辑完成后立即导致输出更改, 当两台机器互连时出现大题目 ,如果不小心,可能会发生异步反馈。
3:Mealy状态机对输入的反应更快:在相同的周期内反应 - 不需要等候时钟。在Moore机器中,可能需要更多逻辑来将状态解码为输出 - 在时钟边沿之后更多的门耽误。并非所有时序电路都可以利用Mealy模型实现。 一些时序电路只能作为摩尔机器实现。
三、经典状态机模板

1、一段式状态机

只有一个always block,把所有的逻辑(输入、输出、状态)都在一个always block的时序逻辑中实现。这种写法看起来很简洁,但是不利于维护,如果状态复杂一些就很容易堕落,不保举这种方法。在简单的状态机可以利用。
[code]    //时序逻辑电路         always @(posedge clk or negedge rst_n)                 begin                         if(!rst_n)begin                             cstate




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4