1、有限状态机基础知识及练习,辅导讲座,状态机一般定义,(Finite State Machine,FSM),状态机 一个离散数学模型。给定 一个输入集合,根据对输入的接受次序 来决定一个输出集合。(摩尔状态机),状态 系统的基本数学特征。,有限状态机 输入集合和输出集合 都是有限的,并只有有限数目的状态。,输入集合 A,输出集合 X,状态记忆,输出形成,状态迁移,状态机一般结构,CLK,组合逻辑,时序逻辑,同步,当前状态,后续状态,S,a1 , a2 , , an,x1 , x2 , , xn,状态位置,状态名称,转移方向,输入集合(触发事件),输出集合(执行动作),状态等待,状态迁移图,nn,
2、a1 , a2 , , an,x1 , x2 , , xn,状态位置,状态名称,转移方向,输入集合(触发事件),输出集合(执行动作),状态等待,状态迁移图,S,状态编码,状态机实例 自动门,有一自动门,它可以被锁上,也可以开锁。当门锁上时,某人可以在它的槽中塞进一枚硬币。这样,门就会自动开锁,转变到开锁的状态;人通过后,门就会自动锁上。 我们希望把自动门交给一个简单的 FSM管理。通过对这个简单 FSM 的分析, 了解FSM 的设计过程。,自动门的基本状态,加 锁,开 锁,投币 / 开锁,通过 / 加锁,初始状态, / 加锁,状态机实例,异常处理,通过 / 报警,投币 / 谢谢,加 锁,开 锁
3、,投币 / 开锁,通过 / 加锁,初始状态, / 加锁,状态机实例,自动门的结构简图,状态机实例,控制器,自动门实例的VHDL描述,状态机实例,自动门实例的方真(一),状态机实例,自动门实例的方真(二),状态机实例,通过 / 报警,投币 / 谢谢,加 锁,开 锁,投币 / 开锁,通过 / 加锁,异常处理优化,状态机实例,修改“加锁”状态的异常处理,初始状态, / 加锁,投币 / 谢谢,加 锁,开 锁,投币 / 开锁,通过 / 加锁,异常处理优化,状态机实例,修改“加锁”状态的异常处理,初始状态, / 加锁,一个更好的异常处理方案,投币 / 谢谢,加 锁,开 锁,投币 / 开锁,通过 / 加锁,
4、初始状态, / 加锁,违 例,通过 / 报警,通过,投币,解警 / 消除警报,就绪 / 消除警报、加锁,状态机实例,是否完美了?,?,、撤销“谢谢”,2s / 撤销“谢谢”,再问一次:是否完美了?,完美只是相对的!,“就绪” 是退出 “违例” 状态的唯一条件!,状态机实例,诊断处理,投币 / 谢谢,加 锁,开 锁,投币 / 开锁,通过 / 加锁、撤销“谢谢”,初始状态,/ 加锁,违 例,通过 / 报警,通过,投币,解警 / 消除警报,就绪 / 消除警报、加锁,投币测试,通过测试,投币 / 谢谢,通过 / 撤销“谢谢”,H,/ 撤销“谢谢”,普通模式,诊断模式,复位 / 消除警报、加锁、撤销“谢
5、谢”,2s / 撤销“谢谢”,注意状态的嵌套使用!,超状态,子状态,加锁测试 / 加锁,开锁测试 / 开锁,报警测试 / 报警,解警测试 / 解警,诊断 / 状态保护,返回 / 状态恢复,虚状态(断点保护),回顾自动门的基本状态,加 锁,开 锁,投币 / 开锁,通过 / 加锁,初始状态, / 加锁,状态机实例,小 结(概念),无论对连续系统还是离散系统,状态概念无所不在。FSM 提供了一种描述和控制应用逻辑的非常强大的方法,具有规则简单、可读性和可验证性强等特点。,FSM 也是个不错的工具。很多复杂的逻辑都可以用一张图表来表述。,对一个复杂离散系统而言, 使用 FSM 方案几乎无所不能。FSM
6、 在通信协议、图形界面控制和其他很多工程应用中均有其足迹。, 明确对象要求,确定输入和输出集合,合 理分配状态。,小 结(方法), 确定状态迁移方向和迁移触发条件,确定 合乎要求的输出集合。, 充分预计各种异常情况,确定异常处理策 略及出口。, 按照实际需求,制定合理的诊断模式。, 完成系统综合。, 系统评价,设计验证。,练习(1):交通信号机, 绿信比 1:1, 路型 十字交叉, 相变周期 20(s), 黄(红黄)灯时间 2(s), 绿闪周期 0.5(s), 绿闪时间 5(s), 定时输入 100 Hz,TTL,练习(2):升降电梯, 平层信号开关 每层, 楼层数 4 层, 楼层数显 1 位十进制, 顶层呼叫按钮 向下, 底层呼叫按钮 向上, 中间层呼叫按钮 向上、向下, 运行方向指示 2 LED,