2. Lattice FPGA器件选型与资源评估

在嵌入式视觉平台设计中,FPGA 选型不是“挑一个容量最大的器件”,而是把视觉算法需求翻译成一组可量化的资源与约束指标,再与 Lattice 各系列器件的资源表逐项对齐。Lattice 面向视觉的器件大致分为三条路线:超低功耗小规模逻辑的 iCE40 系列、主打低功耗与 MIPI/D-PHY 硬核的 CrossLink 系列、以及面向中高端图像处理与 AI 推理的 ECP5 / CertusPro-NX / Avant 系列。选型的核心问题始终是:图像分辨率与帧率决定带宽,算法复杂度决定 DSP 与逻辑规模,缓存策略决定 BRAM 用量,而封装与功耗决定它能否真正装进目标产品。

一、先算带宽,再谈器件

视觉任务的第一个硬指标是像素吞吐率。以 1920×1080@60fps、RGB888 为例,单帧像素约 207 万,每像素 3 字节,则原始数据率约为 1920×1080×60×3 ≈ 373 MB/s。若前端是 MIPI CSI-2 的 RAW10 格式,则每像素 10 bit,数据率约为 1920×1080×60×10/8 ≈ 155 MB/s。这个数字直接决定接口选择:CrossLink-NX 与 CertusPro-NX 内置 D-PHY 硬核,可稳定支持 MIPI 输入;而 iCE40 系列通常只能通过 LVDS 或并行接口接收较低带宽的图像。

带宽还决定内部数据通路的位宽与时钟。若采用 8 bit 并行像素、100 MHz 像素时钟,则单通道吞吐为 800 Mb/s,足以覆盖 1080p@30fps 的灰度处理;若要处理 1080p@60fps 的 RGB,则需 16 bit 或双通道并行,或提高像素时钟到 150 MHz 以上。这一步的结论会直接排除一批逻辑规模足够但接口带宽不足的器件。

二、逻辑资源、DSP 与 BRAM 的三角平衡

逻辑资源(LUT/FF)决定控制逻辑、状态机、行缓存地址生成、图像格式转换等“胶水逻辑”的规模。一个典型的 1080p 行缓存控制器加 AXI-Stream 打包逻辑,大约消耗 1.5k~3k LUT;若再加上 Bayer 转 RGB、Gamma 校正、3×3 卷积等流水线,LUT 需求会上升到 6k~15k。因此 iCE40UP5K(约 5.3k LUT)适合极简的灰度阈值或简单边缘检测,而 ECP5-25(约 24k LUT)和 CertusPro-NX-100(约 100k LUT)才能容纳完整的 ISP 流水线。

DSP 资源决定乘加运算的并行度。以 3×3 卷积为例,每个输出像素需要 9 次乘加;若采用 8 路并行、每时钟输出 8 个像素,则每时钟需要 72 次乘加。ECP5 的 DSP48 每周期可完成一次 18×18 乘加,因此至少需要 72 个 DSP 才能在一个时钟内完成。ECP5-25 提供约 56 个 DSP,ECP5-45 约 128 个,CertusPro-NX-100 约 240 个。若算法是 Sobel 这类系数为 ±1、±2 的卷积,可用移位加法替代乘法,DSP 需求可大幅下降,这也是低功耗器件仍能跑边缘检测的原因。

BRAM 决定行缓存与帧缓存的容量。一行 1920 像素、每像素 8 bit,需要 1920 字节;若做 3 行缓存,约 5.8 KB。若要做 3×3 窗口的列缓存,还需额外存储。ECP5-25 提供约 1.0 Mb(约 128 KB)BRAM,足以支撑 1080p 的 3~5 行缓存;但若要缓存整帧 1080p 灰度图(约 2 MB),则必须外挂 DDR 或使用 Avant 系列的大容量片上存储。选型时要区分“行缓存够用”和“帧缓存必须外挂”两种情形,前者可省去外部存储器,后者则要评估 DDR 控制器占用的逻辑与引脚。

