


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于hlghdl的有限状态机的几种编码方式
0有限状态机设计数字系统包括以控制为主的系统和以数据为主的系统。通常,控制系统的主体是一个有限状态机(finitestatemachine,FSM),通过接收外部信号以及数据单元产生的状态信息,产生控制信号序列。在系统设计中,能否设计出高效可靠的有限状态机已经成为关键。传统的有限状态机的描述方式有状态转移图,状态转移列表两种。随着EDA技术的发展,人们开始用硬件描述语言来描述有限状态机,通过充分发挥硬件描述语言的抽象建模能力,对系统在系统级或寄存器传输级进行描述。使用VerilogHDL描述有限状态机有一定的灵活性,同样的系统功能可以用多种编码方式和描述风格来实现,但其综合出来的状态机在稳定性、速度、面积以及电路复杂程度上有很大的差别。因此研究FSM的编码方式和描述风格有利于更好地设计出高效可靠的有限状态机。1有限状态机性能特点根据状态机的输出是否与输入条件相关,可将有限状态机分为Moore型状态机和Mealy型状态机,如图1所示。前者的输出仅仅依赖于当前状态,与输入条件无关;后者的输出不仅依赖于当前状态,而且取决于该状态的输入条件。可综合有限状态机的VerilogHDL设计的基本要求:(1)有限状态机要安全,稳定性高。这就要求有限状态机不会进入死循环,即使由于某些扰动进入非法状态,也能很快的恢复到正常的状态循环中来。(2)有限状态机速度快,满足设计的频率要求。(3)有限状态机面积小,满足设计所占资源要求。(4)有限状态机设计要清晰易懂,易维护。有限状态机的VerilogHDL设计的一些基本准则:(1)一个Verilog模块至多描述一个有限状态机。这样不仅可以简化状态的定义、修改和调试,还可以利用一些EDA工具来协助设计。(2)使用参数给状态赋值,而不是用宏定义(define)。因为define宏定义在编译时自动替换整个设计中所定义的宏,而parameter仅仅定义模块内部的参数,定义的参数不会与模块外的其它状态机混淆。(3)用always模块写组合逻辑时,采用阻塞赋值,而在always块中建立时序电路时,用非阻塞赋值。这样才能保证有限状态机综合前和综合后仿真的一致性。2独热码的编码状态编码又称为状态分配,决定了用以保持状态所需的触发器的数量,并且影响着实现下一个状态和输出中所用的组合逻辑的复杂度。编码方式选择不当可能会导致状态机所占资源过大或速度降低。常用的编码方式有3种:二进制码、格雷码、独热码。二进制码和格雷码属于压缩状态编码,这种编码的优点是使用的状态向量最少,但是需要较多的逻辑资源用来状态译码。二进制码从一个状态转换到相邻状态时,可能有多个比特位发生变化,易产生中间状态转移问题,状态机的速度也要比采用其它编码方式慢。格雷码两个相邻的码值仅有一位就可区分,这将会减少电路中相邻物理信号线同时变化的情况,因而可以减少电路中的电噪声。Johnson码也有同样的特点,但是要用较多的位数。独热码指对任意给定的状态,状态寄存器中只有1位为1,其余位都为0。n状态的有限状态机需要n个触发器,但这种有限状态机只需对寄存器中的一位进行译码,简化了译码逻辑电路,额外触发器占用的面积可用译码电路省下来的面积抵消。当设计中加入更多的状态时,译码逻辑没有变得更加复杂,有限状态机的速度仅取决于到某特定状态的转移数量,而其它类型有限状态机在状态增加时速度会明显下降。独热码还具有设计简单、修改灵活、易于综合和调试等优点。由独热码衍生出来简化独热码和零空闲独热码两种编码方式。简化独热码用十进制数指向状态寄存器中的某一位,状态转移时,把与十进制数相对应的状态向量的那一位置1即可,跟独热码一样,在任意时刻,状态向量中只有1位为1,其余位都为0。与独热码相比,这种编码只须判断十进制数所指向状态向量的对应位是否为1,所以状态机的速度会相对较快。零空闲独热码对于状态之间存在复杂关系的设计可以产生高效的状态机,特别是对多个状态转向某一特定状态的情况。用这种方式编码时,普通状态的编码方式同简化独热码一样,只是特殊状态用状态寄存器全零来表示。表1总结了以上几种编码方式的定义方式。其中简化独热码和零空闲独热码中的S0~S4非状态编码,而是代表指向状态寄存器中的相应位。在实际设计中,具体采用哪一种编码要视器件结构而定。由于CPLD更多地提供组合逻辑资源,而FPGA触发器资源比较丰富,所以CPLD多使用二进程制码和格雷码,而FPGA多使用独热码。选择编码方式还跟状态数有一定关系,一般情况下,当状态数小于5时,推荐使用二进制码,当状态数大于4而小于24时使用独热码,状态数大于24时建议使用格雷码。3双进程式和3-alws式用Verilog语言描述有限状态机通常有3种描述风格:单进程式,双进程式和三进程式。单进程式又称为One-Always方式,它将状态转移判断的组合逻辑和状态寄存器转移的时序逻辑混写在同一个always模块中,图2为其结构图。由于是寄存器输出,输出向量不会产生毛刺。但代码相对比较冗长难于修改和调试,并且不利于附加约束,编译器优化效果差,往往导致逻辑速度慢、资源消耗多,应该尽量避免使用。双进程式又称为Two-Always方式,在这种方式中,一个always模块采用同步时序描述状态转移,另一个模块采用组合逻辑给下一状态和输出向量赋值,其结构图如图1所示。这种方式使FSM描述清晰简洁,易于附加时序约束,编译器优化效果明显,可以得到很理想的速度和资源占用率,是目前应用最为广泛的状态机描述风格。缺点是组合逻辑输出可能会使输出向量产生毛刺。一般情况下,输出向量的毛刺对电路的影响可以忽略不计,但是当其作为时钟信号使用时,就必须消除毛刺,否则会对后面的电路产生致命的影响。为了消除组合输出所带来的毛刺问题,改用时序逻辑来描述输出向量,这就是三进程式,又称为Three-Always方式。这种方式用两个时序always模块分别用于产生当前状态向量和输出向量,一个组合always用于产生下一状态向量,其结构图如图3所示。三段式描述与两段式描述相比,虽然代码结构复杂了一些,但是换来的优势是使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于综合与布局布线。4状态编码和描述以一个简单的有限状态机设计—序列检测器为例。序列检测就是将一个指定的序列从数字码流中识别出来。本文将设计一个“111”序列检测器,此序列检测器要求能够成功检测出序列重叠,其Moore型状态转移图如图4所示。模块FSM_JHDR的状态编码采用简化独热码,描述风格采用双进程式;模块FSMDR的状态编码采用独热码,描述风格采用三进程式。主要Verilog代码如表2所示。利用QuartusⅡ6.0工具分别对两模块进行编译和时序仿真,目标器件为Altera公司的EP2C8。编译后,FSM_JHDR占用了5个逻辑单元,FSM_DR占用了6个逻辑单元,但模块FSM_JHDR的输出变量由于是组合逻辑输出,产生了毛刺,而模块FSM_DR采用三进程式描述方式很好的解决了这个问题。图5为模块FSMD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 青岛求实职业技术学院《安全与质量》2023-2024学年第二学期期末试卷
- 静脉留置针的临床使用
- 保护身体关节课件
- 2025年江西省九江一中、临川二中重点中学高三(普通班)下学期期末考试英语试题试卷含解析
- 桂林信息科技学院《广告学概论A》2023-2024学年第二学期期末试卷
- 贵州省百校大联考2025届高三4月教学质量检测试题:数学试题试卷含解析
- 长春人文学院《影视项目策划》2023-2024学年第二学期期末试卷
- 民办万博科技职业学院《给水排水工程施工》2023-2024学年第一学期期末试卷
- 上海民航职业技术学院《茶学专业英语》2023-2024学年第二学期期末试卷
- 2024-2025学年贵州省毕节市校高三第三次模拟历史试题含解析
- 九月抽考电务作业指导书
- 儿童节约用水你我同行3月22日世界水日主题班会PPT
- YC/T 478-2013烟草商业企业卷烟物流配送中心安全管理规范
- GB/T 24456-2009高密度聚乙烯硅芯管
- 幼儿园惊蛰来了课件
- 转包违法分包等违法行为认定查处管理办法讲座课件
- PLM解决方案与NX培训教材课件
- 部编版六年级下册道德与法治全册优秀课件
- 【精选】方剂学解表剂练习题
- 法制宣传教育小报
- 上海西郊国际农产品展示直销中心贵州馆入驻方案
评论
0/150
提交评论