现在的位置: 首页 > 综合 > 正文

FSM 概述

2012年06月01日 ⁄ 综合 ⁄ 共 790字 ⁄ 字号 评论关闭

 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

抱歉!评论已关闭.