【 FPGA 】状态机的模型之Mealy型状态机

版权声明:本博客内容来自于个人学习过程中的总结,参考了互联网、数据手册、帮助文档、书本以及论文等上的内容,仅供学习交流使用,如有侵权,请联系,我会重写!转载请注明地址! https://blog.csdn.net/Reborn_Lee/article/details/84639520

上篇博文讲了:Moore型状态机,这篇博文和上篇博文思路一致,如果读懂了上篇博文,这篇博文就很容易理解了。

如果一个状态机的输出是由现态和输入共同决定的,那么它就是一个Mealy型的状态机。而按照驱动输出的数字电路特性,又将Mealy型状态机细分为Mealy 1型、Mealy 2型、Mealy 3型,详细介绍如下:

(1)Mealy 1型

Mealy 1型状态机的原理框图如下图1所示:

上上图可以看出,对于Mealy 1型状态机来说,由于次态和输出均由现态和输入通过组合逻辑共同决定,因此可以将状态转移部分和输出生成部分合并成一个部分,兼并产生状态机的次态和输出。

当下一次时钟有效沿到来时,现态寄存器完成刷新,次态成为了新的现态,而新的现态和新的输入共同作用产生新的次态和新的输出,如此往复。

与Moore1型状态机类似,Mealy 1型状态机的输出也是直接通过组合逻辑产生的,若想通过添加输出寄存器来获得寄存输出,经过输出寄存器寄存后的输出其实对应的是状态机上一个状态与输入。

(2)Mealy 2型

Mealy 1型状态机的缺点也是寄存后的输出并不对应此时的现态,因此,通过对Mealy 1型状态机的原理结构图进行一些简单的修改,可得

Mealy 2型状态机的原理结构框图,如下图2:

从上图可以看出,Mealy 2型状态机重新将状态转移部分和输出生成部分分开,并做成级联的形式(Mealy 1型中二者其实是并联),所以输出生成部分便由次态和输入共同作用产生次态对应的输出。这样一来,由于次态和次态决定的输出在同一个时钟周期内变得有效,那么在下一次时钟有效边沿到来时,现态寄存器和输出寄存器将会同时进行更新,至此,次态变成新的现态,次态决定的输出变成新的输出。因此,Mealy 2型状态机中经过寄存器后的输出是对应于当前状态的。

(3)Mealy 3型

与Moore型状态机类似,Mealy 1型和Mealy 2型状态机也各有其优缺点。它们的本质区别仍在于“由状态产生输出”这部分的组合逻辑所处的位置。如果像Mealy 1型那样,将该部分逻辑和次态产生逻辑并联,那么该组合逻辑的时延将会影响到后续电路的工作;反之,如果像Mealy 2型那样,将该部分逻辑和次态产生逻辑串联,那么该组合逻辑的时间延迟将会影响到状态机自身的工作。因此,为了将Mealy 1型和Mealy 2型状态机的缺点最小化、优点最大化,便有了Mealy 3型状态机,它的原理结构框图如下图3:

现实中的状态机,输出往往不止一个,通过上图也可以看出,Mealy 3型状态机就是将那些适合用组合逻辑的输出采用Mealy 1型的方式来处理,而将那些适合使用寄存器的输出采用Mealy 2型的方式处理,因此,Mealy 3型状态机又称为混合型Mealy 状态机。

最后需要注意的是,至于到底什么样的输出适合采用组合的形式,什么样的输出适合采用寄存的形式,需要根据具体的功能需求来确定,这点与上篇博文的讨论不同。因为Mealy 1和Mealy 2型状态机在功能上并不完全等价,这是由于Mealy型状态机的输出除了和当前状态有关,还与输入有关。

对于同样的输入序列,Moore 1、2型状态机的状态变迁都是一样的,因此它们的输出也是完全一致的;但是对于同样的输入序列,Mealy 1,2型状态机的状态变迁虽然一样,但是Mealy 2型的输出实际上是由当前的状态和上一次的输入得出的,这与Mealy 1型的输出是由当前的状态和当前的输入得出的不同。故Mealy 1,2之间不可随意替换。

猜你喜欢

转载自blog.csdn.net/Reborn_Lee/article/details/84639520