This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWRL6432: Detection Matrix Deviation.

Part Number: AWRL6432

Hi,

I am currently working on the "mmwave demo" example present in MMWAVE_L_SDK_05_03_00_02, where I face an issue with the Detection Matrix.

For the same RadarCube injected in the memory(using CCS) everytime, I save the Detection Matrix and expect it to be same always.

But when I do the comparison, the saved Detection Matrices vary from each other by difference of 1 bit values mostly, at multiple instances.

Can you please let me know what could be the possible reasons behind it and how it can be fixed.

Thanks and Regards

Bodhit Gupta

  • Hello Bodhit,

    Could you please describe the steps that you took to perform this test? Where you set breakpoints, the data that you load into the radar cube, your configuration (is it the SDK's parking_5m.cfg?), etc.


    Best regards,
    François.

  • Hello Francois, 

    Please find stepwise description of the test below.

    1. Config used : I am using the BYPASS_CLI to start the sensor automatically without giving any Config through Visualizer. The configuration values for this have been taken as it is from "parking_5m.cfg", Except "lowPowerCfg" made to 0 and "baudRate 1250000" command removed.

     Please find a screenshot  of the same here. 

    2. BreakPoint  for 1D FFT input and Reference Detection Matrix : I put  Breakpoint1 just before the call to function "DPU_DopplerProcHWA_process". At this Point I save the existing Radar Cube (96Kb Size).

    To collect Reference Detection matrix of the Corresponding Radar cube, I resume the pipeline for next frame. The execution hits Breakpoint1 again where i save the Reference Detection Matrix (16KB) memory corresponding to Input Radar Cube.

    3. Collecting Multiple Detection Matrices for same RadarCube : I inject the saved RadarCube(in step 2) at Breakpoint1, hit resume in CCS and save the Detection Matrices in the same fashion as step 2 and performed a comparison.

    These are the steps that i followed in the same order.

    Please let me know if you have any questions.

    Warm Regards

    Bodhit Gupta

  • Hi Bodhit,

    Thank you for the additional details. I'm looking into this and will follow up within a day or so.

    Thanks again,

    Clinton

  • Hi Bodhit,

    I wanted to let you know I'm trying to reproducing this issue on my end. I'll follow up tomorrow.

    Thanks,

    Clinton

  • Hi Bodhit,

    After looking into this further, the difference you are seeing in the detection matrices is most likely related to the dither added to FFT twiddle coefficients. Is this an issue for you?

    Thanks,

    Clinton

  • Hi Bodhit,

    The purpose of FFT's twiddle factors dithering is to improve the SFDR (spurious free dynamic range).

    This feature may be disabled in the rangeprochwa and zoomproc modules by:

    • removing HWA_COMMONCONFIG_MASK_TWIDDITHERENABLE when setting hwaCommonConfig.configMask
    • changing the setting of hwaCommonConfig.fftConfig.twidDitherEnable from HWA_FEATURE_BIT_ENABLE to HWA_FEATURE_BIT_DISABLE


    Best regards,
    François.

  • Hello Francois and Clinton,

    Thanks for the response.

    We are currently testing the changes suggested at our end.

    However i had a question, How does the change in Range DPU(rangeprochwa.c), affect the Detection Matrix, which is a product of Doppler DPU ?

    I would really appreciate if you can help me understand it.

    Best Regards

    Bodhit Gupta

  • Hello Bodhit,

    You are correct, the detection matrix is at the Doppler DPU level, when the dithering happens at the range DPU level. However this dithering would affect the range DPU and propagate into the Doppler DPU, thus the detection matrix.

    Looking forward to hearing the outcome of your test.


    Best regards,
    François.

  • Hello Francois,

    Thankyou for the clarity. I understand that the changes in range DPU level get propagated to Doppler DPU and hence Detection Matrix.

    But when I inject a Reference Radar Cube(collected previously with dithering Enabled) and discard the Real time dithering disabled RadarCube, just before the Doppler_process(), we still get matching Detection matrices which i am still not able to understand. 

    Please allow us some more time so that we test this thoroughly at our end and get back to you with an update on the test.

    Best Regards,

    Bodhit Gupta

  • Hi Bodhit,

    Could you provide an update on your testing?

    Thanks,

    Clinton

  • Hello Clinton,

    We are able to get Matching Detection Matrices for same Radar cube injected every time by disabling the dithering in RangeDPU.

    Can you please provide an explanation for this for my understanding :

    "When I inject a Reference Radar Cube(collected previously with dithering Enabled) and discard the Real time dithering disabled RadarCube, just before the Doppler_process(), we still get matching Detection matrices which i am still not able to understand."

    Thanks and Regards,

    Bodhit

  • Hello Bodhit,

    The dithering of the FFT coefficients happens during the range processing. When the range processing DPU generates the radar cube, the effect of the dithering is embedded into the radar cube.

    If you disable dithering before to perform Doppler processing, the Doppler DPU still receive the same radar cube, with the effect of the dithering during the range processing.

    If you leave the dithering enabled, the radar cube also remains the same, so the Doppler DPU will output the same results.

    Hope this clarifies. If so, please confirm that we may close this thread.


    Best regards,
    François.

  • Hello Francois, 

    Thankyou for the response.

    However it still remains unclear to me how the effect of Disabling dithering be embedded in the Radar Cube, when I am injecting another Radar Cube(Dithering Enabled) and discarding the existing one whole together.

    Since the injection of Dithering Enabled Radar Cube will be just before Doppler_process, I expect that the Detection Matrices should not match here. But somehow they match. I fail to understand so.

    Please help me understand the same.

    Thanks and Regards

    Bodhit

  • Hello Bodhit,

    Could you please describe exactly your datapath? What I am saying is that the dithering only affects the range processing, from the ADC data to the radar cube. What follows (Doppler, CFAR, AoA) only depends on the radar cube.

    So I expect the Doppler processing output will be the same irrespective of the dithering setting if its input is the same radar cube.

    The Doppler processing output will change with the dithering setting if its input is the same ADC data, because the ADC data goes first through the range processing which output depends on the dithering setting.


    Best regards,
    François.

  • Hi Francios,

    Thank you for the fix, we are getting consistent det-matrix without any deviation/mis-match.

    But we need some clarification here: Here we mentioned our debugging procedure that we followed:

    1. Started working on base SDK and built the respective binaries.

    2. In CCS, after loading the program, we kept a breakpoint at start of DPU_DopplerProcHWA_process function and ran the code.

    3. After hitting the break point, we captured radar-cube, Since base SDK contains dither enabled Rangeproc DPU, the output is also dither enabled radar-cube

    4. Did step over and collected the det-matrix also. 

    5. Collected multiple det-matrix data with same dither enabled radar-cube and compared with each other. Observed that there is det-matrix mismatch.

    At this point we raised this question in e2e.

    6. After implementing the suggested fix (i.e., disabling dither in Rangeproc DPU), we again collected multiple det-matrix data using the same dither enabled radar cube captured in Step 3 and observed that there is no mismatch.

    We can understand that  dither disabled radar-cube should give same det-matrix, but why the dither enabled radar-cube is giving consistent det-matrix output after implementing fix in range proc DPU.
    By seeing this, We have a question: Is there any configuration dependency/leakage happening from range proc DPU to doppler proc DPU. If not, why the dither enabled radar-cube is giving consistent det-matrix output after implementing the fix in range proc DPU but not having any configurational change in Doppler DPU?

    I hope our question is more clear now. Please let me know if you have any questions in our debugging procedure.

    Regards
    M Girish Veerendra

  • I wanted to note here that this information is being evaluated.

    Thanks,

    Clinton

  • Hi Clinton, please let us know if there are any updates.

  • Hi Girish,

    I'm trying to recreate your issue on my end. I plan to follow up later today.

    Thanks,

    Clinton

  • After further investigation, the occasional differences in the detection matrices is likely do to the chirping activity continuing and triggering EDMA transfers that overwrite some of the injected data. I’ve indicated this in the “Range DPU block diagram” figure below with a green arrow.

    A potential way to avoid this is to disable the EDMA transfers around where the radar cube data is injected and the detection matrix is saved. This can be accomplished by adding the code highlighted in red below around where the breakpoint has been added to inject the radar cube. After this injection, step over and save the detection matrix.

    From: MMWAVE_L_SDK_05_03_00_02\docs\ MotionPresenceDetectionDemo_documentation.pdf - page 13:

     

    From mmwave_demo.c:

    Thanks,

    Clinton