当前位置:首页 >> >>

有限状态机的VHDL优化设计


http://www.paper.edu.cn

有限状态机的 VHDL 优化设计
洪国玺,董辉
大连海事大学信息工程学院,辽宁大连(116026)
E-mail:guoxih@sina.com

摘 要:在数字逻辑设计中,会经常遇到设计状态机的问题。本文讨论了设计状态机应注意 的事项,比较不同结构方式状态机的优缺点,给出了消除毛刺和优化设计的有效途径。 关键词:有限状态机,VHDL,描述方式,毛刺

1.引言
当前以硬件描述语言为工具、逻辑器件为载体的系统设计越来越广泛。在设计中,状态 机是最典型、应用最广泛的电路模块,其在运行速度的高效、执行时间的确定性和高可靠性 方面都显现出强大的优势。状态机及其设计技术水平决定了系统设计的优劣[1]。如何设计一 个最优化的状态机是我们必须面对的问题。 本文将详细讨论状态机编写的各个步骤对优化状态机所起到的作用。

2.状态机的分类
状态机由状态寄存器和组合逻辑电路构成, 能够根据控制信号按照预先设定的状态进行 状态转移,是协调相关信号动作,完成特定操作的控制中心。 状态机可以分为Moore型和Mealy型两种基本类型。设计时采用哪种方式的状态机要根 据设计的具体情况决定,输出只由当前状态值决定则选用Moore型,输入信号和状态值共同 决定输出则选用Mealy状态机。 设计时在结构上通常遵循一下几点: 各模块只描述一个状态机; 将无关逻辑减至最少; 将状态寄存器从其他逻辑中分离出来
[2]



3.状态值编码方式
通常在设计状态机时,状态编码方式的选择是非常重要的,选得不好,可能会导致速度 太慢或占用太多逻辑资源。实际设计中,必须考虑多方面因素选择最为合适的编码方式。

3.1 枚举类型定义状态值
设计中状态机的状态值定义为枚举类型, 综合时一般转化为二进制的序列, 因此与二进 制编码方式本质上是相同的。 实际需要触发器的数目为实际状态的以2为底的对数。这种编码方式最为简单,综合后 寄存器用量较少,剩余状态最少,其综合效率和电路速度在一定程度上将会得到提高。但在 状态转换过程中, 状态寄存器的高位翻转和低位翻转时间是不一致的, 这样就会出现过渡状 态,若状态机的状态值更多的话,产生过渡状态的概率更大。因此适合复杂度较低的设计。

3.2 格雷码表示状态值
格雷码编码,即相邻两个状态的编码只有一位不同,这使得采用格雷码表示状态值的状 态机,可以较大程度上消除由传输延时引起的过渡状态。 该方式使得在相邻状态之间跳转时,只有一位变化,降低了产生过渡状态的概率,但当 状态转换有多种路径时,就无法保证状态跳转时只有一位变化。所以在一定程度上, 格雷码
-1-

http://www.paper.edu.cn

编码是二进制的一种变形,总体思想是一致的。

3.3“ONE-HOT”状态值编码
One-hot编码方式是使用N个触发器来实现N个状态的状态机,每个状态都由一个触发器 表示,在任意时刻,其中只有1位有效,该位也称为“hot”,触发器为‘1’,其余的触发器置‘0’。 这种结构的状态机其稳定性优于一般结构的状态机, 但是它占用的资源更多。其简单的 编码方式简化了状态译码逻辑,提高了状态转换速度,适合于在 FPGA 中应用。

3.4 剩余状态与容错技术
在状态机设计中,不可避免地会出现大量剩余状态。若不对剩余状态进行合理的处理, 状态机可能进入不可预测的状态,后果是对外界出现短暂失控或者始终无法摆脱剩余状态而 失去正常功能。因此,对剩余状态的处理,即容错技术的应用是必须慎重考虑的问题。但是, 剩余状态的处理要不同程度地耗用逻辑资源, 因此设计者在选用状态机结构、 状态编码方式、 容错技术及系统的工作速度与资源利用率方面需要做权衡比较,以适应自己的设计要求。 剩余状态的转移去向大致有如下几种: a)转入空闲状态,等待下一个工作任务的到来; b)转入指定的状态,去执行特定任务; c)转入预定义的专门处理错误的状态,如预警状态。 对于前两种编码方式可以将多余状态做出定义, 在以后的语句中加以处理。 处理的方法 有2种:①在语句中对每一个非法状态都做出明确的状态转换指示;②利用others语句对未提 到的状态作统一处理。对于One-hot编码方式其剩余状态数将随有效状态数的增加呈指数式 剧增,就不能采用上述的处理方法。 鉴于One-hot编码方式的特点, 任何多于1个触发器为“1” 的状态均为非法状态。 因此, 可编写一个检错程序, 判断是否在同一时刻有多个寄存器为“1”, 若有,则转入相应的处理程序。

