2. Jacinto雷达硬件与数据通路
在 Jacinto 平台上做雷达目标检测与跟踪,算法性能的上限往往不由 C66x DSP 或 R5F 的算力单独决定,而是由“数据从毫米波前端进入芯片、被搬运到哪一级内存、以什么格式被算法消费”这条通路决定。本节把这条通路拆成四段来看:前端接口、CSI-2/LVDS 采集、DMA/EDMA 搬运、L2/L3/DDR 布局,并说明每一段如何反过来约束检测与跟踪算法的写法。
一、毫米波雷达前端接口:原始数据以什么形态进入 Jacinto
典型毫米波雷达前端(如 AWR 系列或第三方 MMIC)输出的是经过 ADC 采样后的复数或实数中频数据,按“帧—啁啾—采样点—接收通道”组织。前端与 Jacinto 之间常见的物理接口有两类:一类是 CSI-2(MIPI Camera Serial Interface 2),把雷达数据当作高速串行流传输;另一类是 LVDS 并行/串行接口,配合帧有效、行有效、时钟等同步信号。选择哪种接口,直接决定了后续采集控制器和搬运链路的配置方式。
需要特别注意的是数据格式约定。前端通常以 16 位定点(如 Q15 或实数 int16)输出,实部虚部交错排列;而 DSP 上的距离维 FFT 更希望拿到分离的 I/Q 或可直接做复数运算的排布。这个“格式差”如果不在采集或搬运阶段处理,就会在算法里以额外的解交错开销体现出来。因此接口配置阶段就要明确:采样位宽、通道数、每啁啾采样点数、每帧啁啾数,以及实虚交错还是分平面存储。
二、CSI-2/LVDS 数据采集:把串行流还原成有结构的帧
Jacinto 的采集子系统(如 CAL/Capture 模块)负责把 CSI-2 或 LVDS 的串行数据解析为内存中的帧缓冲。CSI-2 路径依赖虚拟通道(VC)和数据类型(DT)来区分不同雷达或不同数据流;LVDS 路径则依赖同步信号和像素/样本计数。采集控制器一般支持多路上下文(context),每个上下文绑定一个输出缓冲队列,硬件按行或按帧写入。
采集阶段最关键的工程决策是“一行/一帧的边界如何定义”。如果按啁啾行采集,则每个啁啾对应一个缓冲行,后续距离维 FFT 可以逐行处理;如果按整帧采集,则一帧数据连续存放,适合做二维 FFT 但需要更大的连续缓冲。采集还常与硬件事件联动,例如用帧起始信号触发 EDMA 传输,避免 CPU 轮询。采集缓冲通常放在 DDR 或 L3,因为 L2 容量不足以容纳整帧原始数据。
三、DMA 与 EDMA 搬运:让数据在正确的时间出现在正确的位置
Jacinto 的 EDMA 是数据通路的“调度器”。它支持一维、二维乃至三维传输,可以用帧起始、行有效、定时器或软件触发。雷达场景中常见的用法是:采集控制器每写完一行(一个啁啾),就产生一个 EDMA 事件,把该行从采集缓冲搬到 L3 或 L2 的处理缓冲;或者用链式传输(chaining)在完成一次搬运后自动触发下一次,形成乒乓结构。
乒乓缓冲是保证“采集不中断、计算不停顿”的关键。假设每帧有 128 个啁啾、每啁啾 256 个采样点、4 个接收通道,int16 存储,则一帧原始数据约为 128×256×4×2×2 = 512 KB(含实虚两路)。若 L2 只有 256 KB 可用,就必须把帧切成多个块,用 EDMA 逐块搬入 L2 处理,处理完再搬出。此时 EDMA 的传输粒度、源/目的地址步长(stride)和同步方式,直接决定了 DSP 是“等数据”还是“数据等 DSP”。
一个实用的配置思路是:把距离维 FFT 的输入块设为“若干啁啾 × 全部采样点”,用二维 EDMA 按行搬入 L2;距离维处理完成后,把结果按“采样点 × 啁啾”转置搬回 L3,供多普勒维使用。转置搬运的 stride 设置错误,会导致多普勒维数据错位,表现为速度维出现虚假峰值——这是雷达调试中很典型的一类问题。
四、L2/L3/DDR 布局对算法的影响
三级内存的容量和延迟差异,会直接改变算法的分块策略和实时性预算。L2 延迟最低但容量有限,适合放当前处理块、FFT 旋转因子、CFAR 参考窗和跟踪滤波器的状态向量;L3 容量较大且多核可共享,适合放整帧原始数据、距离-多普勒矩阵和检测点云;DDR 容量最大但延迟高,适合放多帧历史、航迹档案和日志。
对检测算法而言,CFAR 需要在距离-多普勒平面上滑动参考窗。如果整个 R-D 矩阵放在 DDR,每次滑窗都访问 DDR,带宽和延迟都会成为瓶颈;更合理的做法是把 R-D 矩阵放在 L3,按块搬入 L2 做 CFAR,检测结果(距离、速度、幅度、角度)再写回 L3 或 DDR。对跟踪算法而言,卡尔曼滤波的状态向量和协方差矩阵很小,应常驻 L2;但航迹历史和多帧关联窗口可能较大,适合放 DDR,并用 EDMA 按需调入。
下面给出一个示例性的内存分配参考(参数为教学假设,实际需按具体器件和帧配置调整):
| 数据对象 | 建议位置 | 理由 |
|---|---|---|
| 采集输出帧缓冲 | DDR 或 L3 | 整帧容量大,L2 放不下 |
| 距离维 FFT 输入块 | L2 | 需要低延迟、高复用 |
| 距离-多普勒矩阵 | L3 | 多核共享,容量适中 |
| CFAR 参考窗数据 | L2 | 滑窗访问频繁 |
| 检测点云 | L3 或 DDR | 供跟踪核消费 |
| 卡尔曼状态/协方差 | L2 | 每帧多次读写,越小越快 |
| 航迹历史 | DDR | 容量大,访问频率低 |
五、把通路和算法连起来看
把四段串起来,可以得到一条清晰的因果链:前端接口决定数据格式,采集控制器决定帧缓冲结构,EDMA 决定数据何时到达 L2/L3,内存布局决定算法能多快消费数据。任何一段配置不当,都会在最终检测与跟踪结果上表现为漏检、虚警、速度模糊或航迹断续。因此在实际工程中,建议先用小帧、单通道、低采样率把整条通路跑通,确认数据格式和搬运边界正确,再逐步放大到全帧全通道,并观察 EDMA 完成中断与 DSP 处理时间的重叠程度。只有通路稳定,后面的 CFAR、聚类和跟踪算法才有可靠的输入基础。