FPGA有限状态机编写如何选择状态编码?

时间:2025-09-09  作者:Diven  阅读:0

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

FPGA有限状态机编写如何选择状态编码?

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

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

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

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

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

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

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

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

1)采用格雷码:

在ISE中,综合后,得到的RTL SchematIC

2)采用独热码:

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

还是给出程序吧:

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

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

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

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

​​

编辑:黄飞

 

猜您喜欢

贴片电阻数值下方的那条线代表电阻的精度或容差。表示电阻实际值与标称值之间可能存在的偏差范围。不同的线代表不同的精度等级。例如,没有线表示精度为±20%,一条线表...
2024-11-29 10:25:51

精密电阻作为关键元件,是稳定电流和电压的重要配件。捷比信作为知名的电子元件供应商,其精密电阻系列以高品质和多样化,深受工程师和制造商的青睐。本文将详细介绍捷比信...
2023-01-03 20:07:00

热熔胶枪因其操作简便和快速固化的特点,应用于多个领域。在家庭DIY项目中,热熔胶枪是不可少的工具,适用于修补、装饰和手工制作,能够轻松粘合木材、布料和塑料等材料...
2023-04-01 00:00:00


订书机套装是办公和学习中常见的工具,其分类主要可以从功能、设计和用途三个方面来划分。从功能上看,订书机套装可以分为手动订书机和电动订书机。手动订书机操作简单,适...
2012-06-27 00:00:00


电位器作为重要的电子元器件,应用于调节电路中的电压、电流和信号强度等参数。TOKEN(德键)作为知名的电位器品牌,优良的品质和稳定的性能,受到了众多电子工程师和...
2024-08-15 06:06:50

电路保护元件在保障设备安全运行中是重要配件。作为全球知名的电子元器件制造商,Kyocera(京瓷)推出的压敏电阻因其优异的性能和的应用,受到业界的高度关注。本文...
2014-08-02 15:45:30

当今电子设备日益普及的时代,对高效可靠电源的需求比以往任何时候都更加迫切。DC-DC转换器电路作为一种能够将直流电压变换成不同电压等级的关键部件,正是越来越重要...
2024-06-26 00:00:00

同步整流控制芯片是一种革命性的电源管理技术,旨在提高电子设备的能效和性能。与传统的二极管整流相比,同步整流技术通过使用功率MOSFET的开关特性,可大幅降低整流...
2024-07-01 00:00:00