多普勒ProcDSP(多普勒DPU)
dopplerproc DPU的源代码见: ti\mmwave_sdk\packages\ti\datapath\dpc\dpu\dopplerproc\src
API的文档放置在:ti\mmwave_sdk\packages\ti\datapath\dpc\dpu\dopplerproc\docs\doxygen\html\index.html
1 DPU实现框图
在此版本的多普勒 DPU 中,不使用 HWA。所有计算均由DSP完成。使用EDMA将来自雷达立方体的数据移动到暂存存储器中,DSP执行所需的计算,EDMA将数据从暂存存储器移动到检测矩阵。
所需的EDMA通道数量是恒定的,并且不依赖于DPU配置。DPU将numDopplerChirps的数量作为输入,它不需要是2的幂,但必须是4的倍数。它生成一个多普勒维数的检测矩阵,该矩阵的多普勒维数等于numDopplerBins,必须是二的幂并大于或等于numDopplerChirps,且由于DSPLIB对FFT实现的限制,numDopplerBins必须至少为16。
2 DPU实现的详细信息
2.1 输入数据
EDMA用于将数据从雷达立方体移动到DPU暂存缓冲区。使用乒乓缓冲器方案,其中在每次迭代(乒乓)中,将一个与虚拟天线(用于固定范围的箱)相关的数据从雷达立方矩阵中获取并进行处理。对于固定范围的bin,处理虚拟天线的顺序必须确保可以解码 BPM,并且可以汇总所有虚拟天线。为了以最小的虚拟天线数据临时缓冲来实现这一目标,虚拟天线的序列按以下顺序进行处理:
(1)下一个TX天线用于相同的范围仓和相同的RX天线。这确保BPM可以被解码。
(2)一旦(1)中固定范围仓和固定RX天线的所有TX天线用完,则移动到相同范围仓的下一个RX天线(以确保可以计算所有虚拟天线的总和),并重复(1)。
(3)处理完此测距箱的所有虚拟天线后,移动到下一个测距箱。
2.2 静态杂波消除
启用静态杂波消除后,将从样本中减去多普勒FFT输入样本的平均值。
2.3 窗口化
在FFT操作之前,输入样本乘以实数对称窗口函数。窗口大小和系数以DPU_DopplerProcDSP_HW_Resources_t定义。窗口系数必须由应用程序提供。请注意,窗口函数还执行IQ交换。在窗口化之前,样品的格式与雷达立方体中的格式相同,即cmplx16ImRe_t,窗口化后,输出为cmplx32ReIm_t格式。
2.4 FFT
FFT计算输出具有cmplx32ReIm_t类型的numDopplerBins样本。
2.5 BPM解码
如果启用了BPM,则当FFT输出可用于2个TX天线(对于相同的 RX 天线和范围箱)时,将解码BPM。
2.6 log2|.|
计算每个样本的绝对值的Log2,并且输出是Q8格式的16位数字。
2.7 总和和输出
对每个虚拟天线的每个多普勒仓进行累加,请注意,在累加之前,总和中的每个因子都除以2^Ceil(Log2(numVirtualAntennas))。这样做的目的是在DPU的HWA和DSP版本之间具有相同的CFAR阈值标度解释,这种相同的解释允许方便地为之后CFAR算法配置相同的阈值标度,无论是在多普勒DPU的HWA还是DSP版本上操作。请参阅DopplerProcHWA中“求和”部分中关于将CFAR阈值范围从用户友好的dB单位转换为CFAR算法所需内容的描述,一旦针对给定的距离仓处理了所有虚拟天线,则通过EDMA将累积的阵列传输到检测矩阵。
用于3个TX和4个RX天线的多普勒DPU实现
3 启用BPM时多普勒DPU的变化
启用BPM后,将在多普勒DPU处理中完成以下更改:多普勒补偿和BPM解码在多普勒FFT之后完成,请注意,解码后的数据不存储在雷达立方体中,因此在到达方向计算期间需要再次进行BPM解码(在更小的样本集上)。启用BPM后,fftOutBuf缓冲区的大小将增加一倍,以容纳Ping(TX0+TX1)和Pong(TX0-TX1),以便可以解码BPM,解码后的数据将写回fftOutBuf。
针对2个TX和4个RX天线的多普勒DPU实现,并启用BPM
下图显示了2个TX和4个RX天线的ping/pong模式(无论是否启用 BPM)。
2个TX和4个RX天线的乒乓模式
导出的API
DPU初始化是通过DPU_DopplerProcDSP_init完成的。
DPU配置由DPU_DopplerProcDSP_config完成,只有在初始化DPU后才能完成配置,配置参数在DPU_DopplerProcDSP_Config中描述。
DPU通过调用DPU_DopplerProcDSP_process来执行。