4.状态机的描述方法
VHDL对不同的状态机有不同的描述方式, 描述方式不同使得综合出来的门级网表也不 同,因此必须根据数字电路的特性和可综合性选择相应的状态机描述方式。 下面以实践中激光测距仪中心控制器为例,介绍不同描述方法的设计,并给出仿真图。 Ⅰ 将整个状态机写到1个进程模块里, 在该模块中既描述状态转移又描述状态的输入输 出,称为一段式描述方法,即所谓的单进程状态机。其将组合逻辑和时序逻辑在一个进程中 描述, 该方式的唯一优点是可得到锁存后的输出信号。 但在描述当前状态时需考虑下一个状 态的输出,整个代码不清晰,不易于理解、维护,也不利于时序约束、功能更改、调试等, 而且不能很好的表示Mealy状态机的输出,容易导致逻辑功能错误。另外,这种描述相对于 另外两种描述比较冗长。 因此一段式描述是应当避免的描述方式, 这里也不再做进一步讨论。 Ⅱ 采用2个进程模块, 一个模块用同步时序描述状态转移; 另一个模块用组合逻辑判断 状态转移条件、描述状态转移规律及逻辑输出,称为两段式描述方法,这是综合器理解最好 的一种描述方式,也是要求不高的条件下最常用的一种。分析其结构概括为图1所示框图。

-2-

http://www.paper.edu.cn

设计的控制器时序仿真如图2所示。

由图2可以看到direct输出信号出现毛刺,对于精密控制器来说这是不允许的。毛刺多由 组合逻辑导致的,若在输出部分加入一个寄存器节拍,可消除毛刺保证输出信号的稳定性, 但输出就会延迟一个周期,所以当时序允许时该方式是很好的选择。 Ⅲ 使用3个进程模块, 一个模块采用同步时序描述状态转移; 第二个采用组合逻辑判断 状态转移条件,描述状态转移规律;第三个模块使用同步时序电路描述每个状态的输出,该 写法称为三段式写法。分析其结构概括为图3所示框图。

改进后的控制器时序仿真如图4所示。

-3-

http://www.paper.edu.cn

三段式与两段式描述相比, 虽然代码结构复杂了一些, 但是换来的优势是做到了同步寄 存器输出, 消除了组合逻辑输出的不稳定与毛刺的隐患, 而且更利于时序路径分组, 在FPGA 上的综合与布局布线效果更佳。 一般而言,推荐的状态机描述方法是后两种。其原因:设计最好使用同步时序方式,以 提高设计的稳定性,消除毛刺。状态机实现后,状态转移部分是同步时序电路而状态的转移 条件的判断是组合逻辑。 两段式描述方法虽然有很多好处, 但一个明显的弱点就是其输出使 用组合逻辑描述, 易产生毛刺等不稳定因素, 并且在逻辑器件中过多的组合逻辑会影响实现 的速率,而三段式巧妙地根据下一状态的判断,用同步时序逻辑寄存状态机的输出。

