有限状态机基础知识及练习
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Φ / wenku.baidu.com锁
加锁
开锁
投币 / 谢谢
修改“加锁”状态的异常处 理
通过 / 加锁
状态2机021/实2/21 例
15
一个更好的异常处理方案
可靠性 经济性 完美性
条件是充分的 条件是必要的 条件是充分和必要的
初始状态 投币 / 开锁
???
Φ / 加锁
是否完美了?通过 / 报警 加 锁
解警 / 消除警报
违例
◆ 充分预计各种异常情况,确定异常处理策 略及出口。
◆ 按照实际需求,制定合理的诊断模式。 ◆ 完成系统综合。 ◆ 系统评价,设计验证。
2021/2/21
20
练习(1):交通信号机
◆ 路型 ◆ 相变周期 ◆ 绿闪时间 ◆ 绿闪周期 ◆ 黄(红黄)灯时间 ◆ 绿信比 ◆ 定时输入
十字交叉 20(s) 5(s) 0.5(s) 2(s) 1:1 100 Hz,TTL
clk,reset,coin,pass: IN std_logic; door,alarm,thank: OUT std_logic ); END door_contr;
ARCHITECTURE behavior OF door_contr IS TYPE states IS (lock,unlock); SIGNAL next_state: states; BEGIN
WHEN unlock => IF (coin = '1') THEN next_state <= unlock; thank <= '1'; door <= '1'; ELSIF (pass = '1') THEN next_state <= lock; door <= '0'; END IF;
END CASE; END IF; END PROCESS; END behavior;
PROCESS (clk) BEGIN IF (reset = '1') THEN next_state <= lock; alarm <= '0'; thank <= '0'; door <= '0'; ELSIF (clk'EVENT AND clk = '1') THEN CASE next_state IS
状态2机021/实2/21 例
WHEN lock => IF (coin = '1') THEN next_state <= unlock; door <= '1'; ELSIF (pass = '1') THEN next_state <= lock ; alarm <= '1'; door <= '0'; END IF;
2021/2/21
21
练习(2):升降电梯
◆ 楼层数 ◆ 楼层数显 ◆ 中间层呼叫按钮 ◆ 底层呼叫按钮 ◆ 顶层呼叫按钮 ◆ 平层信号开关 ◆ 运行方向指示
4层 1 位十进制 向上、向下 向上 向下 每层 2 LED
2021/2/21
22
汇报结束
谢谢大家! 请各位批评指正
2021/2/21
23
我们希望把自动门交给一个简单的 FSM 管理。通过对这个简单 FSM 的分析, 了解 FSM 的设计过程。
2021/2/21
7
自动门的基本状态
初始状态 Φ / 加锁
投币 / 开锁
加锁
开锁
通过 / 加锁
状态2机021/实2/21 例
8
异常处理
初始状态
Φ / 加锁
通过 / 报警
加锁
投币 / 开锁
开锁
有限状态机基础知识及练习
2021/2/21
1
辅导讲座
有限状态机基础知识及练习
2021/2/21
2
状态机一般定义
(Finite State Machine,FSM)
◆状态 ——系统的基本数学特征。
◆状态机 —— 一个离散数学模型。给定 一个输入集合,根据对输入的接受次序 来决定一个输出集合。(摩尔状态机)
投币 / 谢谢
通过 / 加锁
状态2机021/实2/21 例
9
自动门的结构简图
通过传感器
控
投币传感器
制
器
时钟 CLK
开锁执行 加锁执行
“谢谢” 声光报警
状态2机021/实2/21 例
10
自动门实例的VHDL描述
LIBRARY ieee; USE ieee.std_logic_1164.ALL;
ENTITY door_contr IS PORT (
11
自动门实例的方真(一)
状态2机021/实2/21 例
12
自动门实例的方真(二)
状态2机021/实2/21 例
13
异常处理优化
初始状态 投币 / 开锁
Φ / 加锁
通过 / 报警
加锁
开锁
投币 / 谢谢
修改“加锁”状态的异常处 理
通过 / 加锁
状态2机021/实2/21 例
14
异常处理优化
初始状态 投币 / 开锁
诊断模式
通过测试
加锁测试 / 加锁
开锁测试 / 开锁
状态2机021/实2/21 例
报警测试 / 报警
解警测试 / 解警
17
回顾自动门的基本状态
初始状态 Φ / 加锁
投币 / 开锁
加锁
开锁
通过 / 加锁
状态2机021/实2/21 例
18
小 结(概念)
◆无论对连续系统还是离散系统,状态概念无 所不在。FSM 提供了一种描述和控制应用逻辑的 非常强大的方法,具有规则简单、可读性和可验 证性强等特点。
◆有限状态机 —— 输入集合和输出集合 都是有限的,并只有有限数目的状态。
2021/2/21
3
状态机一般结构
输入集合 A 组合逻辑
CLK
同步
2021/2/21
后续状态
状
态
状
迁
态
移
记
忆
输 出 形 成输
出 集
合
X
时序逻辑 当前状态
4
状态迁移图
状态等待
输入集合
输出集合
(触发事件)
(执行动作)
a1 , a2 , … , an
投币 / 谢谢
开锁
2s / 撤销“谢谢”
通过 / 加锁 、撤销“谢谢”
通过
投币 就绪 / 消除警报、加锁 “就绪” 是退出 “违例” 状态的唯一条
件!
再问一次:是否完美了?
…… …… ……完美只是相对的!
状态2机021/实2/21 例
16
子状态 超状态 诊断处理
虚状态(断点保护)
注意状态的嵌套使用!
通过 / 报警 解警 / 消除警报
初始状态
Φ/ 加锁
投币 / 开锁
普通模式 投币 / 谢谢
违例
加锁
开锁
H
通过
投币
2s / 撤销“谢谢”
就绪 / 消除警报、加锁
通过 / 加锁、撤销“谢谢”
返回 / 状态恢复 复位 / 消除警报、加锁、撤销“谢谢” 诊断 / 状态保护
Φ/ 撤销“谢
谢”
投币测试
投币 / 谢谢 通过 / 撤销“谢谢”
◆FSM 也是个不错的工具。很多复杂的逻辑都 可以用一张图表来表述。
◆对一个复杂离散系统而言, 使用 FSM 方案 几乎无所不能。FSM 在通信协议、图形界面控制 和其他很多工程应用中均有其足迹。
2021/2/21
19
小 结(方法)
◆ 明确对象要求,确定输入和输出集合,合 理分配状态。
◆ 确定状态迁移方向和迁移触发条件,确定 合乎要求的输出集合。
S
x1 , x2 , … , xn
状态位置
状态名称 转移方向
2021/2/21
5
状态迁移图
状态编码 状态等待
输入集合
输出集合
(触发事件)
(执行动作)
a1 , a2 , … , an
nn
x1 , x2 , … , xn
S
状态位置
状态名称 转移方向
2021/2/21
6
状态机实例 —— 自动门
有一自动门,它可以被锁上,也可以开 锁。当门锁上时,某人可以在它的槽中塞进 一枚硬币。这样,门就会自动开锁,转变到 开锁的状态;人通过后,门就会自动锁上。
加锁
开锁
投币 / 谢谢
修改“加锁”状态的异常处 理
通过 / 加锁
状态2机021/实2/21 例
15
一个更好的异常处理方案
可靠性 经济性 完美性
条件是充分的 条件是必要的 条件是充分和必要的
初始状态 投币 / 开锁
???
Φ / 加锁
是否完美了?通过 / 报警 加 锁
解警 / 消除警报
违例
◆ 充分预计各种异常情况,确定异常处理策 略及出口。
◆ 按照实际需求,制定合理的诊断模式。 ◆ 完成系统综合。 ◆ 系统评价,设计验证。
2021/2/21
20
练习(1):交通信号机
◆ 路型 ◆ 相变周期 ◆ 绿闪时间 ◆ 绿闪周期 ◆ 黄(红黄)灯时间 ◆ 绿信比 ◆ 定时输入
十字交叉 20(s) 5(s) 0.5(s) 2(s) 1:1 100 Hz,TTL
clk,reset,coin,pass: IN std_logic; door,alarm,thank: OUT std_logic ); END door_contr;
ARCHITECTURE behavior OF door_contr IS TYPE states IS (lock,unlock); SIGNAL next_state: states; BEGIN
WHEN unlock => IF (coin = '1') THEN next_state <= unlock; thank <= '1'; door <= '1'; ELSIF (pass = '1') THEN next_state <= lock; door <= '0'; END IF;
END CASE; END IF; END PROCESS; END behavior;
PROCESS (clk) BEGIN IF (reset = '1') THEN next_state <= lock; alarm <= '0'; thank <= '0'; door <= '0'; ELSIF (clk'EVENT AND clk = '1') THEN CASE next_state IS
状态2机021/实2/21 例
WHEN lock => IF (coin = '1') THEN next_state <= unlock; door <= '1'; ELSIF (pass = '1') THEN next_state <= lock ; alarm <= '1'; door <= '0'; END IF;
2021/2/21
21
练习(2):升降电梯
◆ 楼层数 ◆ 楼层数显 ◆ 中间层呼叫按钮 ◆ 底层呼叫按钮 ◆ 顶层呼叫按钮 ◆ 平层信号开关 ◆ 运行方向指示
4层 1 位十进制 向上、向下 向上 向下 每层 2 LED
2021/2/21
22
汇报结束
谢谢大家! 请各位批评指正
2021/2/21
23
我们希望把自动门交给一个简单的 FSM 管理。通过对这个简单 FSM 的分析, 了解 FSM 的设计过程。
2021/2/21
7
自动门的基本状态
初始状态 Φ / 加锁
投币 / 开锁
加锁
开锁
通过 / 加锁
状态2机021/实2/21 例
8
异常处理
初始状态
Φ / 加锁
通过 / 报警
加锁
投币 / 开锁
开锁
有限状态机基础知识及练习
2021/2/21
1
辅导讲座
有限状态机基础知识及练习
2021/2/21
2
状态机一般定义
(Finite State Machine,FSM)
◆状态 ——系统的基本数学特征。
◆状态机 —— 一个离散数学模型。给定 一个输入集合,根据对输入的接受次序 来决定一个输出集合。(摩尔状态机)
投币 / 谢谢
通过 / 加锁
状态2机021/实2/21 例
9
自动门的结构简图
通过传感器
控
投币传感器
制
器
时钟 CLK
开锁执行 加锁执行
“谢谢” 声光报警
状态2机021/实2/21 例
10
自动门实例的VHDL描述
LIBRARY ieee; USE ieee.std_logic_1164.ALL;
ENTITY door_contr IS PORT (
11
自动门实例的方真(一)
状态2机021/实2/21 例
12
自动门实例的方真(二)
状态2机021/实2/21 例
13
异常处理优化
初始状态 投币 / 开锁
Φ / 加锁
通过 / 报警
加锁
开锁
投币 / 谢谢
修改“加锁”状态的异常处 理
通过 / 加锁
状态2机021/实2/21 例
14
异常处理优化
初始状态 投币 / 开锁
诊断模式
通过测试
加锁测试 / 加锁
开锁测试 / 开锁
状态2机021/实2/21 例
报警测试 / 报警
解警测试 / 解警
17
回顾自动门的基本状态
初始状态 Φ / 加锁
投币 / 开锁
加锁
开锁
通过 / 加锁
状态2机021/实2/21 例
18
小 结(概念)
◆无论对连续系统还是离散系统,状态概念无 所不在。FSM 提供了一种描述和控制应用逻辑的 非常强大的方法,具有规则简单、可读性和可验 证性强等特点。
◆有限状态机 —— 输入集合和输出集合 都是有限的,并只有有限数目的状态。
2021/2/21
3
状态机一般结构
输入集合 A 组合逻辑
CLK
同步
2021/2/21
后续状态
状
态
状
迁
态
移
记
忆
输 出 形 成输
出 集
合
X
时序逻辑 当前状态
4
状态迁移图
状态等待
输入集合
输出集合
(触发事件)
(执行动作)
a1 , a2 , … , an
投币 / 谢谢
开锁
2s / 撤销“谢谢”
通过 / 加锁 、撤销“谢谢”
通过
投币 就绪 / 消除警报、加锁 “就绪” 是退出 “违例” 状态的唯一条
件!
再问一次:是否完美了?
…… …… ……完美只是相对的!
状态2机021/实2/21 例
16
子状态 超状态 诊断处理
虚状态(断点保护)
注意状态的嵌套使用!
通过 / 报警 解警 / 消除警报
初始状态
Φ/ 加锁
投币 / 开锁
普通模式 投币 / 谢谢
违例
加锁
开锁
H
通过
投币
2s / 撤销“谢谢”
就绪 / 消除警报、加锁
通过 / 加锁、撤销“谢谢”
返回 / 状态恢复 复位 / 消除警报、加锁、撤销“谢谢” 诊断 / 状态保护
Φ/ 撤销“谢
谢”
投币测试
投币 / 谢谢 通过 / 撤销“谢谢”
◆FSM 也是个不错的工具。很多复杂的逻辑都 可以用一张图表来表述。
◆对一个复杂离散系统而言, 使用 FSM 方案 几乎无所不能。FSM 在通信协议、图形界面控制 和其他很多工程应用中均有其足迹。
2021/2/21
19
小 结(方法)
◆ 明确对象要求,确定输入和输出集合,合 理分配状态。
◆ 确定状态迁移方向和迁移触发条件,确定 合乎要求的输出集合。
S
x1 , x2 , … , xn
状态位置
状态名称 转移方向
2021/2/21
5
状态迁移图
状态编码 状态等待
输入集合
输出集合
(触发事件)
(执行动作)
a1 , a2 , … , an
nn
x1 , x2 , … , xn
S
状态位置
状态名称 转移方向
2021/2/21
6
状态机实例 —— 自动门
有一自动门,它可以被锁上,也可以开 锁。当门锁上时,某人可以在它的槽中塞进 一枚硬币。这样,门就会自动开锁,转变到 开锁的状态;人通过后,门就会自动锁上。