有限状态机FSM

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

Q1*Q0*/MAX
(5)画状态图
逻辑功能描述:具有使能端X的2位二进制加法计数器 电路输出与输入直接相关 —— Mealy机 X 0/0 1/0 0/0
S
00 01 10 11 Q1Q0
0
00/0 01/0 10/0 11/0
1
01/0 10/0 11/0 00/1 0/0
00
1/1
01
1/0
Q1*Q0*/MAX
有限状态机(FSM)

状态机一般包括组合逻辑和寄存器逻辑两部分。寄存器用 于存储状态,组合电路用于状态译码和产生输出信号。 根据输出信号产生方法的不同,状态机可分为米里 (Mealy) 机和摩尔(Moore) 机。



米里(Mealy) 机的输出是当前状态和输入信号的函数。
摩尔(Moore) 机的输出仅是当前状态的函数。 在硬件设计时,需自行决定采用哪种状态机。
Stop
Clear
A=1/K2=1
状态机的设计包含两个主要过程: 一是状态机的编码,二是状态机的建模。
有限状态机(FSM)-编码

状态编码又称状态分配。设计时,须综合考虑电路复杂度 和电路性能这两个因素,选择编码方法。 二进制编码、格雷编码、完整一位热编码( verbose onehot) 、简化一位热编码( simplified one-hot )
Mealy 状态机
下一个状态 = F(当前状态,输入信号); 输出信号 = G(当前状态,输入信号);
输入
下一状态 激励信号 的逻辑 F 状态 寄存器
clk 输入
当前状态
输出逻辑 G
输出
时钟信号clk
Moor 状态机
下一个状态 = F(当前状态,输入信号) 输出信号 = G(当前状态);
输入
下一状 态的逻 辑 F
激励信号
状态 寄存器
clk 输入
当前状态
输出逻辑 G
输出
时钟信号clk
例:时钟同步状态机(D触发器)
下一状态逻辑 产生激励信号
X X’
状态存储器
输出逻辑
MAX
X
输入
D0
Q0
输出
Q0
Q0’ D1 Q1
Q1
Q1’
激励
CLK
时钟信号
当前状态
X
X X’
MAX D0 Q0
(3)由激励方程和触发器特征方程
Q0 得到转移方程(状态方程)
(9)检查自启动功能 画出全状态转换表,从中可以看出:当3个触发器输出均 为1时,电路将进入“死循环”。因此,需要增加1个三输入 端的与非门,将Q3、Q2、Q1 与非后送X,使电路自动跳出 “死循环”进入有效循环。
CP 0 1 2 3 4 5 6 7 X 0 0 0 0 0 0 0 0
Q3n Q2n Q1n
n D3 XQ2 Q1n
n n D2 XQ3n X Q2 Q1n Q2 Q1n
n n n D1 X Q3n Q2 Q1n XQ2 Q1n X Q2 Q1n
n Fout X Q3nQ2 Q1n
(7)根据驱动方程、输出方程和D触发器的逻辑符号绘 制逻辑电路图如下:
(8)仿真波形图如下:
01
0
× ×
11
0
× ×
XQ3 00
00
0 0 0 0
01
0
× ×
11
0
× ×
10
0
× ×
01 11
10
01 11
10
0
1
0
0
1
0
n n n Q1n1 X Q3n Q2 Q1n XQ2 Q1n X Q2 Q1n
n Fout X Q3nQ2 Q1n
(6)根据状态方程和D触发器的特征方程求驱动方程
0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1
n Q3n1 Q2 1 Q1n1 Fout
CP 8 9 10 11 12 13 14 15
X 1 1 1 1 1 1 1 1
Q3n
0 0 0 0 1 1 1 1
n Q2
n Q1n Q3n1 Q2 1 Q1n1 Fout
第八章 有限状态机 (FSM-Finite State Machine)

学习内容:



什么是有限状态机 有限状态机的设计规则 基于verilog状态机设计的三种方式 有限状态机的小结
状态机的生活实例


