定义:
由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作,完成特定操作的控制中心
分类 :
摩尔(Moore)型状态机:若输出只和状态有关而与输入无关
米莉(Mealy)型状态机:若输出和状态与输入有关
状态机的几个重要概念:
State 状态:
一个状态机至少要包含两个状态。例如上面自动门的例子,有 open 和 closed 两个状态。
Event 事件:
事件就是执行某个操作的触发条件或者口令。对于自动门,“按下开门按钮”就是一个事件。
Action 动作:
事件发生以后要执行动作。例如事件是“按开门按钮”,动作是“开门”。编程的时候,一个 Action 一般就对应一个函数。
Transition 变换:
也就是从一个状态变化为另一个状态。例如“开门过程”就是一个变换
当然了概念总是规定的,在实际的工程中我们可能需要根据实际的需要来调整我们具体的实现。
状态机的三种描述方法:
一段式:整个状态机写到一个always模块里面,在该模块中既描述状态转移,又描述状态的输入和输出;
二段式:用两个always模块来描述状态机,其中一个always模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出;
现态:是指当前所处的状态。
次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
三段式:在两个always模块描述方法基础上,使用三个always模块,一个always模块采用同步时序描述状态转移,一个always采用组合逻辑判断状态转移条件,描述状态转移规律,另一个always模块描述状态输出
有限状态机(FSM):表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型
一段式写法:
二段式写法:
三段式写法: