DSP_ifft16x32

DSP_ifft16x32

Complex Inverse Mixed Radix 16 x 32-bit FFT With Rounding

Function

 

 

 

 

void DSP_ifft16x32(const short * restrict w, int nx, int * restrict x, int * restrict

 

 

y)

 

 

Arguments

 

w[2*nx]

Pointer to complex Q.15 FFT coefficients.

 

 

nx

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

 

 

 

and 16 nx 32768.

 

 

x[2*nx]

Pointer to complex 32-bit data input.

 

 

y[2*nx]

Pointer to complex 32-bit data output.

Description

 

This routine computes an extended precision complex inverse mixed radix

 

 

FFT with rounding and digit reversal. Input data x[ ] and output data y[ ] are

 

 

32-bit, coefficients w[ ] are 16-bit. The output is returned in the separate array

 

 

y[ ] in normal order. Each complex value is stored with interleaved real and

 

 

imaginary parts. The code uses a special ordering of FFT coefficients (also

 

 

called twiddle factors) and memory accesses to improve performance in the

 

 

presence of cache.

 

 

fft16x32 can be reused to perform IFFT, by first conjugating the input,

 

 

performing the FFT, and conjugating again. This allows fft16x32 to perform the

 

 

IFFT as well. However, if the double conjugation needs to be avoided, then this

 

 

routine uses the same twiddle factors as the FFT and performs an IFFT. The

 

 

change in the sign of the twiddle factors is adjusted for in the routine. Hence,

 

 

this routine uses the same twiddle factors as the fft16x32 routine.

Algorithm

 

The C equivalent of the assembly code without restrictions is similar to the one

 

 

shown for the fft16x16t routine. For further details, see the source code of the

C version of this function which is provided with this library. Note that the assembly code is hand optimized and restrictions may apply.

Special Requirements

-In-place computation is not allowed.

-The size of the FFT, nx, must be a power of 4 or 2 and greater than or equal to 16 and less than 32768.

-The arrays for the complex input data x[ ], complex output data y[ ], and twiddle factors w[ ] must be double-word aligned.

-The input and output data are complex, with the real/imaginary components stored in adjacent locations in the array. The real components are stored at even array indices, and the imaginary components are stored at odd array indices.

4-34

Page 62
Image 62
Texas Instruments TMS320C64X manual DSPifft16x32, Complex Inverse Mixed Radix 16 x 32-bit FFT With Rounding