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.

[FFTC/RX-PacketDMA] how to skip parts of a packets payload?

Hi,

I'm doing a large FFT with the FFTC and just want to use parts of the result.

e.q. the central 600 carriers of an 2048 point fft (10MHz LTE signal / 30.7MHz sampling rate). I want to reduce the amount of storage and memory bandwidth needed.Therefore I would like to not write out the first x samples and the last x samples. I saw no option to do this within the FFTC directly.

So my next guess was the RX-PacketDMA. As there is no entry for this in the Flow config,
I hope there is a possible mechanism by using chained host descriptors.

So my question:

Is there a special field in the descriptor to tell the PacketDMA not to write the data?

Or is there a "magic address", that ensures the copy operation does not run over the memory bus/terranet?

Sorry for the difficult question.

Sebastian

This is what I thought the RX-free descriptor queue should look like:

Descriptor 1 (Payload that should be skipped)

Data len=(2048-600)/2
Data ptr= "magic address"

Descriptor 2 (wanted result)

Data len=600
Data ptr=valid pointer

Descriptor 3 (Payload that should be skipped)

Data len=(2048-600)/2
Data ptr= "magic address"

  • Sebastian,

       The Navigator interface does not have the capability to discard portions of the packet.

        However, it can be configured to do something similar to what you have described. The memory saving comes via re-use of the same buffer for the un-wanted portion of the data. The RX flow allows you to specify three free queues in host mode for each host buffer. You can setup the first (RX_FDQ0_SZ0_QNUM) and the third (RX_FDQ2_QNUM) to point to the same queue (say Queue A) and the second one (RX_FDQ1_QNUM)) to a different queue (say B).

      Now fill Queue B with sufficient number of descriptors each linked to unique buffers sized to hold data for 600 carriers. Fill Queue A fit sufficient number of descriptors with each descriptor pointing to the same buffer sized to hold 2048 - 600/2 carriers. When a new packet arrives the first and last 2048-600/2 samples will be written to the same dummy buffer over and over again while the central 600 samples will be written to a unique buffer.

    Since this is in host mode the RX descriptor will have three linked descriptors. It is upto the application to unlink and return each descriptor to the appropriate free queues.

    Regards,

    Sudhanand.

  • Thanks for your answer Sudhanand,

    I didn't notice this feature of the PacketDMA. It works well.

    Sebastian