Mealy型和Moore型有限状态机之间的区别是什么?
摩尔机的输出仅取决于机器的状态,而米利机的输出则取决于机器的状态和输入。
这可能最好通过一个例子和一个轶事来说明:我讨厌机场和去机场的路上,但我喜欢在飞机上:
状态:在出租车中
(事件:支付车费,并转换到下一个状态:)
状态:在休息室中
(事件:等待2小时,并转换到下一个状态:)
状态:在飞机上
在Mealy机器中,前一个状态很重要——你是如何到达那里的。
在Moore机器中,你到达特定状态的方式并不重要。
让我们将结果添加到上面,创建一个状态机的Moore表示:
状态:在出租车中
(事件:支付车费,然后转换到下一个状态)。(结果:不高兴)。
状态:在休息室中
(事件:等待2小时,然后转换到下一个状态) (结果:不高兴)
状态:在飞机上 (结果:快乐)。
使用Moore表示法,结果直接附加到状态上。使用Mealy表示法,特定的结果/输出取决于您来自哪里。例如,如果我可以到达飞机而不必坐出租车和在休息室等待,那么我会很高兴。输入有差异。你来自哪里很重要。Mealy表示法状态机允许在图表中显示这一点。换句话说,在转换期间,输出/结果显示在状态外面。
摩尔机是离散动态系统,可以使用TLA+语法表示如下:
/\ x[k + 1] = f[x[k], u[k]]
/\ y[k] = g[x[k]]
其中x
表示状态,u
表示输入,y
表示输出,f
描述了转移关系(离散动态),g
表示输出映射(这里是状态标记),k
表示时间(序列中的索引)。
Mealy机器的形式稍微更加通用:
/\ x[k + 1] = f[x[k], u[k]]
/\ y[k] = g[x[k], u[k]]
g
不再是状态标签,它是一个边缘标签。仅在有效时钟脉冲后更改Moore,而Melay则在每个时钟边缘(“如果外部输入更改”)后更改
Mealy机的输出取决于当前状态和当前输入,而Moore机的输出仅取决于当前状态。
通常情况下,Mealy机比Moore机具有更少的状态。
Mealy机的输出在时钟边沿处改变,而Moore机的输出在逻辑完成后立即改变。
Mealy对输入的反应更快,而Moore需要进行登录以解码输出,因为它具有更多的电路延迟。