You are on page 1of 100

UNIT - 3: Fast-Fourier-Transform (FFT)

algorithms[?, ?, ?, ?]

Dr. Manjunatha. P
manjup.jnnce@gmail.com

Professor
Dept. of ECE

J.N.N. College of Engineering, Shimoga

October 15, 2014


Unit 3 Syllabus Introduction

Digital Signal Processing: [?, ?, ?, ?]

Slides are prepared to use in class room purpose, may be used as a


reference material
All the slides are prepared based on the reference material
Most of the figures/content used in this material are redrawn, some
of the figures/pictures are downloaded from the Internet.
This material is not for commercial purpose.
This material is prepared based on Digital Signal Processing for
ECE/TCE course as per Visvesvaraya Technological University (VTU)
syllabus (Karnataka State, India).

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?, ?,


October
?] 15, 2014 2 / 100
Unit 3 Syllabus

Unit 3 Syllabus

PART - A

UNIT - 3: Fast-Fourier-Transform (FFT) algorithms


Fast-Fourier-Transform (FFT) algorithms.
Direct computation of DFT.
Need for efficient computation of the DFT (FFT algorithms)

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?, ?,


October
?] 15, 2014 3 / 100
Fast Fourier Transform Algorithms Introduction

Fast Fourier Transform Algorithms

This unit provides computationally efficient algorithms for evaluating the DFT.
Direct computation of DFT has large number addition and multiplication operations.
The DFT has the various applications such as linear filtering, correlation analysis, and
spectrum analysis.
Hence an efficient computation of DFT is an important issue in DSP.
There are two different approaches in computing efficient DFT, those are:
1 Divide and Conquer approach
2 DFT as Linear filtering.

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?, ?,


October
?] 15, 2014 4 / 100
Fast Fourier Transform Algorithms Introduction

Computation of
DFT

Divide and
DFT as Linear
Conquer
Filtering
Approach

Chirp-Z
Goertzel
Transform
Algorithm
Algorithm
Radix-2 Radix-4 Split-Radix
FFT FFT FFT
Algorithm Algorithm Algorithm

DIT DFT DIF DFT


Algorithm Algorithm

Figure 1: FFT Algorithms

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?, ?,


October
?] 15, 2014 5 / 100
Fast Fourier Transform Algorithms Introduction

Computational complexity of DFT


Direct Computation of DFT

DFT expression is
N−1
X
X (k) = x(n)WNkn k = 0, 1, . . . , N − 1
n=0

IDFT expression is

N−1
1 X
x(n) = X (k)WN−kn n = 0, 1, . . . , N − 1
N k=0

(N−1)k
X (k) = x(0)WN0 + x(1)WNk + x(2)WN2k , . . . , +x(N − 1)WN

For each value of k there are N complex multiplications and N − 1 additions.


Number of complex multiplications required to calculate X (k) is N × N = N 2 .
Number of complex additions required to calculate X (k) is (N − 1) × N = N 2 − N.

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?, ?,


October
?] 15, 2014 6 / 100
Fast Fourier Transform Algorithms Introduction

Direct Computation of DFT for complex valued sequence x(n) (To determine number of real
multiplications, real additions and trigonometric functions)
Let the sequence x(n) be of complex valued and is expressed as

x(n) = xR (n) + jxI (n)

Its DFT is
X (k) = XR (k) + jXI (k)

N−1
X 2π kn
X (k) = x(n)e −j N

n=0
N−1
X 2π kn
= [xR (n) + jxI (n)]e −j N

n=0
N−1     
X 2π 2π
= [xR (n) + jxI (n)] cos kn − jsin kn
n=0
N N
N−1
X    
2π 2π
= xR (n)cos kn + xI (n)sin kn
n=0
N N
N−1
X    
2π 2π
−j xR (n)sin kn − xI (n)cos kn
n=0
N N

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?, ?,


October
?] 15, 2014 7 / 100
Fast Fourier Transform Algorithms Introduction

N−1
X    
2π 2π
X (k) = xR (n)cos kn + xI (n)sin kn
n=0
N N
N−1
X    
2π 2π
−j xR (n)sin kn − xI (n)cos kn
n=0
N N

There are 4 Real multiplications and 2 real additions.


For each value of k there are 4N real multiplications and 2(N-1) real additions.
For complete DFT evaluation there are 4N.N = 4N 2 real multiplications
For complete DFT evaluation there are X (k) 2(N − 1)N = 2N(N − 1) real additions.
There are 2 trigonometric functions are there in the above equation.
For each value of k there are 2N trigonometric functions are executed.
For complete DFT evaluation there are 2N.N = 2N 2 trigonometric functions are executed.

Consider a two complex numbers (a+jb) and (c+jd), ”+” symbol is used represent the
complex number, and addition of these complex number is:

(a + c) + j(b + d)

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?, ?,


October
?] 15, 2014 8 / 100
Fast Fourier Transform Algorithms Introduction

Periodicity Property
WNk+N = WNk
Proof:

WN = e −j N

2π (k+N)
WNk+N = e −j N

2π (k+N)
WNk+N = e −j N

2π k
= e −j N .e −j2π
−j 2π k
= e N .1

Since e −j2π = cos2π − jsin2π = 1

2π k
WNk+N = e −j N


= [e −j N ]k
= WNk

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?, ?,


October
?] 15, 2014 9 / 100
Fast Fourier Transform Algorithms Introduction

Symmetry Property
k+N/2
WN = −WNk
Proof:

WN = e −j N

k+N/2 2π (k+N/2)
WN = e −j N

2π k
= e −j N .e −jπ
−j 2π k
= e N .1

Since e −jπ = cosπ − jsinπ = −1

k+N/2 2π k
WN = e −j N .(−1)
−j 2π
N k
= [e ]
= −WNk

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 10 / 100
Fast Fourier Transform Algorithms Introduction

WN2 = WN /2

Proof:

WN = e −j N


−j N/2
WN/2 = e

= [e −j N ]2
= WN2

Therefore
WN2 = WN /2

Direct computation of the DFT does not exploit these symmetry and periodicity property.

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 11 / 100
FFT algorithms DIT-FFT algorithm

FFT algorithms

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 12 / 100
FFT algorithms DIT-FFT algorithm

There are two methods in divide and conquer approach


1 Decimation in Time (DIT)-FFT algorithm and
2 Decimation in Frequency (DIF)-FFT algorithm

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 13 / 100
FFT algorithms DIT-FFT algorithm

Decimation in Time (DIT)-FFT algorithm

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 14 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

Radix-2 algorithm
The sequence x(n) of length N is factored in such a way that

N = r1 r2 r3 . . . rv

In this case r1 = r2 = r3 = . . . rv = r so that N = r v , where r is called the radix of the


FFT algorithm.
r = 2 is called radix-2 algorithm, which is most widely used FFT algorithm.

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 15 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

The N point data sequence x(n) is splitted into two N/2 point data sequences f1 (n), f2 (n)
These f1 (n) and f2 (n) data sequences contain even and odd numbered samples of x(n).

f1 (n) = x(2n) n = 0, 1, . . . , N/2 − 1


f2 (n) = x(2n + 1) n = 0, 1, . . . , N/2 − 1

The N point DFT is expressed as


N−1
X
X (k) = x(n)WNkn k = 0, 1, . . . , N − 1
n=0

The sequence x(n) is splitted as even and odd numbered samples and its DFT is:
X X
X (k) = x(n)WNkn + x(n)WNkn
n=even n=odd
N/2−1 N/2−1
k(2m+1)
X X
= x(2m)WN2mk + x(2m + 1)WN
m=0 m=0

In the above equation f1 (m) = x(2m) and f2 (m) = x(2m + 1), and its DFT is
N/2−1 N/2−1
X X
X (k) = f1 (m)(WN2 )mk + f2 (m)(WN2 )mk WNk
m=0 m=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 16 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

N/2−1 N/2−1
X X
X (k) = f1 (m)(WN/2 )mk + WNk f2 (m)(WN/2 )mk
m=0 m=0

Comparing the above equation with DFT equation and can be expressed as:

X (k) = F1 (k) + WNk F2 (k) k = 0, 1, . . . , N − 1

where F1 (k) and F2 (k) are N/2 point DFT of f1 (m) and f2 (m) respectively
F1 (k) and F2 (k) are periodic with period N/2 hence F1 (k + N/2) = F1 (k) and
(k+N/2)
F2 (k + N/2) = F2 (k), and also WN = −WNk . Replace k by k+N/2

(k+N/2)
X (k + N/2) = F1 (k + N/2) + WN F2 (k + N/2)

X (k + N/2) = F1 (k) − WNk F2 (k)

X (k) = F1 (k) + WNk F2 (k) k = 0, 1, . . . , N/2 − 1


X (k + N/2) = F1 (k) − WNk F2 (k) k = 0, 1, . . . , N/2 − 1

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 17 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

8 point DFT
To Demonstrate the FFT algorithm 8 point DFT is considered as an example.
The block diagram of an 8 point DFT is as shown in Figure.

