Moore and Mealy machines,Harel statecharts,UML state machines
Posted 系斯模科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Moore and Mealy machines,Harel statecharts,UML state machines相关的知识,希望对你有一定的参考价值。
Moore machines
在自动机理论中,有两种基本类型的有限状态机(FSM)。其中的一种叫做``摩尔机'',以其发明者爱德华·摩尔(Edward Moore)命名,他于1956年提出了这一概念。摩尔机由状态和过渡组成。状态能够产生输出,并且输出仅由当前状态确定,而不由任何输入确定。
我们将上面的开关示例扩展为具有不同亮度级别的电灯开关。电灯开关有两个按钮,一个ON按钮和一个OFF按钮。按下ON(开)按钮可打开灯并在不同的亮度级别之间切换。此行为由下面的状态机建模。按下按钮会引发相应的事件(ON_pressed或OFF_pressed),机器会对状态变化和相应的输出做出反应。状态机的输出只是亮度级别。在摩尔机器中,只有状态才能产生输出,因此每个亮度级别我们需要一个专用状态:
Light switch example as a Moore machine, modeled with YAKINDU Statechart Tools
Mealy machines
Mealy机器是1955年由George H. Mealy发明的。与Moore机器相比,Mealy机器仅在转换时产生输出,而在状态下不输出。这通常会导致状态图的状态更少,因为可以在转换中放置更多的逻辑。
Light switch example as a Mealy machine
请注意,上面的Moore机器和Mealy机器这两个状态图都描述了完全相同的系统。确实,自动机理论指出,您始终可以将Moore机器转换为Mealy机器,反之亦然,而不会失去任何表现力。
Harel statecharts
尽管Mealy机器已经可以减少所需状态的数量,但对于复杂系统,这类自动机很容易变得难以管理。或者用大卫哈雷的话来说:
“A complex system cannot be beneficially described in this naive fashion, because of the unmanageable, exponentially growing multitude of states, all of which have to be arranged in a ‘flat’ unstratified fashion, resulting in an unstructured, unrealistic, and chaotic state diagram.”
“一个复杂的系统不能用这种幼稚的方式进行有益的描述,因为不可管理的、呈指数级增长的大量状态,所有这些状态都必须以一种‘平坦’的、非层次化的方式进行排列,从而产生一个非结构化的、不现实的、混乱的状态图。”
Harel总结说:“状态方法必须是模块化的、层次化的和结构良好的”,并引入了其他概念,如状态组合和正交性。
他创造了“状态图”一词,并将其定义为:“状态图=状态图表+深度+正交性+广播通信”
“statecharts = state-diagrams + depth + orthogonality + broadcast communication”
因此,基本上Harel状态图是Mealy/Moore机器,通过进一步的概念扩展,允许我们以实际的方式对复杂系统建模。
使用复合状态图和子图,我们能够将更多的深度引入状态图,同时保持图的清晰和良好结构。区域帮助我们表达正交性:不同的子状态机可以并行执行。事件使我们能够实现广播通信,并给我们一个强有力的手段来描述复杂的行为。通过使用保护,我们可以声明某个事件仅在满足给定条件时触发转换。层间转换、历史状态、时态逻辑以及进入、退出和贯穿动作都是Harel状态图元素。
Harel状态图可以定义可以在输入和输出表达式中使用的变量。关于光开关示例,这允许我们将亮度级别存储在一个变量中,而不是存储在多个状态中。这样,我们就可以通过将所有亮起的状态合并为一个状态并在自转换上执行输出操作来简化状态图。在这里,我们只是在每次进行转换时增加亮度值。我们使用模表达式来确保亮度值保持在1到3之间。这样做的好处是我们可以在不添加新状态的情况下更改亮度级别的数量。
Light switch example as a Harel statechart
为了展示复合状态的使用,我们通过运动检测模式扩展了灯光开关示例。按下MOT按钮时,运动传感器被激活。传感器检测到任何运动(事件 motion_detected
)后,便以最高亮度级别(brightness = 3
)打开灯。可以使用将两个状态(Motion Detected 和 No Motion Detected)组合在一起的复合状态进行建模。
Extended light switch example as a Harel statechart with composite states
还请注意,Harel状态图结合了Mealy和Moore机器的特性,因此可以通过状态以及上面状态图所示的转换来产生输出。
我们甚至可以更进一步,将“Motion Detection Mode''的逻辑隐藏到子图中。这样,系统可以变得更加全面,因为人们可以直接看到不同的模式以及如何在它们之间进行切换。
Extended light switch example as a Harel statechart with sub diagrams
The present age: UML state machines
UML状态机基于David Harel引入的状态图表示法。此外,UML通过面向对象的原理扩展了Harel状态图的表示法。将其映射到我们的电灯开关示例,在UML中,我们可以通过操作turnOn(),turnOff(),setBrightness(value)等将电灯开关的可能动作建模为一种类型。
下表简要说明了上述类型之间的区别:
Differences between the state machine types
来源:https://www.itemis.com/en/yakindu/state-machine/documentation/user-guide/overview_what_are_state_machines
以上是关于Moore and Mealy machines,Harel statecharts,UML state machines的主要内容,如果未能解决你的问题,请参考以下文章
[从零开始学习FPGA编程-36]:进阶篇 - 基本时序电路-有限状态机简述(数字电路描述)=》Moore 型Mealy 型