一个学生,为了不耽误第一节课,每个工作日早上 六点起床。可是到了周末,可能想睡觉,不用早起。 当你还在睡觉,闹钟却在六点响了,并且把你吵醒了。 如果是工作日,关掉闹钟,起床,为新的一天做准备。 然而,若是周末,你忘记了调整闹钟,则到时候你可 能会生气的关掉闹钟(丢掉房子的一边,仍到厕所里 冲走,或者把它报废),然后继续睡觉。 我们可以用图1所示的有限状态机来模拟这一连串 的事件。
实际上,这个状态机就是你自己。你可能处于下列三个状态 之一:睡眠中,醒了但还在床上,或起床。你接受两个输入: 唤你醒来的闹钟和当天是否是工作日,后者决定你对闹钟的反 映态度。在这个例子中,唯一的输出就是关掉闹钟。
简化的状态机的例子(续)
闹钟
工作日 关掉闹钟
状态机
状态
图1状态机模型:(b)闹钟系统
为什么要使用状态机
有限状态机克服了纯硬件数字系统顺序方式控制不灵活 的缺点
状态机的结构模式相对简单,层次分明、易读易懂易排 错 状态机容易构成性能良好的同步时序逻辑模块 状态机的verilog表述丰富多样,综合器易于优化 利用同步时序和全局时钟线可实现高速有限状态机 可靠性高,非法状态易控制
FSM是为时序电路设计而创建的特殊模型技术,在针对

二进制编码:
Idle Start Stop Clear = 2’b00 = 2’b01 = 2’b10 = 2’b11
One-Hot编码: Idle Start Stop Clear = = = = 4’b1000 4’b0100 4’b0010 4’b0001
有限状态机(FSM)-编码
二进制编码:使用较少的触发器和较多的组合逻辑; 适用于CPLD和小型状态机设计; One-Hot编码:使用较多的触发器和较少的组合逻辑; 适用于FPGA和大型状态机设计; 格雷编码: 在状态转换中, 相邻的状态每次只有一个bit位产 生变化, 可减少了产生毛刺和一些暂态的可能。
001
1/0 0/0
100
011
1/0
010
1/0
图2 1101序列检测器状态图
(3)根据状态图的状态数选择触发器的类型与个数
由图2可知,需要使用3个触发器,本题选用D触发器 (4)根据状态图列出次态卡诺图如图3所示
0/0 1/0
Q2Q1
000
0/0 1/1
0/0 0/0
001
1/0 0/0
11 00 01 10 XQ3 00 0000/0 0000/0 0000/0 0011/0 01 0000/0 1/0


5
RTL级FSM的判断标准

