DSP_fft16x16r

DSP_fft16x16r

Complex Forward Mixed Radix 16 x 16-bit FFT With Rounding

Function

 

 

 

 

void DSP_fft16x16r(int nx, short * restrict x, const short * restrict w, const un-

 

 

signed char * restrict brev, short * restrict y, int radix, int offset, int nmax)

Arguments

 

nx

Length of FFT in complex samples. Must be power of 2 or 4, and

 

 

 

16384

 

 

x[2*nx]

Pointer to complex 16-bit data input

 

 

w[2*nx]

Pointer to complex FFT coefficients

 

 

brev[64]

Pointer to bit reverse table containing 64 entries. Only required for

 

 

 

C code. Use NULL for assembly code since BITR instruction

 

 

 

is used instead.

 

 

y[2*nx]

Pointer to complex 16-bit data output

 

 

radix

Smallest FFT butterfly used in computation used for

 

 

 

decomposing FFT into sub-FFTs. See notes.

 

 

offset

Index in complex samples of sub-FFT from start of main FFT.

 

 

nmax

Size of main FFT in complex samples.

Description

 

This routine implements a cache-optimized complex forward mixed radix FFT

 

 

with scaling, rounding and digit reversal. Input data x[ ], output data y[ ], and

coefficients w[ ] are 16-bit. The output is returned in the separate array y[ ] in normal order. Each complex value is stored as interleaved 16-bit real and imaginary parts. The code uses a special ordering of FFT coefficients (also called twiddle factors).

This redundant set of twiddle factors is size 2*N short samples. As pointed out in subsequent sections, dividing these twiddle factors by 2 will give an effective divide by 4 at each stage to guarantee no overflow. The function is accurate to about 68dB of signal to noise ratio to the DFT function as follows.

4-14

Page 42
Image 42
Texas Instruments TMS320C64X manual DSPfft16x16r, Complex Forward Mixed Radix 16 x 16-bit FFT With Rounding