FPGA 究竟能做什么?逻辑粘合、实时控制、信号处理与 SoC——为什么 FPGA 在复杂算法上优于 DSP 和 ASIC #
初学者常问:FPGA 的应用范围到底有多大?这个问题的答案一直在变。早期的 FPGA 用来做逻辑粘合,也就是把不同的芯片连接起来。后来,实时控制让 FPGA 有了用武之地。灵活的协议实现让 FPGA 适应性很强。信号处理把 FPGA 推向了高端系统。而如今,片上系统(SoC)集成让 FPGA 有可能取代许多其他元件。但还有一个更深层的问题:与专用 DSP 或 ASIC 相比,FPGA 能否高效处理视频压缩(JPEG、H.264)?本文考察 FPGA 的处理模型(并行与流水线),解释为什么 FPGA 非常适合复杂算法,同时也指出它们在哪些方面存在困难(例如顺序文件系统管理)。
1. FPGA 应用的演变 #
FPGA 的应用经历了几个主要阶段:
- 逻辑粘合: 在 1990 年代,FPGA 连接不同的逻辑系列,填补 ASIC 之间的小空隙。例如:Xilinx XC4000 系列(现已停产)。
- 实时控制: 工业自动化、电机控制(PWM 生成、编码器反馈),使用 Altera Cyclone IV(EP4CE15)或 Xilinx Spartan-6(XC6SLX9)等器件。
- 灵活的协议实现: 实现可修改而无需硬件重新流片的定制接口(I2C、SPI、UART、PCIe、JESD204B)。现代示例:Xilinx Artix-7(XC7A100T)配备 6G 收发器,用于 PCIe Gen2/Gen3。
- 高端信号处理: JPEG 压缩、H.264/H.265 编码、雷达波束成形、医学成像。如 Xilinx Kintex-7(XC7K325T)或 Intel Arria 10(10AX115)等带有集成 DSP 切片。
- 片上系统(SoC): 硬核 ARM 处理器加 FPGA 逻辑阵列,例如 Xilinx Zynq-7000(XC7Z020)、Zynq UltraScale+(XCZU9EG)、Intel Cyclone V SoC(5CSXFC6)、Arria 10 SoC。
**关键点: FPGA 并不是万能方案,但在需要高吞吐量、低延迟和灵活性的场合,往往比固定功能的 ASIC 或串行处理的 DSP 更合适。**
2. 并行处理与顺序处理:FPGA 为何更胜一筹 #
图 1(概念图)展示了一个典型的控制器或处理器(CPU、DSP)顺序执行任务。软件本质上是顺序执行的,每个输出都要经过多个步骤(如取指、译码、执行、写回)。如果一个输出需要 5 个时间单位,四个输出就需要 20 个时间单位。即使使用 DMA 等硬件加速器,协调开销仍然限制着速度。
图 2 展示了 FPGA 的并行处理:多条独立的数据通路同时运行。同样的四个输出只需 5 个时间单位即可完成——速度提升 4 倍。但并行会占用更多逻辑资源(面积就是成本)。例如,用 4 个并行乘法器实现 4 通道 FIR 滤波器,DSP 切片用量是单通道设计的 4 倍。
图 3 展示了流水线处理:经典的折中方案。数据依次流过各级(如 stage1:输入,stage2:乘法,stage3:累加,stage4:输出)。流水线填满后,每个时钟周期输出一个结果。资源用量约为全并行实现的 1/4,而吞吐量仍接近并行水平。对于视频压缩(JPEG、H.264),流水线是理想方案:第一帧延迟可能较高,但后续帧以线速输出。
正因如此,FPGA 在实时视频编码中优势明显。Xilinx Zynq UltraScale+ 可用 DSP48E 切片(25x18 乘法器)和块 RAM 做行缓冲,搭建 H.264 编码流水线,在 10W 以内实现 1080p60 编码——通用 CPU 甚至许多 DSP 都做不到。
3. 案例:JPEG 与 H.264 压缩 #
视频压缩的传统方案有以下几种:
- 专用 ASIC: 如海思 HI3519、TI DM8148(ARM+DSP)。效率很高,但 NRE 费用昂贵、开发周期长,而且正如一位项目经理所说,“只有专家才玩得转”。成本不只是钱——工程师摸清一套复杂新环境所花的时间也相当可观。
- 纯 DSP: 单颗 DSP(如 TI TMS320C6678)受顺序瓶颈限制,做全高清 H.264 编码可能吃力。不少设计改用 DSP+FPGA 组合。
- 纯 FPGA: 完全可行。搜“JPEG encoder FPGA”或“H.264 FPGA”能找到大量开源和商用 IP 核。Xilinx 和 Intel 都提供参考设计(如 Xilinx H.264/H.265 IP 核)。
FPGA 压缩设计用片上存储器(Block RAM)做像素缓冲和变换系数,用 DSP 切片做 DCT/量化,用状态机做熵编码(CABAC/CAVLC)。例如,Arria 10(10AX115S2F45I2SG)可以实现完整的 H.264 baseline 编码器,占用约 40% 的逻辑和 60% 的 DSP 切片,处理 1080p、60fps 时功耗低于 15W。
**关键要点: 无论算法多么复杂、实时性要求多高,FPGA 都足以胜任——尤其是采用流水线时。第一个输出可能有较高的延迟(在大多数系统中可以接受),但后续输出是连续的。**
4. 存储与运算:内部资源与外部资源 #
实时处理在很大程度上取决于存储器。外部 DRAM(DDR3/DDR4)会增加复杂性,并因访问延迟和总线争用而降低速度。FPGA 使用块 RAM(BRAM)和 UltraRAM(在 UltraScale+ 中)实现低延迟、确定性的存储。运算方面:
- 加法、减法、乘法: 使用 DSP 切片或基于 LUT 的逻辑。Xilinx 7 系列 DSP48E 支持 25x18 乘累加;Intel Arria 10 DSP 块支持 27x27 乘法。
- 平方根、幂、指数: 这些在 FPGA 逻辑中并非原生支持。使用 CORDIC 算法(迭代)或查找表(LUT ROM)。对于视频压缩,很少需要 sqrt;量化表是预先计算好的。
FPGA 厂商为常见数学函数提供 IP 核(例如 Xilinx Floating-Point Operator、Intel ALTPIPE)。如果要做定制设计,设计人员则用 CORDIC 或基于 LUT 的近似来实现。
5. FPGA 不擅长什么 #
“没有 FPGA 做不了的工作”这话没错,但确实有些任务不适合用 FPGA。具体来说,就是高度顺序化、控制密集型、数据依赖不可预测的算法,比如文件系统管理(FAT32、SD 卡上的 exFAT)。这类任务涉及大量条件分支、分散的内存访问,还有理不清的状态机。在 FPGA 里搭一个庞大的状态机不是不行,但设计、调试和维护都会变得极其复杂。遇到这类任务,用一颗小型微控制器(ARM Cortex-M、RISC-V),或者在 FPGA 内部放一个软核处理器(MicroBlaze、Nios II),都是更好的办法。
所以,FPGA 最适合以数据流为主的算法(流视频、数字滤波、FFT、数据包处理),而不是以控制为主的算法。
6. 常见应用的推荐 FPGA 型号 #
| 应用领域 | 推荐系列 | 示例型号 | 关键特性 |
|---|---|---|---|
| 逻辑粘合 / 低成本控制 | Intel Cyclone IV、Xilinx Spartan-6 | EP4CE15F23I7N、XC6SLX9-2FTG256I | LUT 数量少、支持传统 I/O 标准 |
| 实时电机控制 | Intel Cyclone V、Xilinx Artix-7 | 5CEFA7F23I7N、XC7A35T-1FTG256C | 内置 ADC(Xilinx XADC)、PWM 发生器 |
| 高速协议桥接(PCIe、JESD204B) | Xilinx Kintex-7、Intel Arria 10 | XC7K325T-2FFG900I、10AX115S2F45I2SG | SerDes 速率高达 12.5 Gbps、PCIe Gen3 硬核 IP |
| 视频压缩(JPEG、H.264) | Xilinx Zynq UltraScale+、Intel Cyclone V SoC | XCZU9EG-2FFVB1156I、5CSXFC6D6F31I7N | ARM 核 + FPGA 逻辑阵列、DSP 切片、BRAM |
| 雷达 / 医学成像(高 DSP 密度) | Xilinx Virtex UltraScale+、Intel Stratix 10 | XCVU13P-2FIGD2104E、S10MX(1SG280HU2F50E2VG) | 数千个 DSP 切片、高带宽内存(HBM) |
7. 成本效益:FPGA、DSP 与 ASIC 对比 #
- ASIC: 大批量(数百万颗)时单颗成本最低,但 NRE 最高(掩膜版组,$10M+)。最适合固定功能的大规模生产。
- DSP: NRE 适中,编程更容易(C 语言),但顺序瓶颈限制了视频吞吐量。TI 的 C66x 可达到约 40 GMAC/s;而 Arria 10 这类 FPGA 可达到 >1000 GMAC/s。
- FPGA: 无 NRE(开发时间除外),灵活,性能高。相同吞吐量下,单颗成本高于 ASIC,但低于 DSP。非常适合中等批量(100-100k 颗)或算法快速演进的应用。
以 H.264 编码器为例,FPGA 方案(如 Xilinx Zynq)批量时每颗芯片成本可能为 $50-150,而 ASIC 方案(如果 >500k 颗)可能降至 $10-20。但 ASIC 的设计工作量(12-24 个月)和风险,对于生命周期不确定的产品来说可能并不值得。
