全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

FPGA中有限状态机的状态编码采用格雷码还是独热

时间:2023-04-07 09:52

人气:

作者:admin

标签: 输出信号  寄存器  FPGA 

导读:有限状态机是由寄存器组和组合逻辑构成的硬件时序电路,其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只可能在同一时钟跳变沿的情况下才能从一个状态转向另一个状...

看《从算法设计到硬件逻辑的实现》这本电子书时,遇到了一个问题,就是有限状态机的编写中,状态编码是采用格雷码还是独热码呢?究竟采用哪一种编码呢?

采用独热码为什么节省许多组合电路?

等等问题,就这些问题我收集了一些说法,觉得很有意思,在这里我们一起讨论下。

还是先简介下有限状态机:

有限状态机是由寄存器组和组合逻辑构成的硬件时序电路,其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只可能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态,究竟转向哪一状态还是留在原状态不但取决于各个输入值,还取决于当前所在状态。这里是指Mealy型有限状态机。

Moore型有限状态机的状态转移只取决于当前状态,与输入值无关。

Verilog HDL中可以用许多种方法来描述有限状态机,最常用的方法是用always语句和case语句。下面的状态转移图表示了一个有限状态机:

9d4a5008-d4d3-11ed-bfe3-dac502259ad0.png

上面的状态转移图表示了一个四状态的有限状态机,它的同步时钟是Clock,输入信号是 A 和 rst_n ,输出信号是 F 和 G。状态的转移只能在同步时钟(Clock)的上升沿时发生,往哪个状态的转移则取决于目前所在的状态和输入的信号(Reset 和 A)。

我们采用两种状态编码方式来实现这个有限状态机:

1)采用格雷码:

9d6a23ba-d4d3-11ed-bfe3-dac502259ad0.png

9d91226c-d4d3-11ed-bfe3-dac502259ad0.png

9da1abbe-d4d3-11ed-bfe3-dac502259ad0.png

在ISE中,综合后,得到的RTL Schematic:

9db84f40-d4d3-11ed-bfe3-dac502259ad0.png

2)采用独热码:

程序和上面的几乎一样,只需要改下,各个状态对应的编码值即可,还有最后的default:state 《= Idle;

还是给出程序吧:

9dcce13a-d4d3-11ed-bfe3-dac502259ad0.png

9ddff3a6-d4d3-11ed-bfe3-dac502259ad0.png

9df319ae-d4d3-11ed-bfe3-dac502259ad0.png

9e0cb08a-d4d3-11ed-bfe3-dac502259ad0.png

上面两个程序的主要不同点是状态编码,2)采用了独热编码,而1)则采用Gray码,究竟采用哪一种编码好要看具体情况而定。对于用FPGA实现的有限状态机建议采用独热码,因为虽然采用独热编码多用了两个触发器,但所用组合电路可省下许多,因而使电路的速度和可靠性有显著提高,而总的单元数并无显著增加。采用了独热编码后有了多余的状态,就有一些不可到达的状态,为此在CASE语句的最后需要增加default分支项,以确保多余状态能回到Idle状态。

上面所说的多余状态是:4位编码有16种,独热码只列出了4种,剩下了12种,就是多余的状态。

9e2428a0-d4d3-11ed-bfe3-dac502259ad0.jpg

9e435c3e-d4d3-11ed-bfe3-dac502259ad0.png

另一位大牛只说了一句话,但很有启发:

9e5682a0-d4d3-11ed-bfe3-dac502259ad0.png

那我把3—8译码器的真值表给出来,确实如此。

9e6960d2-d4d3-11ed-bfe3-dac502259ad0.png

审核编辑 :李倩

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信