3. 雷达信号处理基础与Jacinto映射

在TI Jacinto系列SoC上实现雷达目标检测,核心链路可以概括为:ADC采样数据经过距离维FFT、多普勒维FFT、CFAR检测、角度FFT,最终输出目标的距离、速度、方位信息。这条链路在Jacinto上并非简单地把算法搬到C7x DSP上运行,而是需要理解C7x的向量处理能力、MMA矩阵加速单元的数据布局约束,以及不同处理阶段对存储带宽和延迟的实际需求。本节从信号处理的基本定义出发,逐步映射到Jacinto的硬件实现约束与优化思路。

距离-多普勒处理的基本定义与数据组织

雷达发射调频连续波(FMCW),接收端对每个chirp的差频信号采样,得到一帧三维数据立方体:快时间维(每chirp采样点数,记为N)、慢时间维(每帧chirp数,记为M)、通道维(接收天线数,记为L)。距离维FFT沿快时间维进行,将差频频率映射为距离;多普勒维FFT沿慢时间维进行,将相位变化映射为速度。以典型配置为例:N=256、M=128、L=4,采样率10 Msps,调频斜率50 MHz/μs,则距离分辨率约为0.6 m,最大不模糊速度由chirp周期决定。

在Jacinto上,这三维数据通常以“距离-多普勒-通道”的顺序存放在L2 SRAM或DDR中。C7x的向量单元(如SE、SA)一次可处理512位数据,即16个单精度浮点数或32个半精度浮点数。距离维FFT若按列处理,需要跨步访问,会显著降低向量加载效率。因此实际实现中常将数据重排为“快时间连续、慢时间分块”的布局,使距离FFT的输入在内存中连续,便于C7x的流式加载。

CFAR检测的工程实现与参数选择

CFAR(恒虚警率检测)在距离-多普勒二维平面上进行。以单元平均CFAR(CA-CFAR)为例,对每个待检测单元,取其周围参考单元计算噪声功率均值,再乘以门限因子α得到检测门限。α由虚警概率Pfa和参考单元数R决定:α = R·(Pfa^(-1/R) - 1)。例如R=32、Pfa=1e-6时,α约为12.5(约11 dB)。

在C7x上实现CFAR时,滑动窗口的参考单元求和可以用前缀和或滑动累加实现。若直接对每个单元重新累加,计算量为O(N·M·R),在N=256、M=128、R=32时约100万次乘加,C7x单核即可在毫秒级完成。但更高效的方式是利用向量归约指令,将参考单元分成若干段并行求和。需要注意的是,CFAR的参考窗在距离-多普勒边界处需要特殊处理,通常采用截断或循环填充,避免边界单元漏检。

角度FFT与MMA的映射约束

角度FFT沿通道维进行,输入是每个距离-多普勒单元上L个通道的复数数据。对于L=4的均匀线阵,角度FFT等价于4点DFT,可通过矩阵乘法实现:X = W·A,其中W是4×4的DFT矩阵,A是4×1的通道向量。Jacinto的MMA单元支持8×8或16×16的矩阵乘累加,但要求输入矩阵按特定格式排列(如行主序、列主序或分块)。若直接对每个距离-多普勒单元调用MMA,矩阵规模太小,无法发挥吞吐优势。

优化思路是将多个距离-多普勒单元的角度FFT合并为批量矩阵乘法:将K个单元的通道数据排列成4×K的矩阵,与4×4的DFT矩阵相乘,得到4×K的输出。这样MMA的利用率显著提升。但需要注意,MMA的输入通常要求半精度或定点格式,而雷达数据经过前级FFT后可能是单精度浮点,需要在送入MMA前做量化或格式转换。量化误差会直接影响角度估计精度,通常需要保留至少12位有效位。