(1)FSM要安全、稳定性高; (2)FSM速度要快,满足设计的频率要求; (3)FSM面积要小,满足设计的面积要求; (4)FSM设计要清晰、易维护;
有限状态机(FSM)
状态机包含的要素可归纳为4个:现态、条件、动作、 次态。 “现态”和“条件”是因,“动作”和“次态”是果。 现态:是指当前所处的状态。 条件:又称为“事件”。 动作:条件满足后执行的动作。 次态:条件满足后要迁往的新状态。“次态”是相对于 “现态”而言
(4)由转移方程和输出方程得到状态/输出表
Q0n+1 = Q0·X’ + Q0’·X
Q1n+1 = Q1·X’ + Q1’·Q0·X + Q1·Q0’·X MAX = Q1·Q0·X X S 00 01 10 11 Q1Q0 0 00/0 01/0 10/0 11/0 1 01/0 10/0 11/0 00/1 X 0 0 0 0 1 1 1 1 状态转换表 Q1 Q0 Q1* Q0* 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 MAX 0 0 0 0 0 0 0 1
0 D触发器特征方程:Qn+1 = D
Q ’
Q0n+1 =QQ0·X’ + Q0’·X 1
Q1n+1= Q1’1·X’ + Q1’·Q0·X Q + Q1·Q0’·X
CLK
D1
Q1
(1)由电路得到激励方程 D0 = Q0·X’ + Q0’·X
(2)由电路得到输出方程 MAX = Q1·Q0·X
D1 = Q1·X’ + Q1’·Q0·X + Q1·Q0’·X
Q2Q1 Q2Q1
XQ3 00
01
00
0 0 0 0
01
0
× ×
11
0
× ×
10
0
× ×
11
10
0
1
0
XQ23Q1 Q XQ3 00 00 01 01 11 11 10 10
11 00 01 10 11 00 01 0011/0 0000/0 0000/0 0000/0 10
0 1 0 0 0000/0 ×××/ × ×××/ × ×××/ × × × × 0 0010/0 ×××/ × ×××/ × ×××/ × × × × 1 1001/0 1010/0 1100/1 1010/0 1 0 1 0
Q2卡诺图
n n Q3 1 XQ2 wenku.baidu.com1n
n n n Q2 1 1101序列检测器次态卡诺图 XQ3n X Q2 Q1n Q2 Q1n 图3
(5)根据次态卡诺图画分解卡诺图,然后求状态方程和 输出方程 Q1卡诺图
Q2Q1 Q2Q1
Fout卡诺图
10
1
× ×
XQ3 00
00
0 0 0 1
X=0
(10)自启动电路设计
有限状态机(FSM)
A/K1=0
同步时钟:clk 输入信号:reset、A 输出信号:K1、K2 状态转移发生在时钟上升沿触
Start
!A !Reset /K2=0 K1=0
!Reset /K2=0 K1=0
Idle
!Reset / K2=0 K1=0 (!Reset |!A )/ K2=0 K1=1
0/0 1/0
S0
0/0 1/1
0/0 0/0
S1
1/0 0/0
S4
S3
1/0
S2
1/0
图1 原始状态图
(2)对原始状态图进行状态化简并进行状态编码 从图1原始状态图中可以看出,不存在等效状态,因此 选择000~100表示S0~S4 五个状态,状态图如图2所示。
0/0 1/0
000
0/0 1/1
0/0 0/0
11
1/0
10
0/0
(6)画时序图
X
Mealy机
X EN EN’
Moore机
MAX MAXS D0 Q0
MAXS =Q1·Q0
D1 Q1
Q0
Q0’
Q1
Q1’
CLK
状态机的定时图
状态机设计举例
例:串行数据1101序列检测器设计 (1) 根据题目要求画出原始状态转换图 设:S0 为没有检测到1的状态, S1为检测到一个1的状态, S2为检测到11的状态, S3为检测到110的状态, S4为检 测到1101的状态。所状态图可表示为图1所示:
0 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0
0 0 1 0 0 0 1 0
0 0 0 0 0 0 0 0
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
0 0 0 1 0 0 0 1
0 1 1 0 1 1 1 1
1 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0
×××/ × ×××/ × ×××/ × ×××/ × ×××/ × ×××/ ×
100
011
1/0
010
11
0010/0
10 1001/0 1010/0 1100/1 1010/0
图2 1101序列检测器状态图
图3 1101序列检测器次态卡诺图
(5)根据次态卡诺图画分解卡诺图,然后求状态方程和 输出方程 Q3卡诺图
任务顺序非常明确的电路(如交通灯控制器)是非常实用。

理论上,任何时序电路都可以建立FSM模型,但并不 总是一种高效的方法。
如果一味地追求使用FSM来设计时序电路,可能会导 致代码冗长和容易出错。 例如,任务简单的寄存器就不必使用FSM方式实现。 又例如,虽然任务与顺序很明确,但任务数目太多或 者性能要求较高时,也不宜用FSM方式实现。
有限状态机(FSM)
休息
健康
淋雨
康复中
吃药
感冒
有限状态机(FSM)
设计这样一个电路(特点): 1)能记住自己目前所处的状态 ; 2)状态的变化只可能在同一个时钟的跳变沿时刻发生,而不 可能发生在任意时刻; 3)在时钟跳变沿时刻,如输入条件满足,则进入下一状态, 并记住自己目前所处的状态,否则仍保留原来的状态; 4)在进入不同的状态时刻,对系统的开关阵列做开启或关闭 的操作。
有限状态机(FSM)-建模
有限状态机的Verilog描述:

定义模块名和输入输出端口; 定义输入、输出变量或寄存器; 定义时钟和复位信号; 定义状态变量和状态寄存器; 用时钟沿触发的always块表示状态转移过程;
相关文档
最新文档