第四章有限状态机要点
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1 FSM设计方法
时序电路如图所示:
组合逻辑接收电路输入信 号并输出结果,时序逻辑 将组合逻辑的输出存储并 反馈回组合逻辑,以此来 形成电路的当前状态 (current state),当前状态 和电路输入信号经过组合 逻辑作用形成电路的下一 状态(next state)传递给 时序电路。
输入
组合逻辑
编码最简单,使用触发器最少,剩余非法 状态最少,但增加了状态译码组合逻辑。
要求速度优先
当状态数<5时 当状态机后有 大型输出译码 器时 当触发器资源 丰富时
虽然使用了较多触发器,但简化了状态译 码组合逻辑,并且在同一时间只有一个状 独热编码 态寄存器发生变化,所以是最快的方式, 而且适用大多数FPGA。 一般是默认的编码方式。 顺序编码 在这种情况下,虽然必须通过译码决定状 顺序编码或 态的值,但仍可能比独热码速度快。 格雷码 独热码 最快的方式,由于简化了状态译码逻辑, 故提高了状态转换速度。
4.1.2设计FSM的基本步骤
设计有限状态机的基本步骤如下: 1.画出状态转移图; 2.确定状态编码和编码方式; 3.给出状态方程和输出方程; 4.编写Verilog代码。
4.1.3 设计FSM的基本原则 遵循以下基本指导原则: 1)所设计的状态机要安全,不能进入死循环, 不能进入非预知状态。即使是由于某种扰 动进入非设计状态,也要能很快恢复到正 常的状态循环中来; 2)状态机的设计要满足设计的面积和速度的 要求;
4.1.4 FSM的Verilog代码编写方法 三段式:在两个always模块描述方法的基础 上,使用三个always模块。一个always模 块采用同步时序描述状态转移(使用状态 寄存器);另一个always模块采用组合逻 辑判断状态转移条件,描述状态转移规律 (次态逻辑);最后一个always模块描述 现态反馈 状态输出,输出可以是组合电路输出,也 状 可以是时序电路输出(输出逻辑)。 输 态 次态 输出
4.1 FSM设计方法 在有限状态机中,根据电路输出是否与电 路输入有关,可以将有限ຫໍສະໝຸດ Baidu态机分为Mealy 机和Moore机两种。
输入 时钟 Mealy机 组合逻辑 状态 寄存器 输出 组合逻辑
输入 时钟
组合逻辑
状态 寄存器
输出 组合逻辑
Moore机
图 Mealy机和Moore机示意图
4.1 FSM设计方法 Mealy机属于同步输出状态机,它的输出是 当前状态和所有输入信号的函数,其输出 会在输入变化后立即发生,不依赖于时钟 的同步。 Moore机属于异步输出状态机,它的输出仅 为当前状态的函数,与当前输入信号无关。 当然,当前状态是和上一时刻的输入信号 相关的,当前输入的变化必须等待下一时 钟到来使状态发生变化时才能导致输出的 变化。 因此,Moore机比Mealy机多等待一个时钟
输出
当前 状态
时序逻辑 (寄存器)
下一 状态
图 时序电路基本结构
4.1 FSM设计方法
对于同步时序电路,根据输入端情况可 分为两种电路结构:一是没有输入端的同 步时序电路,比如计数器、分频器等;另 外一种是有输入端控制的电路,称之为有 限状态机。有限状态机由组合逻辑电路和 若干寄存器组成,根据电路的输入和电路 当前状态决定电路的输出。
4.1.4 FSM的Verilog代码编写方法 1. 代码分段方法
一段式:整个状态机写到一个always模块里,在该 模块中既描述状态转移,又描述状态的输入和输 出;
二段式:用两个always模块来描述状态机,其中一 个always模块采用同步时序描述状态转移,另外 一个模块采用组合逻辑判断状态转移条件,描述 状态转移规律以及输出;
表 状态机编码方式
格雷码 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代码编写方法 状态编码的选择原则
设计条件和要 求 要求面积优先 编码方式 顺序编码 说明
4.1.1使用FSM设计数字系统的优点
1)有限状态机能够按照输入信号的控制和预先设定 的执行顺序在各个状态间顺畅地切换,具有明显 的顺序特征,能够很好地执行顺序逻辑; 2)有限状态机设计方法非常规范,设计方案相对固 定,并能被多数综合工具支持; 3)采用有限状态机设计,易于构成性能良好的同步 时序逻辑,有利于消除大规模逻辑电路中常见的 竞争冒险现象; 4)使用Verilog硬件语言进行有限状态机设计,程 序层次分明、结构清晰、易读好懂。模块的修改、 优化和移植也非常方便; 5)在高速运算与控制方面,和CPU相比,状态机
第四章 有限状态机设计
第四章
大纲
4.1 FSM设计方法 4.2 FSM设计实例 4.3 基于FPGA的数字系统设计原则和 技巧 4.4小结 习题4
4.1 FSM设计方法 有限状态机(FSM,Finite State Mechine),顾名思义,就是一系列数量有 限的状态组成的一个循环机制。 本章主要介绍有限状态机的特点和设计 规则,给出了使用Verilog HDL硬件描述语 言设计有限状态机的一般方法。结合Moore 机和Mealy机的设计实例,详细分析了具有 可综合风格的有限状态机的设计方法和设 计过程。最后给出了数字系统设计的一些 基本原则和设计技巧。
输入 次态逻辑 寄 存 现态&使能 器 出 逻 辑
图 三段式状态机设计结构图
表4-1 状态机编码方式
4.1.4 FSM的Verilog代码编写方法 2.编码方式 状态机的编码方式可分为顺序编码 (sequential encoding,也称为二进制编 码)、格雷码(gray encoding)和独热码 (one-hot encoding)。
4.1.4 FSM的Verilog代码编写方法 3.非法状态处理办法
使用Verilog语言对非法状态的处理有以下两种方法: (1),用“default”语句对未提到的状态做统一处理。 当状态转移条件不满足,或者状态发生突变时, 通过default能保证系统不会陷入死循环。这是对 状态机健壮性的重要要求,也即状态机要具备自 恢复功能。 (2),使用“full case”的编码方式将所有的状态转 移变量的所有向量组合情况都在代码中有相应的 说明和处理,大多数综合工具都支持Verilog编码 状态机的这种完备状态属性。