基于verilog的有限状态机设计

基于verilog的有限状态机设计

ID:22823670

大小:248.04 KB

页数:19页

时间:2018-10-31

基于verilog的有限状态机设计_第1页
基于verilog的有限状态机设计_第2页
基于verilog的有限状态机设计_第3页
基于verilog的有限状态机设计_第4页
基于verilog的有限状态机设计_第5页
资源描述:

《基于verilog的有限状态机设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

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

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

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

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

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

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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。