x(0) X (0)
x(1) X (1)
x(2) X (2)
8-point DFT

x(7) X (7)

x( n) Discrete X (k ) is
Time Signal DFT of x( n)

Figure 2: Block diagram of 8 point DFT

For this Figure X (k) can be obtained from F1 (k) and F2 (k).
where F1 (k) and F2 (k) are two 4-point DFTs

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 18 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

The 8 point DFT can be found by combining two 4 point DFT F1 (k) and F2 (k).
The sequences f1 (m) and f2 (m) are

f1 (m) = x(2n) = [x(0), x(2), x(4), x(6)]


f2 (m) = x(2n + 1) = [x(1), x(3), x(5), x(7)]

X (k) = F1 (k) + WNk F2 (k) k = 0, 1, . . . , N/2 − 1


X (k + N/2) = F1 (k) − WNk F2 (k) k = 0, 1, . . . , N/2 − 1

x(2n) = f1 (m)
x(0) = f1 (0) F1 (0) X (0)
x(2) = f1 (1) N/2-point DFT
F1 (1) X (1)
x(4) = f1 (2) i.e.
F1 (2) X (2)
4-point DFT
x(6) = f1 (3) F1 (3) X (3)

x(2n + 1) = f 2 (m)
x(1) = f 2 (0) F2 (0) W80 -1 X (0 + 4) = X (4)

x(2) = f 2 (1) F2 (1) W81 -1 X (1 + 4) = X (5)


N/2-point DFT
x(5) = f 2 (2) i.e.
F2 (2) W8 2 -1 X (2 + 4) = X (6)
4-point DFT
x(7) = f 2 (3) F2 (3) W83 -1 X (3 + 4) = X (7)

Dr. Manjunatha. P FigureUNIT


(JNNCE) 3: 8- 3:point DFT using(FFT)
Fast-Fourier-Transform twoalgorithms[?,
4-point ?,DFT
October
?, ?] 15, 2014 19 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

The process of decimation in time is repeated for the sequences f1 (n) and f2 (n).
f1 (n) and f2 (n) are two N/2 point sequences.
This is done by splitting the sequences into odd and even numbered sequences for f1 (n) as

N
v11 (n) = f1 (2n) n = 0, 1, . . . , −1
4
N
v12 (n) = f1 (2n + 1) n = 0, 1, . . . , −1
4

Similarly splitting is done into odd and even numbered sequences for f2 (n) as

N
v21 (n) = f2 (2n) n = 0, 1, . . . , −1
4
N
v22 (n) = f2 (2n + 1) n = 0, 1, . . . , −1
4

v11 (n), v12 (n), v21 (n) and v22 (n) are four N/4 point samples.

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 20 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

Apply the N/4 point DFT to obtain F1 (k), based on the N/2 point DFT.

k N
F1 (k) = V11 (k) + WN/2 V12 (k) k = 0, 1, . . . , −1
4
k N
F1 (k + N/4) = V11 (k) − WN/2 V12 (k) k = 0, 1, . . . , −1
4

Similarly apply the N/4 point DFT to obtain F2 (k).

k N
F2 (k) = V21 (k) + WN/2 V22 (k) k = 0, 1, . . . , −1
4
k N
F2 (k + N/4) = V21 (k) − WN/2 V22 (k) k = 0, 1, . . . , −1
4

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 21 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

The symbolic representation of F1 (k) and F2 (k) are as shown in Figure.

f1 (0) F1 (0)

f1 (1) N/2-point F1 (1)


DFT i.e.
f1 (2) 4-point DFT F1 (2)

f1 (3) F1 (3)

Figure 4: Symbolic representation of F1 (k)

f 2 (0) F2 (0)

f 2 (1) N/2-point F2 (1)


DFT i.e.
f 2 (2) 4-point DFT F2 (2)

f 2 (3) F2 (3)

Figure 5: Symbolic representation of F2 (k)

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 22 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

The 4-point sequences v11 (n) and v12 (n) are:


v11 (n) = f1 (2n) = x(4n) = [x(0), x(4)] n = 0, 1
v12 (n) = f1 (2n + 1) = x(4n + 2) = [x(2), x(6)] n = 0, 1

k N
F1 (k) = V11 (k) + WN/2 V12 (k) k = 0, 1, . . . , −1
4
k N
F1 (k + N/4) = V11 (k) − WN/2 V12 (k) k = 0, 1, . . . , −1
4

The detailed two N/4 point DFT for F1 (k) are shown in Figure.
V11 (n) = f1 (2n) = x(4n)
v11 (0) = f1 (0) = x(0) V11 (0) F1 (0)
N/4-point
DFT i.e.
v11 (1) = f1 (2) = x (4) 2-point DFT V11 (1) F1 (1)

V12 ( n) = f1 (2n + 1) = x(4n + 2)


v12 (0) = f1 (1) = x(2) V12 (0) W 0 F1 (2)
4
N/4-point -1
DFT i.e.
1
v12 (1) = f1 (3) = x(6) 2-point DFT V12 (1) W4 F1 (3)
-1

Figure 6: 4-point DFT F1 (k)


Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 23 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

The 4-point sequences v21 (n) and v22 (n) are:


v21 (n) = f2 (2n) = x(4n) = [x(1), x(5)] n = 0, 1
v22 (n) = f2 (2n + 1) = x(4n + 2) = [x(3), x(7)] n = 0, 1

k N
F2 (k) = V21 (k) + WN/2 V22 (k) −1 k = 0, 1, . . . ,
4
k N
F2 (k + N/4) = V21 (k) − WN/2 V22 (k) k = 0, 1, . . . , −1
4
The detailed two N/4 point DFT for F2 (k) are shown in Figure.
V21 (n) = f 2 (2n) = x (4n + 1)
v21 (0) = f 2 (0) = x (1) V21 (0) F2 (0)
N/4-point
DFT i.e.
v21 (1) = f 2 (2) = x(5) 2-point DFT V21 (1) F2 (1)

V22 ( n) = f 2 (2n + 1) = x(4n + 3)


v22 (0) = f 2 (1) = x(3) V22 (0) W 0 F2 (2)
4
N/4-point -1
DFT i.e.
1
v22 (1) = f 2 (3) = x(7) 2-point DFT V22 (1) W4 F2 (3)
-1

Figure 7: Symbolic representation of F2 (k)


Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 24 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

The decimation of the data sequence repeated again and again until the sequences reduce
to the one point sequence.
For N = 2v , the decimation can be performed till v = log2 N.
For N=8 v = log2 8 = 3.
The N/4 sequences are further splitted as odd and even sequences.
This will result in sequence of length N/8. The 2-point DFTs are expressed as

v11 (0) = f1 (0) = x(0) V 11(0)


2-point DFT

v11 (1) = f1 (2) = x (4) V 11(1)

V 11(n), where n = 0,1 V 11(k ), where k = 0,1

Figure 8: 2-point DFT V11 (k)

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 25 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

The n DFT is expressed as

N−1
X
X (k) = x(n)WNkn k = 0, 1, . . . , N/2 − 1
n=0

The two point DFT for V11 (k) is expressed as


N−1
X
V11 (k) = v11 (n)W2kn k = 0, 1
n=0

For k=0

1
X
V11 (0) = v11 (n)W20
n=0
1
X
= v11 (n)
n=0
= v11 (0) + v11 (1)

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 26 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

For k=1
1
X
V11 (1) = v11 (n)W2n
n=0

= v11 (0)W20 + v11 (1)W21


W20 = 1 and W21 = e −j 2 ⇒ W21 = e −jπ = cosπ − jsinπ = −1
V11 (1) = v11 (0) − v11 (1)

V11 (0) = v11 (0) + W20 v11 (1)


V11 (1) = v11 (0) − W20 v11 (1)

v11 (0) V11 (0)

v11 (1) W2 0 V11 (1)


-1

2-point DFT

Figure 9: 2-point DFT V11 (k)


Similarly V12 (k), V21 (k), and V22 (k) are estimated, and these details are as shown in
Figure 11
Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 27 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

The detailed two N/4 point DFT for F2 (k) are shown in Figure.
The block diagram 8 point DFT computation is as shown in Figure
x(0)
X (0)
2-point DFT
x(4)
X (1)
Combine
2-point DFTs
x(2) X (2)
2-point DFT
x(6)
Combine X (3)
4 point
x(1) DFTs X (4)
2-point DFT
x(5)
X (5)
Combine
2-point DFTs
x(3) X (6)
2-point DFT
x(7) X (7)

First Stage Second Stage Third Stage


Decimation Decimation Decimation
Shuffled array in Natural order of
bit reversal order DFT Sequence

Figure 10: Three stages in computation of an N=8 point DFT

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 28 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

Combine 2-point DFTs Combine Two-4 point DFTs


2-point DFT
V11 (0) F1 (0) X (0)
x(0)

W20 = W80
x(4) V11 (1) F1 (1) X (1)
-1

W40 = W80
V12 (0) F1 (2) X (2)
x(2) -1

W20 = W80 W41 = W82


