1. Mealy型FSM,输入是由当前状态和输入共同决定。
Moore型FSM,输入只和当前状态有关,和输入无关。
2. 编译原理中FSM的数学表述
一个FSM是一个五元组,M=(K,E,T,S,Z)。其中,
1) K,有穷集,元素为状态
2) E,有穷字母表,元素为输入字符
3) T,转换函数,是 K x E -> K 上的映射
4) S,K中元素,是唯一的一个初态
5) Z,K的一个子集,是一个终态集
3. 通用FSM的数学表述
一个通用FSM是一个七元组,M={K,E,T,M,F,S,Z}。其中,
1) K,有穷集,元素为状态
2) E,有穷集,元素为元素为事件
3) T,转换函数,K x E -> K 上的映射
4) M,有穷集,元素为动作
5) F,动作映射函数, K x E -> M 上的映射
6) S,K中元素,唯一初态
7) Z,K的子集,终态集
4. 通用FSM优化
1) 3、5可以合并成,K x E -> {K,M} 的映射
2) 禁止状态接受空事件,每个状态增加进入动作和离开动作
3) 为每个状态增加定时器以及超时后的状态转换
5. 常规状态机,FSM中所有状态是不相交的、互斥的。
层次状态机,FSM中状态之间要么互斥、要么包含,类似树形结构,包含其他的为枝节点,否则为叶节点。
为方便单树表示,总是设计一个状态包含所有,作为根节点。
状态机的状态只能停留在叶节点,而不能留在枝节点上。
为方便FSM进入枝节点时总能留在叶节点上,每个枝节点需要指定一个默认子节点。
6. FSM实现方式
1) switch/case或if/else。适用于少量状态的FSM,扩展性不高。
2) 使用宏实现面向过程。
FSM:当前状态ID,缺省操作,状态表
状态表:状态数组
状态结构:状态ID,状态名,进入操作,退出操作,缺省操作,状态事件表
状态事件结构:操作,事件,下一状态ID
FSM 概述
最新推荐文章于 2024-01-28 14:34:37 发布