Skip to content

FPGA

FPGA(Field Programmable Gate Array,现场可编程门阵列)是一种可编程硬件技术,从硬件层面上实现复杂的可编程性。与传统的 CPU 执行软件代码不同,FPGA 通过内部的大量可配置逻辑块和可编程互连资源,让开发者可以在硬件层面实现电路功能,一旦配置完成,电路就像专用集成电路(ASIC)一样并行执行。

FPGA 有两种主要形态:纯 FPGA 芯片和 FPGA + ARM CPU 组成的 SoC(如 Xilinx Zynq 系列)。纯 FPGA 需要外部处理器配合使用,适合纯粹的硬件加速场景;FPGA SoC 则将 ARM 处理器和 FPGA 逻辑集成在同一芯片上,通过片上总线高速互联,适合需要软件和硬件紧密协同的应用。其外观形态和普通的 SoC 芯片没有太大的差异,通常也是 BGA 封装。

应用场景

FPGA 的最大优势在于硬件级的并行性和可重构性。在信号处理领域,FPGA 可以同时处理多个数据流,实现比 CPU 高得多的吞吐量;在硬件原型验证领域,FPGA 可以模拟尚未流片的 ASIC 芯片,大幅降低验证成本;在高速接口领域,FPGA 可以实现定制化的串行收发器,支持各种通信协议。

典型的应用包括图像视频处理(实时编解码、图像增强)、通信基站(基带信号处理、协议加速)、高频交易(超低延迟决策执行)、数据中心(硬件加速卡、网络卸载)、加密货币挖矿(并行哈希计算)等。这些场景的共同特点是数据吞吐量大、算法相对固定、对延迟敏感,非常适合用 FPGA 实现硬件加速。

开发方式

FPGA 开发使用硬件描述语言(HDL),最常用的是 Verilog 和 VHDL。与软件编程不同,HDL 描述的是电路的结构和行为,编写的是"并发"执行的逻辑电路。Verilog 语法类似 C 语言,学习曲线相对平缓,在国内 FPGA 开发中应用最广;VHDL 语法严谨,适合大型项目,在欧洲和军工领域使用较多。

FPGA 开发流程包括设计输入、综合、布局布线、比特流生成、下载配置等步骤。综合工具将 HDL 代码转换为门级网表,布局布线工具将逻辑电路映射到 FPGA 的物理资源上。整个流程可能需要数小时(对于大型设计),调试也比软件复杂得多,需要使用逻辑分析仪、时序分析工具等。

与 SoC 的对比

FPGA 与普通 SoC 芯片的根本区别在于计算范式。SoC(如 ARM 处理器)采用串行计算模式,通过指令序列驱动运算单元执行,灵活性好但单线程性能有限;FPGA 采用硬件并行计算模式,通过配置电路实现特定功能,一旦配置完成就以电路速度运行,延迟可预测且极低。

成本方面,同等性能下 FPGA 的成本远高于 ASIC,但 FPGA 的可重配置性使其在小批量、快速迭代的场景中极具优势。功耗方面,FPGA 实现特定功能的功耗通常低于通用处理器,但高于专用 ASIC。开发门槛方面,FPGA 开发需要数字电路知识,硬件调试复杂,人才培养周期长。

在实际工程中,FPGA 和 SoC 往往是互补而非竞争关系。很多嵌入式系统采用"处理器 + FPGA"的异构架构,处理器负责控制逻辑和用户界面,FPGA 负责数据密集型计算和高速接口,两者通过 PCIe、SRIO 或 AXI 总线协同工作,发挥各自优势。