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