基于 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 < 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 抖动。