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

时间:2025-06-11  作者: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译码器的真值表给出来,确实如此。

​​

编辑:黄飞

 

猜您喜欢

贴片电容是电子元件。应用于电脑和其设备。本文将简单介绍贴片电容的定义、功能以及应用。贴片电容的定义贴片电容,简称贴片电容器。是表面贴装技术的产品。相比传统电容,...
2025-03-25 14:30:02

电阻器作为基本的电子元件,起着非常重要的作用。随着技术的发展,铝壳电阻因其优异的性能和可靠的质量,成为众多工程师和制造商的首选。科达嘉(CODACA)作为国内知...
2017-08-15 10:47:13

多功能电力仪表是现代电力系统中不可少的重要工具,应用于电力监测、分析和管理。根据功能和应用场景的不同,多功能电力仪表可以分为以下几类。首先是电能计量仪表,这类仪...
2011-09-20 00:00:00

麻花钻头是常见的钻孔工具,应用于金属、木材和塑料等材料的加工。其规格尺寸多样,主要根据钻孔直径、长度和螺旋角度来划分。常见的麻花钻头直径从1mm到20mm不等,...
2010-09-30 00:00:00

近日,全球领先的CMOS图像传感器提供商思特威再度突破技术边界,发布了两款专为笔记本电脑与平板电脑设计的新型图像传感器——SC521PC(5MP)和SC200P...
2024-05-16 10:37:00


电阻作为电子电路中不可少的基础元件,其品质直接关乎到整个系统的稳定性和可靠性。丽景电子,作为国内知名的电子元器件制造商,其铝壳电阻系列产品在市场上享有盛誉。那么...
2022-02-10 14:34:33

本文作者陈雯,Tools Product Applications Engineer, WTS China.本文给想直接使用Vitis HLS 工...
2022-07-25 04:14:00

套筒延长杆是应用于各类工具和设备的配件,主要用于延长套筒的使用距离,提高操作的灵活性。根据不同的需求,套筒延长杆可分为几种主要类型。首先是标准延长杆,这种延长杆...
2008-02-25 00:00:00

组合逻辑电路与时序逻辑电路数字电路根据逻辑功能的不同特点,可以分成两大类:一类叫做组合逻辑电路,简称组合电路或组合逻辑;另一类叫做时序逻辑电路,简称时序电路或...
2022-12-01 09:04:00