第十四讲有限状态机设计 - 北京大学微处理器研究开发中心

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1步:理解问题
– 简单的输入/输出行为: X: 0 0 1 0 1 0 1 0 0 1 0 … Z: 0 0 0 1 0 1 0 1 0 0 0 … X: 1 1 0 1 1 0 1 0 0 1 0 … Z: 0 0 0 0 0 0 0 1 0 0 0 …
4
有限二进制串模式识别 (第二步)
画状态图
X==0
FSM2
Y
C
D
D
Y==1 B [0]
X==1
X==0
19
数据通路和控制
数字硬件系统 = 数据通路 + 控制
– 数据通路:寄存器,计数器,组合逻辑(ALU),通讯 (总线) – 控制:FSM产生控制信号的序列,控制数据通路的行为
假设外部产生间隔时间:
– – – – –
13
短时间脉冲(TS) 长时间脉冲(TL) 时间间隔表示信号 (ST) TS是黄灯保持时间(3个时间单位) TL是绿灯/红灯保持时间(7个时间单位)
交通信号灯控制
公路/乡村路交叉
farm road
car sensors
highway
14
交通信号灯控制
– 必须识别的二进制串010 and 100 – Moore机实现
reset 0 S1 [0] 1 S0 [0] 1 S4 [0] 0 S5 [0] 0 S6 [0] 0 or 1
S2 [0]
0 S3 [1]
5
有限二进制串模式识别 (第二步)
S3的退出条件:识别…010
– 如果下一个输入时0: …0100 = ...100 (状态6) – 如果下一个输入时1: …0101 = …01 (状态0)
0/0
1/1
输出和输入相关
11
同步 Mealy 机
module reduce (clk, reset, in, out); input clk, reset, in; output out; reg out; reg state; // state variables always @(posedge clk) if (reset) state = zero; else case (state) zero: // last input was a zero begin out = 0; if (in) state = one; else state = zero; end one: // we've seen one 1 if (in) begin state = one; out = 1; end else begin state = zero; out = 0; end endcase endmodule
Next State
HG HG HY HY FG FG FY FY FY HG FG = 11 FG = 01 FG = 0100
Outputs ST H 0 Green 0 Green 1 Green 0 Yellow 1 Yellow 0 Red 1 Red 1 Red 0 Red 1 Red
FY = 10 FY = 11 FY = 1000
1
尽可能复用状态
– 寻找具有相同含义的状态 – 减少状态数
S1 [0] ...0 1 1
S2 ...01 [0] 0 1 1
S4 ...1 [0] 0
S5 [0]...10 0 S6 ...100 [0]
1
所有的状态具有完全的状态转换 S3 则完成状态机设计 ...010 [1]
7
0 or 1
TS'
HY TS / ST
TS'
17
交通信号灯控制
状态表 考虑状态分配
Inputs C TL 0 – – 0 1 1 – – – – 1 0 0 – – 1 – – – –
SA1: SA2: SA3: 18
Present State
TS – – – 0 1 – – – 0 1 HG = 00 HG = 00 HG = 0001 HG HG HG HY HY FG FG FG FY FY HY = 01 HY = 10 HY = 0010
描述时序电路的模型
– – – –
– – – –
时序单元的抽象 有限状态机和状态图 输入和输出 米利机、摩尔机和同步米利机
给出状态图 给出状态转换表 确定次态和输出函数 实现组合逻辑电路
有限状态机的设计流程
硬件描述语言
3
例3:有限二进制串模式识别
有限二进制串模式识别
– 一个输入(X) 和一个输出 (Z) – 输出有效的条件:在输入序列中发现…010… ,当序列…100… 出现后停止识别
输入/输出列表
inputs reset C TS TL description place FSM in initial state detect vehicle on the farm road short time interval expired long time interval expired outputs HG, HY, HR FG, FY, FR ST description assert green/yellow/red highway lights assert green/yellow/red highway lights start timing a short or long interval
15
交通信号灯控制两FSM间通讯
如果没有计时器
– – – – – – S0 需要 7 状态 S1 需要 3 状态 S2 需要 7 状态 S3 需要 3 状态 S1 和 S3 比较简单 S0 和 S2 需要非常多的边
• C 可能在任意7个状态变化
TS'
S1 TS/ST
S1a
S1b S1c –/ST
case (state) zero: // last input was a zero begin if (in) next_state = one1; else next_state = zero; end one1: // we've seen one 1 begin if (in) next_state = two1s; else next_state = zero; end two1s: // we've seen at least 2 ones begin if (in) next_state = two1s; else next_state = zero; end endcase
第十四讲 有限状态机设计 Finite State Machine Design
佟冬 tongdong@mprc.pku.edu.cn
http://mprc.pku.edu.cn/courses/digital/2013spring
时序逻辑电路回顾
实现电路状态的基本模块
– 锁存器和触发器 – R-S锁存器, R-S主从触发器, D 主从触发器, D边沿触发器
电路定时方法Timing methodologies
– 使用时钟 – 级联触发器正确工作的条件 – 关注时钟扭斜
异步输入及其危害性
– 同步器
基本的寄存器
– 移位寄存器shift registers – 计数器counters
硬件描述语言和时序逻辑电路
2
有限状态机Finite state machines
zero [0] 1 0 0 one1 [0] 1 two1s [1] 1
0
// state variables
always @(posedge clk) if (reset) state = zero; else state = next_state;
9
Moore Verilog FSM
always @(in or state)
12
例5:交通信号灯控制
繁忙的公路和一条很少使用的乡村路交叉 感应器C探测乡村路上是否有车载等待
– 如果乡村路上没车,继续保持公路方向上的绿灯 – 如果乡村路上有车,公路方向的信号灯由绿变黄再变红,乡村路上 的信号灯变绿 – 如果一直探测乡村路上有车,保持该方向绿信号灯,但不能长于一 个特定的时间间隔 – 否则,乡村路方向的信号灯由绿变黄再变红,公路方向信号灯变绿 – 即使乡村路上有车载在等待,公路方向信号灯也要至少保持一定的 时间
状态转换
电路输出,输出只与状态相关
always @(state) case (state) zero: out = 0; one1: out = 0; two1s: out = 1; endcase endmodule
Mealy Verilog FSM
module reduce (clk, reset, in, out); input clk, reset, in; output out; reg out; reg state; // state variables reg next_state; always @(posedge clk) if (reset) state = zero; else state = next_state; always @(in or state) case (state) zero: // last input was a zero begin out = 0; if (in) next_state = one; else next_state = zero; end one: // we've seen one 1 if (in) begin next_state = one; out = 1; end else begin next_state = zero; out = 0; end endcase endmodule zero [0] 0/0 1/0 one1 [0]
采用计时器
– 极大的减少状态数
• 由20个状态减为4个状态
traffic light controller ST
– 计时器只需要7-8个状态
• 由20个状态减为12个状态
16
TS TL
timer
交通信号灯控制
状态图
(TL•CFra Baidu bibliotek' HG TL•C / ST TS / ST FY TL+C' / ST FG (TL+C')' Reset
6
S6 ...100 [0]
0 or 1
有限二进制串模式识别 (第二步)
S2 和 S5 还没有完全的跳转
– S2 = …01;如果下一个输入1 输入串 (01)1(00) S4符合这种情况 – S5 = …10;如果下一个输入1 输入串 (10)1(0) S2符合这种情况
reset 0 0
S0 [0]
F Red Red Red Red Red Green Green Green Yellow Yellow
(one-hot)
FMS间通讯
一个状态机的输出是另一个状态机的输入
X FSM 1 Y FSM 2
CLK
FSM1 X A A B
Y==0 A [1]
Y==0
X==0
C [0]
D [1] X==1
状态列表
state HG HY FG FY description highway green (farm road red) highway yellow (farm road red) farm road green (highway red) farm road yellow (highway red)
S1的退出条件:识别多0串…0
– 没有1出现 – 如果输入 0,循环跳回S1
– 没有0出现 – 如果输入1,循环跳回S0
0
reset
0 S1 [0] ...0 1 S2 ...01 [0] 0 1 S3 ...010 [1]
S0 [0]
1 S4 ...1 [0] 0 S5 [0] 0 1
S4的退出条件:识别多1串…1
硬件描述语言和时序电路
例4:将输入连续出现的1中去掉一个1
Moore
zero [0] 1 0 0 one1 [0] 1 two1s [1] 0 0/0
Mealy
zero [0] 1/0 one1 [0]
0/0
1
1/1
8
Verilog FSM
Moore机
module reduce (clk, reset, in, out); input clk, reset, in; output out; parameter zero = 2’b00; parameter one1 = 2’b01; parameter two1s = 2’b10; reg out; reg [2:1] state; reg [2:1] next_state;
相关文档
最新文档