ΣSigmaStudio Ask AI Русский Log in

Multi-channel (TDM) SPORT DMA followed by FFT

Processors & DSP balt1 Dec 9, 2015 00:00 4 replies Original on forum ↗
Subscribe
balt1 Question
Dec 9, 2015 00:00

I hope someone can point me in the right direction. I am attempting to port a beamformer into an ADSP-21469. Our approach is to pass many channels of data into the DSP (from an FPGA) using multi-channel SPORT. This is a frequency domain beamformer, so the first operation on the data will be FFT. Here is my dilemma: multi-channel SPORT DMA appears to interleave channels in memory, but the C library FFT seems to require that the time series input blocks are packed. It does not appear to me that the SPORT DMA hardware is capable of organizing the data to group each channel's samples into a block. Maybe I am stuck with the channel interleaved data. This wouldn't bother most FFT routines that I have used in the past. FFTW, for example, allows you to supply a "stride" parameter that allows it to skip through the interleaved channels. It looks like the FFTA DMA is capable of performing this stride, but the C library does not provide this option, and I'm not inclined to code the FFTA hardware without an abstraction layer. I see in EE-322 that there is an "Expert Code Generator" that provides a way to create a customized fft function. Does anyone know if this will proved the "stride" capability that I need? I am using the CCES, but it looks like the Expert Code Generator is only supplied for the visual dsp++ environment. Can I access the Expert Code Generator without buying a license for the visual dsp++?

All of this surprises me very much, since multi-channel ADCs are the norm and FFT is such a common DSP function.

Assuming that there is a solution to the interleaving, my next dilemma involves the "overlap and save" real-time processing approach. The time series blocks that I perform the FFTs on must overlap the previous time series blocks by 50%. I can set up the SPORT chain buffer DMA to use buffers that are 1/2 the size of the FFT size. This will give me interrupts at the correct interval to initiate the FFTs. My dilemma is the data wrap around when the blocks that form the FFT input are the first and last in the SPORT DMA chain. I feel like the FFTA's Circular buffer DMA should be configurable to automatically handle this, but maybe not if I use the abstracted c library. Has anyone dealt with this?

Thanks for any help.

ADIApproved Reply
Nov 16, 2016 00:00

Are you still working on this, if so how can we help you here?

EZAdministrator Reply
Aug 2, 2018 00:00

This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

Thank you,
EZ Admin

SrikanthB Reply
Oct 15, 2024 00:00

Could you please post the reply for the question here.

Best Regards

Sri.

NandiniC Reply
Oct 17, 2024 00:00

Hi Sri,

To assist you further, could please create an new thread by explaining your requirement.

Regards,

Nandini C