Buck Blog · 博客正文

返回技术分享首页
FPGA_AI_详细设计说明

基于 EP4CE10F17C6 的 FPGA 推理加速系统详细设计文档

1. 设计目标

在 Intel Cyclone IV E(EP4CE10F17C6)上实现一个轻量推理系统,完成对输入特征的三级风险分类,并使用红/黄/绿三色 LED 指示结果。

• 绿灯:正常(Class 0)

• 黄灯:预警(Class 1)

• 红灯:告警(Class 2)

1.0.1 三色灯输出的业务语义与目标

三色灯不仅用于“显示分类结果”,还对应现场处置策略:

1. 绿灯(Class 0)- 正常运行区

• 语义:温度水平、温升速率、短时波动均处于可接受范围。

• 目标动作:系统维持当前功率与散热策略。

2. 黄灯(Class 1)- 早期预警区

• 语义:绝对温度可能尚未超限,但趋势特征(如差分、波动)显示存在升温风险。

• 目标动作:提前降载、提高风扇占空比、上报维护告警。

3. 红灯(Class 2)- 高风险告警区

• 语义:温度或综合风险评分已进入危险区。

• 目标动作:触发保护动作(限流/停机/断电保护)。

因此,本课题的直接工程目的,是把 AI 推理结果实时转化为“可执行的分级热安全控制决策”。

本设计强调:

1. 外围硬件简单(输入为温度采集模块或串口调试模块送入的温度实时值)。

2. 推理路径完全硬件化,体现 FPGA 并行和低时延优势。

3. 提供与 CPU/MCU 的可复现实验对比。

1.1 课题完成的具体功能(可验收)

本课题最终交付一个“单通道温度状态三级预警推理终端”,具体功能如下:

1. 采集或输入温度实时值(来源为温度采集模块,或串口调试模块)。

2. 温度按 1ms 周期采样(可扩展到 0.5ms 或更短),FPGA 在片上调用 DSP 资源实时计算 8 维特征向量并进行定点推理计算。

3. 输出 3 类结果并驱动三色灯:

• Class 0:正常 -> 绿灯

• Class 1:预警 -> 黄灯

• Class 2:告警 -> 红灯

4. 每个样本在固定流水时延内完成分类,支持连续样本流处理。

5. 在相同数据集和统计口径下,给出 FPGA 与 PC/MCU 的时延、吞吐、功耗和能效对比。

---

2. 系统总体方案

2.1 输入与输出

• 输入:温度实时值流(来自温度采集模块或串口调试模块)

• 中间量:8 维定点特征向量(Q8.8,16bit),由 FPGA 内部 DSP 计算

• 时钟:50 MHz(开发板常见外部时钟)

• 输出:3 个 LED 信号 led_r/led_y/led_g

2.1.1 输入特征向量解释(建议方案)

为保证“外围传感器简单”与“任务可解释”,定义单传感器温度时序的 8 维特征:

| 维度 | 名称 | 含义 | 计算方式(离散时域) |

|---|---|---|---|

| x0 | 当前值 | 当前时刻温度 | x₀=T[n] |

| x1 | 短窗均值 | 近 N 点平均温度 | x₁=1⁄N∑(k=0→N-1)T[n-k] |

| x2 | 短窗波动 | 近 N 点标准差近似 | x₂≈ √(1⁄Nsum(T-T̄)²) |

| x3 | 一阶差分 | 温度变化速度 | x₃=T[n]-T[n-1] |

| x4 | 均值差 | 短窗均值-长窗均值 | x₄=T̄_{short}-T̄_{long} |

| x5 | 局部峰值 | 最近 K 点最大温度 | x₅=max(T[n-K+1..n]) |

| x6 | 局部谷值 | 最近 K 点最小温度 | x₆=min(T[n-K+1..n]) |

| x7 | 偏置项 | 常数项(定点缩放) | x₇=1.0 |

2.1.2 FPGA 自主特征计算流程(1ms采样)

系统主模式为“FPGA 自主计算特征”,流程如下:

1. 采样阶段(每 1ms):采集温度实时值 T[n]。

2. 窗口更新:更新短窗/长窗寄存器、累加和、最大最小值缓存。

3. 特征生成:在 FPGA 内部通过 DSP 乘加、减法和比较链路快速计算 x0~x7(均为 Q8.8 定点)。

4. 推理计算:使用最新特征进入乘加与阈值分类模块。

5. 结果输出:更新三色灯与 out_valid。

说明:

• 串口直接下发特征仅作为联调与回归测试模式。

• 正式演示与对比实验以“传感器实时采样 + FPGA 片上特征提取”为准。

2.2 推理模型

采用硬件友好的线性分类器:

score = ∑(i=0→7)(wᵢ· xᵢ) + b

根据两个阈值完成三级分类:

• score < TH_LOW -> 绿灯

• TH_LOW <= score < TH_HIGH -> 黄灯

• score >= TH_HIGH -> 红灯

该模型结构简单、可解释、硬件资源消耗低,便于本科阶段实现与优化。

2.3 硬件模块划分

1. feature_extract.v:接收温度实时值并完成窗口统计、特征寄存与有效位同步。

2. temp_input_mux.v(可选):在温度采集模块与串口调试模块之间切换输入源。

3. threshold_classifier.v:并行乘加 + 阈值决策,输出 2bit 类别。

4. led_indicator.v:2bit 类别映射到三色灯。

5. inference_top.v:顶层连接,统一接口。

2.4 任务闭环说明(数据到结果)

完整处理链路定义为:

1. 数据输入层:温度样本流(或仿真构造数据)进入 FPGA。

2. 特征层:形成 8 维特征向量 x[0:7] 并做 Q8.8 定点化。

3. 推理层:计算线性分数 score=Σ(w_i·x_i)+b。

4. 决策层:两阈值比较得到 3 类标签。

5. 显示层:标签映射为红/黄/绿 LED。

6. 评测层:记录时延、吞吐、功耗,和 PC/MCU 同口径对比。

这样可保证“模型定义、输入语义、硬件实现、性能评测”四部分前后一致。

2.5 目标应用场景定义

本案例针对“温度变化剧烈、需快速推理决策”的场景,推荐以下应用:

1. 功率电子模块热安全监测:如电机驱动、逆变器、DC-DC 模块,负载突变会导致短时快速升温。

2. 封闭设备热点预警:如边缘计算盒、通信子机柜、工业控制箱,散热条件波动导致局部温度陡升。

3. 热冲击实验过程监测:加热/冷却交替时温度梯度大,需快速判定是否进入危险趋势。

为何需要 1ms 或更短采样:

• 此类场景中风险不仅由绝对温度决定,更取决于 dT/dt 和短时波动。

• 若采样周期过长,可能遗漏温升拐点,导致预警滞后。

• FPGA 可在每个采样周期内完成特征更新与分类,适合“连续高频采样 + 低时延推理”的工程需求。

---

3. RTL 设计说明

3.1 数据格式

• 特征 x_i:signed[15:0],Q8.8

• 权重 w_i:signed[15:0],Q8.8

• 乘积:signed[31:0],Q16.16

• 累加 score:signed[35:0](预留溢出裕量)

3.2 流水策略

• 第 1 拍:锁存输入特征

• 第 2 拍:并行乘法

• 第 3 拍:加法树 + 偏置 + 阈值比较

• 第 4 拍:LED 显示更新

在 50 MHz 下,固定时延约 4 个时钟周期(约 80 ns,不含外部采样)。

3.3 资源预估(示例)

> 具体以 Quartus 编译报告为准。

• 逻辑单元(LE):约 800~1500

• 乘法器(DSP):8 个(可通过时分复用降低)

• RAM:可选(权重固化时不需要)

---

4. 性能对比实验设计

4.1 对比平台

• FPGA:EP4CE10F17C6,50 MHz,RTL 实现

• PC:Python/NumPy 单线程(如 i5 级 CPU)

• MCU:C 实现(如 Cortex-M4 100MHz 级)

4.2 数据集与口径

• 样本数:10,000

• 每样本特征维度:8

• 统计指标:

1. 单样本端到端时延(µs)

2. 吞吐(samples/s)

3. 功耗(W)

4. 能效(samples/s/W)

• 口径说明:

• FPGA 统计包含输入锁存到结果有效,不含上位机通信开销。

• CPU/MCU 统计包含同等预处理与分类计算。

4.3 示例对比数据(演示版)

> 下表为按统一口径估算的“示例数据模板”,最终论文需替换为实测数据。

| 平台 | 单样本时延(µs) | 吞吐(samples/s) | 功耗(W) | 能效(samples/s/W) |

|---|---:|---:|---:|---:|

| FPGA (EP4CE10) | 0.08 | 12,500,000 | 0.80 | 15,625,000 |

| PC (Python) | 2.10 | 476,190 | 35.0 | 13,605 |

| MCU (C) | 18.0 | 55,555 | 0.35 | 158,728 |

4.4 优势结论(基于示例)

• FPGA 相对 PC(Python)时延约提升 26.3 倍,吞吐约提升 26.2 倍。

• FPGA 相对 MCU 时延约提升 225 倍,吞吐约提升 225 倍。

• FPGA 能效明显高于 PC,且在实时性上显著优于 MCU。

---

5. 顶层接口建议(与开发板连接)

module inference_top(
    input  wire        clk,
    input  wire        rst_n,
    input  wire        in_valid,
    input  wire [127:0] feature_bus, // 8x16bit
    output wire        led_r,
    output wire        led_y,
    output wire        led_g,
    output wire        out_valid
);

• feature_bus[15:0] 对应 x0,依次到 x7

• out_valid 置位时 LED 状态稳定有效

---

6. 仿真与验证计划

1. 功能仿真:随机输入 + 边界阈值输入,检查分类一致性。

2. 时序仿真:检查流水延迟和有效信号对齐。

3. 上板验证:

• 固定测试向量 A/B/C 对应绿/黄/红

• 连续输入测试观察 LED 切换稳定性

4. 回归:脚本对比 Python 参考模型与 RTL 输出。

---

7. 可交付文件清单

• 文档:

• FPGA_AI_开题报告.doc

• FPGA_AI_详细设计说明.md

• RTL 源码(示例):

• rtl/inference_top.v

• rtl/feature_extract.v

• rtl/threshold_classifier.v

• rtl/led_indicator.v

---

8. 后续扩展(答辩加分项)

1. 将线性模型升级为 1 隐藏层 MLP(8-16-3)。

2. 增加 UART 在线参数加载,实现模型热更新。

3. 增加滑动窗口投票机制,降低 LED 抖动。