有限状态机的分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通用有限状态机设计过程
(1) 定义输入和输出 (2) 定义状态机可能的状态
状态化简
状态分配或状态编码 输出编码 可能的输入编码
(3) 用二进制对状态和输出进行编码
(4) 选择适当的逻辑实现状态和输出
组合逻辑的实现和优化 步骤2和3对最终的逻辑将产生很大的影响
2
VIII - Working with Sequential Logic
4、进行状态分配
4个状态,采用2位状态编码: 0¢(00)、 5¢(01)、 10¢ (10)、 15¢(11)
当前状态 Q1 Q0 0 0 输入 D N 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 – – 次态 D1 D0 0 0 0 1 1 0 – – 0 1 1 0 1 1 – – 1 0 1 1 1 1 – – 1 1 输出t open 0 0 0 – 0 0 0 – 0 0 0 – 1
检查状态转换表中的每一行,寻找具有相同次态和输出的状态
S10和S12具有相同次
N D
Reset
自动售货机 FSM
Open
商品释放机制
Clock
3
VIII - Working with Sequential Logic
2、有限状态机抽象表达
Reset
列出最终能给出商品的输入顺序:
3个5美分:N,N,N 2个5美分,再1角:N,N,D 1角,5分:D,N 5分,1角:N,D 2个1角:D,D 输入: N, D, reset, clk 输出商品: open 假设信号N和D从来不会同时为真 只将open信号为真时列出
S3 N S7 [open] D S8 [open] N S1 D S4 [open] N
S0 D S2 N S5 [open] D S6 [open]
画状态图:
假设:
例:简单的自动售货机 省略了自环 N=D=0 (no coin)
4
VIII - Working with Sequential Logic
12
© Copyright 2004, Gaetano Borriello and Randy H. Katz VIII - Working with Sequential Logic
行匹配法例子
仅通过观察状态表就能判断状态等效
化简后的状态表
13
© Copyright 2004, Gaetano Borriello and Randy H. Katz VIII - Working with Sequential Logic
next state D3 D2 D1 D0 0 0 0 1 0 0 1 0 0 1 0 0 - - - 0 0 1 0 0 1 0 0 1 0 0 0 - - - 0 1 0 0 1 0 0 0 1 0 0 0 - - - 1 0 0 0
output open 0 0 0 0 0 0 0 0 0 1
状态图
0¢ [0] N 5¢ [0] D
5¢
N
例:简单的自动售货机 N+D
15¢ [open]
© Copyright 2004, Gaetano Borriello and Randy H. Katz
D
10¢ [0]
10¢
15¢
最简化的符号状态转换表
5
VIII - Working with Sequential Logic
等价状态:设Si、Sj为两个原始状态,当它们满足以下条件时等效。
对于所有的输入组合
① 输出相同
② 它们的次态属于下列情况之一 A.次态相同。Si、Sj的次态均为Sk B.次态交错或为各自的现态。 交错:Si的次态为Sj,Sj 的次态为Si 。 为各自的现态:或Si的次态为Si,Sj的次态为Sj 。 等效类:由若干等效状态构成的集合。等效类中任意两个状态均等效。若存在关 系,(S1,S2 ),(S2,S3 ) → (S1,S3 ),则 S1、S2、S3 属于同一等效类。 记 作 (S1,S2 ),(S2,S3 ) → | S1、S2、S3 |。 最大等效类:一个等效类不是其他等效类的子集,则该等效类为最大等效类。 10
单点编码
例:简单的自动售货机
© Copyright 2004, Gaetano Borriello and Randy H. Katz
present state inputs Q3 Q2 Q1 Q0 D N 0 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 - -
assign open=(state== cell15); endmodule
7
VIII - Working with Sequential Logic
例:简单的自动售货机
5、实现
D1 Q1 0 0 1 1 0 1 1 1 D X X 1 X 1 1 1 1 Q0 D0 N D Q1 0 1 1 0 1 0 1 1 X X 1 X 0 1 1 1 Q0 N D Q1 Open 0 0 1 0 0 0 1 0 X X 1 X 0 0 1 0 Q0 N
0
1
1
0
例:简单的自动售货机
1 1
© Copyright 2004, Gaetano Borriello and Randy H. Katz
状态分配后的状态转换表
6
VIII - Working with Sequential Logic
简单的自动售货机(VERILOG)
module autosell (clk, reset, D, N,open); input clk, reset, D,N; output open; parameter cell0= 2'b00,cell5 = 2'b01, cell10= 2'b10, cell15 = 2'b11; reg [2:1] state;
原始状态图
14
© Copyright 2004, Gaetano Borriello and Randy H. Katz VIII - Working with Sequential Logic
状态表:每个状态对应一行,每列对应不同的输入组合的次态和 输出
状态表和行匹配法
15
© Copyright 2004, Gaetano Borriello and Randy H. Katz VIII - Working with Sequential Logic
行匹配法化简例子
4比特序列检查器 初始状态图
该状态机具有单一输入X和输出Z,如果每次接收的4比特输入为0110或1010中的 一个,则输出为1。状态机每次接收4比特输入后回到复位状态。 假设用米利型机实现: 只有在之前的4比特输入匹配指定串中的任意一个,输出才为1 状态机只在每4位比特一组输入后才决定是否输出1
算法概述(由状态转换表开始对状态进行化简)
1. 2.
对状态进行分组,每组中的状态具有相同的 输出 检查转换表,查看各组中的状态是否对于所 有的输入组合都进入等价的次态,若等价可将它 们合并成一个状态,并重新命名。
3.然后将所有的状态转换过程都指向这些新状态
行匹配算法概述
4.重复以上过程,直到再也没有状态可以合并
逻辑电路
D1 = Q1 + D + Q0 N D0 = Q0’ N + Q0 N’ + Q1 N + Q1 D OPEN = Q1 Q0
8
© Copyright 2004, Gaetano Borriello and Randy H. Katz VIII - Working with Sequential Logic
可同时应用这两种方法:
行匹配法能快速化简,减少状态数目。 接下来用蕴含表法,由于只针对更少的状 态,因此能迅速找到行匹配法遗漏的等价 状态
状态化简方法
11
© Copyright 2004, Gaetano Borriello and Randy H. Katz VIII - Working with Sequential Logic
reg [2:1] next_state;
always @(posedge clk) if (reset) state = cell0; else state = next_state; always @(N or D or state) case (state) cell0: begin if (N) next_state = cell5; else if (D) next_state = cell10; else state = cell0; end © Copyright 2004, Gaetano Borriello and Randy H. Katz
cell5: begin if (N) next_state = cell10; else if (D) next_state = cell15; else state = cell10; end cell10: begin if (N) next_state = cell15; else if (D) next_state = cell15; else state = cell10; end cell15: next_state = cell15; endcase
© Copyright 2004, Gaetano Borriello and Randy H. Katz
自动售货机在收到15美分之后就会给出一件商品,这台机器具有 能够接收5美分和1角硬币的单个投币口,每次投入一枚硬币,其 中机械传感器用来指示插入投币口是5美分还是1角,控制器的输 出导致一件商品交到顾客手中 两个假设简化设计: 不找零 在每次使用前,机器都会复位
D0 = Q0 D’ N’ D1 = Q0 N + Q1 D’ N’ D2 = Q0 D + Q1 N + Q2 D’ N’ D3 = Q1 D + Q2 D + Q2 N + Q3 OPEN = Q3
9
VIII - Working with Sequential Logic
状态简化的等价状态
状态简化:对原始状态表进行简化,消去多余状态,求得最小化状态表。 状态简化目标– 识别和结合有等价行为的状态
1、理解问题
假设:投入5美分,在 单个周期内N为真;投 硬币传感器 入1角,在单个周期内D 为真;在上一次复位之 例:简单的自动售货机 后,若收到15美分或更 多,则状态机Open为真, 并保持一个周期 © Copyright 2004, Gaetano Borriello and Randy H. Katz
© Copyright 2004, Gaetano Borriello and Randy H. Katz VIII - Working with Sequential Logic
行匹配法:一种良好的人工推导方法,但
并不是总能得到最简状态表
蕴含表法:容易用软件实现,并确实能找
到可能的最优解
状态最简化Fra Baidu bibliotek
最少的状态需要最少的状态位 最少的位需要最少的逻辑方程
状态最简化方法
行匹配法 蕴含表方法
状态分配策略
顺序编码 随机编码 单点编码 面向输出的编码 启发式编码
有限状态机的划分 有限状态机的分析
1
© Copyright 2004, Gaetano Borriello and Randy H. Katz VIII - Working with Sequential Logic
© Copyright 2004, Gaetano Borriello and Randy H. Katz
3、状态最简化:
状态S4~S8具有等价,可合并成一个状态 每个状态表示接受到钱的数量
Reset
状态转换表
present state 0¢ inputs D N 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 – – next state 0¢ 5¢ 10¢ – 5¢ 10¢ 15¢ – 10¢ 15¢ 15¢ – 15¢ output open 0 0 0 – 0 0 0 – 0 0 0 – 1