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 容量不足以容纳整帧原始数据。

Jacinto 雷达数据通路:从前端到算法消费的内存层级 毫米波前端 ADC 采样 帧/啁啾/采样点 int16 实虚交错 接口层 CSI-2 / LVDS VC / DT 或同步信号 高速串行/并行 采集控制器 CAL / Capture 多上下文缓冲队列 行/帧边界解析 DMA / EDMA 搬运 触发:帧起始/行有效 维度:1D/2D/3D 传输 乒乓缓冲 / 链式传输 内存层级与算法消费 L2 SRAM(每核私有) 容量小、延迟最低 存放:当前处理块 距离维 FFT 输入/输出 CFAR 滑窗局部数据 跟踪滤波器状态向量 约束:容量决定分块粒度 L3 / MSMC(共享) 容量中等、多核共享 存放:整帧原始数据 距离-多普勒矩阵 检测点云中间结果 核间交换缓冲 约束:带宽与仲裁竞争 DDR(外部大容量) 容量大、延迟最高 存放:多帧历史缓存 采集输出帧缓冲 跟踪航迹历史 日志与调试数据 约束:访问延迟影响实时性 算法消费顺序:L2 处理块 → L3 中间矩阵 → DDR 历史/输出,搬运与计算重叠决定吞吐

三、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容量大,访问频率低
判断内存布局是否合理的实用方法:先统计每个算法阶段每帧的数据量和访问次数,再对照 L2/L3/DDR 的容量与带宽。如果某个高频访问对象被放在 DDR,通常就是优化点。

五、把通路和算法连起来看

把四段串起来,可以得到一条清晰的因果链:前端接口决定数据格式,采集控制器决定帧缓冲结构,EDMA 决定数据何时到达 L2/L3,内存布局决定算法能多快消费数据。任何一段配置不当,都会在最终检测与跟踪结果上表现为漏检、虚警、速度模糊或航迹断续。因此在实际工程中,建议先用小帧、单通道、低采样率把整条通路跑通,确认数据格式和搬运边界正确,再逐步放大到全帧全通道,并观察 EDMA 完成中断与 DSP 处理时间的重叠程度。只有通路稳定,后面的 CFAR、聚类和跟踪算法才有可靠的输入基础。