Jac*_*ack 27
在摩尔机器中,产生的输出与机器的当前状态相关联,并且仅与其相关联.相反,在Mealy机器中,它与状态和特定输入相关联.
从实际的角度来看,你可以将输出置于Moore机器中的状态(因此每个状态都有其输出),而后者则在转换时有输出(因此输出由当前状态和输出转换决定) )
摩尔机是离散动力系统,可以使用TLA+语法表示如下:
/\ x[k + 1] = f[x[k], u[k]]
/\ y[k] = g[x[k]]
Run Code Online (Sandbox Code Playgroud)
其中x状态、u输入、y输出f描述了转换关系(离散动态)和g输出图(此处为状态标签)并k表示时间(序列中的索引)。
Mealy 机器的形式稍微更通用一些:
/\ x[k + 1] = f[x[k], u[k]]
/\ y[k] = g[x[k], u[k]]
Run Code Online (Sandbox Code Playgroud)
请注意,现在g不再是状态标记,而是边缘标记。
它们并不等同,特别是 Moore 机器是严格因果关系的,而 Mealy 机器则不是。
有关更多详细信息,请参阅 Lee 和 Seshia,《嵌入式系统简介》,LeeSeshia.org,第 58 页。
这也许最好用一个例子和一个轶事来说明。
我讨厌机场,也讨厌去机场,但我喜欢在飞机上。在上飞机之前,我必须进入三种不同的状态:
在 Mealy 机器中,您来自的先前状态会有所不同 -您如何到达某个地方非常重要。在摩尔机器中,你如何达到一个状态没有区别。
让我们在上面添加一个结果来创建状态机的摩尔表示:
使用 Moore 表示,结果直接附加到状态。使用 Mealy 表示 - 特定的结果/输出取决于您来自哪里。例如,如果我能上飞机而不必乘坐出租车在休息室等待,那么我会很高兴。输入有所不同。在这里你来是很重要的。Mealy 表示状态机允许将其显示在图中。换句话说,在转换期间,输出/结果显示在状态之外。