视觉任务需求 → Lattice 器件资源匹配关系 视觉任务需求 分辨率 / 帧率 1080p@60 / 720p@120 像素格式 / 接口 MIPI RAW10 / RGB888 算法复杂度 卷积 / ISP / 轻量 AI 缓存策略 行缓存 / 帧缓存 功耗 / 封装 电池供电 / 小尺寸 关键资源指标 带宽 MB/s · 像素时钟 LUT / FF 控制与流水线逻辑 DSP 乘加并行度 BRAM 行/帧缓存容量 功耗 / 封装 静态/动态 · 引脚数 Lattice 器件系列匹配 iCE40 UltraPlus 5.3k LUT · 8 DSP · 120 kb BRAM · 超低功耗 适用:灰度阈值、简单边缘检测、低分辨率 CrossLink-NX 17k~39k LUT · 内置 D-PHY · 低功耗 适用:MIPI 摄像头输入、720p 预处理 ECP5 12k~85k LUT · 28~128 DSP · 大 BRAM 适用:1080p ISP、3×3/5×5 卷积、DDR 缓存 CertusPro-NX / Avant 100k+ LUT · 240+ DSP · 大容量存储 · 高速 SerDes 适用:多路视觉、轻量 AI 推理、4K 前端 量化 匹配

三、功耗与封装:决定能否落地的最后一关

功耗评估要区分静态功耗与动态功耗。静态功耗主要由工艺与器件规模决定,iCE40 系列在待机时可低至数百微安,适合始终在线的唤醒型视觉;ECP5 与 CertusPro-NX 的静态功耗通常在几十毫瓦量级。动态功耗则与翻转率、时钟频率和资源占用成正比,可用 P ≈ α·C·V²·f 估算。以 ECP5-25 为例,若 100 MHz 时钟下约 30% 的逻辑翻转、DSP 使用率 50%,动态功耗大致在 0.3~0.8 W 区间(此为工程估算示例,实际需用 Lattice Radiant 的 Power Calculator 结合具体网表计算)。

封装约束常被忽视却最致命。小尺寸封装(如 QFN、caBGA)引脚数有限,若需要 MIPI 4-lane、DDR3 16 bit、多路 GPIO,引脚预算会迅速吃紧。例如 CrossLink-NX 的 72 引脚 QFN 封装,可用 IO 约 40 个,难以同时容纳 4-lane MIPI 与 16 bit DDR;此时应升级到 256 引脚 caBGA 或改用串行存储器方案。选型时应先列出接口清单,再核对目标封装的 IO 数与专用硬核引脚位置,避免“资源够但引脚不够”的返工。

四、选型决策表(示例)

下表给出一份可直接参考的选型对照示例,参数为典型值,实际设计请以最新数据手册为准。

器件系列 LUT DSP BRAM 典型视觉任务 封装/接口要点
iCE40 UltraPlus 5.3k 8 120 kb 灰度阈值、简单边缘 QFN,无 MIPI 硬核
CrossLink-NX 17k~39k 24~56 0.5~1.5 Mb MIPI 输入、720p 预处理 内置 D-PHY,小封装可选
ECP5-25 24k 56 1.0 Mb 1080p ISP、3×3 卷积 支持 DDR3,IO 较丰富
ECP5-45 44k 128 1.9 Mb 1080p 多算法流水线 caBGA,适合 DDR 缓存
CertusPro-NX-100 100k 240 7.2 Mb 多路视觉、轻量 AI 高速 SerDes,大容量片上存储
选型检查顺序建议:先由分辨率与帧率算出带宽,确定接口类型;再由算法并行度估算 DSP 与 LUT;接着由缓存策略估算 BRAM;最后用功耗预算与封装 IO 数做收敛。任何一步不满足,都应回到上一步重新权衡,而不是直接换更大器件。
常见误区:只看 LUT 数量选型,忽略 DSP 与 BRAM 的匹配。例如某算法 LUT 只占 40%,但 DSP 占用 120%,此时瓶颈在 DSP 而非逻辑;又如行缓存需求 8 KB,但器件 BRAM 被其他模块占满,也会导致实现失败。资源评估必须按模块分别核算,并预留 20%~30% 余量。

综合来看,Lattice 视觉选型的本质是把“像素流”翻译成“资源流”:带宽决定接口与时钟,算法决定 DSP 与 LUT,缓存决定 BRAM,产品形态决定功耗与封装。只有这四项同时收敛,选型才算完成。实际项目中,建议先用 Radiant 的 IP 核与 Power Calculator 做一次粗估,再在目标板上用真实图像流验证资源占用与温升,避免纸面参数与实测偏差带来的后期风险。