亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 嵌入式

比较二进制、灰色和 One-Hot 编码

本文比较了使用二进制、格雷和单热编码在 FPGA 中实现状态机的实现。这些编码通常由综合和实现工具评估和应用,因此了解软件做出这些决定的原因很重要。

有限状态机 (FSM) 是几乎所有数字系统中非常常见的部分。这就是为什么综合工具经常检查您的代码以检测 FSM 并执行可能修改状态编码的优化。如果您在源代码中仔细选择并指定了实现您的状态的值并不重要,综合工具可能会用其他值替换这些值,这些值甚至可能与您的原始编码具有不同的位长。

如果你想复习在 Verilog 中实现状态机,你应该阅读我的文章,标题为在 Verilog 中创建有限状态机。


状态编码:Gray vs. Binary vs. One-Hot

FSM 状态的三种最流行的编码是 binary、Gray 和 one-hot。

二进制编码

二进制编码是您在按顺序为状态分配值时可以直观使用的直接方法。这样,您就可以使用尽可能少的位来编码您的状态。

one-hot 编码示例。图片来自史蒂夫·阿拉尔

灰度编码

格雷码由一个序列组成,其中一个值和下一个值之间只有一位变化。除了还使用最少的位数外,如果最佳地遵循状态序列,这种编码可以最大限度地减少动态功耗。

格雷码轮。图片来自玛丽克里斯蒂亚诺

One-Hot 编码

最后,one-hot 编码包括使用代表每个状态的一位,因此在任何时间点,状态都将在代表当前状态的位中编码为 1,在所有其他位中编码为 0。由于使用的位数和无效状态的数量过多,这起初可能看起来效率不高。然而,one-hot 编码非常擅长简化触发器的激励逻辑,因为不需要解码状态。这些位 美国。

one-hot 编码示例。图片来自史蒂夫·阿拉尔

有关状态编码的更多信息,您可能需要查看 Steve Arar 撰写的在 VHDL 中编码有限状态机的状态的文章。

哪种编码最好?

这是一个棘手的问题,主要是因为每种编码都有其优点和缺点,因此归结为一个取决于大量因素的优化问题。

现在,所有这些说法都只是有根据的猜测,找到最佳状态分配是一个复杂的问题。因此,我的官方建议是让编译器为您决定。也就是说,我决定在三种不同的开发工具和三种不同的状态机中对这三种编码的结果进行比较。

在下一篇文章中,我们将讨论我的实验结果。


嵌入式

  1. 比较 300、400 和 500 系列钢
  2. 八进制和十六进制数
  3. 二进制加法
  4. 二元减法
  5. 二进制溢出
  6. 数字信号和门
  7. C++ 中的结构和类
  8. 比较六西格码和精益制造
  9. 我应该使用哪种编码类型? FPGA 应用示例
  10. 摩尔斯电码和双重勒索:当今恶意软件的现状
  11. EDM 和 CNC 机床防火:比较您的选择
  12. 灰口铁的特性和等级说明