基于verilog的有限状态机设计

上传人:gg****m 文档编号:217463939 上传时间:2021-12-02 格式:DOC 页数:19 大小:248.04KB
返回 下载 相关 举报
基于verilog的有限状态机设计_第1页
第1页 / 共19页
基于verilog的有限状态机设计_第2页
第2页 / 共19页
基于verilog的有限状态机设计_第3页
第3页 / 共19页
基于verilog的有限状态机设计_第4页
第4页 / 共19页
基于verilog的有限状态机设计_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《基于verilog的有限状态机设计》由会员分享,可在线阅读,更多相关《基于verilog的有限状态机设计(19页珍藏版)》请在金锄头文库上搜索。

1、基于Verilog的有限状态机设计与优化1引言在集成电路的设计过程中,不论是使用FPGA还是 ASIC来实现,有限状态机经常是作为一个电路设计的关键 部分而出现的.状态机的功能是否完善(是否强壮型)对 整个电路会产生重大的影响.有限状态机主要有两种类型:Moore型状态机和M ealy型状态机.Moore型状态机是指输出只与当前状态有 关,与输入信号无直接关系.而Mealy型状态机的输出不只 与当前状态有关,还与输入信号有关.文中以目前常用的硬件描述语言Verilog HDL为基础, 对不同的状态机编码类型和状态机描述风格对状态机性能 的影响进行了深入的分析.分别使用Xilinx ISE和De

2、sign Compiler对实例进行了综合,分析了面积、速度与功耗的信 息,给出了对于不同类型状态机的最佳编码风格.2状态机编码状态的编码方式最常用的有二进制码、格雷码和独热码三 种,不同的状态机编码方式对状态机的影响非常大.如表1 所示.二进制的编码从第一个状态到最后一个状态是按二进制码 的顺序排列的,是一种最普通的编码方式.表1不同的编码比较十进制码Binary codeGray codeOne- hotcode00000000001100100100102010Oil010030110101000用格雷码进行状态的变换时,相邻状态转换只有一个状态 位发生翻转.这样就可以消除转换时由多条状

3、态信号线的传 输延迟所造成的毛刺,大大地减少了由一个状态到下一个 状态时逻辑的混淆可以降低功耗.one- hot状态译码简单,只有1位是1其他位为0,易于 修改,可以减少组合逻辑,但会使用更多的触发,增加电路 面积.Binary- code、Gray- code编码使用最少的触发器,较多的 组合逻辑,而One- hot编码反之.因此,Binary和Gray- code适用于触发器资源较少,组合 电路资源丰富的情况(CPLD),对于FP GA则更适用 One- hot code,因为这样可以充分利用FPGA丰富的触发 器资源.另外,小型设计通常使用Binary- code和Gray- code,

4、对于大型的设计使用One- hot code效果更佳.3状态机的描述方法状态机的描述方法通常有三种:一段式(one al ways)、二 段式( two always) 和三段式(three always).3. 1 一段式一段式的状态机描述方法是指将整个状态机写到一个alw ays模块里,该模块描述当前状态转移,又描述状态的输入 和输出.由于一段式的描述方法是给STATE自身赋值,所以本身就 会引入一个周期的延时,需要在设计中通过预计算考虑进 去.一段式的描述方法所有输出都是寄存器输出的,因此不会 产生毛刺,但是这种组合逻辑和时序逻辑都写到一起的方法 是不可取的,而且在描述当前状态的时候还要

5、考虑到下一状 态的输出.这种描述方法可读性差、难于理解和维护,不利于时许约束、功能更改及调试, 对于Mealy型的状态机来说,容易出现Latches.3. 2二段式二段式的状态机描述方法是指使用两个always模块,其中一个always模块采用同步时序的方式描述当前状态和下一状 态的转移,另一个alw ays模块采用组合逻辑来描述下一状态和输出向量的丈值.二段式的描述方法比一段式的更合理,它更易于阅读、理解 和维护,更利于综合并优化代码.但是它的缺点是第二个 alw ays块组合逻辑的输出会出现毛刺,影响电路性能.3. 3三段式三段式的状态机描述方法是由二段式发展而来的,在二段式 两个alw

