【发布时间】:2010-10-24 16:58:25
【问题描述】:
Mealy & Moore 类型的有限状态机有什么区别?
【问题讨论】:
标签: state-machine
Mealy & Moore 类型的有限状态机有什么区别?
【问题讨论】:
标签: state-machine
在摩尔机器中,产生的输出与机器的当前状态相关联,并且仅与机器的当前状态相关联。相反,在 Mealy 机器中,它与状态和特定输入相关联。
从实际的角度来看,您将输出放置在摩尔机器中的状态上(因此每个状态都有其输出),而在后者上您有转换输出(因此输出是从当前状态和传出过渡)
【讨论】:
state -> output,而 Mealy 机中的输出函数是函数state, input -> output。这意味着,如果您分解 Mealy 机器的每个状态,为每个传出转换添加特定输入,您也可以模拟相同的行为,即使它在概念上有所不同。
摩尔机器输出只是机器状态的函数, Mealy 机器输出是机器状态及其输入的函数。
这也许最好用一个例子和一个轶事来说明。
我讨厌机场,也讨厌去机场,但我喜欢在飞机上。在上飞机之前,我必须进入三种不同的状态:
在 Mealy 机器中,您来自的先前状态会产生影响 - 如何 您到达某个地方非常重要。在摩尔机器中,如何进入状态没有任何区别。
让我们在上面添加一个结果来创建状态机的摩尔表示:
使用摩尔表示,结果直接附加到状态。使用 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 不再是状态标签,而是边标签。
它们不等价,特别是摩尔机器是严格因果的,而 Mealy 机器不是。
有关详细信息,请参阅 Lee 和 Seshia,Introduction to Embedded Systems,LeeSeshia.org,第 58 页。
【讨论】:
Moore 仅在有效时钟脉冲后发生变化,而 Melay 在每个时钟沿后发生变化(“如果外部输入发生变化”)
【讨论】:
Mealy 机器输出取决于 当前状态 和 当前输入 而 Moore 输出仅取决于当前状态。
一般Mealy机器比Moore机器有发烧状态。
Mealy输出会在时钟边缘发生变化,但Moore输出会在逻辑完成后立即发生变化。
Mealy 对输入的反应更快而 需要摩尔登录来解码输出,因为它有更多的电路延迟。
【讨论】: