3. 嵌入式平台选型:DSP、FPGA、ARM Cortex-M/A系列对比、算力与功耗权衡

做雷达信号处理,选平台这事儿,我见过太多人一开始就栽跟头了。

有人觉得FPGA万能,有人迷信DSP的浮点性能,还有人直接拿个ARM Cortex-A系列硬怼。结果呢?要么功耗压不住,要么实时性不够,要么成本超预算。

说白了,没有最好的平台,只有最合适的组合。今天我就把这三个主流平台掰开了讲,结合我这些年踩过的坑,帮你理清楚到底该怎么选。

3.1 DSP:数字信号处理的老牌劲旅

DSP,全称数字信号处理器。它的架构天生就是为了跑FFT、FIR滤波器这类算法而生的。

我个人习惯把DSP比作「信号处理专用跑车」。它有几个核心优势:

  • 硬件乘法器:一个时钟周期就能完成乘加运算,普通MCU要十几个周期。
  • 哈佛架构:程序和数据总线分开,取指令和读数据可以同时进行。
  • 零开销循环:做循环操作时,不需要额外的指令来管理循环计数器。

我在项目中遇到过用TI的C6678做脉冲压缩处理。8个核全开,处理一个1024点的脉冲压缩,延迟能控制在10微秒以内。这个性能,ARM Cortex-M系列是望尘莫及的。

适用场景

  • 中等复杂度的雷达算法(脉冲压缩、MTI、CFAR)
  • 对实时性要求高,但算法结构相对固定
  • 需要浮点运算,但不想用FPGA那么复杂的开发流程

避坑指南

我曾经在一个项目中,为了省成本选了低端DSP做多普勒处理。结果FFT点数一上去,内存带宽直接成了瓶颈。DSP的算力再强,数据喂不进去也是白搭。选型时一定要算好内存带宽和DMA通道数。

3.2 FPGA:硬件加速的终极武器

FPGA,现场可编程门阵列。它跟DSP完全是两个思路。

DSP是「软件跑算法」,FPGA是「硬件实现算法」。你想想看,用FPGA做FFT,你可以把流水线级数做到极致,每个时钟周期都能输出一个结果。DSP再快,也得一个周期一条指令地跑。

我做过一个对比测试:同样是1024点FFT,在Xilinx的Kintex-7上,用IP核实现,延迟只有1.2微秒。而TI的C6678,优化到极致也要3.5微秒。FPGA快了将近3倍。

但FPGA也有它的短板:

  • 开发周期长:写Verilog/VHDL比写C代码慢得多。
  • 调试困难:信号在芯片内部跑,出了问题很难定位。
  • 浮点运算效率低:虽然现在有浮点IP核,但资源消耗大,不如DSP灵活。

我的建议

FPGA最适合做「数据流密集、算法固定、延迟敏感」的部分。比如数字下变频、脉冲压缩、波束形成。这些模块一旦调通,基本不用改,用FPGA实现性价比最高。

3.3 ARM Cortex-M/A系列:灵活与生态的平衡

ARM Cortex-M和A系列,大家应该很熟悉了。手机、路由器、工控板,到处都是它的身影。

在雷达系统里,ARM通常扮演「管家」的角色。它不负责核心的信号处理,而是做控制、通信、人机交互这些杂活。

Cortex-M系列

  • M0/M3/M4:适合做简单的控制、数据打包、通信协议。
  • M7:带DSP指令集和浮点单元,可以跑一些轻量级的算法。
  • 功耗极低,很多型号能做到几十微安级别的待机电流。

Cortex-A系列

  • A5/A7/A53:适合跑Linux系统,做网络通信、数据存储、界面显示。
  • A72/A76:算力接近桌面CPU,可以跑复杂的跟踪算法、目标识别。
  • 功耗相对较高,但生态完善,开发效率高。

我记得有个项目,客户要求雷达系统能通过WiFi上传数据,还要有Web界面做参数配置。我直接选了个Cortex-A7的芯片,跑OpenWrt系统,两周就把功能全搞定了。如果用DSP或FPGA来做这些,光驱动开发就得两个月。

ARM在雷达系统中的典型分工

  • 接收FPGA/DSP处理后的目标数据
  • 执行目标跟踪、航迹管理算法
  • 控制雷达的工作模式(搜索、跟踪、待机)
  • 与上位机或云端通信

3.4 算力与功耗的权衡:实战中的选择策略

好了,三个平台都介绍完了。现在的问题是:到底怎么选?

我一般会从三个维度来评估:算力需求、功耗预算、开发周期

下面这张表是我自己总结的,你可以直接拿来参考:

需求场景 推荐平台 算力(GOPS) 功耗(W) 开发周期
简单测距雷达(FMCW) ARM Cortex-M4 + 专用芯片 0.1 - 0.5 0.1 - 0.5 1-2个月
中端脉冲多普勒雷达 DSP(C66xx系列) 10 - 50 2 - 10 3-6个月
高端相控阵雷达 FPGA(Kintex/Virtex系列) 100 - 1000+ 10 - 50+ 6-12个月
多功能雷达(跟踪+识别) FPGA + ARM Cortex-A 50 - 500 5 - 30 6-12个月

为什么会这样?

你看,FMCW雷达算法简单,一个Cortex-M4加上专用的FMCW芯片(比如TI的IWR系列),功耗能做到0.5W以下,电池供电都没问题。

但到了相控阵雷达,几十上百个通道的数据同时进来,没有FPGA的并行处理能力,根本扛不住。功耗虽然高,但性能是刚需。

我的经验法则

如果算法中「乘加运算」占比超过70%,优先考虑DSP或FPGA。如果「控制逻辑」和「通信」占比高,用ARM更划算。如果两者都有,那就异构——FPGA做前端加速,ARM做后端管理。

3.5 异构架构:1+1 > 2 的实战案例

最后分享一个我实际做过的方案。

那是一个车载毫米波雷达项目。要求:探测距离200米,角度分辨率1度,功耗小于5W。

我最终选的是:Xilinx Zynq系列(FPGA + ARM Cortex-A9双核)

分工是这样的:

  • FPGA部分:做数字下变频、脉冲压缩、CFAR检测。这些模块数据量大,算法固定,用FPGA的并行流水线实现,延迟极低。
  • ARM部分:跑Linux系统,做目标跟踪、CAN通信、诊断管理。这些功能需要灵活性和生态支持,ARM最合适。

最终实测结果:

  • FPGA端处理延迟:< 5微秒
  • ARM端跟踪周期:1毫秒
  • 整板功耗:4.2W

这个方案如果只用DSP,延迟会翻倍;如果只用FPGA,开发周期至少多三个月。异构架构,说白了就是各取所长。

注意

异构架构虽然好,但调试复杂度也上去了。我曾经在Zynq上调试一个DMA传输的问题,FPGA和ARM两边来回查,折腾了整整一周。最后发现是ARM端的Cache没刷新,数据一致性出了问题。嗯,这个坑你们以后大概率也会遇到。

好了,关于平台选型,今天就聊这么多。下一章我会讲具体的算法定点化与浮点化转换,那是把算法从PC搬到嵌入式平台的关键一步。到时候见。