5.毛刺和竞争处理
毛刺的产生, 一方面由于状态机中包含有组合逻辑进程, 使得输出信号在时钟的有效边 沿产生毛刺;另一方面当状态信号是多位值的时候,由于传输延迟的存在,各信号线上的值 发生改变的时间会有先后, 使得状态迁移的时候出现临时状态。 当状态机的输出信号作为其 他功能模块的控制信号使用时, 将会使受控模块发生误动作, 造成系统工作混乱。因此,在 这种情况下必须通过改变设计消除毛刺。 消除状态机输出信号的“ 毛刺”一般可从一下几点改进: ①在电路设计时,选用延迟时间较小的器件,且尽可能采用级数少的电路结构;或者把 时钟信号引入组合进程,用时钟来同步状态迁移, 保证了输出信号没有毛刺,但这样增加了 输出寄存器, 硬件开销增大, 这对于一些寄存器资源较少的目标芯片是不利的;而且还会限 制系统时钟的最高工作频率; 由于时钟信号将输出加载到附加的寄存器上, 所以在输出端得 到信号值的时间要比状态的变化延时一个时钟周期。 ②调整状态编码, 使相邻状态间只有1位信号改变,避免毛刺的产生。 ③直接把状态机的状态码作为输出信号,即采用状态码直接输出型状态机, 使状态和输出 信号一致, 使得输出译码电路被优化掉了。这种方案, 占用芯片资源少, 信号与状态变化同 步, 速度快, 是一种较优方案。但在设计过程中对状态编码时可能增加状态向量, 出现多余 状态。 虽然可用CASE语句中WHEN-OTHERS 来安排多余状态, 但有时难以有效控制多余状 态, 运行时可能会出现难以预料的情况。因此它适用于状态机输出信号较少的场合。这种方 式的缺点是削弱了设计的可读性和可维护性[3]。 有限状态机综合中的竞争现象是指由于敏感信号的频繁变化导致状态机在同一个节拍

-4-

http://www.paper.edu.cn

内多次改变状态,影响电路的正常工作。当输出信号反馈回来作为输入信号的时候,就会发 生竞争。 这里要指出的是在综合前模拟的时候往往不能发现描述中潜在的竞争现象, 只有在 综合后, 竞争才会完全暴露出来。 消除竞争的办法是把造成竞争的信号从敏感信号表中除去, 而改成由时钟信号来触发进程,这样就使状态一个节拍只改变一次[4]。

6.状态机的优化
优化的目标主要有两个: 速度和规模,但是速度条件越苛刻, 所需规模就越大, 因此优 化电路结构时, 应综合考虑各方面因素, 选择最优化方案。电路结构分为逻辑电路和时序电 路。逻辑电路的优化包括布尔表达式的优化等, 时序电路包括通常的时序电路和状态机。状 态机优化包括选择合适状态和编码等, 比如合理的归并以及减少状态的数量等都能大大简 化电路, 在编程时应尽量把可归并的逻辑放入同一结构体中, 这样可以有效优化电路结构[5]。

7.结论
有限状态机是数字系统的一个重要组成部分。 本文详细讨论了状态机各部分及应注意的 事项和各种不同写法的优缺点。 以上只是作者在项目设计实践中学习并总结的一些经验与体 会,设计时需根据实际情况做适合的选择。

参考文献
[1] [2] [3] [4] [5] 吴继华,王诚. 《Verilog设计与验证》[M],北京:人民邮电出版社,2006。 王巍,高德远.有限状态机设计策略 [J].计算机工程与应用,1999,7:54-55. 鲁玲,刘大年.消除状态机毛刺策略探讨 [J] .电子技术应用,2006,9:118-119. 李春霞,顾新,王君.有限状态机的 VHDL 描述及综合 [J].计算机工程与应用,2005,6:111-113. 骆珊,黄明达.VHDL 电路结构优化设计探讨 [J] .计算机应用,2001,4:14-15.

VHDL Design Strategy for Finite State Machine
Hong Guoxi, Dong Hui
Information Engineering college, Dalian Maritime University, Dalian, PRC (116026) Abstract
Problem of designing a finite state machine is often met in the digital logic design. This paper discusses some notes in the process of design and does some compare on state machine with different frames. Then it has given the effective approach to remove the burr and optimize the design. Keywords: Finite State Machine, VHDL, Describing Style, Burr

作者简介:洪国玺,男,1981 年生,山东青岛人,研究生,研究方向:电子电路理论与应 用。

-5-


