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.

TIDEP-01012: 2D FFT on EVE not supported above 64 doppler bins?

Part Number: TIDEP-01012


Greetings,

I was trying to quantify the performance metrics of the cascade radar, so I was running the radar_object_detect use case on Processor SDK. I was choosing DSP or EVE for 2D FFT and I was recording the output FPS from performance statistics 'p'. What I found out was when I selected eve for 2D FFT for 128 doppler bins, the OS crashed and it gave me a different error message depending on the frame periodicity selected. 
I'm changing the chirp parameters from the file "chains_common_cascade_ar12xx_config_mimo.c" I'm uploading my evaluation sheet. The error messages are color-coded to the corresponding range/doppler and the periodicity cell. TI RADAR performance chart(FPS).xlsx

Is anything above 64 on 2D FFT not supported by EVE? If it is, what changes need to be made in the source code to support it?

Thank you for your help.

  • Hi,

        We support 64 to 512 Doppler bins. From the error message it looks like some memory allocation failed. I will loop in someone from SDK team to look into the error.

    Regards,

    Anshu

  • Thank you Anshu

  • Hi Asher

    For the failure with 256x128 at 32 ms frame time, The reason for the failure looks like the frame time is not sufficient for the entire chirping.

    The number of chirps is 10 in the default and the formula becomes:

    Formula to calculate the minimum frame period
    No of Tx Antenna 10
    Idle time(us) 4
    Ramp end time (us) 23
    Doppler bins 128
       
    Minimum periodicity(ms) 36.56

    Thanks and Regards

    Piyali

  • For the EVE, the issue is there is a double allocation which creates a problem in the overall memory size available. Please fix the following file by adding the lines in yellow:

    vision_sdk\apps\src\rtos\radar\src\alg_plugins\alg_fxns\radardspcascademimo\radarDspCascadeMimo.c

    Function:

    AlgorithmFxn_RadarDspCascadeMimoCreate

    if (pLinkCreateParams->skipDopplerFft == 0U)
    {
    pObj->opBuf2Dfft = (AlgorithmFxn_RadarDspCascadeMimoComplexNum *)
    Utils_memAlloc(UTILS_HEAPID_DDR_CACHED_SR,
    pObj->opBufSize2Dfft,
    8U);
    UTILS_assert(pObj->opBuf2Dfft != NULL);
    }

    Function:

    AlgorithmFxn_RadarDspCascadeMimoProcess

    if (pLinkCreateParams->skipDopplerFft == 0U)
    {
    Cache_inv ((void *) pObj->opBuf2Dfft,
    numRangeBins * numDopplerBins *
    sizeof(AlgorithmFxn_RadarDspCascadeMimoComplexNum) * writeStep,
    Cache_Type_ALLD,
    TRUE);
    }

    Thanks and Regards

    Piyali

     

  • Piyali Goswami said:

    Hi Asher

    For the failure with 256x128 at 32 ms frame time, The reason for the failure looks like the frame time is not sufficient for the entire chirping.

    The number of chirps is 10 in the default and the formula becomes:

    Formula to calculate the minimum frame period
    No of Tx Antenna 10
    Idle time(us) 4
    Ramp end time (us) 23
    Doppler bins 128
       
    Minimum periodicity(ms) 36.56

    Thanks and Regards

    Piyali

    Thanks for the response Piyali. Although I'm not sure what you mean by default chirps as being 10. In the file "chains_common_cascade_ar12xx_config_mimo.c" the formula to calculate minimum periodicity is given as 

    #define TOTAL_CHIRP_TIME_US ( /* number of chirps */                     \
                                 (CHAINS_CASCADE_RADAR_NUM_TX_ANTENNA *      \
                                  CHAINS_CASCADE_RADAR_RADAR_HEIGHT) *       \
                                 /* time of one chirp */                     \
                                 (CHAINS_CASCADE_RADAR_RAMP_END_TIME_IN_US + \
                                  CHAINS_CASCADE_RADAR_IDLE_TIME_IN_US)      \
                                )
    
    #if ((CHAINS_CASCADE_RADAR_FRAME_PERIODICITY_MS * 1000) < (TOTAL_CHIRP_TIME_US + 2000U))
    #error frame periodicity too low
    #endif

    and the value of CHAINS_CASCADE_RADAR_NUM_TX_ANTENNA  is 8U. 
    Putting all of this in the formula gives the minimum periodicity as 

    No of Tx Antenna 8
    Idle time(us) 4
    Ramp end time (us) 23
    Doppler bins 128
       
    Minimum periodicity(ms) 29.648

    Selecting DSP for 2D FFT still failed with the error given in the excel sheet. Is there another formula that I'm missing?

  • Asher,

    The CHAINS_CASCADE_RADAR_NUM_TX_ANTENNA   Macro is not a true representation of the number of chirps in the frame. It is determined by the following macros:

    #define CHAINS_CASCADE_CHIRP_START_IDX 0
    #define CHAINS_CASCADE_CHIRP_END_IDX 9

    That is what is used in gChains_cascadeRadarFrmArgsMaster and gChains_cascadeRadarFrmArgsSlave.

    Regards

    Piyali

  • Hi Piyali,

    The formula requires number of TX Antennas and not number chirps used. We are both confused why you substitute No. Antennas with No. Chirps. Please educate us a bit,

    Thanks,

    --Khai

  • Khai

    The formula in the macro is incorrect. It only makes sense when the number of transmit antennas is the same as the number of chirps.

    The frame time is determined by the number of chirps in the frame.

    Thanks and Regards

    Piyali

  • Hi Piyali,

    Is there document explaining how to set up chirp configuration for cascade radar? Without documentation, it's hard to figure out what the code is doing in the Cascade use case in the SDK.

    Thanks,

    --Khai

  • Khai

    You can have a look at http://www.ti.com/lit/an/swra574b/swra574b.pdf for the general introduction for the cascade radar system. Section 5 Software Messaging would be of interest to you.

    Thanks and Regards

    Piyali

  • Hi PIyali,

    In the chirp config for Master and Slaves for cascade use case where you have 10 chirp indexes defined for Master and Slaves, is there any particular reason you chose to set txEnable the way it is in the use case or this can just be randomly selected? Let me see if I understand this correctly. Please correct me if I am wrong.

    On the Master AWR, Chirp index 7,8,9 have TX3, TX2, TX1 enabled respectively. Does this mean on the Master AWR, we only want to transmit chirp index 7,8 and 9?

    On the Slave 1 AWR, Chirp index 4,5,6 have TX3, TX2, TX1 enabled respectively. Does this mean on the this slave AWR, we only want to transmit chirp index 4,5 and 6 and so on?

    This is how you can say there are 10 chirp configs in a MIMO frame and thus the calculation of the time periodicity is defined based on the number of chirp indexes? So if we generalize this concept, and if we have all chirp indexes enabled on all 3 TX per sensor, the frame period would be 12 TX (4 sensor) * 10 chirps index * number of loops * duration of 1 chirp?

    Please confirm my understanding...

    Thanks,

    --Khai

  • Khai

    If you enable all Tx antennas at the same time in every chirp index you would need to count this as effectively one transmit antenna of digital data. So the calculation would be 10 chirps * num loops * duration of 1 chirp.

    If you enable Tx antennas in every chirp individually the calculation would be 10 chirps * num loops * duration of 1 chirp.

    So the number of Tx really does not impact the frame time. It is purely a function of the number of chirps. (and of course the loops and the duration of each chirp)

    Thanks and Regards

    Piyali

  • Hi Piyali,

    I thought chirp transmission on the TXes are TDM where if you have 2 or more TXes, chirps are transmitted in round robin on the TXes. Say of you have 2 chirp indexes defined and two TXes are enabled on a single AWR, then chirp0 will be transmitted on the 2 TXes and then chirp1 will be transmitted on the 2 TXes. Unless the defined chirps are transmitted in parallel across all enabled TXes across all sensors, then the number of TXes does not affect the frame time. Please clarify this is important for us to understand.

    If you can provide a visual presentation of different chirp scenario to help in our understanding, that would be better. We are trying to experiment with different chirping configuration to realize performance with the cascade board.

    Thanks,

    --Khai

  • Khai

    When 2 Txes are enabled for a single chirp, both Txes would fire simultaneously. So basically based on the phase value the Txes would interfere with each other and from a digital perspective behave as one.

    Beam forming and MIMO is described at a high level here: http://www.ti.com/lit/ug/tiduen5/tiduen5.pdf

    And some MIMO basics are described here: http://www.ti.com/lit/an/swra554a/swra554a.pdf

    Thanks and Regards

    Piyali

  • Hi Piyali,

    Thanks for the confirmation. We have accustom to using a single chirp index transmitting it on a single TX and loop over 128 times. The return chirps are received over 4 RX and then sampled to 256 range bins. Thus my radar cube size is 1TX x 4RX x 128 loops x 256 range bins. The result will be 4 channels of ADC data of size 128 x 256 coming into the TDA controller.

    In the MIMO use case where it's chirping out 10 chirp indexes over 10 enabled TX channels in TDMA fashion and loop over 64 times. The returns of each transmitted chirp out of a TX are received over 16 RX channels and are sampled to 256 range bins per channel. Thus, my radar cube is 10 chirp index x 16 RX x 64 loops x 256 range bins. The result of this use case will be 160 ADC channels of size 64 x 256 coming into the TDA controller. Please confirm my understanding...

    1. Is my understanding correct? If so, that's a lot of data to be kept in memory? What's the upper limit to keep ADC data on DDR?

    2. If so, does this mean each EVE is responsible for processing 1/4 of the ADC channels?

    3. Assuming 2D-FFT is done all in the EVE, does that mean each EVE is outputting 40 RDMs and Energy Sum will take 160 RDMs and output the SUM of a single RDM?

    4. All 160 RDMs are required to be kept in DDR for Az/El FFTs processing.

    Thanks,

    --Khai

  • Your understanding is correct. The cascade radar has about 300 MB of DDR memory for storing the RDMs from the different stages of the processing.

    Regards

    Piyali

  • Hi Piyali,

    Thanks for your response. Can you confirm my understanding of 2,3 and 4?

    --Khai

  • 2. If so, does this mean each EVE is responsible for processing 1/4 of the ADC channels?

    Yes

    3. Assuming 2D-FFT is done all in the EVE, does that mean each EVE is outputting 40 RDMs and Energy Sum will take 160 RDMs and output the SUM of a single RDM?

    Yes

    4. All 160 RDMs are required to be kept in DDR for Az/El FFTs processing.

    Yes

    Thanks and Regards

    Piyali