跳转到主要内容

砍掉DDR之后,SoC FPGA还能怎么玩?

作者:电子创新网编辑部

如果有人告诉你:一颗SoC FPGA可以不接DDR,也能跑完整的实时系统,甚至还能做边缘AI。

很多工程师的第一反应可能是:这靠谱吗?

毕竟在过去相当长一段时间里,嵌入式SoC的典型套路几乎已经固定下来:CPU + Linux + DDR + Flash。

处理器负责跑软件,Linux负责生态,DDR负责内存,Flash负责系统存储。如果还要做AI,再加点NPU或者GPU。这套架构没有什么问题,甚至可以说已经非常成熟。

但问题恰恰在这里——成熟的架构,很容易变成默认架构。

很多项目一上来就规划DDR,并不是因为应用真的需要DDR,而是因为“Linux要用DDR”“大家都这么设计”。

于是,一个原本可能只需要几百KB代码和数据、几个实时任务以及少量外部缓存的产品,最后被套进了一个完整Linux+DDR的系统框架。

这时候,一个很有意思的问题就出现了:如果把DDR砍掉,SoC FPGA还能怎么玩?

答案可能比想象中更有意思。

一、砍掉DDR,真正砍掉的不是一颗内存芯片

先说清楚一点:DDR当然不是“没用”。

对于需要大容量内存、大带宽数据搬运、复杂Linux软件栈的系统,DDR依然是非常合理的选择。真正值得讨论的是:是不是所有SoC FPGA应用都需要DDR?

这是两个完全不同的问题。

DDR存在的价值,首先来自带宽和容量。但很多边缘设备的实际工作负载,并没有那么大。

比如:

  • 工业控制
  • 电机驱动
  • 传感器融合
  • 实时通信
  • 数据采集
  • 信号处理
  • 小型视觉AI
  • 状态监测

这些应用真正关心的可能是:低延迟、确定性、低功耗、快速启动和长期稳定运行。

它们并不一定需要几GB内存。

如果一个设备每秒只处理几帧数据,却为了“以后可能会用到”而加上DDR,这实际上就是一种典型的系统过度设计。

所以,“去DDR”的真正含义并不是:DDR不重要了。而是:不要让DDR在应用需求之前成为系统架构的默认答案。

二、DDR最贵的地方,可能根本不在BOM

工程师谈DDR,经常先想到BOM。但如果从产品开发的角度看,DDR真正麻烦的地方往往不在器件价格。而在它后面跟着的一整套工程工作。

DDR设计通常意味着:高速布线、阻抗控制、长度匹配、信号完整性、电源完整性、PHY调试以及反复的硬件验证。

换句话说:

你买的不只是一颗DDR。

你还买了一套复杂的PCB设计工作。

更麻烦的是,这些成本不会直接体现在BOM里。

但它们会体现在:研发周期、工程师投入、PCB层数、打样次数和产品调试时间。尤其对于工业设备、边缘节点和小批量产品来说,DDR带来的系统复杂度,有时候比它本身的价格更加值得关注。

再往后看,还有两个问题:功耗和供应链。

DDR并不是一个“插上就不用管”的器件,它需要配套电源、PHY和控制器。对于电池供电或者散热空间有限的设备,这些额外开销都会变成负担。

所以,如果应用真的不需要DDR级别的带宽:把DDR拿掉,实际上是在给整个系统做减法。

三、真正有意思的地方:1.5MB片上存储到底能干什么?

这里就到了SoC FPGA架构的核心。以Microchip PolarFire SoC为例,其处理器子系统提供了至少1.5 MB可用片上Scratchpad存储空间

采用 PolarFire SoC FPGA 的 SMP Zephyr 架构。(图源:Microchip)

传统思路下,看到1.5MB,很多人第一反应是:“这么小,怎么可能当主内存?”

但这个问题的前提是:你准备用什么操作系统?

如果是Linux,1.5MB当然远远不够。

但如果换成Zephyr,情况完全不一样。

Zephyr最大的特点之一,就是小。

一个针对PolarFire SoC的最小化Zephyr内核,规模大约只有:20 KB。

这意味着什么?

意味着操作系统本身已经不再是内存大户,剩下的片上空间,可以留给:

  • 驱动
  • 网络协议栈
  • 线程
  • 应用程序
  • 数据Buffer
  • AI推理

这时候,1.5MB的片上存储就突然有了另一种意义:它不再只是缓存,而可能成为整个系统真正的运行空间。

这就是“Zephyr-first”架构真正有意思的地方。

四、Zephyr不是“缩水版Linux”,它解决的是另一类问题

如果把Zephyr理解成一个“更小的Linux”,其实还是没有抓住重点。

Linux的价值在于:功能丰富。

Zephyr的价值则在于:不需要那么多功能。

