AWR2944P: How to trigger EDMA input transfers automatically after HWA paramset completion

Part Number: AWR2944P

Tool/software:

Hello,

My use case is running a range-bin by range-bin VFFT pipeline inside the HWA:

  • PS0: BFP decompression (input from L3 -> HWA RAM)

  • PS1: FFT

  • PS2: BFP compression of FFT output

Currently I am handling input this way:

  1. CPU triggers an EDMA transfer(using EDMACCPaRAMEntry) for one rbin from L3 to HWA RAM.

  2. CPU then triggers PS0 by software.

  3. Wait for completion, repeat in a for-loop for every rbin. (for loop for updating srcAddr to point at the next rBin)

This works but is inefficient because the CPU is tied up driving EDMA for each rbin.

Goal:
Eliminate the CPU for-loop. I would like:

  • The first EDMA transfer to be kicked manually by the CPU.

  • When EDMA completes, it should trigger PS0 start 

  • When PS0 finishes, it should trigger a DMA request back to EDMA to start the next rbin transfer automatically.

  • This sequence should repeat until all rbins are processed, with no CPU intervention.

Questions:

  1. Is this flow supported by HWA?

    • EDMA completion -> trigger to start PS0.

    • HWA PS0 done -> triggers edma  -> EDMA event for next transfer.

  2. In the HWA paramset configuration:

    • For PS0, should I set triggerMode = HWA_TRIG_MODE_DMA and enable dma request in interrupt Cfg?

    • Which dmaRequestLine value should be used to connect PS0 completion back to EDMA?

  3. On the EDMA side:

    • Should I build a linked PaRAM list (one per rbin), with the channel bound to the HWA DMAREQ line?

    • How do I route the chosen EDMA TCC completion to HWA_TRIG_IN0 so PS0 gets triggered correctly?

  4. Also can you explain the concept of the field 'headerEnable' field in Compression?
  • Hi Anshuman,

    EDMA completion -> trigger to start PS0.

    This is possible. You can refer to section 28.2.1.2 State Machine – Trigger Mechanisms of AWR2944P Technical Reference Manual (Rev. A). There are many instances in the processing chain where we make use of this feature. 

    HWA PS0 done -> triggers edma  -> EDMA event for next transfer.

    Yes, this is also possible.

    For PS0, should I set triggerMode = HWA_TRIG_MODE_DMA and enable dma request in interrupt Cfg?

    You can check RANGE CFAR PARAMSET in DPU_RangeCfarProcHWA_configHwa function where you have an example to trigger HWA after DMA transfer and also the example to trigger DMA transfer after HWA paramset. Along with this paramset, you can also take a look at DMA paramset configuration also.

    Which dmaRequestLine value should be used to connect PS0 completion back to EDMA?

    You need to use HWA DMA channels for this purpose. Refer to section 11.6 EDMA Event Map of TRM for the TPCC event numbers of HWA DMA channels.

    For your third question, I suggest you to refer to the example that I have mentioned as an answer for second point.

    My use case is running a range-bin by range-bin VFFT pipeline inside the HWA:

    For this, you can refer to DopperprocDDMA DPU in the SDK. We do not compress just a single range bin data after 1D FFT. Rather, we compress 1D FFT of n Range Bins for a given chirp. When you decompress the radar cube, you get n range bins data. So, we perform doppler processing of each of the range gate. For example, if we configure 8 Range bins per block to compress, when we decompress we get 8 range bins information and then perform doppler processing of each of those 8 range gate. Once the doppler processing of 8 range gates is completed, then we decompress next set of range bins.

    Regards,

    Samhitha