DSPRelated.com
Forums

Question about the FFT on C6711

Started by Rouxel, Jeanmarc January 16, 2001
Question about the FFT on C6711

Hello everybody,

I'm implementing a FFT on a TMS320C6711.

The  code provided by TI (you can find it at ftp://ftp.ti.com/pub/tms320bbs/c67xfiles/fftspx_h.asm) realizes a mixed radix FFT and will work as both as

Radix-2 and Radix-4 FFT (for no of points of FFT as a power of 2 or 4).
Unfortunately the application note describing the code has not been finished yet.

This algorithm allows the main fft of size N to be divided into several steps, allowing as much data reuse as possible.

Has somebody tried to implement this algorithm with several steps ? I have some questions about the use of the factors.

Thanks.

Jean-Marc ROUXEL.




Jean-Marc,

I have got it to work correctly in several steps. I divided a 1024 pt
FFT into 4 256 pt FFTs. It seemed to work fine.

The idea is that you can either run the FFT completely, or you can
divide a large FFT into a number of small ones and then run those.

BTW, fftspx_h is not interrupt safe. The way it uses the stack is not
compatible with TI's C tools. The easiest fix is to disable
interrupts around the entire call.

The following example is incorrect as well !

* fftSPxSP_asm(512, &x_asm[0],&w[0],y_asm,brev,2,
0,512); *
*
*
* is equvalent
to: *
*
*
* fftSPxSP_asm(128, &x_asm[2*0], &w[2*384],y_asm,brev,4,
0,512); *
* fftSPxSP_asm(128, &x_asm[2*128],&w[2*384],y_asm,brev,4,
128,512); *
* fftSPxSP_asm(128, &x_asm[2*256],&w[2*384],y_asm,brev,4,
256,512); *
* fftSPxSP_asm(128, &x_asm[2*384],&w[2*384],y_asm,brev,4,
384,512); * Andrew Elder

--- In , "Rouxel, Jeanmarc" <jeanmarc.rouxel@a...>
wrote:
> Hello everybody,
>
> I'm implementing a FFT on a TMS320C6711.
>
> The code provided by TI (you can find it at
> ftp://ftp.ti.com/pub/tms320bbs/c67xfiles/fftspx_h.asm) realizes a
mixed
> radix FFT and will work as both as
> Radix-2 and Radix-4 FFT (for no of points of FFT as a power of 2 or
4).
> Unfortunately the application note describing the code has not been
finished
> yet.
>
> This algorithm allows the main fft of size N to be divided into
several
> steps, allowing as much data reuse as possible.
>
> Has somebody tried to implement this algorithm with several steps ?
I have
> some questions about the use of the factors.
>
> Thanks.
>
> Jean-Marc ROUXEL.


RE: [c6x] Re: Question about the FFT on C6711

Thanks for your help, Andrew.

But I try to divide my FFT into 4 FFTs with disabling the IT, but the results were not good.
The results were only good when using the FFT completely.


Can you help me on these several points ?

1. I wonder if the address of the factor's array is always the same for all the calls of the small FFTs ?
Example : for N24 they always use &w[2*768] as parameters of the 4 small FFTs ! Is it normal ?

2. In case of a number of complex points which is not a power of 4, the n_min parameter is equal to 2 or 4 ?

3. If wonder if we always divide a large FFT into 4 small FFTs ? Example for N 48, can we divide into 8 small FFTs (of 256 points) or I am obliged to divide into 4 small FFTs ?

Thanks,

Jean-Marc ROUXEL


-----Message d'origine-----
De : Andrew Elder [mailto:a...@bigfoot.com]
Envoye : mardi 16 janvier 2001 14:52
A : c...@egroups.com
Objet : [c6x] Re: Question about the FFT on C6711


Jean-Marc,

I have got it to work correctly in several steps. I divided a 1024 pt
FFT into 4 256 pt FFTs. It seemed to work fine.

The idea is that you can either run the FFT completely, or you can
divide a large FFT into a number of small ones and then run those.

BTW, fftspx_h is not interrupt safe. The way it uses the stack is not
compatible with TI's C tools. The easiest fix is to disable
interrupts around the entire call.

The following example is incorrect as well !

*          fftSPxSP_asm(512, &x_asm[0],&w[0],y_asm,brev,2, 
0,512);            *
*                                                                    
         *
*          is equvalent
to:                                                    *
*                                                                    
         *
*          fftSPxSP_asm(128, &x_asm[2*0],  &w[2*384],y_asm,brev,4,   
0,512);  *
*          fftSPxSP_asm(128, &x_asm[2*128],&w[2*384],y_asm,brev,4, 
128,512);  *
*          fftSPxSP_asm(128, &x_asm[2*256],&w[2*384],y_asm,brev,4, 
256,512);  *
*          fftSPxSP_asm(128, &x_asm[2*384],&w[2*384],y_asm,brev,4, 
384,512);  *


Andrew Elder

--- In c...@egroups.com, "Rouxel, Jeanmarc" <jeanmarc.rouxel@a...>
wrote:
> Hello everybody,
>
> I'm implementing a FFT on a TMS320C6711.
>
> The  code provided by TI (you can find it at
> ftp://ftp.ti.com/pub/tms320bbs/c67xfiles/fftspx_h.asm) realizes a
mixed
> radix FFT and will work as both as
> Radix-2 and Radix-4 FFT (for no of points of FFT as a power of 2 or
4).
> Unfortunately the application note describing the code has not been
finished
> yet.
>
> This algorithm allows the main fft of size N to be divided into
several
> steps, allowing as much data reuse as possible.
>
> Has somebody tried to implement this algorithm with several steps ?
I have
> some questions about the use of the factors.
>
> Thanks.
>
> Jean-Marc ROUXEL.



_____________________________________
Note: If you do a simple "reply" with your email client, only the author of this message will receive your answer.  You need to do a "reply all" if you want your answer to be distributed to the entire group.

_____________________________________
About this discussion group:

To Join:  Send an email to c...@egroups.com

To Post:  Send an email to c...@egroups.com

To Leave: Send an email to c...@egroups.com

Archives: http://www.egroups.com/group/c6x

Other Groups: http://www.dsprelated.com