Texas Instruments TMS320C64X Security Camera User Manual


 
DSP_ifft32x32
4-36
Complex Inverse Mixed Radix 32 x 32-bit FFT With Rounding
DSP_ifft32x32
Function void DSP_ifft32x32(const int * restrict w, int nx, int * restrict x, int * restrict y)
Arguments w[2*nx] Pointer to complex 32-bit 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[ ], output data y[ ], and
coefficients w[ ] are 32-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.
fft32x32 can be reused to perform IFFT, by first conjugating the input,
performing the FFT, and conjugating again. This allows fft32x32 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 fft32x32 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 IFFT, 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.