x(6) V12 (1) F1 (3) X (3)
-1 -1
2-point DFT Combine 2-point DFTs
V21 (0) F2 (0) W80 X (4)
x(1) -1

W20 = W80 W81


x(5) V21 (1) F2 (1) X (5)
-1 -1
W40 = W80 W82
V22 (0) F2 (2) X (6)
x(3) -1 -1

W20 = W80 W41 = W82


x(7) W83
V22 (1) F2 (3) X (7)
-1 -1 -1
Third Stage Decimation Second Stage Decimation First Stage Decimation

Shuffled array in Natural order of


bit reversal order DFT Sequence

Figure 11: Signal flow graph depicting Radix-2 DIT-FFT algorithm for N=8
Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 29 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

Computational complexity in FFT algorithm


The basic computation of every stage of signal flow graph is represented by general
structure is known as butterfly computation.
In this computation two complex numbers say (a,b), multiply b by WNr , and then add and
subtract the product from a to form new complex numbers (A,B).
This basic computation is as shown in Figure and is called as butterfly because the flow
graph resembles a butterfly

a A = a + WNr b

b WN r B = a − WNr b
-1

Figure 12: Butterfly computation in DIT-FFT algorithm

Butterfly operation requires two complex additions and one complex multiplication.
In complete signal flow graph Figure 11. there are N/2=4 butterflies in every stage of
decimation and there are log2 N = 3 = v stages of decimation (for N=8).
Total number of butterfly operations =N/2log2 N = 4 × 3 = 12
Total number of complex additions =2 × N/2 × log2 N = N × log2 N
Total number of complex multiplications =1 × N/2 × log2 N = N/2 × log2 N

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 30 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

Table 1: Comparison of computational complexity for the direct computation of DFT versus
the FFT algorithm

No of Direct Computation DIT-FFT algorithm Speed


Points Complex Complex Complex Complex improvement
multiplications additions multiplications additions for multiplications
N2
N2 N2 − N N/2log2 N Nlog2 N N/2log2 N
4 16 12 4 8 4 times
8 64 56 12 24 5.3 times
16 256 240 32 64 8 times
32 1024 992 80 160 12.8 times
64 4096 4032 192 384 21.3 times
256 65536 65280 1024 2048 64.0 times
1024 1048576 1047552 5120 10240 204.8 times

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 31 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

Memory requirement in FFT algorithm


In butterfly computation, two complex numbers say (a,b), are input and (A,B) form new
complex numbers.
Once ’A’ and ’B’ are estimated there is no need to store the old values a and b, hence
same memory locations can be used for ’A ’and ’B’.
’A’ is stored in location ’a’ and ’B ’is stored in location in ’b’, this is called in place
computation.
For one butterfly computation four memory locations are required, two for ’a’ or ’A’ and
two for ’b’ or ’B’ (’a’ or ’b’are two complex numbers ). Memory locations for one
butterfly = 2 × 2 = 4
a A = a + WNr b

b WN r B = a − WNr b
-1

Figure 13: Butterfly computation in DIT-FFT algorithm

Computations are usually performed in stage wise. In every stage there are N/2 butterflies.
Memory locations for one stage = 4 × N/2 = 2N
2N locations are required for each stage. Usually stage by stage calculations are
performed, and the same locations are shared for next stage.
In every stage N/2 twiddle factors are required. Hence a maximum of (2N + N/2)
memory locations are required.
Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 32 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

Table 2: Shuffling of the data and bit reversal


Sl. Memory address Memory address
No in bit reversed
Decimal Binary Binary Decimal
1 0 000 000 0
2 1 001 100 4
3 2 010 010 2
4 3 011 110 6
5 4 100 001 1
6 5 101 101 5
7 6 110 011 3
8 7 111 111 7

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 33 / 100
FFT algorithms Radix-2 DIT-FFT algorithm

Computation of twiddle factor


WN = e −j N
2π π
W8 = e −j 8 = e −j 4

W80 = e =10
π1
W81 = e −j 4 = e −jπ/4 = cos(π/4) − jsin(π/4) = 0.7071 − j0.7071
−j π
W82 = e 4
2
= e −jπ/2 = cos(π/2) − jsin(π/2) = −j
   
π3 3π 3π 3π
W83 = e −j 4 = e −j 4 = cos − jsin = −0.7071 − j0.7071
4 4

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 34 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

Use the 8 point redix-2 DIT-FFT algorithm to find the DFT of the sequence x(n)={0.707,1,
0.707,0,-0.707, -1,-0.707,0}

Solution:
Based on the signal flow graph it is first we have to determine the two point DFT

V11 (0) = x(0) + W80 x4


= 0.707 + 1(−0.707) = 0
V11 (1) = x(0) − W80 x4
= 0.707 − 1(−0.707) = 1.414

V11 (1) = x(0) − W80 + x4


= 0.707 − 1(−0.707) = 1.414

V12 (0) = x(2) + W80 x6


= 0.707 + 1(−0.707) = 0
V12 (1) = x(2) − W80 x6
= 0.707 − 1(−0.707) = 1.414

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 35 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

V21 (0) = x(1) + W80 x5


= 1 + 1(−1) = 0
V21 (1) = x(1) − W80 x5
= 1 − 1(−1) = 2

V22 (0) = x(3) + W80 x7


= 0 + 1(0) = 0
V22 (1) = x(1) − W80 x5
= 1 − 1(0) = 0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 36 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

F1 (0) = V11 (0) + W80 V12 (0)


= 0 + 1(0) = 0
F1 (1) = V11 (1) + W80 V12 (1)
= 1.414 + (−j)1.414 = 1.414 − j1.414

F1 (2) = V11 (0) − W80 V12 (0)


= 0 − 1(0) = 0
F1 (3) = V11 (1) − W80 V12 (1)
= 1.414 − (−j)1.414 = 1.414 + j1.414

F2 (0) = V21 (0) + W80 V22 (0)


= 0 + 1(0) = 0
F2 (1) = V21 (1) + W80 V22 (1)
= 2 + (−j)0 = 2

F2 (2) = V21 (0) − W80 V22 (0)


= 0 − 1(0) = 0
F2 (3) = V21 (1) − W80 V22 (1)
Dr. Manjunatha. P (JNNCE) = 2 − (−j)0 =(FFT)
UNIT - 3: Fast-Fourier-Transform 2 algorithms[?, ?,October
?, ?] 15, 2014 37 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

X (0) = F1 (0) + W80 F2 (0)


= 0 + 1(0) = 0
X (1) = F1 (1) + W81 F2 (1)
= (1.414 − j1.414) + (0.7071 − j0.7071)2
= 2.8284 − j2.8284
X (2) = F1 (2) + W82 F2 (2)
= 0 + (−j)(0) = 0
X (3) = F1 (3) + W83 F2 (3)
= (1.414 + j1.414) + (−0.7071 − j0.7071)2 = 0
X (4) = F1 (0) − W80 F2 (0)
= 0 + 1(0) = 0
X (5) = F1 (1) − W81 F2 (1)
= (1.414 − j1.414) − (0.7071 − j0.7071)2 = 0
X (6) = F1 (2) − W82 F2 (2)
= 0 − (−j)(0) = 0
X (7) = F1 (3) − W83 F2 (3)
= (1.414 + j1.414) − (−0.7071 − j0.7071)2
= 2.8284 + j2.8284

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 38 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

Combine 2-point DFTs Combine Two-4 point DFTs


2-point DFT
V11 (0) = 0 F1 (0) = 0 X (0) = 0
x(0) = 0.707

W20 = W80
x (4) = −0.707 V11 (1) = 1.414 F1 (1) = 1.414 − j1.414 X (1) = 2.8284 − j 2.8284
-1

W40 = W80
V12 (0) = 0 F1 (2) = 0 X (2) = 0
x(2) = 0.707 -1

W20 = W80 W41 = W82


x(6) = −0.707 V12 (1) = 2 F1 (3) = 1.414 + j1.414 X (3) = 0
-1 -1
2-point DFT Combine 2-point DFTs
V21 (0)0 F2 (0) = 0 W80 X (4) = 0
x(1) = 1 -1

W20 = W80 W81


x (5) = −1 V21 (1) = 2 F2 (1) = 2 X (5) = 0
-1 -1
W40 = W80 W82
V22 (0) = 0 F2 (2) = 0 X (6) = 0
x(3) = 0 -1 -1

W20 = W80 W41 = W82


x(7) = 0 W83
V22 (1) = 0 F2 (3) = 2 X (7) = 2.8284 + j 2.8284
-1 -1 -1

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 39 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

1 1 1 1 1 1 1 1
 
X (0) .707
  
 1 √1 − j √1 −j − √1 − j √1 −1 − √1 + j √1 j 1
√ + j √1 
 X (1)   2 2 2 2 2 2 2 2   1

X (2)
 
 1 −j −1 j 1 −j −1 j 
  .707

− √1 − j √1 1 − j √1 1 + j √1 − √1 + j √1
 

X (3)
  1 j √ 1 √ −j  
0
2 2 2 2 2 2 2 2
 
= =
 
X (4) 1 −1 1 −1 1 −1 1 −1  −.707
   
 
− √1 + j √1 1 + j √1 1 − j √1 − √1 − j √1
   −1

 X (5) 
  1 −j √ −1 √ j  
 2 2 2 2 2 2 2 2   −.707
 X (6)  
 1 j −1 −j 1 j −1 −j


X (7) 1 0
1 √ + j √1 j − √1 + j √1 −1 − √1 − j √1 −j √1 − j √1
2 2 2 2 2 2 2 2

0
 
 2.8284 − j2.8284 
0
 
 
0
 
 
0
 
 

 0 

 0 
2.8284 + j2.8284

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 40 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

Use the 8 point redix-2 DIT-FFT algorithm to find the DFT of the sequence
x(n)={1,1,1,1,0,0,0,0}
Solution: Based on the signal flow graph it is first we have to determine the two point DFT

V11 (0) = x(0) + W80 x4


= 1 + 1(0) = 1
V11 (1) = x(0) − W80 x4
= 1 − 1(0) = 1

V12 (0) = x(2) + W80 x6


= 1 + 1(0) = 1
V12 (1) = x(2) − W80 x6
= 0.707 − 1(0) = 1

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 41 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

V21 (0) = x(1) + W80 x5


= 1 + 1(0) = 1
V21 (1) = x(1) − W80 x5
= 1 − 1(0) = 1

V22 (0) = x(3) + W80 x7


= 1 + 1(0) = 1
V22 (1) = x(1) − W80 x5
= 1 − 1(0) = 1

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 42 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

F1 (0) = V11 (0) + W80 V12 (0)


= 1 + 1(1) = 2
F1 (1) = V11 (1) + W80 V12 (1)
= 1 + (−j)1 = 1 − j

F1 (2) = V11 (0) − W80 V12 (0)


= 1 − (−j)(1) = 1 − j
F1 (3) = V11 (1) − W80 V12 (1)
= 1 − (−j)1.414 = 1 + j

F2 (0) = V21 (0) + W80 V22 (0)


= 1 + 1(1) = 2
F2 (1) = V21 (1) + W80 V22 (1)
= 1 + (−j)1 = 1 − j

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 43 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

F2 (2) = V21 (0) − W80 V22 (0)


= 1 − 1(1) = 0
F2 (3) = V21 (1) − W80 V22 (1)
= 1 − (−j)1 = 1 + j

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 44 / 100
DIT-FFT algorithm Problems on DIT-FFT algorithm

X (0) = F1 (0) + W80 F2 (0)


= 2 + 1(2) = 4
X (1) = F1 (1) + W81 F2 (1)
= (1 − j1) + (0.707 − j0.7071)(1 − j)
= 1 − j2.414
X (2) = F1 (2) + W82 F2 (2)
= 0 + (−j)(0) = 0
X (3) = F1 (3) + W83 F2 (3)
= (1 + j) + (−0.7071 − j0.7071)(1 + j)
= 1 − j0.414
X (4) = F1 (0) − W80 F2 (0)
= 2 − 1(2) = 0
X (5) = F1 (1) − W81 F2 (1)
= (1 − j1) − (0.707 − j0.7071)(1 − j)
= 1 − j0.414
X (6) = F1 (2) − W82 F2 (2)
= 0 − (−j)(0) = 0
X (7) = F1 (3) − W83 F2 (3)
= (1 + j) − (−0.7071 − j0.7071)(1 + j)
Dr. Manjunatha. P (JNNCE) =
UNIT 1 +Fast-Fourier-Transform
- 3: j2.414 (FFT) algorithms[?, ?,October
?, ?] 15, 2014 45 / 100
FFT algorithms DIF-FFT algorithm

Decimation in Frequency (DIF)-FFT algorithm

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 46 / 100
FFT algorithms DIF-FFT algorithm

N point DFT is expressed as:


N−1
X
X (k) = x(n)WNkn k = 0, 1, . . . , N − 1
n=0

Split this summations into two summations with N/2 data points for each summation.

N/2−1 N−1
X X
X (k) = x(n)WNkn + x(n)WNkn
n=0 n=N/2
N/2−1 N/2−1
k(n+N/2)
X X
= x(n)WNkn + x(n + N/2)WN
n=0 n=0
N/2−1 N/2−1
kN/2
X X
= x(n)WNkn + WN x(n + N/2)WNkn
n=0 n=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 47 / 100
FFT algorithms DIF-FFT algorithm

kN/2
WN can be expressed as
kN/2 2π kN
WN = e −j N 2 = e −jπk = e −jπ = (−1)k

N/2−1 N/2−1
X X
X (k) = x(n)WNkn + (−1)k x(n + N/2)WNkn
n=0 n=0
N/2−1 h i
X
= x(n) + (−1)k x(n + N/2) WNkn
n=0

Split the X (k) into even and odd numbered samples. This splitting in frequency is known
as decimation in frequency (DIF).

N/2−1 h i
X
X (2k) = x(n) + (−1)2k x(n + N/2) WN2kn k = 0, 1, . . . N/2 − 1
n=0
N/2−1 h i
(2k+1)n
X
X (2k + 1) = x(n) + (−1)2k+1 x(n + N/2) WN k = 0, 1, . . . N/2 − 1
n=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 48 / 100
FFT algorithms DIF-FFT algorithm

(−1)2k = 1 and WN2kn = (WN2 )kn = WN/2


kn Since W 2 = W
N N/2
(2k+1)n
Similarly (−1)2k+1 = −1 and WN = WN2kn+n = WN2kn .WNn Since WN2 = WN/2
Substituting these values in the previous equations:

N/2−1
X
kn
X (2k) = [x(n) + x(n + N/2)] WN/2 k = 0, 1, . . . N/2 − 1
n=0
N/2−1
X
X (2k + 1) = [x(n) − x(n + N/2)] WN2kn .WNn
n=0
N/2−1
X
= {[x(n) − x(n + N/2)] WNn }WN/2
kn

n=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 49 / 100
FFT algorithms DIF-FFT algorithm

Let us define N/2 point sequences g1 (n) and g2 (n) as

g1 (n) = [x(n) + x(n + N/2)] n = 0, 1, . . . N/2 − 1


g2 (n) = [x(n) − x(n + N/2)] WNn n = 0, 1, . . . N/2 − 1

N/2−1
X
kn
X (2k) = g1 (n)WN/2 k = 0, 1, . . . N/2 − 1
n=0
N/2−1
X
kn
X (2k + 1) = g2 (n)WN/2 k = 0, 1, . . . N/2 − 1
n=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 50 / 100
FFT algorithms DIF-FFT algorithm

To Demonstrate the DIF-FFT algorithm 8 point DFT is considered as an example. The


values of g1 (n) and g2 (n) is defined as

g1 (n) = x(n) + x(n + N/2) n = 0, 1, . . . N/2 − 1

g1 (0) = x(0) + x(4)


g1 (1) = x(1) + x(5)
g1 (2) = x(2) + x(6)
g1 (3) = x(3) + x(7)

g2 (n) = [x(n) − x(n + 4)] W8n n = 0, 1, . . . N/2 − 1

g2 (0) = [x(0) − x(4)]W80


g2 (1) = [x(1) − x(5)]W81
g2 (2) = [x(2) − x(6)]W82
g2 (3) = [x(3) − x(7)]W83

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 51 / 100
FFT algorithms DIF-FFT algorithm

X (2 K )

x(0) g1 (0) X (0)

x(1) g1 (1) X (2)

x(2) g1 (2) 4 point DFTs X (4)

x(3) g1 (3) X (6)

x(4) W80 g 2 (0) X (1)


-1
x(5) W81 g 2 (1) X (3)
-1
x(6) 4 point DFTs X (5)
W82 g 2 (2)
-1
x(7) W83 g 2 (3) X (7)
-1
X (2 K + 1)

Figure 15: Decimation of DFT-FFT algorithm for N=8

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 52 / 100
FFT algorithms DIF-FFT algorithm

Let us define N/4 point sequences p11 (n) and p12 (n) as

p11 (n) = [g1 (n) + g1 (n + N/4)] n = 0, 1, . . . N/4 − 1


n
p12 (n) = [g1 (n) − g1 (n + N/4)] WN/2 n = 0, 1, . . . N/4 − 1
p21 (n) = [g2 (n) + g2 (n + N/4)] n = 0, 1, . . . N/4 − 1
n
p22 (n) = [g2 (n) − g2 (n + N/4)] WN/2 n = 0, 1, . . . N/4 − 1

N/4−1
X
kn
X (4k) = p11 (n)WN/4 k = 0, 1, . . . N/4 − 1
n=0
N/4−1
X
kn
X (4k + 2) = p12 (n)WN/4 k = 0, 1, . . . N/4 − 1
n=0
N/4−1
X
kn
X (4k + 1) = p21 (n)WN/4 k = 0, 1, . . . N/4 − 1
n=0
N/4−1
X
kn
X (4k + 3) = p22 (n)WN/4 k = 0, 1, . . . N/4 − 1
n=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 53 / 100
FFT algorithms DIF-FFT algorithm