6、ays的基础上又增加了一个alw ays块来描述每个 状态的输出,用寄存器寄存了一拍,达到同步输出的目的.需要注意的是,增加的一级寄存器会引入一个周期的延时, 需要在设计中通过预计算考虑进去,避免逻辑发生错误. 这样一级寄存器的引入,也就形成了 FSMs输入逻辑的一级 流水.引入了组合逻辑寄存,输出同步不仅会带来运行性能的提升, 还会增加系统的稳定性,防止输出信号出现毛刺,防止组合 回路的产生.4实例分析下面以一个简单红绿灯状态转移为例进行分析,当 RESET信号给出以后进入IDEL状态,之后状态机的描述方法通常有三种:一段式(one al进入RED状态,之后 进入GREEN状态,之后进入YE

7、LLOW状态,最后回到 RED状态.Default时进入IDEL状态.4. 1使用Xilinx ISE进行分析在使用Xilinx ISE对例子进行综合的时候,右键点中综合软 件,选属性选型,在HDL Options中有一个优化选项为FSM Encoding Algorithm,在其下拉菜单中选中AUTO(默认项), 工具就可以自动修改设计中的状态机的状态编码,使其成为 对FPGA来说最优的编码风格.对于本设计来说,由于只有4个状态,所以状态编码被优化 成了 Gray- code.但是经过验证,在状态较多的状态机设 计中,状态编码一般都被优化成One- hot code.通过表2,对Xilinx

8、 ISE的综合后报表进行分析可以看到,由于one always的状态机全部为时序电路,所以最大频率会 比 two alw ays 和 three always 大.在面积方面,two always型的状态机所占面积最小,three alw ays稍大,而one alw ays型的状态机所用门数最多, 所占面积也最大.对于功耗来说,使用Xilinx ISE集成的Xpower进行功耗分 析,所得到的三种状态机编码风格的功耗并不存在明显差异.表2 Xilinx ISE的综合结果使用门数one alw ays 8two always 43 three alw ays 67最大频率313. 283MHz

9、312. 891MHz312. 891MHz4. 2使用Design Compiler进行分析在使用Design Complier对所举实例进行分析话时,分别 选取了 lalways& binary、lalways& one - hot、2always& binary、2alw ays& one - hot、3alw ays& binary、3always&one- hot等6种设计,每个设计分别设定了 2个时钟周期(.ns和7ns)进行分析.综合得到的面积和延时的结果按顺序标在图2、图3中.表3、表4给出了详细的数据.由图2可见,2alw ays在面积上具有明显优势,其次是3alw ays.

10、由图3对时序的分析可见,2alw ays也是具有一定的优 势.2 Dtign Com pikr综合得到的面积(U m2)3 Design Coni pi kr综合得到的延时(ns)比较使用Design Compiler和Xilinx ISE的综合结果可以发 现,不论是使用FPGA还是ASIC, tw oalw ays所占面积总 是最小的,其次是three alw ays,而one alw ays所占面积最 大.这主要是由于one alw ays的状态机全部为时序电路, 戸斤以花费的面积最大,three alw ays由于多采用一级寄存器同步,所以所花费的面积比two always的要大一些.5

11、比较分析通过以上分别使用Xilinx ISE和Design Compiler对实例 进行的分析,可见two alw ays的编码风格存在巨大的优势.为Moore型的状态机输出只有状态寄存器驱动,状态机 所受影响差异不会很大,所以建议对Moore型状态机采用 two alw ays的编码风格.而Mealy型状态机,输出不只与当前状态有关,还与输入信 号有关,输出是组合逻辑的输出,这样在每个STATE中产 生的信号复杂而且有不同的timeskew,如果信号直接输出 而不引用寄存器同步的话,在高频的电路中很可能会导致时 序上的错误.所以建议使用three alw ays风格,将输出同步 一拍.对于o

12、ne alw ays的风格,虽然在一些开源的IP盒中经常见 到,但是通过以上的分析,可以发现这种状态及描述风格存 在着巨大的缺陷.至于状态编码的使用,对于FPGA来说建议使用工具自动优 化状态机的状态编码,而对于ASIC来说,建议在小型设计 中使用Binary- code和Gray code,而对于大型的设计则使 用 One- hot code.6结束语文中结合了一个Verilog HDL的实例,对三种不同的状态机 编码和状态机描述方式进行了深入的研究,分析了其各自的 优缺点.并分别使用Xilinx ISE和Design Compiler对一个 实例进行了综合,对面积、速度与功耗进行了分析.结

13、果表 明one alw ays的写法需要被摒弃,two alw ays的编码风 格适合Moore型状态机,而three always的编码风格适合 Mealy型状态机.文中同时也给出了适合不同设计的最优 状态编码。Design Compiler综合翻的面积(An2)Ialwavs& binan Ialwavs& m- liol 2alwavs& hinan* 2alwavs& oik1- hoi 3alwavs&l)inarv 3alw avs& one- hotrrrrrrrr5.5ns708.5681.9259.4232.8435.7429.17ns618.7592.0196.2172.9

14、405.8379.2表4 Design Compiler综合得到的延时(ns)Ialwavs& bin anIalwavs& one- liolV2alwavs& binary 2alwavs&()n(“ hotrr3akavs& l)inarvvr3alw avs& one- hoir5.5ns0.000.000.00 0.010.010.007ns1.481.481.321.411.481.48Design and optimization of finite state machine based on Verilog1 IntroductionIn the design of inte

15、grated circuits, either the FPGA or ASIC to realize, finite state machine is often appear as a key part of the circuit design. The state machine function is perfect (or strong) will have a significant impact on the entirecircuit.Finite state machines are of two main types: the type of Moore state machine and M type ealy state machine. The Moore state machine is refers to the output depends only on the current state, has no direct relation with the input signal. The output of Mealy state ma

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号