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.

CCS/AWR1843BOOST: WEBENCH® Tools/AWR1843BOOST:

Part Number: AWR1843BOOST

Tool/software: Code Composer Studio

Hi all,

I am developing an application based on "lab0007_medium_range_radar" project found in “mmwave_automotive_toolbox_3_0_0”
1.  I want to know if the CRT algorithm that is used to improve 'max velocity' in the MRR sub frame is running on both groups (0 and 1) of chirps or only in the second group of slower chirps.

2. Using the MRR80 setup: What is the theoretical max velocity I can achieve using the CRT, for this application?

I see the code in function:

void MmwDemo_interFrameProcessing(MmwDemo_DSS_DataPathObj *obj, uint8_t subframeIndx)”

in “dss_data_path.c” file.

Thank you,

Claudio  

 

 

  • Hi,

    I would have to check with algorithm developer and get back to you in a few days

    thank you

    Cesar

  • Till then waiting...

    Thanks Cesar,

    Claudio

  • Thank you

    cesar

  • Hi,

    The Chinese Reminder Theorem uses input from the 2D FFT of both group0 (fast) and group1 (low) is used.

    I still need to get back to you regarding the max speed achievable

    Thank you

    Cesar

  • Hi,

    For MRR the native max velocity is ~ 47 kmph. With CRT we achiev 3x Vmax ~145 kmph

    Thank you

    Cesar

  • Hi Cesar,

    I understand that the CRT is already implemented and running as default in the MRR_DSS data path section. Is it correct?

    In MRR project I can choose between 120m and 80m range setup.

    Max Velocity of 47-145 Km/h refers to both or only one of them?

    If only one which one and what are the numbers for the other one?

    Thanks,

    Claudio

  • Hi Cesar,

    We are using MRR80 and USRR20 subframes setup for our application.

    Does this setup affect the Max Velocity of 47-145 Km/h you noted?

    Does the USRR20 subframe data with TDM-MIMO multiplexing participate in the 2D-FFT and the final Doppler calculation?

    Thanks,

    Claudio

  • Sorry,

    We are using MRR80 and USRR30 subframes setup for our application.

    Claudio

  • Hi,

    The Maximum Velocity is dependent on the total chirp time.

    Please find a thread that explains how Maximum Velocity is computed

    Thank you

    Cesar

  • Hi Cesar,

    In theory I know how to calculate the max velocity and that it depends on chirp spacing.

    I am using the 'MRR_18xx' lab with MRR80 and USRR30 subframes setup and my specific question is:

             Is the calculated velocity in the doppler section of the point cloud TLV in each frame, the calculation result of the MRR subframe using the CRT only or a kind combination of both subframes?

    I am not able to see it in the 'dss_data_path' code where I suppose those calculations are done.

    Thanks,

    Claudio 

  • Hi,

    The code defines two processing paths. Unfortunately the terminology is a little confusing. "MAX_VEL_ENH_PROCESSING" refers actually to MRR subframe and "POINT_CLOUD_PROCESSING" refers to USRR subframe.

    /*! @brief There are two processing paths in the MRR Demo. */
    #define MAX_VEL_ENH_PROCESSING (0U)
    #define POINT_CLOUD_PROCESSING (1U)

    So, as shown in the code, the Velocity Enhancement is ONLY performed on MRR subframes.

    Please see following section of the code

    labs\lab0007_medium_range_radar\src\dss\dss_data_path.c

    /**
    *  @b Description
    *  @n
    *    Interframe processing. It is called from MmwDemo_dssDataPathProcessEvents
    *    after all chirps of the frame have been received and 1D FFT processing on them
    *    has been completed.
    *
    *  @retval
    *      Not Applicable.
    */
    void MmwDemo_interFrameProcessing(MmwDemo_DSS_DataPathObj *obj, uint8_t subframeIndx)
    {
        uint32_t rangeIdx, detIdx1, numDetObjPerCfar, numDetDopplerLine1D, numDetObj1D, numDetObj2D;
        volatile uint32_t startTime;
        volatile uint32_t startTimeWait;
        uint32_t waitingTime = 0;
        uint32_t pingPongIdx = 0;
        uint32_t dopplerLine, dopplerLineNext;
        startTime = Cycleprofiler_getTimeStamp();
           
        /* Trigger first DMA (Ping) to bring the 1DFFT data out of L3 to dstPingPong buffer  */
        MmwDemo_startDmaTransfer(obj->edmaHandle[EDMA_INSTANCE_DSS],
            MRR_SF0_EDMA_CH_2D_IN_PING,
            MRR_SF1_EDMA_CH_2D_IN_PING,
            subframeIndx);

        /* Initialize the  variable that keeps track of the number of objects detected */
        numDetDopplerLine1D = 0;
        numDetObj1D = 0;
        MmwDemo_resetDopplerLines(&obj->detDopplerLines);
        
        for (rangeIdx = 0; rangeIdx < obj->numRangeBins; rangeIdx++)
        {
            
           
            /* Perform the 2nd dimension  FFT (doppler-FFT), compute the log2Abs, and provide the
             * noncoherently added sum of the log2Abs across antennas as the output (sumAbs). */
            waitingTime += secondDimFFTandLog2Computation(obj, obj->sumAbs, CHECK_FOR_DET_MATRIX_TX, rangeIdx, &pingPongIdx);

            if (obj->processingPath == MAX_VEL_ENH_PROCESSING)
            {
                /* In the subframe for maximum velocity enancement, the second half of the chirps of the
                * subframe consists of 'slow chirps', i.e., chirps with larger idle times compared to
                * the first set. These have a different (lower) max-unambiguous-velocities, and its
                * 2D-FFT output can be used (along with the 2D-FFT output of the 'fast-chirps' of the
                * first half of the frame ) with the chinese remainder theorem (or CRT) to increase
                * the max-unambiguous velocity. */
                waitingTime += secondDimFFTandLog2Computation(obj, obj->sumAbsSlowChirp, DO_NOT_CHECK_FOR_DET_MATRIX_TX, rangeIdx, &pingPongIdx);
            }

            /* doppler-CFAR-detecton on the current range gate.*/
            numDetObjPerCfar = cfarCa_SO_dBwrap_withSNR(
                obj->sumAbs,
                obj->cfarDetObjIndexBuf,
                obj->cfarDetObjSNR,
                obj->numDopplerBins,
                obj->cfarCfgDoppler.thresholdScale,
                obj->cfarCfgDoppler.noiseDivShift,
                obj->cfarCfgDoppler.guardLen,
                obj->cfarCfgDoppler.winLen);

            /* Reduce the detected objects to peaks. */
            numDetObjPerCfar = pruneToPeaks(obj->cfarDetObjIndexBuf, obj->cfarDetObjSNR,
                                            numDetObjPerCfar, obj->sumAbs, obj->numDopplerBins);

  • Hi Cesar,

    The above picture is the TLV format readout for the Point Cloud available after frame processing.
    I want to know if the Doppler Index for each point is calculated using the MRR+CRT only or a kind of combination with the USRR.
    Thanks,
    Claudio

     

  • I did not see any picture. Maybe you forgot to include it.

    My understanding is that there is no interaction between the MRR and USRR subframes.

    So, the doppler index is computed for MRR subframe only based on MRR+CRT information

    thank you

    Cesar

  • Hi Cesar,

    I understood that there is a TLV for each - MRR / USRR - subframe, I can see which subframe is sent at the last four bytes of the TLV Header.

    This answer my questions.

    Thank you very much,

    Claudio