2. 雷达原始数据与距离-多普勒处理
在 S32R 平台上做目标检测,第一步不是写检测算法,而是把雷达前端送来的 ADC 原始数据“翻译”成一张可解释的距离-多普勒图(Range-Doppler Map,RDM)。这张图是后续 CFAR、DOA 估计和跟踪的输入,它的质量直接决定整条链路的性能上限。本节围绕 ADC 数据格式、距离 FFT、多普勒 FFT、RDM 生成以及 S32R 加速器映射展开。
一、ADC 数据格式:先看清“原料”长什么样
FMCW 雷达每个 chirp 发射一段线性调频信号,接收端与发射信号混频后得到中频(IF)信号,经 ADC 采样后形成复数样本。S32R 系列(如 S32R45、S32R294)通常通过 MIPI-CSI2 或 LVDS 接口接收前端(如 TEF82xx)输出的 ADC 数据,典型格式为复数交织的 16 位定点:I 路和 Q 路各占 16 bit,按 I0, Q0, I1, Q1, ... 顺序排列。部分配置也支持实数采样或 12 位压缩格式,但复数 16 位是工程中最常见的默认选择。
理解数据布局的关键是三个维度:快时间(fast-time)——单个 chirp 内的采样点,对应距离;慢时间(slow-time)——跨 chirp 的采样,对应多普勒;通道维——多个 RX 天线,对应角度。以典型配置为例:每帧 128 个 chirp,每 chirp 256 个采样点,4 个 RX 通道,则一帧原始数据量为 128×256×4×4 Byte ≈ 512 KB。这个规模决定了后续 FFT 必须依赖硬件加速器,而非纯 CPU 处理。
二、距离 FFT:把快时间变成距离
距离维处理对每个 chirp 的 256 个采样点做 FFT。其物理依据是:目标距离 R 与 IF 频率 fIF 成正比,fIF = 2·S·R/c,其中 S 为调频斜率,c 为光速。因此 FFT 的频点索引 k 直接映射为距离 bin:R = k·c/(2·S·NFFT·Ts),Ts 为采样周期。
工程上通常做 256 点复数 FFT,并在 FFT 前加窗(如 Hann 窗)抑制旁瓣。加窗会带来约 1.5 倍的主瓣展宽和轻微 SNR 损失,但能显著降低强目标对邻近弱目标的遮蔽。S32R 的 BBE32 或 LAU(Linear Algebra Unit)可高效执行定点复数 FFT,典型 256 点 FFT 在数十个周期内完成。
三、多普勒 FFT:把慢时间变成速度
距离 FFT 完成后,数据组织为“距离 bin × chirp”的二维矩阵。对每个距离 bin 沿 chirp 方向做第二次 FFT,即多普勒 FFT,长度等于 chirp 数(如 128 点)。多普勒频率 fD 与目标径向速度 v 的关系为 fD = 2·v/λ,λ 为波长。多普勒 bin 索引 m 对应速度 v = m·λ/(2·Nchirp·Tc),Tc 为 chirp 周期。
这里有一个容易出错的细节:多普勒 FFT 的输出需要做 fftshift,把零多普勒移到中心,否则静止目标会出现在第 0 个 bin 而非中心 bin,导致速度符号判断混乱。S32R 的 DMA 和 BBE32 支持在搬运或计算中完成重排,减少额外开销。
四、距离-多普勒图生成与加速器映射
两次 FFT 完成后,对每个 RX 通道得到一个 Nrange × Ndoppler 的复数矩阵,取模平方即得 RDM。多通道 RDM 可先做非相干积累(各通道功率相加)用于检测,或保留复数用于后续 DOA。RDM 中每个峰值对应一个潜在目标,其坐标给出距离和速度,幅度用于 CFAR 判决。
S32R 的典型处理链映射如下:ADC 数据经 DMA 搬入 SPU(Signal Processing Unit)本地内存;BBE32 执行距离 FFT 和加窗;结果写回后由 BBE32 或 LAU 执行多普勒 FFT;最后经 DMA 输出到 CPU 或硬件 CFAR 模块。整个链路的瓶颈通常在内存带宽和 FFT 吞吐,而非计算本身。合理配置 DMA 描述符和双缓冲,可让 FFT 与数据搬运重叠,显著提升帧率。
五、工程实现中的关键判断
在实际调试中,判断 RDM 是否正确的依据很直接:在空旷场景下,静止目标(如墙角、护栏)应出现在零多普勒中心列,距离位置与实测一致;运动目标的多普勒符号应与靠近/远离方向对应。若发现所有目标都挤在零多普勒附近,通常是多普勒 FFT 未做 fftshift 或 chirp 间相位未正确累积;若距离维出现镜像,则可能是 I/Q 通道顺序颠倒或实数 FFT 未做对称处理。
另一个常见问题是定点溢出。距离 FFT 后幅度可能增长 N 倍,若不做缩放,16 位定点会饱和。S32R 的 BBE32 支持块浮点(block floating point),在 FFT 过程中动态调整指数,兼顾动态范围和精度。配置时应根据前端增益和 ADC 满量程合理设置输入缩放因子,并在 RDM 输出端检查是否有大面积饱和区域。
把上述链路映射到 S32R 时,核心原则是“让数据靠近计算单元”。ADC 数据经 DMA 直接进入 SPU 本地 SRAM,距离 FFT 和多普勒 FFT 都在 BBE32 上完成,中间结果不落外部 DDR。只有在 RDM 输出后才通过 DMA 送到 CPU 做 CFAR 和跟踪。这样做的收益是内存带宽占用降低一个数量级,帧处理时间从毫秒级压缩到百微秒级,为后续多帧跟踪留出充足预算。