Fast Fourier Transform (FFT) (Theory and Implementation)
Fast Fourier Transform (FFT) (Theory and Implementation)
Learning Objectives
DFT algorithm.
Conversion of DFT to FFT algorithm.
Implementation of the FFT algorithm.
DFT Algorithm
x t e jt dt
X k x n e
2
nk
N
n 0
Where:
k 0,1, N 1
x nT x n
Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004
DFT Algorithm
N 1
X k x nWNnk
n0
x[n] = input
X[k] = frequency bins
W
= twiddle factors
X(0)
X(1)
X(k)
120
120
Number of Additions
Number of Multiplications
100
80
60
40
20
100
80
60
40
20
0
0
0
Number of Samples
10
10
Number of Samples
DFT FFT
DFT FFT
N 1
X k x nWNnk ; 0 k N 1
n 0
[1]
x[2n]
= x[0], x[2], , x[N-2]
x[2n+1] = x[1], x[3], , x[N-1]
DFT FFT
N
1
2
n 0
n0
X k x 2nWN2 nk x 2n 1WN 2 n 1 k
[2]
Since:
W N2 nk e
2
2 nk
N
2
nk
N 2
WN 2 n 1 k WNk W Nnk
W Nnk
Then:
X k
N
1
2
n 0
x 2nW Nnk W Nk
2
Y k WNk Z k
Chapter 19, Slide 9
N
1
2
n 0
x 2n 1W Nnk
2
DFT FFT
X k x nWNnk ; 0 k N 1
N-point DFT
n 0
N
1
2
n 0
x1 nW Nnk W Nk
2
Y k W Nk Z k
Chapter 19, Slide 10
N
1
2
n 0
x2 nW Nnk
2
DFT FFT
X k
x1 n W Nnk W Nk
n 0
N
1
2
x2 nW Nnk
n 0
[3]
X k
2
Or:
And:
Chapter 19, Slide 11
WN
N
2
N
1
2
N
n k
x1 n W N 2
n 0
2
WN
2
N
2
2
k
N
2 N
N 2
2
k
N 2
N
1
2
N
k
WN 2
x2
n 0
2
k
N
2 N
N 2 2
e
2
k
N 2
n k
n W N 2
2
2
k
N
W Nk
2
W Nk
: Symmetry
: Periodicity
DFT FFT
W85
W87
W84
W80 = W88
W83
W81 = W89
WNk+N/2 = -WNk
WN/2k+N/2 = WN/2k
W8k+4 = -W8k
W8k+8 = W8k
W82
DFT FFT
N
X k
2
N
1
2
n 0
x1 nW Nnk WNk
2
Y k WNk Z k
N
1
2
n 0
x2 nW Nnk
2
[4]
DFT FFT
N
1
2
N
k
Y k WN Z k ; k 0,
1
2
X k Y k WNk Z k ; k 0,
N
X k
2
DFT FFT
N
1
2
N
k
Y k WN Z k ; k 0,
1
2
X k Y k WNk Z k ; k 0,
N
X k
2
N
Y k U k W Nk V k
4
Z k P k W Nk Q k
2
Z k P k W Nk Q k
4
DFT FFT
x[0]
x[2]
x[4]
N/2 point
DFT
x[N-1]
X[0] = y[0]+W0z[0]
X[1] = y[1]+W1z[1]
y[N-2]
x[N-2]
x[1]
x[3]
x[5]
y[0]
y[1]
y[2]
N/2 point
DFT
z[0]
z[1]
z[2]
W0
W1
-1
-1
X[N/2] = y[0]-W0z[0]
X[N/2+1] = y[1]-W1z[1]
z[N/2-1]
X [k ] G[k] WNk H[ K ]
X[k
Chapter 19, Slide 17
N
] G[k] WNk H[ K ]
2
N
k 0 to
1
2
N
G[k ] G1[k] W Nk H1[ K ]
4
2
N
k 0 to ( 1)
4
Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004
BUTTERFLY STRUCTURE
FFT Implementation
FFT Implementation
Example: 8 point FFT
W0
W0
W0
W0
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Example: 8 point FFT
(1) Number of stages:
W0
W0
W0
W0
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 1
W0
W0
W0
W0
FFT Implementation
Example: 8 point FFT
(1) Number of stages:
Nstages = 1
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 1
FFT Implementation
Stage 2
Stage 3
Block 1
W0
W0
W0
W0
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 1
FFT Implementation
Stage 2
Stage 3
Block 1
W0
-1
Block 2
W0
W0
W0
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 1
FFT Implementation
Stage 2
Stage 3
Block 1
W0
-1
Block 2
W0
-1
W0
-1
W2
-1
Block 3
W0
W0
-1
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 1
FFT Implementation
Stage 2
Stage 3
Block 1
W0
-1
Block 2
W0
-1
W0
-1
W2
-1
Block 3
W0
-1
Block 4
W0
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 1
Block 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 1
Stage 1
Block 1
W0
W0
Block 2
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 1
W0
Block 1
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 3: Nblocks = 1
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 3: Nblocks = 1
(3) Bflies/block:
Stage 1:
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 3: Nblocks = 1
(3) Bflies/block:
Stage 1: Nbtf = 1
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 3: Nblocks = 1
(3) Bflies/block:
Stage 1: Nbtf = 1
Stage 2: Nbtf = 1
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 3: Nblocks = 1
(3) Bflies/block:
Stage 1: Nbtf = 1
Stage 2: Nbtf = 2
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 3: Nblocks = 1
(3) Bflies/block:
Stage 1: Nbtf = 1
Stage 2: Nbtf = 2
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 3: Nblocks = 1
(3) Bflies/block:
Stage 1: Nbtf = 1
Stage 2: Nbtf = 2
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 3: Nblocks = 1
(3) Bflies/block:
Stage 1: Nbtf = 1
Stage 2: Nbtf = 2
Stage 1
W0
W0
W0
W0
FFT Implementation
Stage 2
Stage 3
-1
-1
-1
-1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
Stage 2: Nblocks = 2
Stage 3: Nblocks = 1
(3) Bflies/block:
Stage 1: Nbtf = 1
Stage 2: Nbtf = 2
FFT Implementation
Stage 1
W0
-1
W0
-1
W0
Stage 3
-1
W0
Start Index
Input Index
Twiddle Factor Index
Stage 2
-1
0
1
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
0
2
0
4
N/2 = 4
FFT Implementation
Stage 1
W0
-1
W0
-1
W0
Stage 3
-1
W0
Start Index
Input Index
Twiddle Factor Index
Stage 2
-1
0
1
N/2 = 4
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
0
2
0
4
4 /2 = 2
FFT Implementation
Stage 1
W0
-1
W0
-1
W0
Stage 3
-1
W0
Start Index
Input Index
Twiddle Factor Index
Stage 2
-1
0
1
N/2 = 4
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
0
2
4 /2 = 2
0
4
2 /2 = 1
FFT Implementation
Stage 1
W0
Stage 3
-1
W0
-1
W0
-1
W0
Start Index
Input Index
Twiddle Factor Index
Indicies Used
Stage 2
-1
0
1
N/2 = 4
W0
W0
-1
W2
-1
W0
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
0
2
0
4
4 /2 = 2
W0
2 /2 = 1
W2
W1
W0
W2
Decimation-in-frequency FFT
Regroup the signal samples
butterfly operation
DFT obtained with proper order of frequency index
Decimation-in-frequency FFT
Assuming that N is a even number.
Divide the data sample into two groups
x
(
),
x
(
1
),...
x
(
N
1
)
.
2
2
Decimation-in-frequency FFT
7
X ( k ) x ( n )W
n 0
nk
8
x ( n )W
n 0
nk
8
x ( n )W
n 4
nk
8
Decimation-in-frequency FFT
For even k, (k=2m)
3
X ( 2m ) x ( n )W
2 nm
8
n 0
x ( n )W
n 0
nm
4
x ( n )W82 nm
n 4
x ( n 4)W
n 0
( n4)m
4
x ( n )W
n 0
nm
4
x ( n 4)W4nm
n 0
x ( n ) x ( n 4)W4nm
n 0
Decimation-in-frequency FFT
For odd k, (k=2m+1)
X ( 2m 1)
x ( n )W
n ( 2 m 1)
8
n 0
W
n 0
W
n 0
n
8
n
8
W
n 0
n
8
nm
4
x ( n )W
nm
4
x ( n )W
W
n 0
( n4 )
8
W
n 0
n
8
x ( n )W
n ( 2 m 1)
8
n 4
x ( n 4)W4( n 4 ) m
x ( n 4)W4nm
x ( n ) x ( n 4)W
nm
4
W x ( n ) x ( n 4)W
3
n 0
n
8
nm
4
Decimation-in-frequency FFT
x(0)
x(1)
x(2)
x(3)
x(4)
x(5)
x(6)
x(7)
X(0)
4-point
DFT
-
W80
W81
4-point
W82
DFT
W83
X(2)
X(4)
X(6)
X(1)
X(3)
X(5)
X(7)
Decimation-in-frequency FFT
x(0)
2-point
x(1)
x(2)
x(3)
x(4)
x(5)
x(6)
x(7)
W40
W41
W80
1
8
W82
W83
W40
W41
X(0)
DFT
X(4)
2-point
X(2)
DFT
X(6)
2-point
X(1)
DFT
X(5)
2-point
X(3)
DFT
X(7)
Decimation-in-frequency FFT
x(0)
X(0)
x(1)
x(2)
x(3)
x(4)
x(5)
x(6)
x(7)
--
W80
W81
W82
W83
W40
W41
W20
X(4)
X(2)
X(6)
X(1)
X(3)
W40
W41
X(5)
X(7)
End