CFAR-CA DPU的源代码见 :mmwave_sdk_<ver>\packages\ti\datapath\dpc\dpu\cfarcaproc
API的文档放置在:mmwave_sdk_<ver>\packages\ti\datapath\dpc\dpu\cfarcaproc\docs\doxygen\html\index.html.
该DPU使用在DSP上运行的CFAR和峰值分组算法从距离/多普勒检测矩阵实现CFAR对象检测,CFAR检测在范围域和多普勒域中进行,DPU导出在范围和多普勒域中检测到的对象列表。
DSP-CFAR高级数据流
1 DPU的实现
输入是格式为DPIF_DETMATRIX_FORMAT_1 DPIF_DetMatrix的距离-多普勒检测矩阵,该矩阵的元素是2D FFT接收天线上的log2幅度之和。多普勒域检测过程是通过触发输入EDMA(DPU_CFARCAProcDSP_HW_Resources::edmaInPing和edmaInPong)启动的,该输入EDMA(DPIF_DetMatrix)以 ping/pong方式将检测矩阵()从L3内存复制到本地缓冲区(DPU_CFARCAProcDSP_HW_Resources::localDetMatrixBuffer)一次一个范围的bin。然后,它执行CFARCA算法,并根据检测结果生成cfarDopplerDetOutBitMask。完成所有范围箱并填充整个cfarDopplerDetOutBitMask表后,CPU在范围域中启动CFAR,以查找已检测到cfarDopplerDetOutBitMask指示的对象的多普勒线。DSP CFAR检测完成后,如果启用了峰分组,则执行峰分组并填充最终检测到的对象列表(DPIF_CFARDetList_t)。
DSP-CFAR实现
2 注意
与HWA CFAR情况不同,如果评估的峰值大于或等于相邻峰(CFAR合格与否),则 DSP实现会声明峰值,因此此DSP实现不存在HWA CFAR峰值分组中描述的问题。如果满足以下条件,则对象将显示在最终列表中:
(1)在多普勒域和范围域中均检测到该物体范围和多普勒指数;
(2)在发出以下任何命令时,范围和多普勒指数都在应用程序给出的FOV配置中确定的范围内:
DPU_CFARCAProcDSP_config (DPU_CFARCAProcDSP_DynamicConfig::fovRange, DPU_CFARCAProcDSP_DynamicConfig::fovDoppler)
DPU_CFARCAProcDSP_control(DPU_CFARCAProcDSP_Cmd_FovRangeCfg,DPU_CFARCAProcDSP_Cmd_FovDopplerCfg)。
在此输出列表中,还会为每个生成的点填充噪声和SNR的侧面信息。信噪比是利用噪声和检测范围、多普勒位置对应的检测矩阵值计算得出的。如果同时启用了CFAR多普勒和范围域处理,则从范围域处理中获取噪声。如果只启用了一个处理域,则噪声来自嵌入的处理域。
CFAR处理和峰分组可以通过动态配置启用,例如:
DPU_CFARCAProcDSP_DynamicConfig::cfarCfgRange,
DPU_CFARCAProcDSP_DynamicConfig::cfarCfgDoppler.
这可以通过以下方式完成:
DPU_CFARCAProcDSP_config
DPU_CFARCAProcDSP_control(DPU_CFARCAProcDSP_Cmd_CfarRangeCfg,DPU_CFARCAProcDSP_Cmd_CfarDopplerCfg)。
配置中的其他参数还允许设置CFAR参数,如阈值刻度和窗口/保护长度。通过将多普勒方向的检测阈值设置为零,可以绕过多普勒域中的CFAR检测处理。
3 CFARCA DSP API
DPU_CFARCAProcDSP_init DPU初始化功能。
DPU_CFARCAProcDSP_config DPU配置功能,只有在使用DPU_CFARCAProcDSP_init 初始化DPU后才能完成配置。
DPU_CFARCAProcDSP_process DPU处理功能。这将使用DSP执行CFAR检测算法。只有在通过DPU_CFARCAProcDSP_config配置DPU后,才能完成此处理。如果此DPU使用的参数在一帧到下一帧之间没有变化,则第一帧只能调用一次DPU_CFARCAProcDSP_config并且对于每帧DPU_CFARCAProcDSP_process无需重新配置DPU即可执行。
DPU_CFARCAProcDSP_control DPU控制功能。它处理从DPC收到的以下消息:
DPU_CFARCAProcDSP_Cmd_CfarRangeCfg | 用于更新范围域中的 CFAR 配置的命令。 |
DPU_CFARCAProcDSP_Cmd_CfarDopplerCfg | 用于更新多普勒域中 CFAR 配置的命令。 |
DPU_CFARCAProcDSP_Cmd_FovRangeCfg | 用于更新范围域、最小和最大范围限制中的视场的命令。 |
DPU_CFARCAProcDSP_Cmd_FovDopplerCfg | 更新多普勒域中的视野、最小和最大多普勒限制的命令。 |