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.

AWR1843BOOST: MRR Beamsteering - HWA

Part Number: AWR1843BOOST

Tool/software:

Hi ,

 For MRR Beamsteering example, 1D (range) FFT processing performed by the HWA .

 I'd like to know ,

1. What's HWA input mode? Mapped or Isolated ?

2. What's radarCube formats?

Where can I check above questions  in the source code?

 

Thanks

BRs

Bruce

  • Hi,

    The HWA input is Mapped. This can be seen in the HWA configuration.

    1. What's HWA input mode? Mapped or Isolated ?

    The radar cube format is transposed, ready to be processed by 2D FFT

    It is as follows

    ( chirp1, sample 1 (Rx1,2,3,4); chirp2 sample 1 ; ... chirpN sample 1

     chirp 1 sample 2; ..                                                  chrip N sample 2

    ...

    2. What's radarCube formats?
  • Hi Cesar,

    For "HWA input is Mapped "and "radar cube format" you mentioned, is it like the diagram shown as below? 

    ./ti/mmwave_sdk_03_06_02_00-LTS/packages/ti/datapath/dpu/rangeproc/docs/doxygen/html/dpu_rangehwa.html

     Or any other similar diagram  to show it?

    Thanks

    BRs

    Bruce

  • Hi Cesar,

     Where I can find  HWA configuration(Mapped input mode) in MRR Beamsteering source codes?

    Thanks

    BRs

    Bruce

  • Hi,

    The HWA State Machine Register FFT1DEN controls the ADC buffer sharing mode.

    For Range FFT it is enabled in dss_main.c in

    MmwDemo_config1D_HWA()
    /***********************/
        /* HWA COMMON CONFIG   */
        /***********************/
        /* Config Common Registers */
        hwaCommonConfig.configMask = HWA_COMMONCONFIG_MASK_NUMLOOPS |
            HWA_COMMONCONFIG_MASK_PARAMSTARTIDX |
            HWA_COMMONCONFIG_MASK_PARAMSTOPIDX |
            HWA_COMMONCONFIG_MASK_FFT1DENABLE |
            HWA_COMMONCONFIG_MASK_INTERFERENCETHRESHOLD;

        // Since numLoops for HWA means how many times to process the set of paramsets,
        // and we've defined paramsets for 1 ping and 1 pong, divide the total chirps by 2.
        hwaCommonConfig.numLoops      = obj->numChirpsPerFrame / 2;
        hwaCommonConfig.paramStartIdx = startIdx;
        hwaCommonConfig.paramStopIdx  = startIdx + 3;

        /* HWA will input data from ADC buffer memory*/
        hwaCommonConfig.fftConfig.fft1DEnable = HWA_FEATURE_BIT_ENABLE;
    Thank you
    Cesar
  • Yes, this is similar

    thank you

    Cesar

  • Hi Cesar,

      Is it correct for below understanding?

        "HWA_FEATURE_BIT_ENABLE"  => Mapped

        " HWA_FEATURE_BIT_DISABLE" => Isolated 

       /* HWA will input data from ADC buffer memory*/
        hwaCommonConfig.fftConfig.fft1DEnable = HWA_FEATURE_BIT_ENABLE;
    Thanks
    BRs
    Bruce
  • Yes,

    Please view the HWA documentation.

    https://www.ti.com/lit/ug/swru526b/swru526b.pdf

    Table 2 - State Machine Registers

    thank you

    Cesar

  • Hi Cesar,

     For MRR in MmwDemo_interFrameProcessing() function, I am confused for Slow chirp .

    For  radarCube[slowChirpOff] to obj->dstPingPong[0], I copy related codes and have the chart to show my understanding.

    void MmwDemo_interFrameProcessing(MmwDemo_DSS_DataPathObj *obj, uint8_t subframeIndx){

     ...

     slowChirpOff = obj->numDopplerBins * obj->numVirtualAntennas;

    ...

     // setup the first virtual antenna's data to be transferred.
     / / This needs to start with chirp 128 - the "slow" chirps.
     Config_2d_and_Azm_Edma(obj, 0, (uint8_t *)&obj->radarCube[slowChirpOff]);

     ..

    }

    Config_2d_and_Azm_Edma() => EDMAutil_configType2b()

    In EDMAutil_configType2b() function for this case, related EDMA config parameters are as below,

    bCount = 128;
    cCount = 4
    sourceBindex = 16
    destinationBindex = 4
    sourceCindex = 4
    destinationCindex=512 

     The Radar cube and dstPingPong are as the picture:

    The value copied from Radar cube[512] to dstPingPong [0], is it correct? Or any misunderstanding?

    Thanks

    BRs

    Bruce

  • Hi,

    Please find attached some documentation about the MRR Beamsteering demo.

    This is all the documentation we have available for this demo. 

    For additional information please study the source code provided.

    thank you

    Cesar

    MRR_Beamsteering.pdf

  • Hi Cesar,

      Thanks for the document, one thing I'd to clarity for the source codes about MRR.

      Since  array size of  dstPingPong is 256, but cCount is 4 about below operation.

       Will it repeat 4 times automatically or just once ? 

       if it's just once, why set cCount as 4?

    In EDMAutil_configType2b() function for this case, related EDMA config parameters are as below,

    bCount = 128;
    cCount = 4
    sourceBindex = 16
    destinationBindex = 4
    sourceCindex = 4
    destinationCindex=512 

  • Hi,

    CCount is the number of Rx Antennae if I remember correctly. So, it will repeat 4 times. 


    For EDMA configuration I recommend you view the online training

    https://www.ti.com/video/4163923727001

    After viewing this you can refer to the EDMA chapter in the TRM

    https://www.ti.com/lit/ug/swru520e/swru520e.pdf

    Figure 13-5, 13-6, 13-7 help understand the EDAM transfer configuration

    thank you

    Cesar

  • Hi Cesar, 

    Yes, I have read EDMA chapter in the TRM.

    From the codes , CCount is the number of Rx Antennae, so it will repeat 4 times. 

    Then My question is:

    Since  array size of  dstPingPong is 256, but cCount is 4 .

    /* 2D FFT. */
    MMW_ALLOC_BUF(dstPingPong, cmplx16ReIm_t, heapL1start, MMWDEMO_MEMORY_ALLOC_DOUBLE_WORD_ALIGN, 2 * obj->numDopplerBins)

    In EDMAutil_configType2b() function for this case, if it repeats 4 times, it will exceed 256. (128*4 = 512)

    Any EDMA configuration I missed? 

    Thanks

    BRs

    Bruce

  • Hi,

    I understand your question.

    I would need to review and run the code

    Unfortunately I will only be able to do that next week

    thank you

    Cesar

  • I was a able to look at the code earlier than what I have thought

    EDMAutil_configType2b() configures a SyncAB type transfer.

    Please review the TRM block diagram for this type of transfer.

    In AB-synchronized transfer, each EDMA sync event performs the transfer of one frame.

    In this case only 1 Rx will be transferred in one frame. This is the reason why the size of the dstPingPong buffer is sufficient

    thank you

    Cesar

  • Hi Cesar,

    Thanks for your reply.

    Another question is about EDMAutil_configHwaTranspose() function.

    It is SyncAB type transfer as well, how does  it repeat 128 times(cCount = numChirpsPerFrame / 2) ?

    It will transfer HWA data to radar Cube as below chart. 

    Is any different setting between EDMAutil_configType2b() and EDMAutil_configHwaTranspose() ?

    EDMAutil_configType2b()  performs the transfer of one frame.

    EDMAutil_configHwaTranspose() performs 128 times frame by frame.

    EDMAutil_configHwaTranspose() => 

    config.paramSetConfig.sourceAddress = (uint32_t)pSrcAddress;
    config.paramSetConfig.destinationAddress = (uint32_t)pDestAddress;

    config.paramSetConfig.aCount = numAnt * 4;
    config.paramSetConfig.bCount = numRangeBins;
    config.paramSetConfig.cCount = numChirpsPerFrame / 2; => 128 times
    config.paramSetConfig.bCountReload = 0; // config.paramSetConfig.bCount;

    config.paramSetConfig.sourceBindex = numAnt * 4;
    config.paramSetConfig.destinationBindex = numChirpsPerFrame * numAnt * 4;

    config.paramSetConfig.sourceCindex = 0;
    config.paramSetConfig.destinationCindex = numAnt * 4 * 2;

    config.paramSetConfig.linkAddress = EDMA_NULL_LINK_ADDRESS;
    config.paramSetConfig.transferType = (uint8_t)EDMA3_SYNC_AB;

    Thanks

    Bruce

  • Hi

    You will notice that transpose transfer has intermediate chaining enabled. So, a new EDMA sync event is created after one frame teansfer has completed. This EDMA event is produced by the EDMA chained.

    Thank you

    Cesar