Texas Instruments TMS320C64X User Manual
Page 54
DSP_fft32x32
4-26
Complex Forward Mixed Radix 32 x 32-bit FFT With Rounding
DSP_fft32x32
Function
void DSP_fft32x32(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 forward 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. The C code to generate the twiddle factors is similar to the
one used for the DSP_fft16x16r routine, except that the factors are maintained
at 32-bit precision.
Algorithm
The C equivalent of the assembly code without restrictions is similar to the one
shown for the DSP_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.
-
The FFT coefficients (twiddle factors) are generated using the program
tw_fft32x32 provided in the directory ‘support\fft’. The scale factor must be
2147483647.5. No scaling is done with the function; thus, the input data
must be scaled by 2
log2(nx)
to completely prevent overflow.