如果一个状态机的输出仅由现态决定,那么它就是一个Moore型的状态机。而按照驱动输出的数字电路特性,又将Moore型状态机细分为Moore 1型、Moore 2型、Moore 3型,详细介绍如下:
Moore 1型状态机的原理结构框图入下:
从上图可以看出,Moore 1型状态机的结构可以划分为两大部分——状态转移部分和输出生成部分。
状态转移部分如上图左半部分所示,输入和现态(现态寄存器的输出)通过组合逻辑共同作用产生次态,当下一次时钟有效边沿到来的时候,现态寄存器发生更新,刚才产生的次态即成为了新的现态,而新的现态将和新的输入共同作用产生新的次态,如此往复。
输出生成部分如上图右半部分所示,现态(现态寄存器的输出)直接通过组合逻辑产生当前的输出(这点也是Moore状态机区别于Mealy状态机最显著的特点)。有时候,我们不希望将这部分的组合逻辑的延迟影响到后续模块的处理,那么可以仿照上图通过添加输出寄存器来解决这个问题,但是需要特别注意的一点是,由于输出寄存器的更新需要等到下一次时钟的有效边沿,因此经过输出寄存器寄存后的输出其实对应的是状态机上一个状态。
Moore 1型状态机的缺点是寄存后的输出并不对应此时的现态,这可能会为后续模块的一些处理带来不便和延迟,除此以外,组合逻辑中存在着竞争,使得即使输出仅为单bit位宽,也可能会发生险象,如果后续模块是对电平敏感的便会导致发生错误,因此,通过对Moore 1型状态机的原理结构框图进行一些简单的修改,可得Moore 2型状态机的原理结构框图如下:
从上图可以看出,Moore 2型状态机的结构仍划分为状态转移和输出生成两大部分。对比Moore 1型状态机的原理结构框图,可以发现不同之处仅仅是输出生成部分的输入端由之前的现态(现态寄存器的输出)变为了次态(由输入和现态通过组合逻辑产生)。这样一来,由于次态和次态决定的输出在同一个时钟周期内变得有效,那么在下一次时钟有效边沿到来时,现态寄存器和输出寄存器将会同时进行更新,至此,次态变成新的现态,次态决定的输出变成新的输出。因此,Moore 2型状态机中经过寄存后的输出是对应于当前状态的。
相比于Moore 1型,Moore 2型状态机也有其自身的缺点,那就是产生输出的组合逻辑延迟较大,因为它相当于Moore 1型状态机中产生次态的组合逻辑和产生输出的组合逻辑的级联,而这点便会限制状态机本身的时钟工作频率。由此可见,Moore 1型和Moore 2型状态机各有其优缺点。
仔细观察Moore 1型和Moore 2型状态机的原理结构框图,可以发现,它们的本质区别就在于“由状态产生输出”这部分的组合逻辑所处的位置。如果像Moore 1型那样,将该部分逻辑至于现态寄存器之后,那么该组合逻辑的时间延迟将会影响到后续电路的工作;反之,如果像Moore 2型那样,将该部分逻辑至于次态产生逻辑之后,那么该组合逻辑的时间延迟将会影响到状态机自身的工作。因此,为了将Moore 1型和Moore 2型状态机的缺点最小化、优点最大化,便有了Moore 3型状态机,它的原理结构框图如下:
现实中的状态机,输出往往不止一个,通过上图可以看出,Moore 3型状态机就是将那些适合使用组合逻辑的输出采用Moore 1型的方式来处理,而将那些适合使用寄存器的输出采用Moore 2型的方式来处理,因此Moore 3型也叫混合型Moore状态机。
那到底什么样的输出适合采用组合的形式,而什么样的输出适合采用寄存的形式呢?如果后续模块为电平敏感的,那么自然应该选择寄存形式的输出,不过FPGA中一般应该为全同步逻辑设计,所以绝大多数情况下,状态机的前级输入、后级输出及其本身是工作在一个时钟域内的,此时,假设由现态、输入产生次态的组合逻辑时间延迟为T1,由状态(次态、现态都一样)产生输出的组合逻辑的时间延迟为T2,而后续使用该输出的电路中,又会在输出信号到达下一个寄存器前引入时间延迟最大(考虑到会有多个地方使用该输出)为T3的组合逻辑。那么根据短板效应,若T1+T2 T2+T3,则该输出采用Moore 2型的寄存方式处理可以提升整个系统的性能;反之,该输出采用Moore 1型的组合方式处理可以提升整个系统的性能。当然了,上述方法仅仅是帮助大家从理论上去理解该如何进行输出形式选择,其实并不可能严格的参考使用,因为布局布线的不同对T1、T2、T3的取值影响很大,因此实际中我们都是凭经验或者大概估计一下各个组合逻辑的复杂度和级联情况,然后大概估算后做出选择,而更多的时候,是需要根据后续时序分析报告中的结果,来对状态机的输出形式进行调整。
如果一个状态机的输出是由现态和输入共同决定,那么它就是一个Mealy型的状态机。而按照驱动输出的数字电路特性,又将Mealy型状态机细分为Mealy 1型、Mealy 2型、Mealy 3型,详细介绍如下:
Mealy 1型状态机的原理结构框图入下:
从上图可以看出,对于Mealy 1型状态机来说,由于次态和输出均由现态和输入通过组合逻辑共同决定,因此可以将状态转移部分和输出生成部分合并成一个部分,兼并产生状态机的次态和输出。当下一次时钟有效边沿到来后,现态寄存器完成刷新,次态成为了新的现态,而新的现态和新的输入共同作用产生新的次态和新的输出,如此往复。
与Moore 1型状态机类似,Mealy 1型状态机的输出也是直接通过组合逻辑产生的,若想通过添加输出寄存器来获得寄存输出的话,经过输出寄存器寄存后的输出其实对应的是状态机上一个状态。
Mealy 1型状态机的缺点也是寄存后的输出并不对应此时的现态,因此,通过对Mealy 1型状态机的原理结构框图进行一些简单的修改,可得Mealy 2型状态机的原理结构框图如下:
从上图可以看出,Mealy 2型状态机重新将状态转移部分和输出生成部分分开,并做成级联的形态(Mealy 1型中两者其实是并联的),所以输出生成部分便由次态和输入共同作用产生次态对应的输出。这样一来,由于次态和次态决定的输出在同一个时钟周期内变得有效,那么在下一次时钟有效边沿到来时,现态寄存器和输出寄存器将会同时进行更新,至此,次态变成新的现态,次态决定的输出变成新的输出。因此,Mealy 2型状态机中经过寄存后的输出是对应于当前状态的。
与Moore型状态机类似,Mealy 1型和Mealy 2型状态机也各有其优缺点。它们的本质区别仍在于“由状态产生输出”这部分的组合逻辑所处的位置。如果像Mealy 1型那样,将该部分逻辑和次态产生逻辑并联,那么该组合逻辑的时间延迟将会影响到后续电路的工作;反之,如果像Mealy 2型那样,将该部分逻辑和次态产生逻辑串联,那么该组合逻辑的时间延迟将会影响到状态机自身的工作。因此,为了将Mealy 1型和Mealy 2型状态机的缺点最小化、优点最大化,便有了Mealy 3型状态机,它的原理结构框图如下:
现实中的状态机,输出往往不止一个,通过上图可以看出,Mealy 3型状态机就是将那些适合使用组合逻辑的输出采用Mealy 1型的方式来处理,而将那些适合使用寄存器的输出采用Mealy 2型的方式来处理,因此Mealy 3型也叫混合型Mealy状态机。
需要特别注意的一点是,至于到底什么样的输出适合采用组合的形式,什么样的输出适合采用寄存的形式,需要根据具体的功能需求来确定,这点与【Moore型状态机->Moore 3型】小节的讨论不同,因为Mealy 1、2型状态机在功能上并不完全等价,这是由于Mealy型状态机的输出除了与当前状态有关,还与输入有关。对于同样的输入序列,Moore 1、2型状态机的状态变迁都是一样的,因此它们的输出也是完全一致的;但是对于同样的输入序列,Mealy 1、2型状态机的状态变迁虽然一样,但是Mealy 2型的输出实际上是由当前的状态和上一次的输入得出的,这与Mealy 1型的输出是由当前的状态和当前的输入得出的不同。故Mealy 1、2之间不可随意替换。
如果一个状态机有多个输出,且其中一些仅由现态决定,而另一些是由现态和输入共同决定,那么它就是一个Mix型的状态机。其实,Mix型状态机就是一个Moore型状态机和Mealy型状态机的组合体,而每一个Moore型状态机可以有Moore 1型、Moore 2型、Moore 3型三种选择,每一个Mealy型状态机也可以有Mealy 1型、Mealy 2型、Mealy 3型三种选择,因此Mix型状态机可以细分为9种类型。由于Mix型状态机的类型较多,所以这里就不一一赘述了,下面给出一类功能最为全面的Mix型状态机的结构原理框图:
上图所示即为“Moore 3型+Mealy 3型”组成的Mix型状态机,它包含了全部四种类型的输出——moore组合、moore寄存、mealy组合、mealy寄存。通常来说,Mix型状态机不一定会拥有全部这四类输出,当Mix型状态机仅具有moore类型的输出时,它就简化为一个Moore型的状态机;而当Mix型状态机仅具有mealy类型的输出时,它就简化为一个Mealy型的状态机;只有当Mix型状态机同时具有moore类型和mealy类型的输出时,它才是一个真正的Mix型的状态机。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删