基于Verilog HDL的高速可综合FSM设计
- 格式:pdf
- 大小:216.89 KB
- 文档页数:4
第27卷
VO1.27 第11期
NO.1 1 计算机工程与设计
Computer Engineering and Design 2006年6月
June 2006
基于Verilog HDL的高速可综合FSM设计
王鹏, 郭忠文
(中国海洋大学计算机科学系,山东青岛266071)
摘要:有限状态机(finite statemachine,FSM)广泛应用于数字系统的控制器设计中,用Verilog设计的可综合状态机有多种编
码风格,通常这些编码风格生成的状态机带有组合逻辑输出。时序分析指出组合逻辑输出型状态机不适合高速系统,提出
了一种适合高速系统的寄存器输出型状态机。最后通过实例给出了寄存器输出型状态机的状态编码方法及其可综合Verilog
编码风格。 关键词:有限状态机;VerilogHDL;可综合;编码风格 中图法分类号:TP391 文献标识码:A 文章编号:1000—7024(2006)11—2017・03
Design of high—speed and synthesizable finite state machine based on Verilog HDL
WANG Peng, GUO ZhOng.wen
(Department of Computer Science,Ocean University of China,Qingdao 26607 1,China)
Abstract:FSM(Finite State Machine)is widely used in the controller design of digital system,Synthesizable state machine design
usingVeriloghasmanycodingstyLesthatnormallygenerate combinationallogic outputs.Timinganalysis showsthat statemachinewith combinational outputs is not well suited f0r high・speed system.A state machine with registered output is presented,which is suited for
gh—speed system.Finally,amethodofstateencodingforregisteringtheFSMoutputsand synthesizableVerilogcoding styleisprovided
withan example.
Key words:FSM;Verilog HDL;synthesizable;coding style
0引 言
现代集成电路设计广泛采用基于硬件描述语言(hafldware description language,HDL)的层次化设计方法。设计者采用
HDL作为设计输入,借助于综合工具将基于HDL的描述自动
地生成满足约束条件(延时特性、功耗和速度等)的门级网表,
接下去再用布局布线工具把网表转换为具体电路布线结构的
实现。采用自顶向下层次化方法进行设计时,设计者利用HDL
从上层到下层逐层描述自己的设计思想,一个复杂系统被分
割成许多较小的功能模块,对这些功能模块的设计和验证都
比较简单,最后对这些功能模块进行再集成和再验证。基于
HDL的设计有利于模块的划分与复用,可移植性和通用性好,
设计不会因为芯片结构与制造工艺的变化而变化。目前成为
IEEE标准的两种语言是Verilog和VHDL,这两种语言都得到
了专用集成电路(application specific imegrated circuit,ASIC)和现
场可编程门阵列(field programmable gate arrays,FPGA)综合工
具的广泛支持。Verilog最早的标准是IEEEI364—1995,本文
Verilog源代码采用最新的IEEE1364—2001标准。
VerilogHDL的语法丰富,并成功地应用于设计的各个阶
段:建模、仿真、验证和综合等。可综合是指综合工具能将HDL
代码转换成标准的门级结构网表,需要指出的是可综合风格 VerilogHDL语法只是该语言的一个子集。为了能转换成标准
的门级结构网表,Verilog模块代码的编写必须符合一定的规
则和编码风格。有许多可综合状态机的Verilog编码风格,不
同编码风格经综合后得到电路的物理实现在速度和面积上有
很大差别。优秀的编码风格应当易于修改状态机中每个状态
的编码,易于代码的编写和理解,有助于仿真和调试,并能生 成高效的综合结果。把一个时序电路抽象成一个FSM后,如
何编写高效的并且可综合的Verilog模块成为设计关键。
1高速状态机的结构
1.1有限状态机模型
数字电路分为组合逻辑电路和时序逻辑电路。组合逻辑
电路的输出是输入的瞬时函数,通过布尔方程来描述;时序逻
辑电路的输出不仅取决于当前的输入,而且取决于输入的历
史。根据触发条件的不同,时序逻辑电路可以分为异步时序
逻辑和同步时序逻辑。在异步时序逻辑中触发条件很随意,
任何时刻都有可能发生,所以记忆状态的触发器输出在任何
时刻都有可能发生变化,而同步时序逻辑中表示状态的触发
器输出只能在惟一确定的触发条件发生时刻改变,例如只能
由时钟的上升沿或下降沿触发。同步时序逻辑的触发输入至
少可以维持一个时钟周期后才会发生第二次触发,利用这一
收稿日期:2005.04-16。 作者简介:王鹏(1980--),男,山东威海人,硕士研究生,研究方向为软硬件协同设计和嵌入式系统; 郭忠文(1965--),男,教授,博导。
・——2017・
—— 维普资讯 http://www.cqvip.com 段时间,即在下一次触发信号来到前,为电路的状态改变创造
了一个稳定可靠的条件。由此可以得出结论:同步时序逻辑
比异步时序逻辑具有更可靠更简单的逻辑关系。目前,综合
工具只支持同步时序逻辑的设计,用Verilog设计可综合的状
态机也都使用同步时序逻辑。
时序逻辑电路可以用有限状态机来描述,有限状态机分 为2种基本类型:米利机和摩尔机。米利机的输出取决于当
前状态和当前输入,摩尔机的输出仅取决于当前状态。FSM
基本结构如图l所示,其中状态寄存器是由一组触发器组成,
用来记忆状态机当前所处的状态。每个触发器可以保存一位
信息,如果状态寄存器由n个触发器组成,那么该状态机最多
可以记忆个状态。通常所有触发器的时钟端都连接在一个公
共时钟上,所以状态的改变只能发生在时钟的跳变沿时刻。可
能发生的状态改变由上升沿还是下降沿触发取决于触发器的
类型,现代集成电路广泛采用上升沿触发的D触发器。状态
是否改变以及怎样改变还将取决于下一状态组合逻辑的输入。
图1 FSM的基本结构 输出
1.2组合逻辑输出型状态机与寄存器输出型状态机
通常用Verilog设计的可综合状态机生成图l中的结构,
其输出端带有组合逻辑。该结构的状态机存在以下两个缺
点:①当状态发生转移时,输出组合逻辑易产生毛刺,影响系
统的可靠性和稳定性;②由状态机驱动另外一个模块时,
FSM的输出组合逻辑会占用部分时钟周期,影响系统整体
速度的提高。下面通过时序分析来深入解释该问题,假设
FSM模块A驱动另外一个模块B,图2和图3分别给出了两
种设计方案。 方案l采用组合逻辑输出型FSM驱动模块B,而方案2
FSM模块A 模块B …………………………’ ……………………‘‘ :米利机的输入 : :
图2方案l组合逻辑输出型FSM驱动一个模块
图3方案2寄存器输出型FSM驱动一个模块
・——2018・—— 对系统重新进行了设计划分,将模块A的输出组合逻辑分割
出来合并到模块B中。这里需要强调的是划分的指导性原则
是尽量使每个模块的输入端是组合逻辑而输出端是时序逻辑。 方案2中模块A和模块B均满足该原则。
下面对上述逻辑电路建立时序模型。不考虑时钟偏斜,
在一个时钟上升沿之后,如果模块A的触发器要改变状态,那
么触发器的输出在时钟上升沿之后 一,(时钟有效沿和触
发器的有效输出之间的延时)时刻改变。这一改变进入组合
逻辑路径并要沿着这一条路径传输到模块B触发器的输入
端。这个信号的改变要传输到模块B触发器的输入端还要一
段附加的时间 一(通过组合逻辑的最长通路延时)。最后,
在下一时钟的上升沿到达之前,这一改变必须在时间 (触
发器的建立时间)内保存到触发器的输入端。另外还要考虑
要有一段松弛时间 一,也就是除了在传输路径上所需要的时
间,允许在时钟周期内出现的多余时间。图4给出了影响时
钟周期的因素之间的关系。
图4不考虑时钟偏斜时影响时钟周期的因素
从图4中得出,逻辑电路的时序遵守下面方程:
Tcloek=t t _+t, t。 假设系统的时钟周期是10ns,方案l中模块A输出组合
逻辑的最大门延时是6ns,那么模块B输入组合逻辑的门延时
必须限制在4ns以内才能满足系统全局的时序约束条件。方
案2中模块A输出不含组合逻辑,而是把触发器的输出作为
模块的输出(称为寄存器输出型),那么模块B输入组合逻辑
的门延时只需要限制在Ions以内就能满足系统要求。对于比
较简单的系统,方案l可以满足系统的要求:但当设计高速复
杂数字系统时,多个模块之间这种错综复杂的时序约束会使
综合工具很难生成满足系统全局时序要求的门级网表。在方
案2中综合工具可以对模块B组合逻辑部分进行优化,综合
出满足时序约束的最佳逻辑实现,缩小了组合逻辑部分的延
时,即减小了 一,时钟周期 也随之减小,系统整体的工
作频率厂= l_得到提高。 』d 方案2中模块A采用了一种新型结构的状态机,如图5
所示。其结构特点是状态机的输出由寄存器的输出直接驱动。
输入
当前状态(state)
图5寄存器输出型的FSM 寄存器类
型的输出 维普资讯 http://www.cqvip.com