Fast Fourier Transform (FFT)
Algorithms
Example: 8 point FFT
W0 -1
W0 -1
W0 -1 W2 -1
W0 -1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
W0 -1 W2 -1
W0 -1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 1
W0 -1 W2 -1
W0 -1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 2
W0 -1 W2 -1
W0 -1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1
W0 -1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1:
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
Block 1 (1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
Block 1 (1) Number of stages:
W0 -1
W0 -1
Nstages = 3
Block 2
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 2
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
Block 1 (1) Number of stages:
W0 -1
W0 -1
Nstages = 3
Block 2
W0 -1 W2 -1 (2) Blocks/stage:
Block 3 W0 -1 Stage 1: Nblocks = 3
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
Block 1 (1) Number of stages:
W0 -1
W0 -1
Nstages = 3
Block 2
W0 -1 W2 -1 (2) Blocks/stage:
Block 3 W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0
W0 -1 W2 -1
Block 4
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
Block 1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 1
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
Block 1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
Block 2 W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
Block 1
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Stage 3: Nblocks = 1
• Decimation in time FFT:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Stage 3: Nblocks = 1
(3) B’flies/block:
• Decimation in time FFT: Stage 1:
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Stage 3: Nblocks = 1
(3) B’flies/block:
• Decimation in time FFT: Stage 1: Nbtf = 1
– Number of stages = log2N
– Number of blocks/stage = N/2stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Stage 3: Nblocks = 1
(3) B’flies/block:
• Decimation in time FFT: Stage 1: Nbtf = 1
– Number of stages = log2N
Stage 2: Nbtf = 1
– Number of blocks/stage = N/2 stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Stage 3: Nblocks = 1
(3) B’flies/block:
• Decimation in time FFT: Stage 1: Nbtf = 1
– Number of stages = log2N
Stage 2: Nbtf = 2
– Number of blocks/stage = N/2 stage
– Number of butterflies/block = 2stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Stage 3: Nblocks = 1
(3) B’flies/block:
• Decimation in time FFT: Stage 1: Nbtf = 1
– Number of stages = log2N
Stage 2: Nbtf = 2
– Number of blocks/stage = N/2 stage
Stage 3: Nbtf = 1
– Number of butterflies/block = 2 stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Stage 3: Nblocks = 1
(3) B’flies/block:
• Decimation in time FFT: Stage 1: Nbtf = 1
– Number of stages = log2N
Stage 2: Nbtf = 2
– Number of blocks/stage = N/2 stage
Stage 3: Nbtf = 2
– Number of butterflies/block = 2 stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Stage 3: Nblocks = 1
(3) B’flies/block:
• Decimation in time FFT: Stage 1: Nbtf = 1
– Number of stages = log2N
Stage 2: Nbtf = 2
– Number of blocks/stage = N/2 stage
Stage 3: Nbtf = 3
– Number of butterflies/block = 2 stage-1
Stage 1 Stage 2 Stage 3
Example: 8 point FFT
(1) Number of stages:
W0 -1
W0 -1
Nstages = 3
W0 -1 W2 -1 (2) Blocks/stage:
W0 -1 Stage 1: Nblocks = 4
W0 -1 W1 -1
W0 Stage 2: Nblocks = 2
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Stage 3: Nblocks = 1
(3) B’flies/block:
• Decimation in time FFT: Stage 1: Nbtf = 1
– Number of stages = log2N
Stage 2: Nbtf = 2
– Number of blocks/stage = N/2 stage
Stage 3: Nbtf = 4
– Number of butterflies/block = 2 stage-1
Stage 1 Stage 2 Stage 3
W0 -1
W0 -1
W0 -1 W2 -1
W0 -1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Start Index 0 0 0
Input Index 1 2 4
Twiddle Factor Index N/2 = 4
Stage 1 Stage 2 Stage 3
W0 -1
W0 -1
W0 -1 W2 -1
W0 -1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Start Index 0 0 0
Input Index 1 2 4
Twiddle Factor Index N/2 = 4 4/2 = 2
Stage 1 Stage 2 Stage 3
W0 -1
W0 -1
W0 -1 W2 -1
W0 -1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Start Index 0 0 0
Input Index 1 2 4
Twiddle Factor Index N/2 = 4 4/2 = 2 2/2 = 1
Stage 1 Stage 2 Stage 3
W0 -1
W0 -1
W0 -1 W2 -1
W0 -1
W0 -1 W1 -1
W0
W0 -1 W2 -1
W0 -1 W2 -1 W3 -1
Start Index 0 0 0
Input Index 1 2 4
Twiddle Factor Index N/2 = 4 4/2 = 2 2/2 = 1
Indicies Used W0 W0 W0
W2 W1
W2
W
Input signal must be properly
re-ordered using a bit reversal
DIT FFT
algorithm
In-place computation
Number of stages: log2 N
Stage 1: all the twiddle factors
are 1
Last Stage: the twiddle factors
are in sequential order
Stage Stage Stage Stage
1 2 3 Log2N
Number of
N/2 N/4 N/8 1
Groups
Butterflies
1 2 4 N/2
per Group
Dual-Node
1 2 4 N/2
Spacing
(N/8)k
Twiddle (N/4)k k,
(N/2)k ,
Factor , k=0 to
, k=0 k=0,1,
Exponents k=0,1 N/2–1
2,3
Output signal must be
properly re-ordered using a bit DIF FFT
reversal algorithm
In-place computation
Number of stages: log2 N
Stage 1: the twiddle factors
are in sequential order
Last Stage: all the twiddle
factors are 1
Stage Stage Stage Stage
1 2 3 Log2N
Number of
1 2 4 N/2
Groups
Butterflies
N/2 N/4 N/8 1
per Group
Dual-Node
N/2 N/4 N/8 1
Spacing
Twiddle n, 2n, 4n,
(N/2)n,
Factor n=0 to n=0 to n=0 to
n=0
Exponents N/2 - 1 N/4 - 1 N/8 - 1
0.707
Example
• Using decimation-in-time FFT algorithm compute DFT of
the sequence
{-1 –1 –1 –1 1 1 1 1}
• Solution: Twiddle factors are
Solution and signal flow graph of the example
Solve
{2,2,2,2,1,1,1,1}
Stage one 3,1,3,1,3,1,31
Stage one 6,1-j,0,1+j,6,1-j,0,1+j
Stage one 12,1-j2.414,0,1-
.0.414j,0,1+0.414j,0,1+j2.414