The 4-point sequence g1 (n) is splitted into two 2-point sequences p11 (n) and p12 (n) and
represented as

p11 (0) = g1 (0) + g1 (2)


p11 (1) = g1 (1) + g1 (3)
p12 (0) = [g1 (0) − g1 (2)]W80 ∵ (W40 = W80 )
p12 (1) = [g1 (1) − g1 (3)]W82 ∵ (W41 = W82 )

Similarly the 4-point sequence g2 (n) is splitted into two 2-point sequences p21 (n) and
p22 (n) and represented as

p21 (0) = g2 (0) + g2 (2)


p21 (1) = g2 (1) + g2 (3)
p22 (0) = [g2 (0) − g2 (2)]W80
p22 (1) = [g2 (1) − g2 (3)]W82

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 54 / 100
FFT algorithms DIF-FFT algorithm

g1 (0) p11 (0)

g1 (1) p11 (1)

g1 (2) p12 (0)


-1 W 0
8
g1 (3) p12 (1)
2
-1 W 8
g 2 (0) p21 (0)

g 2 (1) p21 (1)

g 2 (2) p22 (0)


-1 W 0
8
g 2 (3) p22 (1)
2
-1 W 8

Figure 16: N=8 point decimation in frequency FFT algorithm

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 55 / 100
FFT algorithms DIF-FFT algorithm

The 2-point DFTs are computed directly and represented as

N/4−1
X
kn
X (4k) = p11 (n)WN/4 k = 0, 1, . . . N/4 − 1
n=0
N/4−1
X
kn
X (4k + 2) = p12 (n)WN/4 k = 0, 1, . . . N/4 − 1
n=0
N/4−1
X
kn
X (4k + 1) = p21 (n)WN/4 k = 0, 1, . . . N/4 − 1
n=0
N/4−1
X
kn
X (4k + 3) = p22 (n)WN/4 k = 0, 1, . . . N/4 − 1
n=0

X (0) = P11 (0) + P11 (1)


X (4) = [P11 (0) − P11 (1)]W80
X (2) = P12 (0) + P12 (1)
X (6) = [P12 (0) − P12 (1)]W80
X (1) = P21 (0) + P21 (1)
X (5) = [P21 (0) − P21 (1)]W80
X (3) = P22 (0) + P22 (1)
0
Dr. Manjunatha. P (JNNCE)
X (7) = [P22 (0) − P22(FFT)
UNIT - 3: Fast-Fourier-Transform
(1)]Walgorithms[?,
8 ?,October
?, ?] 15, 2014 56 / 100
FFT algorithms DIF-FFT algorithm

2 point DFT
p11 (0) X (0)

p11 (1) X (4)


0
-1 W 8
p12 (0) X (2)

p12 (1) X (6)


-1 W 8
0

p21 (0) X (1)

p21 (1) X (5)


0
-1 W 8
p22 (0) X (3)

p22 (1) X (7)


-1 W 8
0

Figure 17: N=8 point decimation in frequency FFT algorithm


Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 57 / 100
FFT algorithms DIF-FFT algorithm

2 point DFT
x(0) g1 (0) p11 (0) X (0)

x(1) g1 (1) p11 (1) X (4)


-1 W80
x(2) g1 (2) p12 (0) X (2)
-1 W80
x(3) g1 (3) p12 (1) X (6)
-1 W82 -1 W 8
0

x(4) W80 g 2 (0) p21 (0) X (1)


-1
x(5) W81 g 2 (1) p21 (1) X (5)
-1 -1 W80
x(6) W82 g 2 (2) p22 (0) X (3)
-1 -1 0
W 8
x(7) W83 g 2 (3) p22 (1) X (7)
-1 W82
-1 -1 W80

Input Sequence DFT sequence


shuffled in bit
reversal order

Figure 18: N=8 point decimation in frequency FFT algorithm


Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 58 / 100
FFT algorithms DIF-FFT algorithm

Computational Complexity Decimation in Frequency (DIF)-FFT


algorithm

a A = a+b

b WN r B = (a − b)WNr
-1

Figure 19: Butterfly structure decimation in frequency FFT algorithm

Butterfly operation requires two complex additions and one complex multiplication.
In complete signal flow graph Figure 30. there are N/2=4 butterflies in every stage of
decimation and there are log2 N = 3 = v stages of decimation (for N=8).
Total number of butterfly operations =N/2log2 N = 4 × 3 = 12
Total number of complex additions =2 × N/2 × log2 N = N × log2 N
Total number of complex multiplications =1 × N/2 × log2 N = N/2 × log2 N

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 59 / 100
DIF-FFT algorithm Problems on DIF-FFT algorithm

Obtain the 8 point DFT of the following sequence using redix-2 DIF-FFT algorithm. Show all
the results along signal flow graph x(n)={2,1,2,1}

Solution:

W80 =1
W81 = 0.707 − j0.707
W82 = −j
W83 = −0.707 − j0.707

g2 (0) = [x(0) − x(4)]W80


g1 (0) = x(0) + x(4) = [2 − 0] × 1 = 2
= 2+0=2 g2 (1) = [x(1) − x(5)]W81
g1 (1) = x(1) + x(5) = [1 − 0] × [0.707 − j0.707]
= 1+0=1 = 0.707 − j0.707
g1 (2) = x(2) + x(6) g2 (2) = [x(2) − x(6)]W82
= 2+0=2 = [2 − 0] × [−j] = −j2
g1 (3) = x(3) + x(7) g2 (3) = [x(3) − x(7)]W83
= 1+0=1 = [1 − 0] × [−0.707 − j0.707]
= −0.707 − j0.707

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 60 / 100
DIF-FFT algorithm Problems on DIF-FFT algorithm

g1 (0) = x(0) + x(4)


x(0) =2+0=2
g1 (1) = x(1) + x (5)
x(1)
=1+0=1
g1 (2) = x(2) + x (6)
x(2) =2+0=2
g1 (3) = x(3) + x(7)
x(3) =1+0=1
g 2 (0) = [ x (0) − x(4)]W80
x(4) W80 =[2-0] × 1=2
-1 g 2 (1) = [ x(1) − x(5)]W81
x(5) W81 =[1-0] × (.707 − j.707)
-1 g 2 (2) = [ x (2) − x(6)]W82
x(6) W82 =[2-0] × (− j ) = − j 2
-1 g 2 (3) = [ x (3) − x(7)]W83
x(7) W83 =[1-0] × (−.707 − j.707)
-1

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 61 / 100
DIF-FFT algorithm Problems on DIF-FFT algorithm

p21 (0) = g2 (0) + g2 (2)


= 2 − j2
p11 (0) = g1 (0) + g1 (2) p21 (1) = g2 (1) + g2 (3)
= 2+2=4 = 0.707 − j0.707 − 0.707 − j0.707
p11 (1) = g1 (1) + g1 (3) = −j1.414
= 1+1=2 p22 (0) = [g2 (0) − g2 (2)]W80
p12 (0) = [g1 (0) − g1 (2)]W80 = [2 − (−j2)] × 1
= (2 − 2) × 1 = 0 = 2 + j2
p12 (1) = [g1 (1) − g1 (3)]W80 p22 (1) = [g2 (1) − g2 (3)]W80
= (1 − 1) × (−j) = 0 = [0.707 − j0.707 + 0.707 + j0.707] × (−j)
= −j1.414

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 62 / 100
DIF-FFT algorithm Problems on DIF-FFT algorithm

g1 (0) = 2 p11 (0) = g1 (0) + g1 (2)


= 2+2 = 4
p11 (1) = g1 (1) + g1 (3)
g1 (1) = 1
= 1+1 = 2
p12 (0) = [ g1 (0) − g1 (2)]W80
g1 (2) = 2
-1 W80 = (2 − 2) ×1 = 0
g1 (3) = 1 p12 (1) = [ g1 (1) − g1 (3)]W80
-1 W82 = (1 − 1) × (− j ) = 0
p21 (0) = g 2 (0) + g 2 (2)
g 2 (0) = 2
= 2 − j2
p21 (1) = [ g 2 (1) + g 2 (3)]
g 2 (1) = (.707 − j.707) = (.707 − j.707 − .707 − j.707)
= − j1.414
g 2 (2) = − j 2 p22 (0) = [ g 2 (0) − g 2 (2)]W80
-1 W80 = [2 − (− j 2)] × − j = 2 + j 2
g 2 (3) = (−.707 − j.707) p22 (1) = [ g 2 (1) − g 2 (3)]W81
-1 W82
= (.707 − j.707 + .707 + j.707) × − j
= − j1.414

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 63 / 100
DIF-FFT algorithm Problems on DIF-FFT algorithm

X (0) = P11 (0) + P11 (1)


