Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
15 years ago

Connecting two 64-bit SGDMAs for a 16384-pt-FFT

I want to use a 16384-point FFT, with 16-bit precision. This results in a 34-bit width for both the real and imaginary part of the FFT output. Putting these together, I have 68 bits. The SGDMA is limited to 64 bits for data. Is there a way to increase this directly, or is it better to use 2 seperate avalon interfaces?

Fast forwarding a bit, I tried using 2 avalon interfaces but the output data from both of the interfaces never comes out:

// I start the real transfer first

alt_avalon_sgdma_do_async_transfer(receive_real_DM A, desc1);

...

while(IORD(SGDMA__ST_TO_MM_FFT_REAL_BASE,0) != 14)

{

};

// ...then I start the imaginary transfer

alt_avalon_sgdma_do_async_transfer(receive_imag_DM A, desc2);

...

while(IORD(SGDMA__ST_TO_MM_FFT_IMAG_BASE,0) != 14)

{

};

// end sample code...

The code gets hung up at the first while statement. I know that both SGDMA are initialized properly because ithe initialization were not null and no error was printed.

I believe that I may be missing something here...:confused:...can not quite put my finger on it.

Let me also explain how i connected each of the avalon interfaces to the single FFT component:

source_SOP source_EOP each connect to source_SOP_s and source_EOP_s respectively. I then connect source_SOP_s and source_EOP_S to the SOP and EOP outputs for each avalon interface (remember, there is an interface for real, and imaginary data).

I follow the same procedure for source_valid, source error from the FFT, by connecte each to a signal, and then the signal to each of the avalon interfaces.

With these parellel connections, I hoped that when the FFT source could simutaneously drive both avalon interfaces in parallel. However, neither is recieving data properly.

Do I need to somehow chain bot the real and imaginary portions?

Any ideas?
No RepliesBe the first to reply