DSP_ifft16x16_imre

DSP_ifft16x16_imre Complex Inverse Mixed Radix 16 x 16-bit FFT With Im/Re Order

Function

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

 

* 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 data input.

 

y[2*nx]

Pointer to complex data output.

Description

This routine computes a complex inverse mixed radix IFFT with 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 with interleaved imaginary and real parts. The code uses a

 

special ordering of IFFT coefficients (also called twiddle factors) and memory

 

accesses to improve performance in the presence of cache.

 

The fft16x16_imre can be used to perform IFFT, by first conjugating the input,

 

performing the FFT, and conjugating again. This allows fft16x16_imre 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

 

fft16x16_imre routine.

Algorithm

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

 

of the ifft16x16 routine. For further details, see the source code of the C version

 

of this function which is provided with this library.

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 imaginary/real components stored in adjacent locations in the array. The imaginary components are stored at even array indices, and the real components are stored at odd array indices.

-Scaling by two is performed after each radix-4 stage except the last one.

4-32

Page 60
Image 60
Texas Instruments TMS320C64X manual DSPifft16x16imre