Personal tools
User menu

Fast Fourier Transform Application

Jump to: navigation, search

The N-point discrete Fourier transform (DFT) is a block operation which takes N complex-valued (time-domain) input coefficients and transforms them into N complex-valued (frequency-domain) output coefficients. The N-point DFT is defined by: X[k] = ∑N-1n=0 x[n] · e2πknN, 0 ≤ k ≤ N.

An efficient implementation of the DFT is the decimation-in-time radix2 FFT. In this implementation, the computation is split up into N / 2 · log2(N). 2point FFTs:

Application5 butterfly.png

Using the 2-point FFT, higher-order FFTs can be computed by arranging N / 2 · log2(N). 2-point FFTs and connecting them using a butterfly network:

Application5 fft.png

The complexity of the FFT is O(N log N) compared to O(N2) of the DFT.

To model the FFT, we proceed as follows:

  • The input coefficients are ordered in bit-reversed order, that is, the index of the coefficient at channel k can be computed by writing down the binary representation of k using log2(N) bits and reversing the order of bits. For instance: 3 ⟶ 011 ⟶ 110 ⟶ 6. This function is defined in a <function> element in the process network.
  • The butterfly network is generated by properly connecting the ports of the 2-point FFTs. The index of the channel connected to port inA of a 2-point FFT with process index p and layer index l is given by: indexinA = 2(p mod 2l-1) + [p –— 2l-1] + [p 2l] · (2l+1 - 2). The index of the channel connected to port inB is given by indexinB = indexinA + 2l. This function is defined in a <function> element in the process network.
  • Each 2-point FFT in the last layer of the network yields two output coefficients. In particular, the indices of the output coefficients are as follows, where p stands for the process index: outA = X[p] and outB = X[p + N / 2] . This function is directly defined in a corresponding <append> element.
  • The coefficient WkN for a process with index p and located in layer l is Wp mod 2l2(l+1) . This function is computed in the init() function of the 2-point FFT process.
!!! Dieses Dokument stammt aus dem ETH Web-Archiv und wird nicht mehr gepflegt !!!
!!! This document is stored in the ETH Web archive and is no longer maintained !!!