Beruflich Dokumente
Kultur Dokumente
Learning Objectives
DFT algorithm.
Conversion of DFT to FFT algorithm.
Implementation of the FFT algorithm.
DFT Algorithm
jt
x
t
e
dt
X k xn e
2
nk
N
n 0
Where:
k 0,1, N 1
xnT xn
Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004
DFT Algorithm
If we let:
2
N
X k
then:
WN
N 1
xnW
nk
N
n 0
Sampled signal
2
Amplitude
1
0
-1
-2
20
40
60
80
Sample
Frequency Domain
100
120
Magnitude
0.8
0.6
0.4
0.2
0
0.1
0.2
0.3
Normalised Frequency
0.4
0.5
DFT Algorithm
X k
N 1
x[n] = input
xnWNnk
n 0
= 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
X k
N 1
xnWNnk ; 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
x2nW
2 nk
N
n 0
N
1
2
x2n 1W
2 n 1k
N
[2]
n 0
Since:
WN2 nk e
2
2 nk
N
2
nk
N 2
W Nnk
Then:
X k
N
1
2
n 0
n 0
Y k WNk Z k
Chapter 19, Slide 10
N
1
2
x2n 1W Nnk
2
DFT FFT
N 1
xnW
nk
N
; 0 k N 1
N-point DFT
n 0
N
1
2
n 0
x1 nW Nnk WNk
2
Y k WNk Z k
Chapter 19, Slide 11
N
1
2
n 0
x2 nW Nnk
2
DFT FFT
N
1
2
x1 nW Nnk W Nk
n 0
N
1
2
x2 nW Nnk
n 0
[3]
X k
2
Or:
And:
WN
N
2
N
n k
x1 n W N 2
n 0
2
WN
2
N
1
2
N
2
2
k
N
2 N
N 2
2
k
N 2
e
j
N
1
2
N
k
WN 2
x2
n 0
2
k
N
2 N
N 2 2
e
2
k
N 2
N
n k
n W N 2
2
2
k
N
W Nk
WNk
: Symmetry
: Periodicity
DFT FFT
Symmetry and periodicity:
W86
W8 5
W87
W84
W8
W80 = W88
3
W8
1=
W8
WNk+N/2 = -WNk
WN/2k+N/2 = WN/2k
W8k+4 = -W8k
W8k+8 = W8k
W82
DFT FFT
N
1
2
n0
2
2
[4]
Y k WNk Z k
DFT FFT
N
k 0, 1
2
N
k
X k Y k WN Z k ; k 0, 1
2
X k Y k WNk Z k ;
DFT FFT
N
k 0, 1
2
N
k
X k Y k WN Z k ; k 0, 1
2
X k Y k WNk Z k ;
Y k U k W Nk V k
4
Z k Pk W Nk Qk
2
Z k Pk W Nk Qk
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]
FFT Implementation
WNkZ(k) = (Lr+jLi)(Wr+jWi)
Key:
U=Ur+jUi = X(k)
Ur+jUi
-1
L=Lr+jLi = X(k+N/2)
U = Upper
r = real
L = Lower
i = imaginary
FFT Implementation
U=Ur+jUi
(Lr+jLi)(Wr+jWi)
L=Lr+jLi
-1
FFT Implementation
Ur+jUi
(Lr+jLi)(Wr+jWi)
-1
temp2 = LiWi
temp3 = LrWi
temp4 = LiWr
= Ui - temp3_4
FFT Implementation
FFT
FFT Implementation
Example: 8 point FFT
W0
W0
W0
W0
-1
-1
W0
-1
W2
-1
-1
W0
-1
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
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
W0
W0
W0
W0
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
W0
W0
W0
W0
Stage 2
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
W0
W0
W0
W0
Stage 2
Stage 3
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
W0
W0
W0
W0
Stage 2
Stage 3
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
Stage 2
Stage 3
Block 1
W0
W0
W0
W0
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
Stage 2
Stage 3
Block 1
W0
-1
Block 2
W0
W0
W0
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
Stage 2
Stage 3
Block 1
W0
-1
Block 2
W0
-1
W0
-1
W2
-1
Block 3
W0
W0
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
Stage 2
Stage 3
Block 1
W0
-1
Block 2
W0
-1
W0
-1
W2
-1
Block 3
W0
-1
W0
Block 4
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
Block 1
W0
W0
W0
W0
Stage 2
Stage 3
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
Block 1
W0
W0
Block 2
W0
W0
Stage 2
Stage 3
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
W0
Block 1
W0
W0
W0
Stage 2
Stage 3
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
W0
W0
W0
W0
Stage 2
Stage 3
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
W0
W0
W0
W0
Stage 2
Stage 3
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
W0
W0
W0
W0
Stage 2
Stage 3
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
W0
W0
W0
W0
Stage 2
Stage 3
-1
-1
W0
-1
W2
-1
-1
W0
-1
W0
-1
W1
-1
W0
-1
W2
-1
W2
-1
W3
-1
FFT Implementation
Stage 1
Stage 2
Stage 3
FFT Implementation
Stage 1
Stage 2
Stage 3
FFT Implementation
Stage 1
Stage 2
Stage 3
FFT Implementation
Stage 1
Stage 2
Stage 3
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
W3
FFT Implementation
The most important aspect of converting
the FFT diagram to C code is to
calculate the upper and lower indices of
each butterfly:
GS = N/4;
step = 1;
NB = N/2;
stage */
GS = GS << 1;
step = step << 1;
}
Chapter 19, Slide 49
FFT Implementation
FFT Implementation
Links:
Project location:
Chapter 19
Fast Fourier Transform (FFT)
(Theory and Implementation)
- End -