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

选择正确 FPGA 编码:基于康威生命游戏的实战研究

跟随三个实验,阐释如何为 FPGA 设计选择最合适的编码

设计 FPGA 逻辑时,综合工具通常自动选择编码;一般建议信任其决策。但理解二进制、格雷码和独热码的细微差别,有助于预判编译器何时倾向于某种编码。

本文通过实战实验,以康威生命游戏为测试平台,凸显将各种编码应用于大规模有限状态机阵列时出现的权衡。

本系列已涵盖 Verilog FSM 构建、初始状态与存储对编码的影响,以及二进制、独热、格雷码的高层对比。

测试系统

为放大硬件差异,我在 23×23 网格中实例化数十个状态机,直接对比二进制、格雷码和独热编码。

康威生命游戏是经典细胞自动aton,在二维矩形格子上模拟细胞出生、存活和死亡。每个细胞每周期遵循三条简单规则:

  1. 拥有两或三个存活邻居的活细胞存活。
  2. 拥有三个活邻居的死细胞复活。
  3. 所有其他细胞死亡或保持死亡。

这些规则产生丰富涌现模式,为评估编码策略提供清晰、易理解的工作负载。

下图是 Bill Gosper 发射机的 GIF,一种流行的生命游戏模式。

选择正确 FPGA 编码:基于康威生命游戏的实战研究

康威生命游戏变体:Bill Gosper 发射机。Gif 由 Lucas Vieira 创作 [CC BY-SA 3.0]

Verilog 代码

单元逻辑建模为 8 状态 FSM。虽然生命游戏单周期即可完成单细胞计算,但 8 状态设计在不同编码下产生显著差异。下面 Verilog 模块演示原始二进制编码。

`define STATE_0 3'b000 `define STATE_1 3'b001 `define STATE_2 3'b010 `define STATE_3 3'b011 `define STATE_4 3'b100 `define STATE_5 3'b101 `define STATE_6 3'b110 `define STATE_7 3'b111 module LifeCell( input clk, input nrst, input seed, input [7:0] neighbors, output reg alive); reg [2:0] state; always @ (posedge clk) if (nrst == 0) state <= `STATE_0; else case(state) `STATE_0: begin // ... state <= `STATE_1; end `STATE_1: begin // ... state <= `STATE_2; end // ... `STATE_7: begin // ... state <= `STATE_1; end endcase endmodule

若想深入代码,完整项目托管于 GitHub。

FPGA 编码实现

设计在 23×23 单元网格上综合,产生 27 个不同实现:三种 FSM 变体,各自用二进制、格雷码、独热编码综合,针对三款目标 FPGA。

FSM #1:原始模型

此 FSM 运行一次初始状态,随后循环遍历其余七状态——此序列暗示格雷码可能有优势。

选择正确 FPGA 编码:基于康威生命游戏的实战研究

FSM #2:序列模型

作为简单 3 位计数器,此 FSM 进一步强化了格雷码将占优的预期。

选择正确 FPGA 编码:基于康威生命游戏的实战研究

FSM #3:任意纠缠模型

此变体共享 FSM #1 关键路径,但邻居数超三时走非线性路径。独热编码似乎更适合这种不规则跳转。

选择正确 FPGA 编码:基于康威生命游戏的实战研究

目标架构

实现使用以下器件的厂商工具链构建:

结果对比

FPGA 设计基准测试本质上由指标驱动。我选取四个关键指标——逻辑资源使用、寄存器数量、估算最高频率、片上功耗——并赋予加权分值。每项指标最优得 +1(加权指标 +2),最差得 -1(加权指标 -2),中间得 0。

所有 27 个实现的累计得分如下。

选择正确 FPGA 编码:基于康威生命游戏的实战研究

全部 27 实现结果表。绿色高亮最佳编码,红色最差,黄色中位数(无并列)。

总体来看,独热编码多位于底部两行,仅两次与其他方案持平。反之,格雷码持续成为顶级表现者,尤其是在频率和功耗权重更高时。

为突出胜者,下表隔离出每个变体的领先编码。

选择正确 FPGA 编码:基于康威生命游戏的实战研究

结论

虽然数据倾向于此特定生命游戏工作负载下的格雷码,但结果取决于您优先考量的指标。若看重资源使用而非性能,排名可能不同。我的目的非规定一刀切规则,而是展示实证证据如何指导编码选择。

欢迎探索项目 GitHub 仓库中的源代码、27 个综合实现或在线生命游戏仿真。

嵌入式

  1. 控制器选型指南:PLC、PAC、DCS还是IPC?
  2. 何时使用裸板测试实现可靠PCB开发
  3. 守护电机:交流电抗器的核心防护作用与选型指南
  4. 工业 4.0 中借助远程专家方案最大化效率
  5. 钛 vs 铝:如何选择兼具强度与轻量化的最佳有色金属
  6. 锤头塔吊部署实战指南:何时使用、核心优势与选型建议
  7. 凯夫拉材料跨界应用全景:从航空航天到个体防护的材料革命
  8. 水泵效率对决:离心泵 vs 正排量泵,谁才是真·高效之王?
  9. 为何基于标准的开发实践至关重要——即使非强制
  10. Swissbit 推出 U-50n Nano USB 3.1 闪存盘:工业级 IoT 的坚固高性能存储
  11. AAEON COM-CFHB6:紧凑高性能 Type-6 模块,Intel CPU、48GB DDR4 ECC、24 条 PCIe 通道,面向边缘、AIoT 与工业应用
  12. 为您的项目选择合适的铝合金