# FFT calculation F2812

Started by December 4, 2008
I'm trying to calculate FFT with C28x Fast Fourier Transforms Library
(sprc081). The 1-st lamers qestion is why TI use narrow dynamic range
- Q31 for calculating FFT (range: -1..1), how to work with it if math
library doesn't suport it? Another problem is to get right result of
fft calculating. At thirst I've tested fft with CFFT32_brev2 bit
reversal utility and it works incorrect. CFFT32_brev1 works well.
What is the difference between this functions? Finally, the main
problem is with function fft.calc(). It gives another results then I
suppose. Simple test is when all the points of input array are 0 with
the exception of 1-st element: 0.05 + 0j. So the result should be
0.05 + 0j for any element of array, and the result was 0.00039 + 0j...
Help me please to understand the cause of it.

My code for testing Complex FFT (128 points):
...
//--
_iq mas[]={_IQ15(0.05),_IQ15(0), // Re=0.05; Im=0
_IQ15(0),_IQ15(0), // Re=0; Im=0
_IQ15(0),_IQ15(0), // Re=0; Im=0
... // only zero's for Re and Im
_IQ15(0),_IQ15(0)} // Re=0; Im=0
//--
...
if (key==0)
{
for(i=0;i<2*N;i=i+2)
mas[i]=mas[i]<<16; //from Q15 to Q31
key = 1;
CFFT32_brev1(mas,ipcb,N); //works well
fft.izero(&fft); //works well
fft.calc(&fft); //doesn't work
}
...

OMAP35x EVM jump-starts low-power apps
The modular and extensible OMAP35x Evaluation Module (EVM) enables developers to start building applications based on the OMAP35x architecture: http://www.DSPRelated.com/omap35x
I had problems in the past using TI fft library
i ended up making the fft functions myself
and i liked my own code & it actually took less time to make my own than to understand and/or debug TI code

i would suggest the same

-Chirag

I'm trying to calculate FFT with C28x Fast Fourier Transforms Library
(sprc081). The 1-st lamers qestion is why TI use narrow dynamic range
- Q31 for calculating FFT (range: -1..1), how to work with it if math
library doesn't suport it? Another problem is to get right result of
fft calculating. At thirst I've tested fft with CFFT32_brev2 bit
reversal utility and it works incorrect. CFFT32_brev1 works well.
What is the difference between this functions? Finally, the main
problem is with function fft.calc(). It gives another results then I
suppose. Simple test is when all the points of input array are 0 with
the exception of 1-st element: 0.05 + 0j. So the result should be
0.05 + 0j for any element of array, and the result was 0.00039 + 0j...
Help me please to understand the cause of it.

My code for testing Complex FFT (128 points):
...
//--
_iq mas[]={_IQ15(0.05),_IQ15(0), // Re=0.05; Im=0
_IQ15(0),_IQ15(0), // Re=0; Im=0
_IQ15(0),_IQ15(0), // Re=0; Im=0
... // only zero's for Re and Im
_IQ15(0),_IQ15(0)} // Re=0; Im=0
//--
...
if (key==0)
{
for(i=0;i<2*N;i=i+2)
mas[i]=mas[i]<<16; //from Q15 to Q31
key = 1;
CFFT32_brev1(mas,ipcb,N); //works well
fft.izero(&fft); //works well
fft.calc(&fft); //doesn't work
}
...

OMAP35x EVM jump-starts low-power apps
The modular and extensible OMAP35x Evaluation Module (EVM) enables developers to start building applications based on the OMAP35x architecture: http://www.DSPRelated.com/omap35x