Documente Academic
Documente Profesional
Documente Cultură
Assignment-9
Fast Fourier Transform (FFT) is an algorithm to compute the discrete Fourier transform (DFT) and it’s
inverse. Basically, the computational problem for the DFT is to compute the sequence {X(k)} {
of N complex-valued
valued numbers given another sequence of data {x(n)}
{ )} of length N, according to the
formula:
In general, the data sequence x(n plex valued. Similarly, The inverse discrete
n) is also assumed to be complex
Fourier Transform (IDFT) is given by:
Direct computation of the DFT is basically inefficient and happens in O(N2) primarily because it does not
exploit the symmetry and periodicity properties
prop of the phase factor (Twiddle factor) WN. In particular,
these two properties are:
Exploiting these, we get computationally efficient algorithms, known collectively as fast Fourier
Transform (FFT) working in computational complexity of O(N log N).
f1(n) = x(2n)
Thus f1(n) and f2(n)) are obtained by decimating or dividing x(n)) by a factor of 2, and hence the resulting
FFT algorithm is called a decimation-in-time
decimation algorithm. Repeat the division recursively till you get
(x,N,s), where x is the input
sequences of 1 dimension. To do the recursion, define a function ditfft(x,N,s)
sequence, N is the number of samples and s is the step size. The equation of FFT can then be expressed
as:
T = XK
XK = T + exp(-2jπK/N) * XK+N/2
It has been proven that FFT is a computationally intensive operation. To optimize its run time, we have to
systematically assess all the daughter processes that run underneath. Once their characteristics are
identified, we can divide the algorithm to run on an FPGA (hardware) and a processor (software)
simultaneously.. For an 8 point FFT
FFT,, it can be seen that the algorithm involves 3 stages (Figure 1). Stage 1
involves 4 complex multiplications (with WN0 = 1) and 8 complex summations (4 addition and 4
subtraction). The next stage too involves 4 complex multiplications, but this time the T Twiddle factor is
not of unit magnitude, and 8 summations. This is also true for stage 3. Hence we can conclude that the
major component of this implementation is the complex summation and multiplication.
The complex summation does not require a large execution time; it is the multiplication that forms the
bottleneck. Hence it is wise to shift multiplication from software and implement it on hardware. Also, it
has been found that if a task interacts with external signals or is a custom task, like multiplication with
Twiddle factors, it is suited for
or hardware implementation. Design the he complex multiplier using the
architecture shown in figure 3: