
英特尔、赛灵思FPGA这三个词放在一起本身就是硬件圈的一出大戏。过去很多年FPGA 给人的印象一直是“胶水逻辑”哪块电路缺个接口、少个译码塞一片 FPGA 进去补位完事。那时候谁要说 FPGA 能成为市场焦点估计连做 FPGA 的工程师自己都不太信。但最近几年风向明显变了英特尔完成对 Altera 的收购后一路把 FPGA 往数据中心里推赛灵思则被 AMD 纳入麾下直接变成 CPUGPUFPGA 整个大棋局里的关键棋子再加上 AI 推理、自动驾驶、5G 通信、Chiplet 这些概念轮番上场FPGA 算真正迎来了第二春。这篇文章我打算从行业格局、技术驱动力、开发路线、典型项目、选型技巧这几个角度把这场“双雄争霸”背后的门道拆开讲清楚。不管你是刚准备入门的在校学生还是想从嵌入式转过来做硬件加速的工程师又或者只是好奇 FPGA 凭什么重新翻红的开发者这篇内容应该都能给你一些能直接落地的东西。1. 双雄争霸的前世今生FPGA 为什么值得再打一场1.1 从胶水逻辑到算力核心FPGA 的定位已经彻底变了要理解 FPGA 为什么能开启第二春先得回到它的底层逻辑。FPGA 的核心单元是查找表加可编程互联查找表本质上就是一块可以任意改写内容的 SRAM你往里面写入真值表组合逻辑就成立了可编程互联则决定信号怎么走两条路径之间的延迟因此类似。这种架构意味着一个核心理念硬件是可改写的你烧进去的是电路本身而不是指令。过去 FPGA 干的大多是协处理、桥接、逻辑粘合的活儿市场规模撑死几十亿美元跟 CPU、GPU 完全不是一个量级。之所以现在被重新审视根源在于整个计算行业的玩法变了摩尔定律放缓以后通用 CPU 的性能增长越来越吃力而 AI、网络、存储、视频处理这些场景又对延迟、带宽、功耗提出了完全不同维度的需求。GPU 能解决并行计算问题但它指令流式的架构不适合所有任务ASIC 能搞定特定场景可流片费用高、周期长、改版更是噩梦。FPGA 正好卡在中间比 CPU 有更灵活的并行硬件比 GPU 有更低的确定性延迟比 ASIC 有“改完重新烧一把”的容错空间。所以你要是现在还拿“FPGA 是胶水芯片”的眼光看它就完全跟不上节奏了。新一代 FPGA 里边不光有可编程逻辑还集成了 SerDes、PCIe 硬核、DDR 控制器、DSP Slice甚至直接塞进一整个 ARM 或者 RISC-V 处理器。硬核 CPU 加可编程逻辑加专用加速器这个组合解决的就是“通用性、性能、灵活性”三者不可兼得的难题。1.2 英特尔与赛灵思两家巨头各自的算盘完全不同英特尔 2015 年花 167 亿美元把 Altera 收进怀里目的非常明确数据中心的 CPU 市场已经接近天花板必须给服务器平台增加新的差异化筹码。Altera 的 FPGA 加上英特尔的至强处理器、傲腾存储、网络控制器组成一台服务器里“计算加速存储网络”的闭环。英特尔后来的 Agilex 系列就是奔着这个方向去的硬化的 PCIe 5.0、支持 DDR5/HBM、集成各种加速块摆明了要跟英伟达和各类 DPU 抢数据中心加速的生意。赛灵思则走了另一条路。2022 年被 AMD 收入囊中之后它不再只是“FPGA 公司”而是 AMD 整个异构计算战略中最关键的一块拼图。高端 Versal 系列采用“自适应计算加速平台”的概念把 ARM 核、AI Engine、可编程逻辑、各种高速接口揉进一颗 SoC 里配上 AMD 的 CPU、GPU构建一套完整的产品矩阵。英特尔的打法是“我什么都有你要买就买整套平台”AMD 的打法则是“我的 CPU 加 GPU 加 FPGA 灵活组合按场景给你方案”。两家厂商在产品和市场策略上的差异直接影响工程师做选型。被动的是英特尔用了自己家的工艺和工具链Quartus Prime 配 ModelSim Intel Edition赛灵思则跟着台积电走先进工艺用 Vivado 和 Vitis 打天下。从市场份额看赛灵思在通信、军工、医疗这些传统强项上根基很深英特尔则凭借 Cyclone/MAX 系列在教育、工业控制领域占了不少地盘。争霸到现在已经不是单纯比谁家 LUT 多、谁家 DSP 快而是比生态、比工具易用性、比开发者友好程度。2. 为什么说 FPGA 迎来第二春AI、数据中心与边缘的新机会2.1 AI 推理的真实价值FPGA 算得比 GPU 更“聪明”一提 AI大多数人第一反应就是 GPU。确实大模型训练的绝大多数浮点运算都是 NVIDIA 的地盘但推理尤其是对延迟敏感、对功耗敏感、模型还在频繁迭代的场景FPGA 的机会反而更大。我看过一个很经典的例子广告推荐系统中的排序模型线上要求毫秒级响应模型结构又总在改动如果用 GPU每次改完模型都要重新优化 CUDA 内核还要处理批处理延迟换 FPGA 以后因为模型直接映射成电路逻辑数据从进到出几乎是确定性的延迟而且改模型只需要重新综合生成比特流不用换硬件。PyTorch 和 FPGA 结合的工具链这两年也越来越成熟Xilinx 的 Vitis AI 可以直接把 TensorFlow 和 PyTorch 训练好的网络量化和编译成 DPU 指令然后部署到 FPGA 上跑。这种做法非常适合边缘场景比如工业质检摄像头、医疗内窥镜、变电站巡检机器人部署环境功耗严格受限但又不确定算法会不会经常调整这时候 FPGA 的“硬件可重配置”就是巨大优势。你拿去和 ASIC 比ASIC 功耗确实更低但一次流片几百万美元起步模型一换代就废了和 GPU 比GPU 性能强归强但功耗和延迟下不来。FPGA 夹缝里的这个位置恰恰是市场最需要的。2.2 从数据中心到汽车雷达边缘场景比想象中更能打AI 只是第二春的一部分真正让 FPGA 市场重新扩容的是整个算力架构的多元化。数据中心里SmartNIC、DPU 大量用 FPGA 做网络协议处理、加解密加速、NVMe 虚拟化因为协议的演进速度远快于 ASIC 的流片周期用 FPGA 可以上线后继续改功能。通信基站里5G 的波束成形、信道估计、前传接口需要大量高吞吐并行处理FPGA 一直是主力的基带加速器件。汽车上激光雷达的 ToF 测距、毫米波雷达的信号处理、电池管理系统的故障检测这些都对实时性要求极高FPGA 的低延迟特性非常契合。值得一提的是 FPGA TDC 直方图这个方向。TDC 是时间数字转换器用来精确测量时间间隔典型应用就是激光雷达的飞行时间测距。FPGA 里的进位链本身具有很小的门传播延迟可以用它做一个细分时间的测量链配合直方图统计可以在单颗 FPGA 上实现几百皮秒甚至更高精度的时间测量。做这类项目的人往往不是传统 FPGA 工程师而是从物理、光电子、仪器仪表方向转过来的可见 FPGA 的适用范围已经远超出电子信息工程一个专业。再比如基于 FPGA 的干涉仪测向系统天线阵列的相位差计算需要高速并行处理FPGA 直接在硬件上做复数运算和角度解算比 DSP 方案的实时性高出一个量级。3. FPGA 开发这件事从第一行代码到完整项目3.1 两大阵营的工具链差异Vivado 和 Quartus到底怎么选想学 FPGA 或者准备用 FPGA 做产品第一关就是工具链。赛灵思那边是 Vivado老一点的还有 ISE英特尔那边是 Quartus Prime配合 ModelSim-Intel FPGA Edition 做仿真早期的 Quartus II 配上 ModelSim 是很多人入门的记忆。Vivado 给我的整体感觉是“工程化”很强综合、布局布线、时序分析、功耗估计都能在一个界面里完成而且脚本化支持做得好Tcl 命令基本可以自动化走完整个流程。对于小规模逻辑设计Vivado 的免费 WebPACK 版本已经够用很多大学实验室和中小公司都在用。Quartus Prime 的免费版Lite 版同样支持大多数中低端器件关键是用起来界面更直白对新手稍微友好一点尤其 Cyclone 系列开发板的例程非常丰富。不过工具链这个东西真没有绝对的好坏。我更建议你根据手里的开发板来定板子是什么品牌官方教程基于哪套流程就先用哪套流程。先跑通一个最小系统再回头深挖时序约束、时序收敛这些硬核内容否则一上来就被 Vivado 或 Quartus 的各种概念吓跑那就太可惜了。时序约束是 FPGA 开发里最考验水平的环节很多新手代码写得很顺结果上板子跑几兆时钟就开始出现偶发错误就是因为忘了加约束或者约束给得不够紧。3.2 学 FPGA 的正确路线从数码管到状态机别一上来就啃高速接口经常有人在群里问 FPGA 怎么入门我的答案一直很简单先把手头板子能点亮的资源全部点亮一遍。比如用 Verilog 或 VHDL 写一个数码管动态显示扫描刷新、位选段选、延时消隐一套流程下来你对时钟分频、计数器、模块例化这几个最基本的概念就都有体感了。然后再做一个出租车计价器之类的综合性小项目把按键消抖、状态机、数码管显示整合在一起这时候你会开始意识到时序和状态的复杂性。FPGA 上手和 MCU 上手最大的区别就是你必须建立并行思维。单片机写代码是顺序执行的一行一行跑FPGA 里所有 always 块或者 process 块理论上都是同时开工的你写代码时心里要有一张“哪些电路在同时跑”的图。这也是很多嵌入式工程师刚转 FPGA 时最别扭的地方。练手项目最好朝这个方向设计多模块并行工作通过握手信号或 FIFO 交互比如用 FPGA 实现一个信号发生器用按键设置频率DDS 波形生成模块、按键扫描模块、数码管或 LCD 显示模块并行工作这个项目做完静态逻辑的基本功就算过关了。3.3 接口和协议SPI、I2C、UART、LVDS、MIPI 这些到底怎么玩FPGA 的强大之处在于接口协议可以自己定义、自己实现。I2C 和 SPI 是相对容易上手的网上也很容易找到 FPGA I2C 读写 EEPROM 的代码比如对 AT24C04 做一个标准的 I2C 控制器实现页写和随机读。SPI 更简单主模式实现一个移位寄存器加控制逻辑即可。LVDS 接收这种就要小心了它不是纯粹的逻辑设计还涉及 LVDS 的电平标准、输入差分对、内部延迟调整这类场景通常出现在 ADC 采集、相机 sensor 接口上。还有 MIPI手机摄像头那套协议在 FPGA 里实现 MIPI Rx 一般是调用厂商的硬核 IP 或者专用的 PHY 层硬核否则纯逻辑去解 MIPI 的 D-PHY 时序光眼图校准就够喝一壶。很多初学者一上来就挑战 MIPI很容易卡在高速差分线上的阻抗匹配问题所以我建议先把 LVDS 吃透再碰 MIPI。以太网方面FPGA 实现三速以太网已经是非常成熟的方案软核 MAC 加上外部 PHY 芯片在一个中等规模的 FPGA 上都能跑起来也是很多通信类项目的基础。4. 典型项目实操思路与问题排查实录4.1 图像处理项目的完整流程去马赛克只是第一步FPGA 图像处理是一个永远不缺流量的方向属实的实战型课题。最简单的图像输入来源是摄像头现在很多开发板直接把 MIPI 摄像头接口做到板子上传感器通过 MIPI 把 Bayer 格式的原始数据传进来FPGA 第一件要做的事就是把 MIPI 数据流恢复成像素数据这里涉及通道对齐、字节重排、行缓冲等一堆细节。拿到 Bayer 原始数据之后首要任务是 ISP 去马赛克也就是把每个像素只有单色分量的 Bayer 图插值成 RGB 三通道图。最常用的双线性插值法在 FPGA 里用两行行缓存加卷积窗口就能实现对中端 FPGA 来说资源占用很小。要想效果好一点可以再做白平衡、色彩校正矩阵、Gamma、降噪、边缘增强。这里我要强调一点FPGA 图像处理和 OpenCV 完全两个世界OpenCV 里你写一个 for 循环就是 300 毫秒FPGA 里要在同样的时间内处理 1080p60 视频数据吞吐是每秒 2 亿多个像素每个像素的运算必须在一个时钟周期内完成所以几乎所有算法都要被转换成流水线结构。如果你想系统地做一个图像项目建议选择“CMOS 摄像头 MIPI 接收 ISP 处理 LVDS/HDMI 输出显示”这样的完整链路。最后你会发现真正花时间的不是算法本身而是接口时序、行缓存管理、帧同步这些工程问题。4.2 DDR4 上电就 cal fail别急着怀疑颗粒坏了存储是 FPGA 项目绕不开的因为大容量图像、数据缓冲不可能都放在片上 BRAM 里外部 DDR 一个是最常规的方案。但 DDR4 控制的配置对初学者来说坑比想象中多。最常见的问题就是板子一上电DDR4 初始化停留在 cal fail。很多人第一反应是原理图画错了或者颗粒坏了其实大部分情况不是。DDR4 的 training 过程对时序非常敏感最首要排查的是时钟频率是否超出器件和颗粒的支持范围其次要确认参考时钟的电压、板卡电源纹波是否过大尤其是 VDDQ 和 VTT 电源再次地址线、数据线的等长约束有没有做对DDR4 在几百兆赫兹下信号完整性问题会直接导致训练结果异常。还有一个隐蔽问题很多开发板用的 SOC FPGA 内部硬核 DDR 控制器和纯逻辑实现软核控制器的时序要求完全不同拿到别人的工程后器件型号、bank 配置、时序参数稍有出入cal 就过不去。排查这类问题的时候要养成看日志的习惯DDR 控制器在初始化时会输出每个阶段的训练结果它会直接告诉你卡在 write leveling 还是 read training这样缩小范围再检查硬件效率会高很多。4.3 FPGA 烧录起不来和 Xilinx、Intel 的配置模式坑还有一个经常让人抓狂的问题工程综合、实现都通过了下载器也认了但烧录之后毫无反应。排查顺序应该是先看配置模式跳线对不对再看电源序列对不对再检查时钟有没有起振最后检查复位逻辑。很多板子上 FPGA 有多种启动模式JTAG 配置、QSPI Flash 启动、SD 卡启动等等跳线如果停留在 JTAG 状态你明明把比特流烧进 Flash 了上电后 FPGA 不会从 Flash 自启动表现确实是“烧录起不来”。另外FPGA 对电源上电时序有严格的要求VCCINT、VCCBRAM、VCCAUX 必须按顺序来违反时序轻则启动异常重则损坏器件。如果这些都没问题就回到代码本身。很多人喜欢写个计数器做复位但 FPGA 上电后时钟可能还没稳定计数器状态不确定导致后续模块处于未知状态。我见过不少人卡在这种问题上卡了一整天最后发现是复位逻辑写得太随意。建议所有模块的复位都使用外部复位芯片或 FPGA 内部的上电复位 IP不要用逻辑自己“制造”复位。4.4 常见问题速查表现象优先排查方向实操建议DDR4 cal fail电源噪声、时钟频率、时序约束看初始化日志定位是哪个阶段失败烧录后无反应配置模式跳线、启动源选择确认跳线是否在 QSPI/Flash 模式时序分析报很多违例约束缺失、跨时钟域处理不当先加主时钟和输入输出延迟约束LVDS 数据不稳定差分对引脚分配错误、端接电阻查看器件手册确认专用时钟引脚位置I2C 偶然卡死SDA 被拉低、状态机缺少超时在状态机里加入超时重发逻辑5. 选型与生态芯片型号、开发板与职业方向5.1 型号那么多开发板到底怎么选芯片怎么挑现在 FPGA 市场百花齐放英特尔有 Cyclone、MAX、Arria、Stratix、Agilex赛灵思有 Spartan、Artix、Kintex、Virtex、Versal还有国内的高云、安路、易灵思以及各种新型高性能产品体系。对入门来说赛灵思的 Artix-7 系列和英特尔的 Cyclone 10 系列最合适性价比高资料多例程丰富而且这两大厂商的免费工具链都支持。新手买板子尽量不要选太偏门的小厂商板子否则遇到问题连资料都找不到。做产品选型时考虑维度就多了逻辑资源、DSP 算力、高速收发器速率、内存带宽、功耗、处理器硬核、型号生命周期。比如要做图像 ISPArtix-7 级别的性能略显紧张Kintex/Virtex 或 Agilex 才合适要做基带和雷达处理DSP Slice 的个数和 SerDes 的数量会是瓶颈。另外一点经验尽量选内部带硬核 PCIe 和 DDR 控制器的器件因为软核 IP 实现 PCIe 不仅占用大量资源性能也远不如硬核开发周期更长。5.2 FPGA 算法工程师到底是个什么角色热搜词里有一条“fpga算法实现属于什么工程师”这个问题我在面试中也经常遇到。FPGA 算法工程师本质上是一个跨界职位需要同时懂算法和懂硬件。算法工程师用 MATLAB、Python 建模验证算法逻辑FPGA 工程师则把算法映射成可综合的 RTL。两者结合起来的 FPGA 算法工程师核心能力是“定点化”和“流水线化”把浮点运算转成定点运算把串行循环展开并打散成多级流水在资源、吞吐、延迟、精度之间做权衡。更细分的话有图像处理方向的 ISP 工程师有通信物理层的信号处理工程师还有做 RISC-V CPU 原型和验证的硬件工程师。现在“基于 FPGA 的 RISC-V 通用处理器设计”这类项目非常流行本质上是用 FPGA 做处理器微架构验证这对理解 CPU 流水线、存储层次和总线协议有极大帮助。如果你想走 FPGA 算法这条路我建议的核心技能栈是数字电路基础、Verilog 或者 SystemVerilog、时序约束、接口协议再加一门 Python 做算法验证。5.3 软件定义硬件PYNQ、HLS 与 PyTorch FPGAFPGA 开发的门槛一直是很多团队顾虑的点于是“软件化”就成了一个趋势。赛灵思的 PYNQ 框架把 Python 和 FPGA 绑在一起你可以用 Jupyter Notebook 调用 FPGA 的硬件库做图像、AI 加速的实验底层逻辑已经封装成 overlay不用一行 RTL。它很适合快速原型验证也有越来越多算法工程师把它当成“可以改硬件电路的嵌入式平台”来用。与此同时HLS 高层次的综合工具也在成熟Vivado HLS 里能把 C/C 代码直接综合成硬件逻辑。我的体会是对算法类项目用 HLS 的迭代速度比纯 RTL 快不少但要做极致性能和资源优化底层时序问题还是绕不开 RTL。所以我的建议是HLS 可以学但不要当成逃避数字电路基础的借口真正要深耕RTL 永远是基本功。至于 PyTorch 和 FPGA 的结合整套链路现在仍然偏初级但它指向一个明确方向未来 FPGA 的使用门槛会持续降低开发者不需要完全懂硬件也能把神经网络部署到 FPGA 上。6. 未来格局Chiplet、eFPGA 与生态争夺6.1 Chiplet 和先进封装双雄的角力场FPGA 的下一仗战场在封装和芯片集成。传统一颗 FPGA 上要集成越来越多的功能如果全部做成一个大 die良率、功耗、成本都会失控。Chiplet 思路是把 CPU 计算核、FPGA 逻辑块、AI 加速引擎、内存控制器做成不同的小芯粒然后用先进封装把它们拼到一颗芯片里。英特尔和 AMD 都在大力推进这个方向前者有 EMIB 和 Foveros 的封装技术后者有 Infinity Fabric 总线加上赛灵思的 Versal 架构。Chiplet 带来的好处不只是性能提升更重要的是系统设计的灵活性。你可以用一颗带 FPGA 芯粒的处理器芯片按需配置硬件加速功能也可以用 FPGA 芯粒补足 ASIC 芯片的可重配置能力。在这个架构下“FPGA 企业”和“CPU 企业”的边界会越来越模糊英特尔的 Agilex 已经实现用 EMIB 把 FPGA fabric 和其他小芯片拼在一起AMD 则把 Xilinx 的 Versal 整合进统一的产品路线。对于系统设计者Chiplet 意味着一块 PCB 上可以放下一整套完整的异构计算系统接口密度和功耗都大幅优化。6.2 eFPGA 和国产 FPGA让这个行业变得更热闹除了传统两大阵营eFPGA嵌入式 FPGA也是一个值得关注的方向。它把 FPGA 可编程逻辑以 IP 形式嵌入 SoC 或 ASIC 中客户可以在流片之后继续更改部分硬件逻辑对需要频繁升级协议、修正 bug 的应用很实用。虽然 eFPGA 的规模和性能不如独立 FPGA但“可编程性”本身就很有价值很多芯片公司已经开始研究把 eFPGA 塞进自己的产品线里。国内的高云、安路、紫光同创在 FPGA 领域也有了不少进展开发工具逐渐可用虽然生态还不够丰富在消费电子、工业控制这些对成本和交付周期敏感的领域已经拿到了不少份额。易灵思则在低功耗、小尺寸 FPGA 上走出自己的路线。国产 FPGA 的成熟对整个行业是好事至少供应链更安全、价格更有竞争力。不过做产品选型时要注意除了芯片本身你还得考虑工具链的成熟度、文档质量、原厂支持力度这些隐形成本往往比芯片单价更影响项目进度。6.3 给 FPGA 从业者和学习者的几句实在话FPGA 这个圈子技术迭代比互联网慢但积累的壁垒非常高。从查找表结构到时序收敛从接口协议到系统架构每一个环节都需要扎实的基本功。很多年轻人觉得 FPGA 门槛高不如去卷软件但恰恰因为门槛高真正能把 FPGA 吃透的人一直稀缺。AI 和异构计算时代FPGA 又给了这个行业一波新红利市场价格也在慢慢回暖。我的建议有两方面如果你是学生能不能买个几百元的入门开发板把数电基础打牢把采样、时序、状态机这些概念理解透如果你已经在职多花时间研究一个完整的高速链路项目比如从摄像头采集到 DDR 缓存再到显示输出这类“全链路”经验远比零散的模块练习值钱。FPGA 的“第二春”不是凭空出现的它靠的是整个算力行业对灵活性和确定性并存的追求而这种追求恰恰是这个技术最擅长的。我在实际开发中最大的体会是FPGA 不应该是你的唯一技能但它是最能锻炼硬件思维的技能。它逼着你理解什么叫并行、什么叫延迟、什么叫时序收敛这些理解反过来会让你做嵌入式、做芯片、做系统设计时都更有底气。英特尔和赛灵思的争霸还会继续但对我们工程师来说真正要紧的从来不是站队而是把手中的那片可编程逻辑变成真正能解决实际问题的产品。