Tool/software:
Dear TI Team,
I would like to inquire about the implementation of Non-Coherent Summation and the detection matrix for SNR value in the TI 1432BSD Demo v4.1, particularly focusing on the Doppler DPU.
As I understand, there are two non-coherent summation stages involved in the Doppler processing:
-
Sum of Doppler FFT output absolute values across Rx antennas
-
Sum (or Max) of Doppler FFT output absolute values across DDMA bands
(From the demo, it uses SUM)
While examining the dopplerProcHWA_ConfigHWA
function, I have a couple of questions:
1. Regarding averaging in non-coherent summation across Rx channels
In this stage, HWA_FFT_MODE_OUTPUT_SUM_STATS
is used, which performs accumulation only. However, I am wondering why this summation is not followed by an averaging step (i.e., division by the number of Rx channels).
Is this because the averaging is deferred until the final SNR computation, where the detection matrix is used to extract the SNR, and then divided by the number of non-coherent summed elements?
However, from the code, I did not find such a division mechanism:
noisedB = DPU_CFAR_CONV_LOG2Q11_TO_20LOG10((float)cfarCellNoise); snrdB = DPU_CFAR_CONV_LOG2Q11_TO_20LOG10((float) detMatLog2[rangeIdx * numDopplerBinsPerBand + dopplerIdx]) - noisedB;
Wouldn’t this result in an SNR value that does not properly account for the non-coherent summation?
For example, in mmwave_automotive_toolbox_3_2_0, specifically in lab0007 medium_range_radar, the non-coherently summed values are explicitly divided by the number of summations:
/* 4. Note that the peakVal is taken from the sumAbsRange. */ detObj2DRaw[numDetObj2D].peakVal = sumAbsRange[rangeIdx] >> obj->log2numVirtAnt; /* 5. Note that the SNR is taken from the CFAR output. */ detObj2DRaw[numDetObj2D].rangeSNRdB = cfarDetObjSNR[detIdx2] >> obj->log2numVirtAnt;
Could you clarify why this averaging is not applied in the 1432BSD demo? Or is it perhaps handled implicitly at a later stage in the processing chain?
2. Regarding summation across DDMA bands and averaging
This step sums the Doppler FFT output absolute values across DDMA bands, and from the configuration:
cfg->staticCfg.detectionMode == DPU_DOPPLERPROCHWA_DDM_SUM_ACROSS_BANDS
Additionally, I noticed in the code that the following line is used:
I would like to ask:
-
Why is the scaling value set to
numDDMABands - 1
? -
Is this step intended to perform an average across the 4 DDMA bands after non-coherent summation across DDMA bands?
-
Why is averaging applied across DDMA bands, but not across Rx channels in previous question?
I would appreciate any clarification regarding the rationale behind these design choices.
Thank you for your support.
Best regards,
Yuri