Lattice's FFT Compiler offers forward and inverse Fast Fourier Transforms for point sizes from 64 to 16384. This IP core can be configured to perform forward FFT, inverse FFT (IFFT) or port selectable forward/inverse FFT. The FFT compiler offers two choices of implementation: high performance (Streaming I/O) and low resource (Burst I/O). In the high performance implementation, the FFT IP core can perform real-time computations with continuous data streaming in and out at clock rate. There can also be arbitrary gaps between data blocks allowing discontinuous data blocks. The low resource implementation can be used when it is required to use lesser slices (logic unit of Lattice FPGA devices) and EBR (Embedded Block RAM) resources or if the device is too small to accommodate the high performance version.
To account for the data growth in fine register length implementations, the FFT compiler allows one of three fixed scaling or dynamic scaling after each radix-2 stage of the FFT computation. The low resource version also supports block floating point arithmetic that provides increased dynamic range for intermediate computations. The FFT compiler also allows the number of FFT points to be varied dynamically through a port.