Achieving Unity Gain in Block-Floating-Point IFFT+FFT Pair
The FFT MegaCore® function supports block-floating-point (BFP) architecture, a trade-off between fixed-point and full floating-point architecture. The block-floating-point FFT receives fixed-point input data and calculates the fixed-point output data with exponent. Due to lack of an exponent input port in FFT, when cascading IFFT with FFT, the scaling factor must be computed externally. This design example describes how to achieve unity gain in a block-floating-point IFFT+FFT pair with scaling arithmetic with an Altera® FFT MegaCore function.
Download the files used in this example:
The use of this design is governed by, and subject to, the terms and conditions of the Altera Hardware Reference Design License Agreement.
Files in the download include:
- BFP_unitygain.v - Top-level design file implementing the cascaded IFFT+FFT system
- tb_BFT_unitygain.v - Testbench for RTL functional simulation
- BFP_unitygain.tcl - TCL script to automate ModelSim® simulation
- unity_gain_tb.m - MATLAB script to compare the difference between block-floating-point output with floating-point output
Figure 1 shows the datapath for the BFP_unitygain design.
Figure 1. BFP IFFT+FFT Unity Gain Top-Level Block Diagram

View Full Size
Figure 2 shows the FFT I/O port signals.
Figure 2. FFT I/O Port Signals

Related Links
Design Examples Disclaimer
These design examples may only be used within Altera Corporation devices and remain the property of Altera. They are being provided on an “as-is” basis and as an accommodation; therefore, all warranties, representations, or guarantees of any kind (whether express, implied, or statutory) including, without limitation, warranties of merchantability, non-infringement, or fitness for a particular purpose, are specifically disclaimed. Altera expressly does not recommend, suggest, or require that these examples be used in combination with any other product not provided by Altera.
|