Jacinto C7x/MMA 雷达信号处理链路与约束映射 ADC数据立方体 N=256 快时间 M=128 慢时间 L=4 通道 距离维FFT 沿快时间维 C7x SE/SA向量 连续加载优化 多普勒维FFT 沿慢时间维 跨步访问→重排 L2 SRAM缓存 CFAR检测 R=32, Pfa=1e-6 α≈12.5 (11dB) 滑动窗/前缀和 角度维FFT 沿通道维 L=4 4点DFT矩阵 批量矩阵乘 MMA加速 4×K × 4×4矩阵 半精度/定点量化 ≥12位有效位 目标:距离/速度/角度 C7x向量约束 • 512位向量 = 16×fp32 / 32×fp16 • 跨步访问降低加载效率 • 数据重排为连续布局 • L2 SRAM缓存中间结果 • 前缀和/滑动累加优化CFAR MMA映射约束 • 输入需行/列主序或分块格式 • 小矩阵→批量合并提升利用率 • 量化误差影响角度精度 • 保留≥12位有效位 数据流:ADC → 距离FFT → 多普勒FFT → CFAR → 角度FFT → MMA批量矩阵乘 → 目标输出

优化思路与工程权衡

从上述映射可以看出,Jacinto上的雷达信号处理优化需要围绕三个核心矛盾展开:向量加载效率与数据布局的矛盾、MMA吞吐与小矩阵规模的矛盾、量化精度与计算速度的矛盾。

对于距离-多普勒处理,建议将数据立方体在DDR中按“快时间连续、慢时间分块”存储,每块包含若干chirp的完整快时间采样。C7x处理时,先加载一块到L2 SRAM,在SRAM内完成距离FFT,再将结果按多普勒维重排后写回。这样距离FFT的输入输出都在SRAM内连续访问,避免频繁的DDR跨步读写。多普勒FFT的输入是重排后的连续数据,同样可以在SRAM内高效完成。

CFAR的实现需要根据检测率要求选择参考单元数和门限因子。在C7x上,推荐使用滑动窗口加前缀和的方式:先对距离-多普勒功率图计算二维前缀和,然后每个单元的参考窗求和变为四次查表加减,计算量从O(R)降到O(1)。但前缀和需要额外的存储空间,且对边界处理要求较高。若检测率要求不高,也可以采用简化的分段CFAR,将参考窗分为左右两段分别求和。

角度FFT与MMA的结合是Jacinto特有的优化点。由于L通常较小(4或8),直接调用MMA效率低。建议将同一距离-多普勒单元上多个速度通道或距离通道的数据批量组织,形成4×K或8×K的输入矩阵。例如,取K=64个距离单元,组成4×64的矩阵,与4×4的DFT矩阵相乘,MMA一次即可完成256个输出点的计算。量化方面,若前级FFT输出为单精度浮点,可先转为16位定点(Q12格式),再送入MMA。Q12格式保留12位小数,动态范围约±8,对于归一化后的雷达数据足够。量化后的角度估计误差通常在0.1°以内,满足大多数车载雷达需求。

工程提示:在Jacinto上调试雷达信号处理链路时,建议先用小规模数据(如N=64、M=32、L=4)在C7x上验证各阶段输出与MATLAB/Python参考结果的一致性,再逐步放大到实际配置。重点关注距离FFT的频谱泄漏、多普勒FFT的速度模糊、CFAR的边界漏检以及角度FFT的量化误差。

典型参数配置与结果判读

以车载中距雷达为例,典型配置为:N=256、M=128、L=4,采样率10 Msps,调频斜率50 MHz/μs,chirp周期50 μs。距离分辨率0.6 m,最大探测距离约150 m,速度分辨率约0.15 m/s,最大不模糊速度±15 m/s。CFAR参考单元R=32,保护单元G=4,Pfa=1e-6,门限因子α≈12.5。角度FFT采用4点DFT,量化格式Q12。

结果判读时,距离-多普勒平面上的峰值对应目标,峰值位置给出距离和速度,峰值幅度经过CFAR门限比较后确认检测。角度FFT输出峰值对应的角度即为目标方位。若发现虚警过多,可适当提高α或增大R;若发现漏检,可降低α或检查CFAR边界处理。若角度估计偏差较大,应检查MMA量化位数是否足够,或DFT矩阵是否与阵列流型匹配。

整体而言,Jacinto C7x/MMA为雷达信号处理提供了强大的算力基础,但需要工程师在数据布局、矩阵规模、量化精度之间做出合理权衡。理解这些约束的物理来源,才能在实际工程中写出既正确又高效的实现。