【原创】Moore和Mealy状态机

0 状态机概述

状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。根据状态机的状态是否收敛又可将状态机划分为:有限状态机(FSM:Finite State Machine)和无限状态机(ISM:Infinite State Machine),一般数字电路设计中提及的状态机一般均指FSM,其基本要素包括:状态、输入和输出。其中各要素的含义如下:

状态(状态变量):在逻辑设计中,使用状态来表示电路的各种工作状态和顺序;

输入:状态机进入每个状态的相关条件;

输出:在特定状态下发生的对应事件;

在FSM中,根据FSM输出的特点,又可将FSM分为Mealy状态机和Moore状态机:

Mealy状态机:此类状态机的输出不但取决于当前的输入还取决于当前的状态;

Moore状态机:此类状态机的输出仅与当前状态有关;

根据两类状态机的定义,可以得出两类FSM状态机的结构如下:

图片

根据上述状机的结构特点,可将状态机的编码结构上分为:一段式、二段式、三段式。

一段式:状态转移、状态的输入与输出均在一个always块中。该方式代码较为冗长,结构不清晰,不利于附加约束,不利于综合工具对设计进行优化,不推荐使用;

二段式:状态转移、状态的输入与输出任意两个在一个always块中。该方式输出一般为组合逻辑,极易产生毛刺等,所以一般情况下需要对输出端进行适当处理;

三段式:状态转移、状态的输入与输出分别在各自的always块中,这样结构的状态机结构清晰、易于维护和发现错误;

1 状态编码

在具体设计状态机时,需要根据电路的具体跳转状态进行编码,常用的编码格式如下:

独热码(one-hot code)

二进制码(binary code)

格雷码(gray code)

使用N位状态触发器来对N个状态进行编码,每个状态都有独立的触发器对应,并且任意时刻只有一位触发器为“1”

用二进制数对电路状态进行编码

任意两个相邻的状态只有一位二进制数不同

状态比较时仅仅需要比较一位,从一定程度上来说译码较容易,减少毛刺产生的概率;

在表示同样数目的状态时,独热码消耗较多的触发器(但是增加的触发器占用的面积与译码电路省下来的面积相当);

速度快但是较占用资源;

需要较多的逻辑资源进行译码,译码过程较复杂;易懂;触发器数量与格雷码相同;

因为相邻两个状态仅有一位不同,所以当出现状态跳转时,触发器翻转较少,产生亚稳态几率较小;

需要较多的逻辑资源进行译码,译码较为复杂;易懂;

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硅芯思见

你的鼓励是我创作的最大源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值