FFT IP Core: User Guide

ID 683374
Date 11/06/2017
Public
Document Table of Contents

4.3. Unity Gain in an IFFT+FFT Pair

Given sufficiently high precision, such as with floating-point arithmetic, in theory you can obtain unity gain when you cascade an IFFT and FFT. However, in BFP arithmetic, pay special attention to the exponent values of the IFFT/FFT blocks to achieve the unity gain. This section explains the steps to derive a unity gain output from an IFFT/FFT IP Core pair, using BFP arithmetic.

BFP arithmetic does not provide an input for the exponent, so you must keep track of the exponent from the IFFT block if you are feeding the output to the FFT block immediately thereafter and divide by N at the end to acquire the original signal magnitude.

Figure 21. Derivation to Achieve IFFT/FFT Pair Unity Gain

where:

x0 = Input data to IFFT

X0 = Output data from IFFT

N = number of points

data1 = IFFT output data and FFT input data

data2 = FFT output data

exp1 = IFFT output exponent

exp2 = FFT output exponent

IFFTa = IFFT

FFTa = FFT

Any scaling operation on X0 followed by truncation loses the value of exp1 and does not result in unity gain at x0. Any scaling operation must be done on X0 only when it is the final result. If the intermediate result X0 is first padded with exp1 number of zeros and then truncated or if the data bits of X0 are truncated, the scaling information is lost.

To keep unity gain, you can pas the exp1 value to the output of the FFT block. Alternatively, preserve the full precision of data1×2exp1 and use this value as input to the FFT block. The second method requires a large size for the FFT to accept the input with growing bit width from IFFT operations. The resolution required to accommodate this bit width in most cases, exceeds the maximum data width supported by the IP core.