状态机原本是一个硬件概念。 它是由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移。
状态机分为有限状态和无限状态。
有限状态机 —— 状态数量有限
无限状态机 —— 状态数量无限
通常说的状态机一般为有限状态机,也是最常用的。英文名称为Finite State Machine,简称FSM。
根据状态转移机制的不同,又分为Moore型和mealy型。
摩尔(Moore)型状态机 —— 输出仅与状态相关
米莉(Mealy)型状态机 —— 输出与输入和状态相关
在驱动软件开发中,经常用到状态机的思路。
状态机的要素:现态、条件、动作、次态。
在软件实现上,可根据现态和条件制定状态转移表,查询得到动作和次态。
补充1:
状态机的核心是状态,而非动作。在设计状态机时应聚焦于状态,动作是为状态服务的。以状态位核心,考虑可以处理哪些输入条件,需要执行哪些动作。
补充2:
状态机的众多状态尝尝是可以分类的,可以将一些相同类型的状态做为子状态打包成一个状态,在状态内部进行子状态的处理。这样就可以简化状态机的设计。