这是两种完全不同的设计哲学。

如果设备需要:

  • GUI
  • Python
  • 容器
  • 大型文件系统
  • 丰富的用户空间软件
  • 大量成熟中间件

Linux依然是最佳选择之一。

但如果设备只需要:采集数据 → 处理 → 控制 → 通信

那么Linux可能就显得太重,尤其是实时系统。

工业控制真正关心的往往不是:你的CPU跑了多少分?而是:这个任务能不能在确定的时间内执行?

Zephyr的优势就在这里。它不需要为庞大的软件生态承担额外系统开销,可以让处理器更加直接地服务于应用任务。

五、四核RISC-V + Zephyr SMP:这时候CPU才真正开始“干活”

PolarFire SoC还有一个很重要的特点:四核U54 RISC-V应用处理器。

Microchip PolarFire SoC FPGA 搭载 Zephyr SMP,运行于 4 个 U54 应用核心。(图源:Microchip)

如果配Linux,四个核心当然可以运行复杂的软件栈。但换成Zephyr SMP之后,架构思路发生了变化。多个线程可以真正分布到不同核心上运行,同时支持Core Affinity和核心绑定,这对于实时应用尤其重要。

例如:

一个核心处理通信;

一个核心处理传感器;

一个核心运行控制算法;

另一个核心处理AI或者数据分析。

系统可以根据任务特点进行更加明确的资源划分。

这里有一个非常关键的变化:CPU不再是一个“运行操作系统的通用资源”,而开始成为一个可以被工程师精细调度的计算资源。

这才是SMP Zephyr和SoC FPGA组合起来之后真正值得关注的地方。

六、300MHz为什么可能比600MHz更有意义?

这听起来有点反直觉。

PolarFire SoC应用核心最高可以运行到600 MHz。

但文章给出的观点是:运行Zephyr时,300 MHz就可能完成相同甚至更高的有效应用吞吐,同时降低动态功耗。

这里真正值得看的不是数字,而是背后的逻辑。

Linux为了保持良好的系统响应,需要承担:

  • 内核调度
  • 后台任务
  • 驱动
  • 文件系统
  • 内存管理
  • 各种系统服务

所以它需要更大的性能余量。

而Zephyr更轻。

如果应用本身只需要300 MHz,那么继续追求600 MHz其实没有太大意义。

尤其是在边缘设备里。

更高频率并不等于更高系统效率。

真正应该计算的是:单位功耗下完成多少有效任务。

如果通过降低CPU频率,同时取消DDR,再把部分计算放进FPGA Fabric,那么系统级能效就可能出现明显变化。

这比单纯做CPU性能竞赛更有意义。

七、没有DDR,不代表没有外部内存

这里还有一个非常容易被误解的地方。

DDR-Free ≠ Memory-Free。

如果片上Scratchpad不够怎么办?

答案并不是只能重新加DDR。

还有一大片被很多工程师忽略的存储空间:HyperRAM、PSRAM等低功耗外部存储。

例如HyperRAM可以通过相对简单的HyperBus接口提供约333 MB/s带宽。

这个数字当然比不上高性能DDR。

但问题是:很多嵌入式应用本来就不需要DDR的带宽。

假设你的系统只需要:

  • 几MB数据Buffer
  • 视频帧缓存
  • AI输入输出缓存
  • 网络数据缓存

那么HyperRAM或者PSRAM可能已经足够。这样一来,整个存储架构就可以变成:片上Scratchpad负责核心代码和关键数据 + HyperRAM/PSRAM负责扩展空间。

真正需要大带宽的时候,再上DDR,这才是一种更加“按需设计”的思路。

八、真正让SoC FPGA拉开差距的,是DDR砍掉之后的FPGA Fabric

如果到这里为止,这还只是一套“低功耗RISC-V + Zephyr”的故事。但SoC FPGA真正的优势还没有出现。

那就是:FPGA Fabric。

这是整个架构最值得玩的一张牌。

假设边缘AI应用运行在CPU上。

一开始模型可能还能跑。

但随着模型变大,CPU负担越来越重。

传统MPU的解决方式往往是:换更强的CPU。

或者:增加NPU。

而SoC FPGA多了一种选择:直接把计算硬件化。

比如把神经网络加速器放进FPGA Fabric,CNN推理交给硬件。

CPU负责:

  • 任务管理
  • 网络
  • 控制
  • 系统逻辑
  • 数据协调

这样一来,系统就形成了一个非常有意思的分工:CPU负责灵活性,FPGA负责确定性和并行计算。

而且这个硬件并不是固定的。今天需要视觉AI,可以放AI加速器。明天需要高速信号处理,可以换成DSP Pipeline。后天需要通信协议,可以增加专用硬件逻辑。这才是FPGA相比固定功能ASIC真正有吸引力的地方。

