Sign in

username:

password:



Not a member?

Search c6x



Search tips

Subscribe to c6x



c6x by Keywords

AD535 | BIOS | Booting | Bootloader | C621 | C6211 | C6415 | C671 | C6711 | C6711DSK | C6713 | CCS | Chassaing | COFF | DAT | DM64 | DM642 | DMA | DSK671 | DSK6711 | EDM | EDMA | EMIF | Emulator | EVM | EVM620 | FFT | FIR | GPIO | Halting | HPI | HWI | IDK | JTAG | LDB | LDH | LDW | Linker | LMS | LOG_printf | Matlab | McBSP | MEM_alloc | MIPS | PCI | PCM3003 | Pipeline | Profiling | QDM | Reset | ROM | RTDX | Sampling | SDRAM | Stack | TEB | THS1206 | TMS320C621 | TMS320C6416 | TMS320C6711 | TMS320C6713 | UART | Vector Table | XBUS | XDS560


Discussion Groups

See Also

Embedded SystemsFPGAElectronics

Discussion Groups | TMS320C6x | How to split 2N-point real sequence after N-point complex FFT

Technical discussions about the TI C6000 DSPs (including the c62x, c64x and c67x DSPs).

  

Post a new Thread

How to split 2N-point real sequence after N-point complex FFT - veniamin2002se - Apr 17 6:07:00 2002


Hi all,

I'm using "cfftr2.asm" for 6711 routine to perform N-point complex
FFT on 2N-point real sequence. It work's fine, I can perform FFT
and IFFT (with "icfftr2.asm") and gets the same sequence.

But in my application I need only FFT to buildup a power spectrum.
For that I have to split 2N-point real sequence after N-point
complex FFT.

How I can do that? I'm not so good at math, so any C sample code
should be of interest.

Thanks,
Veniamin



______________________________
Start your Android Ice Cream Sandwich development on TI's AM35x Sitara ARM Cortex-A8 processor today.



(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )

Re: How to split 2N-point real sequence after N-point complex FFT - Author Unknown - Apr 18 15:46:00 2002

Hi Veniamin,
I had to do the same thing. Refer to this Application Report SPRA291. It
provides a good background explanation as well as C code examples. The C sample
starts on pg 43. Though intended for fix-point, you should be able to use it
for floating point (just ignore all that scaling by (16383.0)stuff. The Split
function will not the fix-piont stuff (Tr>>15) stuff.
Let me know if you don't get it working.
/Khalid







(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )

Re: How to split 2N-point real sequence after N-point complex FFT - Andrew V. Nesterov - Apr 19 23:04:00 2002


> Date: Thu, 18 Apr 2002 11:46:40 -0400
> From:
> Subject: Re: How to split 2N-point real sequence after N-point complex FFT
>
> Hi Veniamin,
> I had to do the same thing. Refer to this Application Report SPRA291.
> It provides a good background explanation as well as C code examples.
> The C sample starts on pg 43. Though intended for fix-point, you should
> be able to use it for floating point (just ignore all that scaling by
> (16383.0)stuff. The Split function will not the fix-piont stuff
> (Tr>>15) stuff.

That's a helluva lot of computational workload, a whole buch of calls to
sin() and cos() in the loop. I'd use a canned real FFT described by
Sorensen in ASSP-35 No 6, pp. 849-864, June 1987. I also have it
optimized for C67xx DSPs.

Rgds,
Andrew

> Let me know if you don't get it working.
> /Khalid


______________________________
New Code Sharing Section now Live on DSPRelated.com. Learn about the Reward Program for Contributors here.



(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )

Re: Re: How to split 2N-point real sequence after N-point complex FFT - Author Unknown - Apr 21 2:09:00 2002

In a message dated 4/19/2002 7:38:39 PM Eastern Daylight Time,
writes: > > Date: Thu, 18 Apr 2002 11:46:40 -0400
> > From:
> > Subject: Re: How to split 2N-point real sequence after N-point complex
> FFT
> >
> > Hi Veniamin,
> > I had to do the same thing. Refer to this Application Report SPRA291.
> > It provides a good background explanation as well as C code examples.
> > The C sample starts on pg 43. Though intended for fix-point, you should
> > be able to use it for floating point (just ignore all that scaling by
> > (16383.0)stuff. The Split function will not the fix-piont stuff
> > (Tr>>15) stuff.
>
> That's a helluva lot of computational workload, a whole buch of calls to
> sin() and cos() in the loop. I'd use a canned real FFT described by
> Sorensen in ASSP-35 No 6, pp. 849-864, June 1987. I also have it
> optimized for C67xx DSPs.
>
> Rgds,
> Andrew
>
> > Let me know if you don't get it working.
> > /Khalid
>
The sine and cosine values would be precalculated and stored in a
lookup tables. Calling them inline, as you mentioned, would be inefficient.
Viniamin's issue is the size of the table for these sine/cosine functions is
taking too much memory. (I briefly looked into that and it does look
solvable by reusing the Radix-2 Complex FFT sine/cosine table).
I have used the Real FFT that you mentioned in my C31 projects. I did
write C67x version of that in C and, with more effort, an optimized version
in assembly would be nice to have. However, my guess is that it would be
very close, in the end, because you are executing a complex FFT that's half
the size of the "Real" FFT. Yes there is overhead in the Split function, but
if done right it can yield cycle count very close to the Sorensen type FFT.

Regards,
/Khalid



______________________________
New Code Sharing Section now Live on DSPRelated.com. Learn about the Reward Program for Contributors here.



(You need to be a member of c6x -- send a blank email to c6x-subscribe@yahoogroups.com )