Mealy和Moore状态机的语义学
Mealy和Moore通常被认为是建模有限状态机的基本行业标准范式。通常在状态机模型中,下一个状态是当前状态及其输入的函数,如下所示:
X(n+1)=f(X(n),u)
在这个等式中:
X(n) | 表示时间步n的状态 |
---|---|
X(n+1) | 表示下一时间步n+1的状态 |
u | 代表输入 |
状态是本地数据和图表活动的组合。因此,计算状态意味着更新本地数据并从当前活动状态转换到新状态。状态从一个阶段延续到另一个阶段。
在这种情况下,Mealy和Moore状态机都有明确的语义。
状态机类型 | 语义 | 应用 |
---|---|---|
Mealy | 输出是输入和状态的函数:y=g(X,u) | 在时钟边沿发生状态转换的时钟同步机 |
Moore | 输出仅是状态的函数:y=g(X) | 在时钟边沿修改输出的时钟同步机 |
默认状态机类型
当您创建状态流图时,默认类型是混合状态机模型,它将Mealy和Moore图的语义与扩展的状态流图语义相结合。此默认图表类型称为“Classic”。
输出可用性
Mealy机器计算转换的输出,而Moore机器计算状态的输出。因此,Mealy图表可以比Moore图表更早地计算输出,也就是说,在图表的默认路径执行时。如果为Mealy图表启用图表属性Execute(enter)chart At Initialization,则此计算发生在t=0(第一时间步);否则,它发生在t=1(下一时间步)。相比之下,Moore机器只能在默认路径执行后计算输出。在此之前,输出将采用默认值。
Mealy和Moore图表的优点
Mealy和Moore图表与经典状态流程图相比具有以下优势:
您可以验证您创建的Mealy和Moore图表,以确保它们符合其形式定义和语义规则。错误消息出现在编译时(而不是设计时)。
对于C/C++和HDL目标,Moore图提供了比经典图更有效的实现。
你可以使用Moore图表来模拟反馈回路。在Moore图中,输入没有直接的馈通。因此,你可以设计一个从输出端口到输入端口的反馈回路,而无需引入代数回路。Mealy和Classic图表具有直接的馈通和代数循环误差。
创建Mealy和Moore图表
要创建新的Mealy或Moore图表,请执行以下步骤:
将新的图表块添加到Simulink模型中。然后双击该块以打开Stateflow编辑器。
在图表的空白区域单击鼠标右键,然后选择“Properties”。
“图表属性”对话框打开。
从状态机类型下拉菜单中,选择Mealy或Moore。
单击“OK”。
图表图标将更新以显示所选图表类型: