0% found this document useful (0 votes)
502 views68 pages

Unit-3 (DSP)

This document discusses the radix-2 decimation in time fast Fourier transform (DIT FFT) algorithm. It explains that the DIT FFT divides the input sequence into even and odd samples, computes smaller DFTs on each subset, and combines the results. This process is repeated recursively until single point DFTs are computed. The algorithm has lower computational complexity than a direct DFT, requiring only NlogN operations rather than N2. It also discusses bit reversal of the input and in-place computation to further improve efficiency.

Uploaded by

sai vivek
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
502 views68 pages

Unit-3 (DSP)

This document discusses the radix-2 decimation in time fast Fourier transform (DIT FFT) algorithm. It explains that the DIT FFT divides the input sequence into even and odd samples, computes smaller DFTs on each subset, and combines the results. This process is repeated recursively until single point DFTs are computed. The algorithm has lower computational complexity than a direct DFT, requiring only NlogN operations rather than N2. It also discusses bit reversal of the input and in-place computation to further improve efficiency.

Uploaded by

sai vivek
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 68

Sreenidhi Institute of Science and Technology

Digital Signal Processing


UNIT-III
FAST FOURIER TRANSFORMS

0 20-May-19
Contents

1. Computation of DFT

2. Radix-2 Decimation In Time Fast Fourier Transform


(DIT FFT) algorithm implementation

3. Radix-2 Decimation In Frequency Fast Fourier


Transform (DIF FFT) algorithm implementation

4. Inverse FFT

1 20-May-19
Digital Signal Processing

Computation of the Discrete Fourier


Transform (DFT)

2 20-May-19
Discrete Fourier Transform
• The DFT pair was given as
N 1 N 1
1
X  k    x[n]e  j  2 / N  kn
x[n] 
N
 X k  e
k 0
j  2 / N  kn

n 0

• Baseline for computational complexity:


– Each DFT coefficient requires
• N complex multiplications
• N-1 complex additions
– All N DFT coefficients require
• N2 complex multiplications
• N(N-1) complex additions
• Complexity in terms of real operations
• 4N2 real multiplications
• N[4(N-1) +2]=N(4N-2) real additions

3 20-May-19
Discrete Fourier Transform

• Most fast methods are based on symmetry properties


– Conjugate symmetry : k  N2 k  N2
W N W N  WNk
– Periodicity in n and k : WNk  N  WNk  N  WNk
k  N2  j 2N ( k  N2 )  j 2N k  j  j 2N k
W N e e e  e  W k
N
k  N2  j 2N ( k  N2 )  j 2N k j  j 2N k
W N e e e  e  WNk
kN  j 2N ( k  N )  j 2N k  j 2  j 2N k
W N e e e e W k
N
k N  j 2N ( k  N )  j 2N k j 2  j 2N k
W N e e e e W k
N
4 20-May-19
Discrete Fourier Transform

• Most fast methods are based on symmetry properties


– Conjugate symmetry : n  N2 n  N2
W N W N  WNn
– Periodicity in n and k : WNn  N  WNn  N  WNn
n  N2  j 2N ( n  N2 )  j 2N n  j  j 2N n
W N e e e  e  W n
N
n  N2  j 2N ( n  N2 )  j 2N n j  j 2N n
W N e e e  e  WNn
n N  j 2N ( n  N )  j 2N n  j 2  j 2N n
W N e e e e W n
N
n N  j 2N ( n  N )  j 2N n j 2  j 2N n
W N e e e e W n
N
5 20-May-19
Digital Signal Processing

Radix-2, Decimation In Time Fast


Fourier Transform (DIT FFT)
Algorithm implementation

6 20-May-19
Radix-2 Decimation In Time FFT Algorithm implementation

• Makes use of both symmetry and periodicity


• Consider special case of N an integer power of 2 ( N=2n =Radix-2)
• Separate x[n] into two sequence of length N/2
– Even indexed samples in the first sequence, xe[n]
– Odd indexed samples in the other sequence, xo[n]

i.e. xe [0]  x[0]; xe [1]  x[2]; xe [2]  x[4]; xe [3]  x[6]...

xo [0]  x[1]; xo [1]  x[3]; xo [2]  x[5]; xo [3]  x[7]...


that is
xe [n]  x[2n] 
 for n  0,1, 2,..., 2  1  (1)
N
xo [n]  x[2n  1]

7 20-May-19
Radix-2 Decimation In Time FFT Algorithm implementation

• Substitute variables n=2r for n even and n=2r+1 for n odd


N 1 N 1 N 1
X  k    x[n]e  j  2 / N  kn
  x[n]e  j  2 / N  kn
  x[n]e  j  2 / N  kn

n 0 n even n odd

• G[k] and H[k] are the N/2-point DFT’s of each subsequence


N / 2 1 N / 2 1
X k    x[2r ]WN2 rk   x[2r  1]WN 2 r 1k
r 0 r 0
N / 2 1 N / 2 1
 
r 0
x[2r ]W rk
N /2 W k
N 
r 0
x[2r  1]WNrk/ 2

 G  k   WNk H  k 

8 20-May-19
Radix-2 Decimation In Time FFT Algorithm implementation

• G[k] and H[k] are the N/2-point DFT’s of each subsequence


X [k ]  G[k ]  WNk H [k ] for k  0,1,2,..., N2  1
X [0]  G[0]  WN0 H [0]
X [1]  G[1]  WN1 H [1]
X [2]  G[2]  WN2 H [2]
X [3]  G[3]  WN3 H [3]
X [4]  G[4]  WN4 H [4]  G[0]  WN4 H [0]
X [5]  G[5]  WN5 H [5]  G[1]  WN5 H [1]
X [6]  G[6]  WN6 H [6]  G[2]  WN6 H [2]
X [7]  G[7]  WN7 H [7]  G[3]  WN7 H [3]
9 20-May-19
Radix-2 Decimation In Time FFT Algorithm implementation

• 8-point DFT example using decimation-in-time


• Two N/2-point DFTs
– 2(N/2)2 complex multiplications
– 2(N/2)2 complex additions
• Combining the DFT outputs
– N complex multiplications
– N complex additions
• Total complexity
– N2/2+N complex multiplications
– N2/2+N complex additions
– More efficient than direct DFT
• Repeat same process
– Divide N/2-point DFTs into
– Two N/4-point DFTs
– Combine outputs

10 20-May-19
Radix-2 DIT FFT Algorithm implementation Cont’d

• After two steps of decimation in time W Nk  WN2 k  W24Nk


2

• Repeat until we’re left with two-point DFT’s

11 20-May-19
Radix-2 DIT FFT Algorithm implementation Cont’d
• Final flow graph for 8-point decimation in time

• Complexity:
– Nlog2N complex multiplications and additions

12 20-May-19
Butterfly Computation
• Flow graph constitutes of butterflies

• We can implement each butterfly with one multiplication

• Final complexity for decimation-in-time FFT


– (N/2)log2N complex multiplications and additions

13 20-May-19
Radix-2 Decimation-In-Time FFT Algorithm

• DIT structure with input in bit-reversed order and output


in natural order

14 20-May-19
Digital Signal Processing

In place computation and


Bit Reversal approach

15 20-May-19
In-Place Computation and Bit reversal approach
• Decimation-in-time flow graphs require two sets of registers
– Input and output for each stage
• Note the arrangement of the input indices
– Bit reversed indexing
xi 0  xi 000  x000  x0
– Because no.of inputs N=8
xi 1  xi 001  x100  x4
– Use three bits(b2b1b0)
xi 2  xi 010  x010  x2
xi 3  xi 011  x110  x6
xi 4  xi 100  x001  x1
xi 5  xi 101  x101  x5
xi 6  xi 110  x011  x3
xi 7  xi 111  x111  x7

16 20-May-19
Digital Signal Processing

Computation comparison of
DFT and FFT

17 20-May-19
Computations Comparison

No of Complex Improvement
No of
Multiplications Factor

DFT FFT
Stages Points N N2/(N/2)log2N
(N2) ((N/2)log2N)
2 4 16 4 4

4 16 256 32 8

6 64 4096 192 21.33

8 256 65536 1024 64

10 1024 1,048,576 5120 204.8

18 20-May-19
Digital Signal Processing

Radix-2 DIT FFT


Examples
19 20-May-19
Example.1
Find DFT of the sequence x[n]={1,2,3,4,4,3,2,1}
using DIT FFT Algorithm
SOLUTION: Select N=23=8
The twiddle factors associated with the flow
graph are
 j  28 0
W e
8
0
 e0  1
 j  28 1  j  4 
W e
8
1
e  0.707  j 0.707
 j  28 2  j 2 
W e
8
2
e j
 j  28 3  j  34 
W e
8
3
e  0.707  j 0.707

20 20-May-19
Example.1 Cont..d
Given sequence x[n]={1,2,3,4,4,3,2,1}
x[0]=1, x[1]=2, x[2]=3, x[3]=4, x[4]=4, x[5]=3, x[6]=2 and x[7]=1

Input Stage-1 Stage-2 Stage-3 O/p


x[0]=1 1+(1)4=5 5+(1)5=10 10+(1)10=20 X[0]

x[4]=4 1-(1)4=-3 -3+(-j)1=-3-j (-3-j)+(0.707-j0.707)(-1-3j)= -5.828-j2.414 X[1]

x[2]=3 3+(1)2=5 5-(1)5=0 0+(-j)0=0 X[2]

x[6]=2 3-(1)2=1 -3-(-j)1=-3+j (-3+j)+(-0.707-j0.707)(-1+3j)= -0172-j0.414 X[3]

x[1]=2 2+(1)3=5 5+(1)5=10 10-(1)10=0 X[4]

x[5]=3 2-(1)3=-1 -1+(-j)3=-1-3j (-3-j)-(0.707-j0.707)(-1-3j)= -0172+j0.414 X[5]

x[3]=4 4+(1)1=5 5-(1)5=0 0-(-j)0=0 X[6]

x[7]=1 4-(1)1=3 -1-(-j)3=-1+3j (-3+j)-(-0.707-j0.707)(-1+3j)= -5.828+j2.414 X[7]

21 20-May-19
Example.1 Cont..d

Input sequence x[n]={1,2,3,4,4,3,2,1}

DFT of the sequence


X[k]={20, -5.828-j2.414, 0, -0172-j0.414,
0, -0172+j0.414, 0, -5.828+j2.414}

22 20-May-19
Practice example.1
Find DFT of the sequence x[n]={1,1,1,1,1,1,1,1}
using DIT FFT Algorithm
SOLUTION: Select N=23=8
The twiddle factors associated with the flow
graph are
 j  28 0
W e
8
0
 e0  1
 j  28 1  j  4 
W e
8
1
e  0.707  j 0.707
 j  28 2  j 2 
W e
8
2
e j
 j  28 3  j  34 
W e
8
3
e  0.707  j 0.707

23 20-May-19
Practice example.1 Cont..d

DFT of the sequence


X[k]={8, 0, 0, 0, 0, 0, 0, 0}

Input Stage-1 Stage-2 Stage-3 O/p


x[0]=1 1+(1)1=2 2+(1)2=4 4+(1)4=8 X[0]

x[4]=1 1-(1)1=0 -0+(-j)0=0 (0)+(0.707-j0.707)(0)= 0 X[1]

x[2]=1 1+(1)1=2 2-(1)2=0 0+(-j)0=0 X[2]

x[6]=1 1-(1)1=0 -0-(-j)0=0 (0)+(-0.707-j0.707)0)= 0 X[3]

x[1]=1 1+(1)1=2 2+(1)2=4 4-(1)4=0 X[4]

x[5]=1 1-(1)1=0 -0+(-j)0=0 (0)-(0.707-j0.707)(0)= 0 X[5]

x[3]=1 1+(1)1=2 2-(1)2=0 0-(-j)0=0 X[6]

x[7]=1 1-(1)1=0 -0-(-j)0=0 (0)-(-0.707-j0.707)(0)= 0 X[7]

24 20-May-19
Digital Signal Processing

Radix-2 Decimation In Frequency


Fast Fourier Transform (DIF FFT)
algorithm implementation

25 20-May-19
Radix-2 Decimation-In-Frequency FFT Algorithm implementation

• Introduction: Decimation in frequency is an


alternate way of developing the FFT
algorithm

• It is different from decimation in time in its


development, although it leads to a very
similar structure

26 20-May-19
Radix-2 Decimation-In-Frequency FFT Algorithm implementation

• The DFT equation N 1


X  k    x[n]WNnk
n 0

• Split the DFT equation into even and odd frequency indexes
N 1 N / 2 1 N 1
X  2r    x[n]W n2r
N   x[n]W n 2r
N   x[n]WNn 2 r
n 0 n 0 n N / 2

• Substitute variables to get using WN( n N


2
)2r
 WNn 2 rWNNr  WNnr
2

N / 2 1 N / 2 1 N / 2 1
X  2r    x[n]W n 2r
N   x[n  N / 2]WN  n  N / 22 r
   x[n]  x[n  N / 2]W nr
N /2
n 0 n 0 n 0

• Similarly for odd-numbered frequencies


N / 2 1
X  2r  1    x[n]  x[n  N / 2]W n 2 r 1
N /2
n 0 Alternatively
27 20-May-19
Radix-2 Decimation-In-Frequency FFT Algorithm implementation

• Consider the original N 1


X [k ]   x[n]WNnk
DFT equation …. n 0

• Separate the first half and the second half of time


samples:
( N / 2 ) 1 N 1
X [k ]   x[n]W
n 0
nk
N   x[n]W
n N / 2
nk
N

( N / 2 ) 1 ( N / 2 ) 1
  x[n]W
n 0
nk
N   x[n  N
n 0
2]WN( n  N 2) k

( N / 2 ) 1 ( N / 2 ) 1
  x[n]W
n 0
nk
N W ( N / 2) k
N  x[n  ( N / 2)]W
n 0
nk
N

 x[n]  (1) 
( N / 2 ) 1
 k
x[n  ( N / 2)] WNnk
n 0

• Note that these are not N/2-point DFTs

28 20-May-19
Radix-2 Decimation-In-Frequency FFT Algorithm implementation

 x[n]  (1) 
( N / 2 ) 1
X [k ]  k
x[n  ( N / 2)] WNnk
n 0

• For k even, let k  2r


 x[n]  (1) 
( N / 2 ) 1 ( N / 2 ) 1
X [2r ] 
n 0
2r
x[n  ( N / 2)] W n2r
N   x[n]  x[n  ( N / 2)]W
n 0
nr
N /2

• For k odd, let k  2r 1

 x[n]  (1) 
( N / 2 ) 1
X [ 2r  1]  2r
x[ n  ( N / 2)] WNn ( 2 r 1)
n 0
( N / 2 ) 1
  x[n]  x[n  ( N / 2)]W
n 0
n
N WNnr/ 2

• These expressions are the N/2-point DFTs of


g[n]  x[n]  x[n  ( N / 2)] and
h[n]WNn  x[n]  x[n  ( N / 2)]WNn

29 20-May-19
Radix-2 Decimation-In-Frequency FFT Algorithm implementation

30 20-May-19
Radix-2 Decimation-In-Frequency FFT Algorithm implementation
Continuing by decomposing the odd and even output points we obtain

31 20-May-19
Radix-2 Decimation-In-Frequency FFT Algorithm

… and replacing the N/4-point DFTs by butterflies we obtain

32 20-May-19
Radix-2 Decimation-In-Frequency FFT Algorithm implementation

• Final flow graph for 8-point decimation in frequency

33 20-May-19
In-Place Computation and Bit reversal approach
• Decimation-in-frequency flow graphs require two sets of
registers
– Input and output for each stage
• Note the arrangement of the output indices
– Bit reversed indexing X o 0  X i 000  X 000  X 0
– Because no.of inputs N=8 X o 1  X o 001  X 100  X 4
– Use three bits(b2b1b0) X o 2  X o 010  X 010  X 2
X o 3  X o 011  X 110  X 6
X o 4  X o 100  X 001  X 1
X o 5  X o 101  X 101  X 5
X o 6  X o 110  X 011  X 3
X o 7  X o 111  X 111  X 7
34 20-May-19
Digital Signal Processing

Radix-2 DIF FFT


Examples
35 20-May-19
Example.2
Find DFT of the sequence x[n]={1,2,3,4,4,3,2,1}
using DIF FFT Algorithm
SOLUTION: Select N=23=8
The twiddle factors associated with the flow
graph are
 j  28 0
W e
8
0
 e0  1
 j  28 1  j  4 
W e
8
1
e  0.707  j 0.707
 j  28 2  j 2 
W e
8
2
e j
 j  28 3  j  34 
W e
8
3
e  0.707  j 0.707

36 20-May-19
Example.2Cont..d

Input Stage-1 Stage-2 Stage-3 O/p


x[0]=1 1+4=5 5+5=10 10+10=20 X[0]
x[1]=2 2+3=5 5+5=10 (10-10)1= 0 X[4]
x[2]=3 3+2=5 (5-5)1=0 0+0=0 X[2]
x[3]=4 4+1=5 (5-5)(-j)=0 (0-0)1= 0 X[6]
x[4]=4 (1-4)1=-3 -3+(-j)=-3-j -3-j-2.828-j1.414= X[1]
-5.828-j2.414
x[5]=3 (2-3)(0.707-j0.707)= - -0.707+j0.707-(2.121+j2.121)1= (-3-j+2.828+j1.414)1= X[5]
0.707+j0.707 -2.828-j1.414 -0.172+j0.414
x[6]=2 (3-2)(-j)=-j (-3-(-j))1=-3+j -3+j+2.828-j1.414= X[3]
-0.172-j0.414
x[7]=1 (4-1)(-0.707-j0.707)= - (-0.707+j0.707+(2.121+j2.121))(-j)= (-3+j-2.828+j1.414)1= X[7]
2.121-j2.121 2.828-j1.414 -5.828+j2.414

37 20-May-19
Example.2 Cont..d

Input sequence x[n]={1,2,3,4,4,3,2,1}

DFT of the sequence


X[k]={20, -5.828-j2.414, 0, -0172-j0.414,
0, -0172+j0.414, 0, -5.828+j2.414}

38 20-May-19
Practice example.2
Find DFT of the sequence x[n]={1,1,1,1,1,1,1,1}
using DIF FFT Algorithm
SOLUTION: Select N=23=8
The twiddle factors associated with the flow
graph are
 j  28 0
W e
8
0
 e0  1
 j  28 1  j  4 
W e
8
1
e  0.707  j 0.707
 j  28 2  j 2 
W e
8
2
e j
 j  28 3  j  34 
W e
8
3
e  0.707  j 0.707

39 20-May-19
Example.2Cont..d

DFT of the sequence


X[k]={8, 0, 0, 0, 0, 0, 0, 0}

Input Stage-1 Stage-2 Stage-3 O/p


x[0]=1 1+1=2 2+2=4 4+4=8 X[0]
x[1]=1 1+1=2 2+2=4 (4-4)1= 0 X[4]
x[2]=1 1+1=2 (2-2)1=0 0+0=0 X[2]
x[3]=1 1+1=2 (2-2)(-j)=0 (0-0)1= 0 X[6]
x[4]=1 (1-1)1=0 0+0=0 0+0=0 X[1]
x[5]=1 (1-1)(0.707-j0.707)= 0 0+0=0 (0-0)1= 0 X[5]
x[6]=1 (1-1)(-j)=0 (0-0)1=0 0+0=0 X[3]
x[7]=1 (1-1)(-0.707-j0.707)= 0 (0-0)(-j)= 0 (0-0)1= 0 X[7]

40 20-May-19
Digital Signal Processing

Different ways of giving Radix-2


problems Input data

41 20-May-19
Example.3
Compute the 8-point DFT of the following sequence using
DIT and DIF FFT algorithms 1 for 0  n  7
x[n]  
0 otherwise

Example.4
Compute the 8-point DFT of the following sequence using
DIT and DIF FFT algorithms 1 for  3  n  3
x[n] 
0 otherwise

Example.5
Compute the 8-point DFT of the following sequence using
DIT and DIF FFT algorithms 1 for 0  n  6
x[n]  
0 otherwise

42 20-May-19
Digital Signal Processing

Inverse DFT implementation using


FFT algorithm

43 20-May-19
Inverse FFT: Using FFTs for inverse DFTs
• We’ve always been talking about forward DFTs
in our discussion about FFTs …. what about the
inverse FFT?
N1 N1
1
x[n]  N  X[k]WNkn ; X[k]   x[n]WNkn
k 0 n0
• One way to modify FFT algorithm for the inverse
DFT computation is:
– Replace W k
k wherever it appears
N by WN

– Multiply final output by 1/ N

• This method has the disadvantage that it


requires modifying the internal code in the FFT
subroutine
44 20-May-19
Inverse FFT:A better way to modify FFT code for IDFT
• Taking the complex conjugate of both sides of
the IDFT equation:
*
N 1
N 1
kn 
x * [n]  1
N 
k 0
X * [k ]W ; or x[n] 
kn
N
1
N  X * [k ]WN 
 k 0 
• This suggests that we can modify the FFT
algorithm for the inverse DFT computation by
the following:
– Complex conjugate the input DFT coefficients
– Compute the forward FFT
– Complex conjugate the output of the FFT and multiply by 1/ N
• This method has the advantage that the internal
FFT code is undisturbed; it is widely used.
45 20-May-19
Inverse DFT using DIT FFT for N=8
X*[0] Nx*[0]
X*[4] Nx*[1]
W80

X*[2]  Nx*[2]
W80
X*[6] 0  W82  Nx*[3]
W 8

X*[1] W80  Nx*[4]


X*[5]  W81  Nx*[5]
W80
X*[3]  W82  Nx*[6]
W80

X*[7] 0  2  W3  Nx*[7]
W8 W 8 8

46 20-May-19
Example.6
Find IDFT of the following Sequence using DIT FFT Algorithm
x[n]={ 7, -0.707-j0.707, -j, 0.707-j0.707, 1,
0.707+j0.707, j, -0.707+j0.707}
SOLUTION: Select N=23=8
The twiddle factors associated with the flow
graph are W 0  e j  0  e0  1
2
8
8
 j  28 1  j  4 
W e
8
1
e  0.707  j 0.707
 j  28 2  j 2 
W82  e e j
 j  28 3  j  34 
W e
8
3
e  0.707  j 0.707

Answer x[n]={1, 1, 1, 1, 1, 1, 1, 0}
47 20-May-19
Input Stage-1 Stage-2 Stage-3 O/p
X*[0]=7 7+1(1)=8 5+5=10 10+10=20 X[0]
X*[4]=1 7-1(1)=6 5+5=10 (10-10)1= 0 X[4]

X*[2]=j j-j(1)=0 (5-5)1=0 0+0=0 X[2]


X*[6]=-j j-(-j)(1)=2j (5-5)(-j)=0 (0-0)1= 0 X[6]
X*[1]=-0.707+j0.707 (-0.707+j0.707)+(0.707- -3+(-j)=-3-j -3-j-2.828-j1.414= X[1]
j0.707)1=0 -5.828-j2.414

X*[5]= 0.707-j0.707 (2-3)(0.707-j0.707)= - -0.707+j0.707- (-3-j+2.828+j1.414)1= X[5]


0.707+j0.707 (2.121+j2.121)1= -0.172+j0.414
-2.828-j1.414
X*[3]= 0.707+j0.707 (-0.707+j0.707)-(0.707- (-3-(-j))1=-3+j -3+j+2.828-j1.414= X[3]
j0.707)1=-1.414+j1.414 -0.172-j0.414

X*[7]= -0.707-j0.707 (4-1)(-0.707-j0.707)= - (-0.707+j0.707+ (-3+j-2.828+j1.414)1= X[7]


2.121-j2.121 (2.121+j2.121))(-j)= -5.828+j2.414
2.828-j1.414

48 20-May-19
Digital Signal Processing

Radix-2 DIT FFT and DIF FFT


algorithm implementation
with N=4

49 20-May-19
Radix-2 DIT FFT Algorithm with N=4
x[0] X(0)
x[2]  X(1)
0
W
x[1]
4

0  X(2)
W
4
x[3] X(3)
0  W41 
W4

To get input order Take N=4 implies 2 bits


x[0]=x[00] x[00]=x[0]
x[1]=x[01] x[10]=x[2]
x[2]=x[10] x[01]=x[1]
x[3]=x[11] x[11]=x[3]
50 20-May-19
Radix-2 DIF FFT Algorithm with N=4
X[0]
x[0]
x[1] W40 X[4]
-
x[2] W40 X[2]
-
x[3] W41 - W40 X[6]
-

To get Output order Take N=4 implies 2 bits


X[0]=X[00] X[00]=X[0]
X[1]=X[01] X[10]=X[2]
X[2]=X[10] X[01]=X[1]
X[3]=X[11] X[11]=X[3]
51 20-May-19
Digital Signal Processing

Radix-2 DIT FFT and DIF FFT


algorithm implementation
with N=16

52 20-May-19
Bit reversal approach
xi 0  xi 0000  x0000  x0
xi 1  xi 0001  x1000  x8
xi 2  xi 0010  x0100  x4
xi 3  xi 0011  x1100  x12
xi 4  xi 0100  x0010  x2
xi 5  xi 0101  x1010  x10
xi 6  xi 0110  x0110  x6
xi 7  xi 0111  x1110  x14
xi 8  xi 1000  x0001  x1
xi 9  xi 1001  x1001  x9
xi 10  xi 1010  x0101  x5
xi 11  xi 1011  x1101  x13
xi 12  xi 1100  x0011  x3
xi 13  xi 1101  x1011  x11
xi 14  xi 1110  x0111  x7
xi 15  xi 1111  x1111  x15
53 20-May-19
Radix-2 DIF FFT Algorithm with N=16

54 20-May-19
Digital Signal Processing

Alternate representation of
Radix-2 DIT FFT algorithm
implementation

55 20-May-19
Alternate DIT FFT Structure
• DIT structure with input natural, output bit-reversed

56 20-May-19
Alternate DIT FFT Structure
• DIT structure with both input and output natural

57 20-May-19
Alternate DIT FFT Structure
• DIT structure with same structure for each stage

58 20-May-19
Radix-2 Decimation-In-Frequency FFT Algorithm

• A method to avoid bit-reversal in


filtering operations is:
– Compute forward transform using natural input, bit-
reversed output
– Multiply DFT coefficients of input and filter response
(both in bit-reversed order)
– Compute inverse transform of product using bit-
reversed input and natural output

–Latter two topologies are now rarely


used

59 20-May-19
Digital Signal Processing

Alternate Representations of
Radix-2 DIF FFT algorithm
implementation

60 20-May-19
Alternate DIF FFT structures
• DIF structure with input natural, output bit-reversed

61 20-May-19
Alternate DIF FFT structures
• DIF structure with input bit-reversed, output natural

62 20-May-19
Alternate DIF FFT structures
• DIF structure with both input and output natural

63 20-May-19
Alternate DIF FFT structures
• DIF structure with same structure for each stage

64 20-May-19
Digital Signal Processing

Comparison of
DIT FFT and DIF FFT algorithms
implementation

65 20-May-19
The DIF FFT is the transpose of the DIT FFT

• To obtain flow graph transposes:


– Reverse direction of flow graph arrows
– Interchange input(s) and output(s)

• DIT butterfly: DIF butterfly:

• Comment:
– We will revisit transposed forms again in our discussion of filter
implementation

66 20-May-19
The DIF FFT is the transpose of the DIT FFT

• Comparing DIT and DIF structures:


DIT FFT structure: DIF FFT structure:

• Alternate forms for DIF FFTs are similar to


those of DIT FFTs

67 20-May-19

You might also like