= 4+2=6
X (4) = [P11 (0) − P11 (1)]W80
= (4 − 2) × 1 = 2
X (2) = P12 (0) + P12 (1)
= 0+0=0
X (6) = [P12 (0) − P12 (1)]W80
= (0 − 0) × 1 = 0
X (1) = P21 (0) + P21 (1)
= (2 − j2 − j1.414)
= 2 − j3.414
X (5) = [P21 (0) − P21 (1)]W80
= [2 − j2 − (−j1.414)] × 1
= 2 − j0.586
X (3) = P22 (0) + P22 (1) = (2 + j2 − j1.414)
= 2 + j0.586
X (7) = [P22 (0) − P22 (1)]W80
= [2 + j2 − (−j1.414)] × 1 = 2 + j3.414

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 64 / 100
DIF-FFT algorithm Problems on DIF-FFT algorithm

2 point DFT
X (0) = p11 (0) + p11 (1)
p11 (0) = 4
4+2=6
X (4) = [ p11 (0) − p11 (1)]W80
p11 (1) = 2
-1 W80 (4-2)1=2
X (2) = p12 (0) − p12 (1)
p12 (0) = 0
0+0=0
X (6) = [ p11 (0) + p11 (1)]W80
p12 (1) = 0
-1 W80 (0-0)1=0
X (1) = p21 (0) + p21 (1)
p21 (0) = 2 − j 2
2-j2-j1.414=2-j3.414
X (5) = [ p21 (0) + p21 (1)]W80
p21 (1) = − j1.414
-1 W80 [2-j2-(-j1.414)]1=2-j0.566
X (3) = p22 (0) + p22 (1)
p22 (0) = 2 + j 2
2+j2-j1.414=2+j0.586
X (7) = [ p22 (0) − p22 (1)]W80
p22 (1) = − j1.414
-1 W80 [2+j2-(-j1.414)]1=2+j3.414

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 65 / 100
DIF-FFT algorithm Problems on DIF-FFT algorithm

2 point DFT
x(0) = 2 g1 (0)=2 p11 (0) = 4 X (0) = 6

x(1) = 1 g1 (1)=1 p11 (1) = 2 X (4) = 2


-1 W80
x(2) = 2 g1 (2)=2 X (2) = 0
p12 (0) = 0
-1 W 0
g1 (3)=1 8
x(3) = 1 p12 (1) = 0 X (6) = 0
-1 W82 -1 W80
g 2 (0)=2
x(4) = 0 W80 p21 (0) = 2 − j 2 X (1) = 2 − j3.414
-1 g 2 (1) = (.707 − j.707)
x(5) = 0 W81 p21 (1) = − j1.414 X (5) = 2 − j 0.586
-1 W80
-1 g 2 (2) = − j 2
x(6) = 0 W82 p22 (0) = 2 + j 2 X (3) = 2 + j 0.586
-1 -1 W80
g 2 (3) = (−.707 − j.707)
x(7) = 0 W83 p22 (1) = − j1.414 X (7) = 2 + j3.414
-1 -1 W82 -1 W80

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 66 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

Inverse Radix-2-FFT algorithms

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 67 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

Inverse Radix-2-Decimation in frequency (DIF)


FFT algorithms

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 68 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

N point IDFT is defined as


N−1
1 X
x(n) = X (k)WN−kn n = 0, 1, . . . , N − 1
N k=0

WN = e −j2π/N and WN−kn = e −j2πkn/N =


DFT X (k) is splitted into even and odd numbered values

F1 (k) = X (2k) k = 0, 1, . . . , N/2 − 1


F2 (k) = X (2k + 1) k = 0, 1, . . . , N/2 − 1

" #
1
X (k)WN−kn X (k)WN−kn
X X
x(n) = +
N k=even k=odd
 
N/2−1 N/2−1
1  −2(2m+1) 
X (2m)WN−2mn
X X
= + X (2m + 1)WN
N m=0 m=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 69 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

F1 (m) = X (2m) and F2 (m) = X (2m + 1)


 
N/2−1 N/2−1
1  X X
−n
x(n) = F1 (m)(WN2 )−mn + F2 (m)(WN2 )−mn (WN )
N m=0 m=0

WN2 = WN/2
 
N/2−1 N/2−1
1  X
F1 (m)(WN/2 )−mn + WN−n
X
x(n) = F2 (m)(WN/2 )−mn 
N m=0 m=0

 
N/2−1 N/2−1
1 1 X
−mn −n 1
X
−mn 
x(n) = F1 (m)(WN/2 ) + WN F2 (m)(WN/2 )
2 N/2 m=0 N/2 m=0

Summations represents the N/2 IDFT of f1 (n) and f2 (n) for F1 (m) and F2 (m)
respectively

1h i
x(n) = f1 (n) + WN−n f2 (n) n = 0, 1, . . . , N − 1
2

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 70 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

f1 (n) and f2 (n) are periodic


 
N
f1 n+ = f1 (n)
2
 
N
f2 n + = f2 (n)
2

Replace n by n+N/2 forx(n)


      
N 1 N −(n+ N
2)
N
x n+ = f1 n + + WN f2 n +
2 2 2 2

−(n+ N
2) −N/2
WN = WN−n WN
2π N
= WN−n e −j N 2

= WN−n e jπ
= = −WN−n
 
N
Hence x n + 2
can be written as
 
N 1h i
x n+ = f1 (n) − WN−n f2 (n)
2 2

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 71 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

1 h i N
x(n) = f1 (n) + WN−n f2 (n) n = 0, 1, . . . −1
2 2
 
N 1 h i N
x n+ = f1 (n) − WN−n f2 (n) n = 0, 1, . . . −1
2 2 2

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 72 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

Consider an 8 point Inverse DIF FFT. The sequence x(n) can be obtained from f1 (n) and
f1 (n), where f1 (n) and f2 (n) are 4 point sequences.

F1 (k ) = X (2k )
f1 (0)
F1 (0) = X (0) 1/ 2 x(0)

f1 (1) 1/ 2
F1 (1) = X (2) x(1)
N/2-point IDFT
4-point IDFT f1 (2) 1/ 2
F1 (2) = X (4) x(2)

f1 (3) 1/ 2
F1 (3) = X (6) x(3)
F1 (k ) = X (2k ) f 2 (0) W
−0

F2 (0) = X (1)
8
x(4)
-1 1/ 2
−1
f 2 (1) W 1/ 2
F2 (1) = X (3)
8
x(5)
N/2-point IDFT -1
−2
4-point IDFT f 2 (2) W 1/ 2
F2 (2) = X (5)
8
x(6)
-1
−3
f 2 (3) W 1/ 2
F2 (3) = X (7)
8
x(7)
-1

Figure 20: 8-point IDFT by combining 4-point IDFT of f1 (n) and f2 (n)

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 73 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

The decimation of X (k) is splitted into F1 (k) and F2 (k) are

F1 (k) = X (2k) = [X (0), X (2), X (4), X (6)]


F2 (k) = X (2k + 1) = [X (1), X (3), X (5), X (7)]

Next F1 (k) and F2 (k) are splitted into even and odd numbered samples

N
V11 (k) = F1 (2k) k = 0, 1, . . . −1
4
N
V12 (k) = F1 (2k + 1) k = 0, 1, . . . −1
4

N
V21 (k) = F2 (2k) k = 0, 1, . . . −1
4
N
V22 (k) = F2 (2k + 1) k = 0, 1, . . . −1
4

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 74 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

The sequences f1 (n) and f1 (n + N/4) are obtained from v11 (n) and v12 (n), where v11 (n)
and v12 (n) are N/4 point IDFT of V11 (k) and V12 (k) respectively

1 h
−n
i N
f1 (n) = v11 (n) + WN/2 v12 (n) k = 0, 1, . . . −1
2 4
 
N 1 h
−n
i N
f1 n + = v11 (n) − WN/2 v12 (n) k = 0, 1, . . . −1
4 2 4

Similarly f2 (n) can be written as

1 h
−n
i N
f2 (n) = v21 (n) + WN/2 v22 (n) k = 0, 1, . . . −1
2 4
 
N 1 h
−n
i N
f2 n + = v21 (n) − WN/2 v22 (n) k = 0, 1, . . . −1
4 2 4

V11 (k) = F1 (2k) = X (4k) = [X (0), X (4)] k = 0, 1


V12 (k) = F1 (2k + 1) = X (4k + 2) = [X (2), X (6)] k = 0, 1

V21 (k) = F2 (2k) = X (4k + 1) = [X (1), X (5)] k = 0, 1


V22 (k) = F2 (2k + 1) = X (4k + 3) = [X (3), X (7)] k = 0, 1

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 75 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

F1 (0) f1 (0)

F1 (1) N/2-point f1 (1)


IDFT i.e.
F1 (2) 4-point f1 (2)
IDFT
F1 (3) f1 (3)

Figure 21: 4-point IDFT

F2 (0) f 2 (0)

F2 (1) N/2-point f 2 (1)


IDFT i.e.
F2 (2) 4-point f 2 (2)
IDFT
F2 (3) f 2 (3)

Figure 22: 4-point IDFT


Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 76 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

V11 ( k ) = F1 (2k ) = X (4k )


V11 (0) = F1 (0) = X (0) v11 (0) 1/ 2 f1 (0)
N/4-point
DFT i.e.
V11 (1) = F1 (2) = X (4) 2-point DFT v11 (1) 1/ 2 f1 (1)

V12 (k ) = F1 (2k + 2) = X (4k + 2)


V12 (0) = F1 (1) = X (2) v12 (0) W −0 1/ 2 f1 (2)
4
N/4-point -1
DFT i.e.
−1
V12 (1) = F1 (3) = X (6) 2-point DFT v12 (1) W4 1/ 2 f1 (3)
-1

Figure 23: 4-point sequence by combining two 2-point sequences v11 (n) and v12 (n)

V21 ( k ) = F2 (2k ) = X (4k + 1)


V21 (0) = F2 (0) = X (1) v21 (0) 1/ 2 f 2 (0)
N/4-point
DFT i.e.
V21 (1) = F2 (2) = X (5) 2-point DFT v21 (1) 1/ 2 f 2 (1)

V22 (k ) = F2 (2k + 1) = X (4k + 3)


V22 (0) = F2 (1) = X (3) v22 (0) W −0 1/ 2 f 2 (2)
4
N/4-point -1
DFT i.e.
−1
V22 (1) = F2 (3) = X (7) 2-point DFT v22 (1) W4 1/ 2 f 2 (3)
-1

Figure 24: 4-point sequence by combining two 2-point sequences v21 (n) and v22 (n)

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 77 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

Computation of 2-point IDFT


By definition N point IDFT is
N−1
1 X
x(n) = X (k)WN−kn n = 0, 1, . . . , N − 1
N k=0

2-point v11 (n) is defined as

1
1X
v11 (n) = V11 (k)W2−kn n = 0, 1
2 k=0

For n=0

1
1X
v11 (0) = V11 (k)W2−0
2 k=0
1
1 Xh i
= V11 (0)W2−0 + V11 (1)W2−0
2 k=0
1
1X
= [V11 (0) + V11 (1)]
2 k=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 78 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

For n=1

1
1X
v11 (1) = V11 (k)W2−k
2 k=0
1
1 Xh i
= V11 (0)W2−0 + V11 (1)W2−1
2 k=0
1
1X
= [V11 (0) − V11 (1)]
2 k=0

1
1 Xh i
v11 (1) = V11 (0) − V11 (1)W2−0
2 k=0

The 2-point IDFTs are


1
1 Xh i
v11 (0) = V11 (0) + V11 (1)W2−0
2 k=0
1
1 Xh i
v11 (1) = V11 (0) − V11 (1)W2−0
2 k=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 79 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

1/ 2
V11 (0) = X (0) v11 (0)

W2 −0 1/ 2
V11 (1) = X (4) v11 (1)
−1
Figure 25: Butterfly structure IDFT algorithm

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 80 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

2-point IDFT Combine 2-point IDFTs Combine Two-4 point IDFTs


1 / 2 v11 (0) 1/ 2 f1 (0) 1/ 2
X (0) x(0)

W2−0 = W8−0
1/ 2 v (1) 1/ 2 f1 (1) 1/ 2
11
X (4) x(1)
-1

W4−0 = W8−0
1/ 2 v12 (0) 1/ 2 f1 (2) 1/ 2
X (2) x(2)
-1

W2−0 = W8−0 W4−1 = W8−2


1/ 2 v (1) 1/ 2 f1 (3) 1/ 2
X (6) 12 x(3)
-1 -1
Combine 2-point DFTs −0
1/ 2 v (0) 1/ 2 f 2 (0) W 8 1/ 2
X (1) 21 x(4)
-1

W2−0 = W8−0 1/ 2 v (1) W8−1


1/ 2 f 2 (1) 1/ 2
21
X (5) x(5)
-1 -1
W 4
−0
=W
8
−0 W8−2
1/ 2 v22 (0) 1/ 2 f 2 (2) 1/ 2
X (3) x(6)
-1 -1

W2−0 = W8−0 W4−1 = W8−2


1/ 2 1/ 2 W8−3 1/ 2
v22 (1) f 2 (3) x(7)
X (7)
-1 -1 -1
Third Stage Decimation Second Stage Decimation First Stage Decimation

DFT in bit reversal x(n) Natural


order order order

Figure 26: Signal flow graph of 8-point Inverse Radix-2DIF-FFT algorithm


Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 81 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

Inverse Decimation in Frequency (IDFT)-FFT


algorithm

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 82 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

First five points of the eight point DFT of a real valued sequence is given by X(0)=[0,2+j2,
-j4,2-j2,0]. Determine the remaining points. Hence find the original sequence x(n) using
Decimation in frequency FFT algorithm
Solution:
X (0) = 0, X (1) = 2 + j2, X (2) = −j4, X (3) = 2 − j2, X (4) = 0
The remaining values will be determine using symmetry property
X (N − k) = X ∗ (k)
X (k) = X ∗ (N − k)
X (5) = X ∗ (8 − 5) = X ∗ (3) = 2 + j2
X (6) = X ∗ (8 − 2) = X ∗ (2) = −j4
X (7) = X ∗ (8 − 7) = X ∗ (1) = 2 − j2
W8−0
W8−1 = 0.707 + j0.707
W8−2 = j
W8−3 = −0.707 + j0.707

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 83 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

v11 (0) = X (0) + W8−0 X (4)


= 0+1×0=0
v11 (1) = X (0) + W8−0 X (4)
= 0−1×0=0
v12 (0) = X (2) + W8−0 X (6)
= −j4 + 1 × (j4) = 0
v12 (1) = X (2) + W8−0 X (6)
= −j4 − 1 × (j4) = −j8
v21 (0) = X (1) + W8−0 X (5)
= 2 + j2 + 1 × (2 + j2) = 4 + j4
v21 (1) = X (1) − W8−0 X (5)
= 2 + j2 − 1 × (2 + j2) = 0
v22 (0) = X (3) + W8−0 X (7)
= 2 − j2 + 1 × (2 − j2) = 4 − j4
v22 (1) = X (3) − W8−0 X (7)
= 2 − j2 − 1 × (2 − j2) = 0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 84 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

f1 (0) = v11 (0) + W8−0 v12 (0)


= 0+1×0=0
f1 (1) = v11 (1) + W8−2 v12 (1)
= 0 + j × (−j8) = 8
f1 (2) = v11 (0) − W8−2 v12 (0)
= 0 − 1 × (0) = 0
f1 (3) = v11 (1) − W8−2 v12 (1)
= 0 − j × (−j8) = −8
f2 (0) = v21 (0) + W8−0 v22 (0)
= 4 + j4 + 1 × (4 − j4) = 8
f2 (1) = v21 (1) + W8−2 v22 (1)
= 0 + j × (0) = 0
f2 (2) = v21 (0) − W8−02 v22 (0)
= 4 + j4 − 1 × (4 − j4) = j8
f2 (3) = v21 (1) − W8−2 v22 (1)
= 0 − j × (0) = 0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 85 / 100
FFT algorithms Inverse Radix-2 DIF-FFT algorithm

x(0) = 1/8[f1 (0) + W8−0 f2 (0)]


= 1/8[0 + 1 × 8] = 1
x(1) = 1/8[f1 (1) + W8−1 f2 (1)]
= 1/8[8 + (.707 + j.707)(0) = 1
x(2) = 1/8[f2 (0) + W8−2 f2 (2)]
= 1/8[0 + j(j8)] = −1
x(3) = 1/8[f1 (3) + W8−3 f2 (3)]
= 1/8[−8 + (−0.707 + j.707)(0) = −1
x(4) = 1/8[f1 (0) − W8−0 f2 (0)]
= 1/8[0 − 1 × 8] = −1
x(5) = 1/8[f1 (1) − W8−1 f2 (1)]
= 1/8[8 − (.707 + j.707)(0) = 1
x(6) = 1/8[f1 (2) − W8−2 f2 (2)]
= 1/8[0 − j(j8)] = 1
x(7) = 1/8[f1 (3) − W8−3 f2 (3)]
= 1/8[−8 + (−0.707 + j.707)(0) = −1

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 86 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

Inverse Radix-2 Decimation in Time (DIT)-FFT


algorithm

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 87 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

N point IDFT is expressed as:


N−1
1 X
x(n) = X (k)WN−kn n = 0, 1, . . . , N − 1
N k=0

Split this summations into two summations with N/2 data points for each summation.
 
N/2−1 N−1
1  X
X (k)WN−kn + X (k)WN−kn 
X
x(n) =
N k=0 k=N/2
 
N/2−1 N/2−1
1  X −kn
X −n(k+N/2) 
= X (k)WN + X (k + N/2)WN
N k=0 k=0
 
N/2−1 N/2−1
1  X −kn −nN/2
X
−kn 
= X (k)WN + WN X (k + N/2)WN
N k=0 k=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 88 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

−nN/2
WN can be expressed as
−nN/2 2π nN
WN = e −j N 2 = e jπn = [e jπ ]n = (−1)n

N/2−1 N/2−1
1 X
X (k)WN−kn + (−1)n X (k + N/2)WN−kn
X
x(n) =
N n=0 k=0
N/2−1
1 X h i
= X (k) + (−1)k X (k + N/2) WN−kn
N n=0

Split the x(n) into even and odd numbered samples.

N/2−1
1 X 
X (k) + (−1)2n X (k + N/2) WN−2kn

x(2n) = n = 0, 1, . . . N/2 − 1
N k=0
N/2−1
1 X   −(2n+1)k
x(2n + 1) = X (k) + (−1)2n+1 X (k + N/2) WN n = 0, 1, . . . N/2 − 1
N k=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 89 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

(−1)2n = 1 and WN−2kn = (WN2 )−kn = WN/2


−kn
Since WN2 = WN/2
−k(2n+1)
Similarly (−1)2n+1 = −1 and WN = WN−2kn−k = WN/2
−2kn
.WN−k Since WN2 = WN/2
Substituting these values in the previous equations:

N/2−1
1 X −kn
X (2n) = [X (k) + X (k + N/2)] WN/2 n = 0, 1, . . . N/2 − 1
N k=0
N/2−1
[X (k) − X (k + N/2)] WN−2kn .WN−k
X
X (2n + 1) =
n=0
N/2−1
1 X
= {[X (k) − X (k + N/2)] WN−k }WN/2
−kn
N n=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 90 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

Let us define N/2 point DFTs G1 (k) and G2 (k) as

G1 (k) = [X (k) + X (k + N/2)] k = 0, 1, . . . N/2 − 1


G2 (k) = [X (k) − X (k + N/2)] WN−k k = 0, 1, . . . N/2 − 1

N/2−1
1 X −kn
x(2n) = G1 (k)WN/2 k = 0, 1, . . . N/2 − 1
N n=0
N/2−1
1 X −kn
x(2n + 1) = G2 (k)WN/2 k = 0, 1, . . . N/2 − 1
N n=0

 
N/2−1
1 1 X
−kn 
x(2n) = G1 (k)WN/2 k = 0, 1, . . . N/2 − 1
2 N/2 n=0
 
N/2−1
1 1 X
−kn 
x(2n + 1) = G2 (k)WN/2 k = 0, 1, . . . N/2 − 1
2 N/2 n=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 91 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

To Demonstrate the DIF-FFT algorithm 8 point DFT is considered as an example. The


values of G1 (k) and G2 (k) is defined as

G1 (k) = X (n) + X (k + N/2) k = 0, 1, . . . N/2 − 1

G1 (0) = X (0) + X (4)


G1 (1) = X (1) + X (5)
G1 (2) = X (2) + X (6)
G1 (3) = X (3) + X (7)

G2 (k) = [x(k) − X (k + 4)] W8−k k = 0, 1, . . . N/2 − 1

G2 (0) = [X (0) − X (4)]W8−0


G2 (1) = [X (1) − X (5)]W8−1
G2 (2) = [X (2) − X (6)]W8−2
G2 (3) = [X (3) − X (7)]W8−3

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 92 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

x(2n)
X (0) G1 (0) x(0)

X (1) G1 (1) x(4)

X (2) G1 (2) 4 point IDFTs x(2)

X (3) G1 (3) x(6)

X (4) W80 G2 (0) x(1)


-1
X (5) W81 G2 (1) x(5)
-1
4 point IDFTs x(3)
X (6) W82 G2 (2)
-1
X (7) W83 G2 (3) x(7)
-1 x(2n + 1)

Figure 27: Decimation of DFT-FFT algorithm for N=8

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 93 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

Let us define N/4 point sequences P11 (k), P12 (k) , P21 (k),and P22 (k) as

P11 (k) = [G1 (k) + G1 (k + N/4)] k = 0, 1, . . . N/4 − 1


−k
P12 (k) = [G1 (k) − G1 (k + N/4)] WN/2 k = 0, 1, . . . N/4 − 1
P21 (k) = [G2 (k) + G2 (k + N/4)] k = 0, 1, . . . N/4 − 1
−k
P22 (k) = [G1 (k) − G2 (k + N/4)] WN/2 k = 0, 1, . . . N/4 − 1

 
N/4−1
1 1 X
−kn 
x(4n) = P11 (k)WN/4 n = 0, 1, . . . N/4 − 1
2 N/4 n=0
 
N/4−1
1 1 X
−kn 
x(4n + 2) = P12 (k)WN/4 n = 0, 1, . . . N/4 − 1
2 N/4 n=0
 
N/4−1
1 1 X
−kn 
x(4n + 1) = P21 (k)WN/4 n = 0, 1, . . . N/4 − 1
2 N/4 n=0
 
N/4−1
1 1 X
−kn 
x(4n + 3) = P22 (k)WN/4 n = 0, 1, . . . N/4 − 1
2 N/4 n=0

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 94 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

Two 2-point sequences P11 (k) and P12 (k) are obtained from 4-point sequence G1 (k).

P11 (0) = G1 (0) + G1 (2)


P11 (1) = G1 (1) + G1 (3)
P12 (0) = [G1 (0) + G1 (2)]W8−0 ∵ (W4−0 = W8−0 )
P12 (1) = [G1 (1) − G1 (3)]W8−2 ∵ (W4−1 = W8−2 )

Similarly Two 2-point sequences P21 (k) and P22 (k) are obtained from 4-point sequence
G2 (k).

P21 (0) = G2 (0) + G2 (2)


P21 (1) = G2 (1) + G2 (3)
P22 (0) = [G2 (0) − G2 (2)]W8−0
P22 (1) = [G2 (1) − G2 (3)]W8−2

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 95 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

G1 (0) P11 (0)

G1 (1) P11 (1)

G1 (2) P12 (0)


-1 W −0
8

G1 (3) P12 (1)


−2
-1 W 8

G2 (0) P21 (0)

G2 (1) P21 (1)

G2 (2) P22 (0)


-1 W −0
8

G2 (3) P22 (1)


−2
-1 W 8

Figure 28: N=8 point decimation in frequency FFT algorithm

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 96 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

The 2-point IDFTs are computed directly and represented as

1
x(0) = [P11 (0) + P11 (1)]
8
1
x(4) = [[P11 (0) − P11 (1)]W8−0
8
1
x(2) = [P12 (0) + P12 (1)]
8
1
x(6) = [P12 (0) − P12 (1)]W8−0
8
1
x(1) = [P21 (0) + P21 (1)]
8
1
x(5) = [P21 (0) − P21 (1)]W8−0
8
1
x(3) = [P22 (0) + P22 (1)]
8
1
x(7) = [P22 (0) − P22 (1)]W8−0
8

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 97 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

2 point DFT
p11 (0) X (0)

p11 (1) X (4)


0
-1 W 8
p12 (0) X (2)

p12 (1) X (6)


-1 W 8
0

p21 (0) X (1)

p21 (1) X (5)


0
-1 W 8
p22 (0) X (3)

p22 (1) X (7)


-1 W 8
0

Figure 29: N=8 point decimation in frequency FFT algorithm


Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October
?, ?] 15, 2014 98 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

2 point IDFT
X (0) G1 (0) P11 (0) 1/8
x(0)

X (1) G1 (1) P11 (1) 1/8


x(4)
-1 W8−0
X (2) G1 (2) P12 (0) 1/8 x(2)
-1 W8−0
X (3) G1 (3) P12 (1)
x(6)
-1 W8−2 -1 W8−0
−0
X (4) W 8
G2 (0) P21 (0) 1/8
x(1)
-1
X (5) W8−1 G2 (1) P21 (1) 1/8
x(5)
-1 -1 W8−0
X (6) W8−2 G2 (2) P22 (0) 1/8 x(3)
-1 -1 −0
W 8
X (7) W8−3 G2 (3) P22 (1) 1/8
x(7)
-1 −2 −0
-1 W 8 -1 W8

Input DFT sequence x(n) in


bit reversal order

Figure 30: N=8 point decimation in frequency FFT algorithm

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,October


?, ?] 15, 2014 99 / 100
FFT algorithms Inverse Radix-2 DIT-FFT algorithm

Computational Complexity Decimation in Frequency (DIF)-FFT


algorithm

a A = a+b

b WN r B = (a − b)WNr
-1

Figure 31: Butterfly structure decimation in frequency FFT algorithm

Butterfly operation requires two complex additions and one complex multiplication.
In complete signal flow graph Figure 30. there are N/2=4 butterflies in every stage of
decimation and there are log2 N = 3 = v stages of decimation (for N=8).
Total number of butterfly operations =N/2log2 N = 4 × 3 = 12
Total number of complex additions =2 × N/2 × log2 N = N × log2 N
Total number of complex multiplications =1 × N/2 × log2 N = N/2 × log2 N

Dr. Manjunatha. P (JNNCE) UNIT - 3: Fast-Fourier-Transform (FFT) algorithms[?, ?,


October
?, ?] 15, 2014 100 / 100

You might also like