当前位置:文档之家› 有限状态机要点

有限状态机要点

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