九、一个850KB的边缘AI节点,说明了什么?

文章中还有一个非常值得工程师关注的案例。

一个停车场视觉节点:摄像头 + JPEG解码 + int8 CNN + TensorFlow Lite Micro + IPv4/TCP + 10BASE-T1S + MQTT + TLS 1.2

最终整个系统大约:850 KB。而且可以完全运行在1.5MB片上Scratchpad里,去掉加密以后,系统甚至只需要:500 KB左右。

(图源:Microchip)

这件事真正有价值的地方,并不是“850KB很小”。而是它证明了一件事:边缘AI并不一定意味着大内存。

很多工程师一谈AI,就默认:GPU、NPU、大DDR。但如果模型足够小,数据流经过合理压缩和Buffer设计,很多AI应用其实可以被压缩到非常有限的片上资源里。

尤其是:分类、检测、状态判断、异常识别等边缘任务。它们需要的并不是一台“边缘服务器”,而是一台:专门解决一个问题的智能设备。

这可能才是TinyML、Edge AI与SoC FPGA结合之后值得关注的方向。

十、真正值得改变的,是“先选芯片,再适配应用”的思路

传统嵌入式开发经常是这样:

第一步:

我要跑Linux。

第二步:

Linux需要DDR。

第三步:

那我就选带DDR接口的SoC。

第四步:

DDR不够,再加更大的DDR。

整个架构实际上已经被操作系统决定了。

而Zephyr-first的逻辑正好反过来:

第一步:

我的应用到底需要什么?

第二步:

需要多少算力?

第三步:

需要多少内存?

第四步:

哪些任务必须实时?

第五步:

哪些任务适合CPU?

第六步:

哪些任务应该放到FPGA?

最后才决定:

到底需不需要DDR。

这是一种完全不同的系统设计哲学。

十一、SoC FPGA的真正价值,可能就在“重新分配计算”

如果把整个架构放到一起看,就会发现:去DDR只是入口。真正的变化是整个系统开始重新分工,可以形成这样的架构:

传感器/摄像头

FPGA Fabric:预处理、数据流、硬件加速

RISC-V多核 + Zephyr:控制、协议、任务管理

片上Scratchpad:关键代码与数据

HyperRAM/PSRAM:可选扩展存储

网络/执行机构/云端

如果再加入AI加速器:FPGA Fabric负责AI推理,CPU则负责系统控制。这样一来,系统的每一部分都在做自己最擅长的事情。这就是SoC FPGA相比传统MPU最大的想象空间:不是让CPU做得更多,而是让CPU少做一些。

十二、这条路线并不适合所有产品,但很适合一批正在增长的市场

必须承认:DDR-Free不是银弹。

如果你的系统需要:

  • 大型Linux应用
  • 复杂GUI
  • 容器
  • 大型数据库
  • 高带宽视频处理
  • 大规模用户空间软件

那么DDR依然不可替代。

但对于以下场景,这种架构值得认真评估:

工业控制

电机驱动

实时通信

传感器融合

机器视觉

边缘AI

安全关键型设备

低功耗工业节点

这些市场有一个共同点:它们通常并不需要“更像一台电脑”。它们需要的是:更快响应、更低功耗、更高可靠性、更小体积和更低成本。

这恰恰是Zephyr + RISC-V + FPGA Fabric + 片上存储能够发挥优势的地方。

结语:砍掉DDR之后,真正被释放的是架构自由度

所以,回到最开始的问题:砍掉DDR之后,SoC FPGA还能怎么玩?

答案其实不是“怎么玩”,而是:终于可以重新决定系统应该怎么设计。

过去,我们习惯把系统分成:CPU、DDR、Flash、外设,然后让Linux把这些资源串起来。而SoC FPGA提供了另一种思路:计算可以重新分配,存储可以重新分层,操作系统可以重新选择,硬件逻辑也可以重新定义。

不需要DDR,就让数据尽可能留在片上。

片上不够,就加HyperRAM或PSRAM。

CPU算不动,就把任务搬到FPGA。

需要实时控制,就用Zephyr。

需要完整软件生态,再回到Linux。

这才是“DDR-Free”真正值得产业关注的地方。

它不是一场“DDR vs 无DDR”的战争,也不是“Zephyr vs Linux”的替代赛。它更像是在提醒整个嵌入式行业:系统架构不应该由习惯决定,而应该由真实工作负载决定。

而在边缘AI、工业智能化不断向终端下沉的今天,这种“按需分配算力、内存和软件资源”的思路,可能比单纯堆CPU、堆DDR更值得关注。

因为下一代边缘设备真正需要的,也许不是一颗更强的芯片,而是一套:更懂得做减法的系统。

* 本文为原创文章,转载需注明作者、出处及原文链接,否则,本网站将保留追究其法律责任的权利。