相关文章:
有限状态机的VHDL优化设计.pdf
有限状态机的VHDL优化设计 - 在数字逻辑设计中,会经常遇到设计状态机的问题。
有限状态机的VHDL设计及优化.pdf
有限状态机的VHDL设计优化 - 第 28 卷第 1 期 2004 年 1 月
第10章 VHDL有限状态机设计.ppt
第10章 VHDL有限状态机设计 10.1 VHDL状态机的一般形式 10.1.1 状态机的特点与优势 (1)高效的顺序控制模型。 (2)容易利用现成的EDA工具进行优化设计。 (3...
第十章 VHDL有限状态机设计_图文.ppt
第十章 VHDL有限状态机设计 - 第十章 VHDL有限状态机设计 10.1 VHDL状态机的一般形式 10.1.1 状态机的特点与优势 1.状态机克服了纯硬件数字系统顺序方式控制...
第10章 VHDL有限状态机设计_图文.ppt
第10章 VHDL有限状态机设计 - 《EDA技术实用教程VHDL潘松(第五版)》课件(共14章)... 第10章 VHDL有限状态机设计 10.1 VHDL状态机的一般形式 10.1.1 状态机...
(潘松第五版)第10章 VHDL有限状态机设计_图文.pdf
第10章 VHDL有限状态机设计 10.1 VHDL状态机的一般形式 10.1.1 状态机的特点与优势 (1)高效的顺序控制模型。 (2)容易利用现成的EDA工具进行优化设计。 (3...
有限状态机的VHDL设计.pdf
有限状态机的VHDL设计 - 第 24 卷第 2 期 No.2 Vol.24 文
10 VHDL有限状态机设计_图文.ppt
10 VHDL有限状态机设计 - EDA技术 第10章 VHDL有限状态机设计 10.1 VHDL状态机的一般形式 状态机的一般分类及结构 ? 状态机分类 ? ? ? ? 从状态机的信号....
第二部分 状态机的VHDL设计.ppt
第二部分 状态机的VHDL设计_电子/电路_工程科技_专业资料。有限状态机的VHDL...? VHDL综合器易于优化 ? 易构成性能良好的时序逻辑模块 ? 结构模式简单、层次...
有限状态机的VHDL_图文.pdf
有限状态机的VHDL - 第四章 有限状态机设计与IP应用 一、有限状态机设计 二、IP应用 三、DDS技术 2005-11-14 现代数字系统设计 1 第四章 有限状态机设计与...
第八讲 状态机的VHDL设计_图文.ppt
第八讲 状态机的VHDL设计 - 第八讲 状态机的VHDL设计 教学课时:3学时 教学内容: 1、状态机概述 2、状态机的结构(1学时) 3、 状态机的VHDL设计方法举例(1...
有限状态机VHDL_图文.pdf
有限状态机VHDL - 数字系统VHDL设计课程课件... 数字系统VHDL设计课程课件 第7讲:有限状态机与 讲 有限...手工优化/简化只对小的状态机才有可能 手 优化 简化 对...
...EDA技术VHDL版-第10章 VHDL有限状态机设计_图文.ppt
第10章 VHDL有限状态机设计主讲教师:秦晓飞上海理工大学光电学院 第10章 VHDL有限状态机设计有限状态机及其设计技术是实用数字系统设计中的重要组 成部分,是实现高...
Moore 型有限状态机的VHDL 设计与资源利用研究.pdf
Moore 型有限状态机的VHDL 设计与资源利用研究 - 第 22 卷 1 期
Moore型和Mealy型有限状态机的VHDL设计.pdf
科技信息 计算机与网络 Moore型和Mealy型青限状态棚帕VHDL设计山东艺术学院万莉莉[摘要]从精出时序上看,Moore型状态机属于异步输出状态机,Mealy型状态机属于同步输出...
基于VHDL有限状态机控制器的设计方法.pdf
基于VHDL有限状态机控制器的设计方法 - 控制系统 文章编号 :1008-05
有限状态机的VHDL设计方法研究_论文.pdf
有限状态机的VHDL设计方法研究 - 有限状态机及其设计技术是实用数字系统设计中的重要组成部分,是实现高效率、高可靠性逻辑控制的重要途径。VHDL是一种面向设计、多...
状态机及其VHDL设计.doc
状态机及其VHDL设计 - 第7章 状态机及其 VHDL 设计 内容提要: 内容提要:有限状态机(Finite State Machine,简称 FSM)是一类很重要的时序电路, 是许多数字...
VHDL设计MOORE型有限状态机时速度问题的探讨.pdf
VHDL设计MOORE型有限状态机时速度问题的探讨 - E D A 技术专栏 VHDL 设计 MOORE型 有限状态机时速度问题的探讨 朱小莉,陈迪平,王镇道 (湖南大学...
EDA技术实用教程VHDL版 第8章 有限状态机_图文.ppt
EDA技术实用教程VHDL版 第8章 有限状态机_工学_高等教育_教育专区。第8章有限...2、结构模式简单,设计方案相对固定,定义符号化枚举型状态, 利于综合器优化设计。...
更多相关标签: