CFARCA DPU

CFAR-CA DPU

该DPU实现了距离/多普勒检测矩阵的CFAR目标检测

CFARCA DPU包括两种DPU实现:
在这里插入图片描述

HWA-CFARCA DPU

Introduction

该DPU使用硬件加速器(HWA)从距离/多普勒检测矩阵中实现CFAR目标检测。CFAR检测是在距离域和多普勒域进行的。DPU导出在距离域和多普勒域中检测到的对象列表。一个高级的数据流如下:
在这里插入图片描述
下图描述了DPU实现:
在这里插入图片描述
输入时按照DPIF_DetMatrix DPIF_DETMATRIX_FORMAT_1格式的检测矩阵,该矩阵的元素是2D FFT的接收天线的log2幅度之和。此矩阵必须必须不大于M0+M1内存中所能容纳的值(在DPU_CFARCAProcHWA_config期间进行错误的检查,违反将生成错误代码DPU_CFARCAPROCHWA_ENOMEM_DET_MATRIX_EXCEEDS_HWA_INP_MEM)

检测过程通过触发输入EDMA(DPU_CFARCAProcHWA_HW_Resources::edmaHwaIn)来启动,该输入EDMA将检测矩阵(DPIF_DetMatrix)从L3内存复制到内部HWA内存(DPU_CFARCAProcHWA_HW_Resouces::hwaMemInp,通常是(M0+M1))。签名EDMA(DPU_CFARProcHWA_HW_Resources::edmahwaInSignature)然后触发HWA CFAR,HWA CFAR由一个参数集执行,该参数集在多普勒域中执行CFAR。结果以列表的形式存储在HWA内存(DPU_CFARCAProcHWA_HW_Resources::hwaMemOutDoppler,通常是M2)中,每个元素表示为DPU_CFARCAProcHWA_CfarDetOutput_t。完成后,CPU触发距离域中的HWA CFAR,结果定向到HWA内存(DPU_CFARCAProcHWA_HW_Resources::hwaMemOutRange,通常以M3为单位),然后并行计算(CFARHWA_convHwaCfarDetListToDetMask)检测点的位掩码,并将其放入DPU_CFARCAProcHWA_HW_Resources::cfarDopplerDetOutBitMask由应用程序分配的(通常在和讯本地的内存中)。数字中对应于元素x[rangeIdx][dopplerIdx]的位位置的计算如上图所示(表达式"word=,bit=")。

在HWA CFAR检测完成后,如果满足以下条件,CPU(CFARHWA_cfarRange_AND_cfarDoppler)从距离CFAR检测列表(M3内存)中获取检测到的对象并填充到输出列表(DPIF_CFARDetList)中:

  1. 在多普勒域中也检测到对象(即,如果在多普勒检测位掩码中设置了相应的位)。

  2. 当发出下列任一信号时,距离和多普勒指数在由应用程序给出的FOV配置确定的范围内:

    DPU_CFARCAProcHWA_config (DPU_CFARCAProcHWA_DynamicConfig::fovRange, DPU_CFARCAProcHWA_DynamicConfig::fovDoppler)
    DPU_CFARCAProcHWA_control (DPU_CFARCAProcHWA_Cmd_FovRangeCfg, DPU_CFARCAProcHWA_Cmd_FovDopplerCfg)

在该输出列表中,还为该列表中的每个点生成点填充噪声(来自range CFAR HWA处理)并且SNR的旁侧信息。信噪比使用噪声(来自range CFAR HWA)和与检测到的距离、多普勒位置相对应的检测矩阵值来计算。

HWA CFAR函数可以执行峰值分组功能。它(启用/禁用)是在应用程序发出 DPU_CFARCAProcHWA_config (DPU_CFARCAProcHWA_DynamicConfig::cfarCfgRange, DPU_CFARCAProcHWA_DynamicConfig::cfarCfgDoppler) or when issuing DPU_CFARCAProcHWA_control (DPU_CFARCAProcHWA_Cmd_CfarRangeCfg, DPU_CFARCAProcHWA_Cmd_CfarDopplerCfg)。这些配置还允许设置CFAR参数,如阈值比例和窗口/保护长度。通过将多普勒方向的检测阈值设置为零,可以绕过多普勒域中的CFAR检测处理。在这种情况下,多普勒域中的峰值分组不可用。

警告:
对于xWR18xx:HWA的peak-grouping功能声明peak,如果被测单元严格大于其最邻近单元。这意味着,如果邻域完全相同,则与对象对应的CFAR检测到的峰值组可能导致没有声明属于该组的单峰,即CFAR否则声明检测到的对象将由于峰值分组而未被检测到。邻域相同的可能性取决于CFAR算法的类型。例如,当CFAR的输入来自2D FFT的对数幅度的虚拟天线的和时,由于在距离或多普勒FFT中使用的FFT窗口的类型(较宽的主瓣可能增加机会)、对于函数的性质(在较高的值处更平坦),有可能具有相同的相邻峰值,测井和震级计算中的近似值,FFT的插值程度(更多的插值可能增加机会)等。如果用户的应用程序不能接收这种可检测性反转,则建议用户禁用峰值分组功能。

