集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 555|回复: 1

FPGA中状态机实现需要注意的地方

[复制链接]
dameihuaxia 发表于 2022-7-11 14:18:25 | 显示全部楼层 |阅读模式
写状态机时需要注意的地方:
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 等可编程逻辑器件上的综合与布局布线效果更佳。
LYF 发表于 2022-7-11 14:25:45 | 显示全部楼层
FPGA中状态机实现需要注意的地方
http://www.fpgaw.com/forum.php?m ... 6&fromuid=59610
(出处: fpga论坛|fpga设计论坛)
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-10 04:22 , Processed in 0.061941 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表