第四章有限状态机

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

4.1 FSM设计方法
时序电路如图所示:
组合逻辑接收电路输入信 号并输出结果,时序逻辑 将组合逻辑的输出存储并 反馈回组合逻辑,以此来 形成电路的当前状态 (current state),当前状态 和电路输入信号经过组合 逻辑作用形成电路的下一 状态(next state)传递给 时序电路。
输入
组合逻辑
直行红灯亮
4.2 FSM设计实例
te m p_ A =0
State_A=001 LAMP_A=010010
tem p_A =0
temp_A=1 Reset=1 State_A=000 LAMP_A<=00100 1
temp_A=1 State_A=010 LAMP_A<=100100
temp_A=1
同一方向的信号灯亮灭相关性如下所示:
1)直行绿灯亮时必有左转红灯亮; 2)直行黄灯亮必有左转黄灯亮; 3)直行红灯亮则必有左转绿灯亮或者左转红灯亮。
交叉方向的信号灯亮灭相关性如表所示:
表 交叉方向信号灯亮灭相关性对应表
方向A 方向B
直行红灯亮 直行绿灯亮 直行红灯亮 &左转绿灯 亮 直行黄灯亮
要么直行绿灯亮,要么直行黄灯亮, 要么直行红灯亮&左转绿灯亮 直行红灯亮 直行红灯亮
当前输入D
Q2 Q1 Q0
Start_S First_S Second_S Third_S 000 001 010 011
D2 D1 D0
000 010 011 000 000 000 表
D2 D1 D0
001 001 001 100 001序列检测器状态转换表 1001 000
State 101/110/111 D1Error =Data_inQ 2 (Q1 Q0 )
4.1.4 FSM的Verilog代码编写方法 4.其他设计技巧 1)复位与初始化状态
一个具有较强健壮性的状态机应该具备初始化状态。当芯 片加电或者复位后,状态机应该能够自动将所有判断条件 复位,并进入初始化状态。
2)指定默认输出值
对状态机的所有输出变量指定一个默认的输出值,这样做 能防止生成不必要的Latches。另外所有的输出最好使用 寄存器打一拍,以获得更好的时序环境和稳定状态。
4.1.4 FSM的Verilog代码编写方法 3.非法状态处理办法
使用Verilog语言对非法状态的处理有以下两种方法: (1),用“default”语句对未提到的状态做统一处理。 当状态转移条件不满足,或者状态发生突变时, 通过default能保证系统不会陷入死循环。这是对 状态机健壮性的重要要求,也即状态机要具备自 恢复功能。 (2),使用“full case”的编码方式将所有的状态转 移变量的所有向量组合情况都在代码中有相应的 说明和处理,大多数综合工具都支持Verilog编码 状态机的这种完备状态属性。
4.1.4 FSM的Verilog代码编写方法 三段式:在两个always模块描述方法的基础 上,使用三个always模块。一个always模 块采用同步时序描述状态转移(使用状态 寄存器);另一个always模块采用组合逻 辑判断状态转移条件,描述状态转移规律 (次态逻辑);最后一个always模块描述 现态反馈 状态输出,输出可以是组合电路输出,也 状 可以是时序电路输出(输出逻辑)。 输 态 次态 输出
4.1.2设计FSM的基本步骤
设计有限状态机的基本步骤如下: 1.画出状态转移图; 2.确定状态编码和编码方式; 3.给出状态方程和输出方程; 4.编写Verilog代码。
4.1.3 设计FSM的基本原则 遵循以下基本指导原则: 1)所设计的状态机要安全,不能进入死循环, 不能进入非预知状态。即使是由于某种扰 动进入非设计状态,也要能很快恢复到正 常的状态循环中来; 2)状态机的设计要满足设计的面积和速度的 要求;
输出
当前 状态
时序逻辑 (寄存器)
下一 状态
图 时序电路基本结构
4.1 FSM设计方法
对于同步时序电路,根据输入端情况可 分为两种电路结构:一是没有输入端的同 步时序电路,比如计数器、分频器等;另 外一种是有输入端控制的电路,称之为有 限状态机。有限状态机由组合逻辑电路和 若干寄存器组成,根据电路的输入和电路 当前状态决定电路的输出。
输入 次态逻辑 寄 存 现态&使能 器 出 逻 辑
图 三段式状态机设计结构图
表4-1 状态机编码方式
4.1.4 FSM的Verilog代码编写方法 2.编码方式 状态机的编码方式可分为顺序编码 (sequential encoding,也称为二进制编 码)、格雷码(gray encoding)和独热码 (one-hot encoding)。
wenku.baidu.com100 D2Last_S =Data_in(Q 2Q1Q0 )
Detected (Q2 Q1 Q0)
D0 =Data_in(Q2Q1 Q0 )+Data_in((Q2 Q1 )+(Q1 Q0 ))
4.2 FSM设计实例 3.代码实现-1
4.2 FSM设计实例 3.代码实现-2
4.2 FSM设计实例
4.3 基于FPGA的数字系统设计原则和技巧 4.3.1基本原则 1.面积和速度的折衷考虑
面积大,频率低 功能模块-1
面积小,延时大 Buffer DFF
功能模块-2
面积大,延时小
面积小,频率高 功能模块 (两倍时钟频率)
DFF
DFF
图 速度换面积之功能模块时分复用
图 面积换速度之逻辑复用
4.3 基于FPGA的数字系统设计原则和技巧 2.写代码时考虑硬件结构 1)在编写代码进行硬件设计时一定要具备硬 件设计思想,勾画出硬件情况,然后使用 语言描述出来,这样综合工具才能快速有 效地综合出最优结构。 2)评价Verilog代码的优劣不在于代码段的整 洁简短,而在于代码是否能由综合工具流 畅合理地转换成速度快和面积小的硬件形 式。
表 状态机编码方式
格雷码 000 001 011 000 001 010 状态 S0 S1 S2 顺序编码 独热编码 10000 01000 00100
S3
S4
011
100
010
110
00010
00001
4.1.4 FSM的Verilog代码编写方法 状态编码的选择原则
设计条件和要 求 要求面积优先 编码方式 顺序编码 说明
LAMPA1 R
LAMPA1[5:0]
Y G
ACOUNT1[7:0] LAMPA2[5:0]
LAMPB1
R
Y
G
Clock Reset 交通灯 控制逻辑
ACOUNT2[7:0] LAMPB1[5:0] BCOUNT1[7:0] LAMPB2[5:0] BCOUNT2[7:0]
G G Y R LAMPA2
第四章 有限状态机设计
第四章
大纲
4.1 FSM设计方法 4.2 FSM设计实例 4.3 基于FPGA的数字系统设计原则和 技巧 4.4小结 习题4
4.1 FSM设计方法 有限状态机(FSM,Finite State Mechine),顾名思义,就是一系列数量有 限的状态组成的一个循环机制。 本章主要介绍有限状态机的特点和设计 规则,给出了使用Verilog HDL硬件描述语 言设计有限状态机的一般方法。结合Moore 机和Mealy机的设计实例,详细分析了具有 可综合风格的有限状态机的设计方法和设 计过程。最后给出了数字系统设计的一些 基本原则和设计技巧。
Y
R
LAMPB2
图 交通信号灯控制示意图
图 交通信号灯控制器引脚图
4.2 FSM设计实例
0 直行 0 等待 左转 等待 40 45 禁行 0 65 95100 115120 60 65 直行 禁行 120 等待 左转 等待
T(s)
T(s)A向
T(s)B向
图 交通信号灯A、B方向时间匹配图
4.2 FSM设计实例
编码最简单,使用触发器最少,剩余非法 状态最少,但增加了状态译码组合逻辑。
要求速度优先
当状态数<5时 当状态机后有 大型输出译码 器时 当触发器资源 丰富时
虽然使用了较多触发器,但简化了状态译 码组合逻辑,并且在同一时间只有一个状 独热编码 态寄存器发生变化,所以是最快的方式, 而且适用大多数FPGA。 一般是默认的编码方式。 顺序编码 在这种情况下,虽然必须通过译码决定状 顺序编码或 态的值,但仍可能比独热码速度快。 格雷码 独热码 最快的方式,由于简化了状态译码逻辑, 故提高了状态转换速度。
tem p_A =1 State_A=100 LAMP_A<=100001
temp_A=1 State_A=011 LAMP_A<=010010
temp_A=0
图 交通灯信号控制器A方向状态转移 图
temp _A=0
A= p_ tem 0
4.2 FSM设计实例
功能仿真
4.2 FSM设计实例
图 设计在FPGA中的资源占用情况
4.1 FSM设计方法 在有限状态机中,根据电路输出是否与电 路输入有关,可以将有限状态机分为Mealy 机和Moore机两种。
输入 时钟 Mealy机 组合逻辑 状态 寄存器 输出 组合逻辑
输入 时钟
组合逻辑
状态 寄存器
输出 组合逻辑
Moore机
图 Mealy机和Moore机示意图
4.1 FSM设计方法 Mealy机属于同步输出状态机,它的输出是 当前状态和所有输入信号的函数,其输出 会在输入变化后立即发生,不依赖于时钟 的同步。 Moore机属于异步输出状态机,它的输出仅 为当前状态的函数,与当前输入信号无关。 当然,当前状态是和上一时刻的输入信号 相关的,当前输入的变化必须等待下一时 钟到来使状态发生变化时才能导致输出的 变化。 因此,Moore机比Mealy机多等待一个时钟
3)状态机输出逻辑复用
如果在状态机中有多个状态都会执行某项操作,则在状态
4.2 FSM设计实例 1001序列信号检测器设计
1001序列信号检测器是用来检测序列信号“1001”的。电路输 入为一位串行数据,当检测到比特流“1001”时,电路输出为1, 否则输出为0。
Data_in Detected 1001序列检测器
4.1.1使用FSM设计数字系统的优点
1)有限状态机能够按照输入信号的控制和预先设定 的执行顺序在各个状态间顺畅地切换,具有明显 的顺序特征,能够很好地执行顺序逻辑; 2)有限状态机设计方法非常规范,设计方案相对固 定,并能被多数综合工具支持; 3)采用有限状态机设计,易于构成性能良好的同步 时序逻辑,有利于消除大规模逻辑电路中常见的 竞争冒险现象; 4)使用Verilog硬件语言进行有限状态机设计,程 序层次分明、结构清晰、易读好懂。模块的修改、 优化和移植也非常方便; 5)在高速运算与控制方面,和CPU相比,状态机
Clock Reset
图 1001序列信号检测器引脚图
4.2 FSM设计实例 1.画出状态转移图
起始状态 0 0 1 0
0 1 1 第三状态 0 最后状态 1 第一状态 0
1
1
0 第二状态 0
0
图 1001序列检测器状态转移图
4.2 FSM设计实例 2.给出状态转换表、输出方程和状态方程
当前状态 下一状态 Data_in=0 状态名称 当前输出Q Data_in=1
4.1.4 FSM的Verilog代码编写方法 1. 代码分段方法
一段式:整个状态机写到一个always模块里,在该 模块中既描述状态转移,又描述状态的输入和输 出;
二段式:用两个always模块来描述状态机,其中一 个always模块采用同步时序描述状态转移,另外 一个模块采用组合逻辑判断状态转移条件,描述 状态转移规律以及输出;
图 fsm1功能仿真图
4.2 FSM设计实例 交通灯信号控制器设计
某十字路口,在A方向和B方向上各有两组信号灯。每 组六盏灯,分别是直行绿(G)、直行黄(Y)、直行红 (R)、左弯绿、左弯黄和左弯红。四组信号灯共计24盏 灯。另外,设置了四组倒计时显示牌,倒计时显示使用2 位的八段码实现。A方向上的两组信号灯显示情况一样, 同样B方向上的两组信号灯显示情况一样。
4.3 基于FPGA的数字系统设计原则和技巧 3.最好使用同步设计 电路设计可以是异步设计也可以是同步 设计,但是异步设计的时序正确性完全取 决于每个逻辑元件和布线的延迟情况,非 常容易产生毛刺现象和亚稳态等,且难于 处理。而使用由时钟沿驱动的同步设计可 以很好地避免毛刺情况,使系统稳定性和 可靠性更好。
相关文档
最新文档