HWA-CFAR的时序图如下所示
在这里插入图片描述

CFARCA HWA APIs

  • DPU_CFARCAProcHWA_init DPU初始化函数

  • DPU_CFARCAProcHWA_config DPU配置函数。只有在使用DPU_CFARCAProcHWA_init初始化DPU之后,才能进行配置。

  • DPU_CFARCAProcHWA_config。如果此DPU使用的参数没有从一个帧更改到下一个帧,则第一个帧只能调用一次DPU_CFARCAProcHWA_config,对于每个帧。

  • DPU_CFARCAProcHWA_process在无需重新配置DPU可以能被执行

  • DPU_CFARFAProcHWA_control DPU控制函数,他处理从DPC接收到的消息:

    • DPU_CFARCAProcHWA_Cmd_CfarRangeCfg,
    • DPU_CFARCAProcHWA_Cmd_CfarDopplerCfg,
    • DPU_CFARCAProcHWA_Cmd_FovRangeCfg,
    • DPU_CFARCAProcHWA_Cmd_FovDopplerCfg
      完整的APU详细信息可在cfarcaProc DPU External

DSP-CFARCA DPU

Introduction

该DPU利用DSP上运行的恒虚警和峰值分组算法,从距离/多普勒检测矩阵中实现恒虚警目标检测。CFAR检测是在距离域和多普勒域进行的。DPU导出在距离域和多普勒域中检测到的对象列表。一个高级数据流如下图所示。
在这里插入图片描述
检测对象列表的大小由DPU_CFARCAProcDSP_HW_Resource_t::cfarRngDopSnrListSize定义。当仅存在多普勒域或距离域处理时,检测到的对象可能由于该尺寸限制而被截断。当多普勒域和距离域处理都启用时,多普勒域的输出将只放入多普勒检测位模阵列,因此不受大小的限制。在距离域处理之后,然后填充检测列表。如果检测到的对象太多,列表将被截断位DPU_CFARCAProcDSP_HW_Resources_t::cfarRngDopSnrListSize

下图描述了DPU实现:
在这里插入图片描述

输入是DPIF_DetMatrix DPIF_DETMATRIX_FROMAT_1格式的距离多普勒检测矩阵,该矩阵的元素是2D FFT接收天线上的log2幅度之和。

多普勒域检测过程通过触发输入EDMA(DPIF_CFARCAProcDSP_HW_Resource::edmaInPing 和 edmaInPong)来启动,该输入以EDMA以ping/pong方式一次将检测矩阵(DPIF_DetMatrix)从L3内存复制到本地缓冲区(DPU_CFARCAProcDSP_HW_Resources::localDetMatrixBuffer)。然后执行CFARCA算法并根据检测结果生成cfarDopplerDetOutBitMask

在完成所有的距离箱和整个cfarDopplerDetOutBitMask表的填充后,CPU在距离域中为那些已检测到cfarDopplerDetOutBitMask所指示的对象的多普勒线启动CFAR。

在DSP CFAR检测完成后,如果启用峰值分组,则执行峰值分组并填充最终检测对象列表(DPIF_CFARDetList_t)。

注意:
与HWA-CFAR情况不同,DSP实现声明peak-if-peak-under-evaluation大于或等于邻居(CFAR-qualified或not),因此HWA-CFAR的peak-grouping中前面描述的问题对于该DSP实现不存在。

如果满足以下条件,则在最终列表中显示对象:

  1. 在多普勒和距离域都可以检测到目标

  2. 当发出下列任一信号时,距离和多普勒指数在由应用程序给出的FOV配置正确的范围内:

    1. DPU_CFARCAProcDSP_config (DPU_CFARCAProcDSP_DynamicConfig::fovRange, DPU_CFARCAProcDSP_DynamicConfig::fovDoppler)
    2. 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检测处理。

CFARCA DSP APIs

DPU_CFARCAProcDSP_init DPU初始化函数。
DPU_CFARCAProcDSP_config配置函数。只有在使用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,它处理从DPC接收到的以下的消息:

  • DPU_CFARCAProcDSP_Cmd_CfarRangeCfg,
  • DPU_CFARCAProcDSP_Cmd_CfarDopplerCfg,
  • DPU_CFARCAProcDSP_Cmd_FovRangeCfg,
  • DPU_CFARCAProcDSP_Cmd_FovDopplerCfg

完整的API详细信息可在cfarcaProc DPU External查看

参考文献:

  1. 《mmWave SDK Module Documentation》

猜你喜欢

转载自blog.csdn.net/Xiao_Jie123/article/details/113652856