13.3.2. FFT (FFT, FFT_Light, VFFT, VFFT_Light)
The following blocks are in the Primitives FFT Design Elements library:
For floating-point FFTs, select either correct or faithful rounding. Correct rounding corresponds to the normal IEEE semantics; faithful rounding delivers less accurate results but requires less logic to implement.
The FFT block provides a full radix-22 streaming FFT or IFFT. Use the FFT block for fixed-point or floating-point data. The block is a scheduled subsystem.
The FFT_Light block is a light-weight variant. However, it is not a scheduled subsystem, and it doesn’t implement the c (channel) signal. The blocks provide an output signal, g, which pulses high at the start of each output block.
The FFT blocks all support block-based flow control. You must supply all the input data required for a single FFT iteration (one block) on consecutive clocks cycles, but an arbitrary large (or small) gap can exist between consecutive blocks. The BitReverseCoreC and Transpose blocks produce data in blocks that respect this protocol.
You may provide the input data to any of these block in either natural or bit-reversed order; the output result is in bit-reversed or natural order, respectively.
The VFFT block provides a variable-size streaming FFT or IFFT. For these blocks, you statically specify the largest and smallest FFT that the block handles. You can dynamically configure the number of points processed in each FFT iteration using the size signal.
Use the VFFT block for fixed-point or floating-point data. The VFFT block is a scheduled subsystem and implements v (valid) and c (channel) signals.
The VFFT_light block is a light-weight variant of the VFFT block. It is not a scheduled subsystem, and it doesn’t implement the c (channel) signal. Instead, it provides an output g signal, which pulses high at the start of each output block.
The VFFT blocks all support block-based flow control. You must supply all the input data required for a single VFFT iteration (one block) on consecutive clocks cycles. If you use two successive FFT iterations that use the same FFT size, the inter-block gap can be as small (or as large) as you like.
However, if you want to reconfigure the VFFT block between FFT iterations, you must use the following rules:
- The size input should always be in the range minSize <= size <= maxSize.
- The size input must be kept constant while the VFFT block processes an FFT iteration.
- When you reconfigure the VFFT, you must completely flush VFFT pipeline before changing the value of the size input. You must wait at least 2oldSize (where oldSize is the previous value of the size input) cycles before providing valid input to the VFFT.
Not all parameters are available with all blocks.
|iFFT||true to implement an IFFT, otherwise false.|
|Number of interleaved subchannels||Enter how many FFTs that DSP Builder interleaves in each block.|
|Bit-reversed input||true if you expect bit-reversed input, otherwise false.|
|N||The logarithm of the FFT size. FFT and FFT_Light only|
|maxSize||The logarithm of the maximum FFT size. VFFT and VFFT_Light only.|
|minSize||The logarithm of the minimum FFT size. VFFT and VFFT_Light only.|
|Input type||Input signal type.|
|Input scaling exponent||The fixed-point scaling factor of the input.|
|Twiddle/pruning specification||Refer to About Pruning and Twiddle for FFT Blocks.|
|Use faithful rounding||true if the block uses faithful (rather than correct) rounding for floating-point operations. Fixed-point FFTs ignore this parameter.|
Not all signals are available with all blocks
|v||Input||Boolean.||Valid input signal.|
|c||Input||Unsigned 8-bit integer.||Channel input signal FFT and VFFT, only.|
|size||Input||Unsigned integer.||Logarithm of the current FFT size. VFFT and VFFT_Light only.|
|d||Input||Any complex fixed-point.||Complex data input signal. VFFT and VFFT_Light only.|
|x||Input||Any complex fixed-point type (FFT and FFT_light).
Any floating-point type (FFT_Float or FP_FFT_Light).
|Complex data input signal.|
|qv||Output||Boolean.||Valid output signal.|
|qc||Output||Unsigned 8-bit integer.||Channel output signal. FFT and VFFT, only.|
|q||Output||Same as x.||Complex data output signal.|
|g||Output||Boolean||Start of output block. VFFT_Light only.|