Function Descriptions
Notes:
1. This function is not re-entrant as it uses global variables to store arguments; these
will be overwritten if the function is invoked while it is currently processing.
2. If the input buffer is not properly aligned, then the output will be unpredictable.
3. If you do not wish to align the input buffer, then you must use the CFFT_f32u func-
tion. This version of the function does not have any input buffer alignment require-
ments. Using CFFT_f32u will, however, result in lower cycle performance.
4. All buffers and stack are placed in internal memory (zero-wait states in data space).
Example:
The following sample code obtains the complex FFT of the input.
#include "FPU.h"
#define CFFT_STAGES 7
#define CFFT_SIZE (1 << CFFT_STAGES)
/
*
CFFTin1Buff section to 4
*
FFT_SIZE in the linker file
*
/
#pragma DATA_SECTION(CFFTin1Buff,"CFFTdata1");
float CFFTin1Buff[CFFT_SIZE
*
2];
#pragma DATA_SECTION(CFFToutBuff,"CFFTdata3");
float CFFToutBuff[CFFT_SIZE
*
2];
#pragma DATA_SECTION(CFFTF32Coef,"CFFTdata4");
float CFFTF32Coef[CFFT_SIZE];
CFFT_F32_STRUCT cfft;
main()
{
cfft.InPtr = CFFTin1Buff; /
*
Input data buffer
*
/
cfft.OutPtr = CFFToutBuff; /
*
FFT output buffer
*
/
cfft.CoefPtr = CFFTF32Coef; /
*
Twiddle factor buffer
*
/
cfft.FFTSize = CFFT_SIZE; /
*
FFT length
*
/
cfft.Stages = CFFT_STAGES; /
*
FFT Stages
*
/
... ...
CFFT_f32_sincostable(&cfft); /
*
Initialize twiddle buffer
*
/
CFFT_f32(&cfft); /
*
Calculate output
*
/
}
Benchmark Information:
The following table provides benchmark numbers for the function. Note that these include the
cycles used in the call/return from the function
FFTSize C-Callable ASM (Cycle Count)
32 1121
64 2331
128 5029
256 11023
512 24249
1024 53219
Table 3.4: Benchmark Information
Sep 10, 2012 14