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

# FFT calculation F2812

Started by ●December 4, 2008

Reply by ●December 5, 20082008-12-05

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

ksvadim wrote:

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 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

ksvadim wrote:

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