Note Set #26• FFT Algorithm: Divide & Conquer Viewpoint• Reading: Sect. 8.1.2 & 8.1.3 of Proakis & Manolakis
EEO 401 Digital Signal Processing
Prof. Mark Fowler
2/15
The previous note set’s FFT development was somewhat ad hoc.Here we develop a more formalized & generalized approach that can be used to develop other FFT approaches.
To illustrate the basic ideas consider the case of an N-pt DFT where N is not prime can be factored into two integer factors: N LM=
Can always zero-pad out to appropriate number
We now can use either of two mappings from 2-D indices l,m to the actual time index n:
n Ml m= + n l mL= +“Row-Wise Input Mapping” “Column-Wise Input Mapping”
We use one or the other of these mappings to convert the input to a matrix and then take DFTs along either the rows or columns.
We now can use either of two mappings from 2-D indices p,q to the actual DFT result index k: k Mp q= + k p qL= +
“Row-Wise Output Mapping” “Column-Wise Output Mapping”
Divide & Conquer Approach
3/15
n Ml m= +
n l mL= +
“Row-Wise Input Mapping”
“Column-Wise Input Mapping”
DFTs DownColumns
DFTs AcrossRows
4/15
Now to illustrate how to use this machinery… Use• Column-wise input mapping• Row-wise output mapping
1
0
[ ] [ ]N
knN
nX k x n W
−
=
= ∑n l mL= +k Mp q= +1
( )( )
0 0
[ , ] [ , ]M L
Mp q l mLN
m lX p q x l m W
−+ +
= =
= ∑∑
1 mq plNmp N L N MN
MLmp mLq Mpl lqN N N N
W WW
W W W W== =
=
1
0 0
[ , ]
[ , ]
[ , ]
[ , ] [ , ]L M
lq mq plN N L N M
l m
F l q
G l q
X p q
X p q W x l m W W−
= =
=
=
∑ ∑
Compute M-pt DFTs of Rows
Apply Twiddle Factors
Compute L-pt DFTs of Colns
5/15
Illustration of this Approach
Although this LOOKS more complicated… it is actually more efficient!
Compute M-ptDFTs of Rows
Apply Twiddle Factors
Compute L-ptDFTs of Colns
6/15
Application to Develop Dec-In-Time Radix-2 FFT Let N = 2vWe apply the divide-and-conquer approach with M = N/2 & L = 2
n l mL= + “Column-Wise Input Mapping”
DFTs AcrossRows
Compute N/2-pt DFTs of Rows
Apply Twiddle Factors
Compute 2-pt DFTs of Colns
Now repeat this for each N/2-pt DFT… Etc., Etc., Etc.
x[0] x[2] x[4] x[ N – 2]
x[1] x[3] x[5] x[ N – 1]
7/15
Application to Develop Dec-In-Frequency Radix-2 FFT N = 2vWe apply the divide-and-conquer approach with M = 2 & L = N/2
n l mL= + “Column-Wise Input Mapping”
DFTs Across Rows
x[0]
x[1]
x[N/2 - 1]
x[N/2]x[N/2+1]
x[N–1]
g1[n]
g2[n]
kNW
X[0]X[2]
X[N–2]
X[1]X[3]x[0]
x[1]
x[N/2 – 1]
x[2]
x[N/2]
x[N/2 + 1]
x[N/2 + 2]
x[N – 1]
2-pt DFT
N/2-pt DFT
Compute N/2-pt DFTs of Columns
Apply Twiddle Factors
Compute 2-pt DFTs of Rows
Now repeat this for each
N/2-pt DFT… Etc., Etc., Etc.
8/15
N = 8 First Stage of Dec-in-Freq FFT
9/15
Complete Dec-in-Freq FFT for N = 8 DFT Values are in Bit Reversed Order!
10/15
Butterfly Structure: DiT vs DiF
Butterfly Structure: Dec-in-Time
Butterfly Structure: Dec-in-Freq
11/15
N=8 D-in-Time FFT w/ BR InputsCan be done “in-place”
N=8 D-in-Time FFT w/ BR OutputsCan be done “in-place”
N=8 D-in-Time FFT w/ both sides “Normal Order”Can NOT be done “in-place”
Diagrams from R. Lyon, Understanding Digital Signal Processing, 3rd Ed., Prentice-Hall, 2011
3 Different Configurations of D-in-Time FFT
Writes over Data Needed Later!!
12/15
N=8 D-in-Freq FFT w/ BR InputsCan be done “in-place”
N=8 D-in-Freq FFT w/ BR OutputsCan be done “in-place”
N=8 D-in-Freq FFT w/ both sides “Normal Order”Can NOT be done “in-place”
Diagrams from R. Lyon, Understanding Digital Signal Processing, 3rd Ed., Prentice-Hall, 2011
3 Different Configurations of D-in-Freq FFT
Writes over Data Needed Later!!
13/15
Implementation Issues
• We’ve looked at two radix-two methods.- Other radices: 4 & 8- split radix (2 and 4)
• In-Place computation requires only 2N memory locations- But complicates the indexing & control operations- Doubling the memory to 4N locations can be advantageous
o Reduces complexity of indexing & controlo Allows natural ordering for both input and output
• In general, many factors come into play when determining best method- Parallelism, HW vs SW, fixed-point vs floating-point, etc.
• Also… no need to develop distinct IFFT algorithm
*1 12 / * 2 /
0 0
1 1[ ] [ ] [ ]N N
j kn N j kn N
n nx n X k e X k e
N Nπ π
− −−
= =
= = ∑ ∑ { } { }{ }*
1[ ] [ ]IDFT X k conj DFT X kN
=
14/15
Two Tricks for Real-Valued Signals
1. Efficient DFT of two Real-Valued Signals
Let x1[n] and x2[n] be real-valued signals, each length N
1 2[ ] [ ] [ ]x n x n jx n+
Then we have* *
1 2[ ] [ ] [ ] [ ][ ] & [ ]
2 2x n x n x n x nx n x n
j+ −
= =
Form:
Thus{ } { } { } { }* *
1 2
[ ] [ ] [ ] [ ][ ] & [ ]
2 2DFT x n DFT x n DFT x n DFT x n
X k X kj
+ −= =
But… DFT{ x*[n]} = X*[N – k]
* *1 2
1 1[ ] [ ] [ ] & [ ] [ ] [ ]2 2
X k X k X N k X k X k X N kj
= + − = − −
15/15
2. Efficient DFT of 2N-pt Real-Valued Signal
1 2[ ] [2 ] & [ ] [2 1]x n g n x n g n +
Let g[n] be a real-valued signal of length 2N
Then define:
And: 1 2[ ] [ ] j [ ]x n x n x n= +
From Trick #1 we have
* *1 2
1 1[ ] [ ] [ ] & [ ] [ ] [ ]2 2
X k X k X N k X k X k X N kj
= + − = − −
But using ideas from Dec-in-Time FFT we know1 1
2 (2 1)2 2
0 01 1
2 (2 1)1 2 2 2
0 0
[ ] [2 ] [2 1]
[ ] [ ]
N Nnk n k
N Nn nN N
nk n kN N
n n
G k g n W g n W
x n W x n W
− −+
= =
− −+
= =
= + +
= +
∑ ∑
∑ ∑
So then we get1 2 2
1 2 2
[ ] [ ] [ ], 0,1, , 1
[ ] [ ] [ ], 0,1, , 1
kN
kN
G k X k W X k k NG k N X k W X k k N
= + = −
+ = − = −
So computing one N-pt DFT of x[n] gets us the 2N-pt DFT of g[n]!
EEO 401 �Digital Signal Processing�Prof. Mark FowlerSlide Number 2Slide Number 3Slide Number 4Slide Number 5Slide Number 6Slide Number 7Slide Number 8Slide Number 9Slide Number 10Slide Number 11Slide Number 12Slide Number 13Slide Number 14Slide Number 15