写状态机时需要注意的地方:
1、状态机的状态编码大概有三种:二进制编码,格雷码,独热码。
     其中二进制编码就是000、001、010、011、100这类的逐渐加一
     格雷码就是相邻两个状态只有一位数不一样,000、001、011、010之类的
     独热码的意思是有多少个状态那么状态码就有多少位,比如说状态机有六个状态,那么状态向量就有6位,其状态分别为000001、000010、000100、001000、010000、100000,这六种状态,也就是说只有一位为1。
2、二进制编码使用较少的触发器,消耗较多的逻辑资源,而独热码相反。独热码最大的优势在于状态比较时仅仅需要比较一个位,一定程度上化简了译码逻辑,减少了毛刺产生的概率。在需要表示相同的状态数时,独热码所占的位宽较大,也就是消耗较多的触发器,但是这些额外的触发器所占用的面积可与译码电路省下来的面积相抵消。
3、CPLD中有较多的逻辑资源,而触发器资源较少;FPGA中提供的触发器资源较多,所以在以后写状态机的时候要注意这一点。大型状态机使用one-hot更高效
4、写状态机时最好使用三段式的状态机,第一个状态机只写当前状态以及下一个状态;第二个状态机写下一个状态的跳转条件以及跳转状态;第三个状态机写输出。一般来说,状态转移部分(第一个状态机)是同步时序电路而状态的转移条件的判断(第二个状态机)是组合逻辑。
5、三段式描述方法与两段式描述相比,虽然代码结构复杂了一些,但是换来的优势是使FSM 做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在FPGA/CPLD 等可编程逻辑器件上的综合与布局布线效果更佳。

FPGA中状态机实现需要注意的地方相关推荐

  1. FPGA中状态机的稳定性

    第一个:状态机输出信号填写问题,下面是我转载的一些能百度的到的东西.好像都比较正常.这里我还要强调的是,每个状态机的输出信号都需要全面. 举例: always @ (posedge clk or ne ...

  2. 【 FPGA 】状态机的模型之Moore型状态机

    上篇博文:状态机,FPGA的灵魂,说到了状态机的基础知识,讲到了状态机的组成六要素,工作四要素. 这篇博文来讲状态机的模型之Moore状态机,从标题也能看出,状态机的知识并没有结束,后面还会提到Mea ...

  3. 【 FPGA 】状态机,FPGA的灵魂

    有关状态机的文章,事实上已经写过很多了,可是即使如此,真的懂了吗?真的能熟练应用吗?未必吧.这篇博文来源是<FPGA之道>,认真下看去收货颇丰! 借这个主题来梳理下状态机: 状态机简介 状 ...

  4. Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码

    一般的,在Verilog中最常用的编码方式有二进制编码(Binary).格雷码(Gray-code)编码.独热码(One-hot)编码. 二进制码和格雷码是压缩状态编码. 若使用格雷编码,则相邻状态转 ...

  5. FPGA/CPLD状态机稳定性研究

    摘要 在FPGA/CPLD设计中频繁使用的状态机,常出现一些稳定性问题,本文提出了一些解决方法,实验表明该方法有效地提高了综合效率. 随着大规模和超大规模FPGA/CPLD器件的诞生和发展,以HDL( ...

  6. 浅析SPI在FPGA中的应用

    spi接口在FPGA中应用的要点 SPI(Serial Peripheral Interface)接口是一种同步串行通信接口,广泛应用于数字系统中,包括FPGA中.下面是SPI接口在FPGA中应用的要 ...

  7. verilog中状态机的三种编码方式的比较(二进制码、独热码、格雷码)

    最近做了一个小项目,是关于状态机中三种编码方式的比较,总结了一下三种编码方式的不同,可以会在以后IC笔试面试过程中用到,简单记录一下三种编码方式的优缺点. 三种编码方式如下图所示:其中独热码只有一位为 ...

  8. FPGA中复位设计总结

    复位 首先FPGA的复位,对于大部分设计而言,是很简单的.简单在于,只要按照固定方法:按键按下,复位有效一次,相关信号复位.这能解决大部分的问题.而对于其他大规模的复位设计,则需要对细节深究. 方式 ...

  9. FPGA中LVDS差分高速传输的实现

    低压差分传送技术是基于低压差分信号(Low Volt-agc Differential signaling)的传送技术,从一个电路板系统内的高速信号传送到不同电路系统之间的快速数据传送都可以应用低压差 ...

最新文章

  1. 企业库应用实践系列三:自定义构造函数
  2. d3.js 制作简单的贪吃蛇
  3. .NET Core开发实战(第33课:集成事件:使用RabbitMQ来实现EventBus)--学习笔记(下)...
  4. matlab同步发电机外特性仿真,基于Matlab-Simulink的虚拟同步发电机控制方法的仿真研究...
  5. 11.12 Ext JS 的Uncaught (in promise) Error: Cannot load package问题和解决分析
  6. 大数据系统应包含哪些功能模块
  7. 使用hive计算每一年的最大气温的日期+温度
  8. 再见!公司的烂系统……
  9. (ZT)中国姓氏韦氏拼音拼法
  10. uni-app云打包成ipa文件安装到iPhone上全过程记录
  11. 路由器与交换机工作过程详解!!!
  12. mov格式的视频转换mp4?视频格式转换这样做
  13. 我心中的超短系统之人气、情绪、大局观、仓控
  14. Java POI 设置字体下划线、方框打勾、字体加粗
  15. DDD领域驱动设计浅谈
  16. python的分布式爬虫框架
  17. 尚硅谷MySQL高级JAVA版
  18. 四两拨千斤!深度主动学习综述2020
  19. openlayers 绘制tin数据导文
  20. 选SSD就是选闪存颗粒!全面解析原片/白片/黑片

热门文章

  1. 从0 开始 DIY你的Arduino UNO
  2. 为什么面包板不能够做射频电路实验?
  3. AD5272数字变阻器
  4. mysql 返回的查询结果为空 (即零行)._Mysql数据同步(单向)
  5. android触摸事件分发,Android 事件分发机制
  6. 三星android功能怎么用,三星GALAXY S II升级Android 4.0新功能介绍及使用技巧
  7. 字符串函数用法 php,PHP字符串函数print()的用法
  8. C 指针的有意思的描述
  9. 深度linux12,Linux Deepin 12.06 试用体验
  10. java 8 什么软件_Java 8你了解多少呢?Java之被人遗忘的Java 8的八个功能