Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
45 views

DSP en FFT Notes

The document provides an outline and overview of digital signal processing concepts related to the discrete Fourier transform (DFT) and fast Fourier transform (FFT) algorithms. Specifically, it discusses: - Applications of the DFT - FFT algorithms including radix-2 decimation-in-time (DIT) and decimation-in-frequency (DIF) approaches - Computational complexity analysis of DFT and optimizations in FFT - Implementation of FIR filters using overlap-add and overlap-save methods - Frequency analysis of real-time signals using FFT on segmented blocks

Uploaded by

Thủy
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views

DSP en FFT Notes

The document provides an outline and overview of digital signal processing concepts related to the discrete Fourier transform (DFT) and fast Fourier transform (FFT) algorithms. Specifically, it discusses: - Applications of the DFT - FFT algorithms including radix-2 decimation-in-time (DIT) and decimation-in-frequency (DIF) approaches - Computational complexity analysis of DFT and optimizations in FFT - Implementation of FIR filters using overlap-add and overlap-save methods - Frequency analysis of real-time signals using FFT on segmented blocks

Uploaded by

Thủy
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

ET 4020 - Digital Signal Processing

FFT and applications

Dr. Quang Hieu Dang

Hanoi University of Science and Technology


School of Electronics and Telecommunications

Spring 2018
Outline

Applications of DFT

FFT algorithms
Implementation of FIR systems
Consider an LTI system with impulse response h(n) of finite length
P. Give input x(n) of finite length L, the output will be

y (n) = x(n) ∗ h(n) = x(n)N (∗)M h(n)N


where N ≥ L + P − 1, the sequences x(n)N , h(n)N are zero-padded.

x(n) DFT

IDFT y (n)

h(n) DFT

In practice, L $ P. Input sequence x(n) are divided into segments


→ block by block convolution.
Overlap-add method

input

x1 (n)

x2 (n)
(P − 1) point

x3 (n)
output y1 (n)
+
y2 (n)
+
y3 (n)
+
Overlap-save method

input

x1 (n)

(P − 1) zeros
x2 (n)

x3 (n)
output y1 (n)

y2 (n)

y3 (n)
Discard
Frequency analysis of real-time signals
Main idea: As signal is segmented into blocks (usually
overlapped), FFT is implemented for each block, with window
functions.
Steps:
1. Sampling x(t) → x(n), consider one block of N samples
2. Multiplying with a window function xd (n) = x(n)w (n)
3. Implement M-point FFT on xd (n), where M ≥ N (zero
padding does not change the spectrum!).
4. Normalization of frequency and magnitude for |X (k)|

Notes:
! Windowing effect: power leakage
! Frequency resolution
! Overlapped blocks
Outline

Applications of DFT

FFT algorithms
Computational complexity of DFT

!
N−1
X (k) = x(n)WNkn , 0≤k ≤N −1
n=0

where, WN = e −j2π/N .

Operations needed to calculate one item of X (k):


! N complex multiplications (4N real multiplications and 2N
real additions)
! N − 1 complex additions (2N − 2 real additions)
! 2N values of sin, cos.

The computational complexity of N-point DFT: O(N 2 ).


DIT (decimation in time) Radix-2 FFT
Consider the case N = 2v . Divide x(n) into even-index sequence
x(2m) and odd-index sequence x(2m + 1):

!
N−1
X (k) = x(n)WNkn , k = 0, 1, · · · , (N − 1)
n=0

!
N/2−1
!
N/2−1
k(2m+1)
k2m
= x(2m)WN + x(2m + 1)WN
m=0 m=0

For k = 0, 1, . . . , N/2:

!
N/2−1
!
N/2−1
km
X (k) = x(2m)WN/2 + WNk km
x(2m + 1)WN/2
m=0 m=0
k
= F1 (k) + WN F2 (k)
DIT Radix-2 FFT: Computational complexity
Note that:

F1 (k + N/2) = F1 (k)
F2 (k + N/2) = F2 (k)
k+N/2
WN = −WNk

then,
N
X (k + ) = F1 (k) − WNk F2 (k)
2
k
X (k) = F1 (k) + WN F2 (k)

If f F1 (k) and F2 (k) are computed directly, the total number of


complex multiplications is:

2(N/2)2 + N/2
DIT Radix-2 FFT: Divide
F1 (0)
x(0) X (0)
WN0
F1 (1)
x(2) X (1)
N/2 - point
WN1
DFT F1 (2)
x(4) X (2)
WN2
F1 (3)
x(6) X (3)
WN3
F2 (0)
x(1) X (4)
−WN0
F2 (1)
x(3) X (5)
N/2 - point −WN1
DFT F2 (2)
x(5) X (6)
−WN2
F2 (3)
x(7) X (7)
−WN3
DIT Radix-2 FFT: Reduced form

x(0) X (0)

x(2) X (1)
N/2 - point
DFT
x(4) X (2)

x(6) X (3)

WN0
x(1) X (4)
−1
WN1
x(3) X (5)
N/2 - point −1
DFT WN2
x(5) X (6)
−1
WN3
x(7) X (7)
−1
DIT Radix-2 FFT: Continue to divide

x(0) X (0)
N/4 - point
DFT
x(4) X (1)

WN0
x(2) X (2)
N/4 - point −1
DFT WN2
x(6) X (3)
−1
WN0
x(1) X (4)
N/4 - point −1
DFT WN1
x(5) X (5)
−1
WN0 WN2
x(3) X (6)
N/4 - point −1 −1
DFT WN2 WN3
x(7) X (7)
−1 −1
DIT Radix-2 FFT: Complete signal flowgraph

x(0) X (0)

WN0
x(4) X (1)
−1
WN0
x(2) X (2)
−1
WN0 WN2
x(6) X (3)
−1 −1
WN0
x(1) X (4)
−1
WN0 WN1
x(5) X (5)
−1 −1
WN0 WN2
x(3) X (6)
−1 −1
WN0 WN2 WN3
x(7) X (7)
−1 −1 −1
DIT Radix-2 FFT: Butterfly computations

Xm−1 (p) Xm (p)


WNr
Xm−1 (q) Xm (q)
−WNr

Figure: Basic butterfly computations

Xm−1 (p) Xm (p)

Xm−1 (q) Xm (q)


WNr −1

Figure: Reduced butterfly computations


Inplace computation and bit reversal

r
Xm (p) = Xm−1 (p) + WN Xm−1 (q)
r
Xm (q) = Xm−1 (p) − WN Xm−1 (q)

No extra storage needed!


Need to reverse bits (stage 0):
Binary Bit reversal Input order
X0 (0) 000 000 x(0)
X0 (1) 001 100 x(4)
X0 (2) 010 010 x(2)
X0 (3) 011 110 x(6)
X0 (4) 100 001 x(1)
X0 (5) 101 101 x(5)
X0 (6) 110 011 x(3)
X0 (7) 111 111 x(7)
DIF (decimation in frequency) Radix-2 FFT

!
N−1
X (k) = x(n)WNkn , k = 0, 1, · · · , (N − 1)
n=0

!
N/2−1
!
N−1
= x(n)WNkn + x(n)WNkn
m=0 n=N/2

!
N/2−1
!
N/2−1
kN/2
= x(n)WNkn + x(n + N/2)WN WNkn
m=0 n=0

!
N/2−1
= [x(n) + (−1)k x(n + N/2)]WNkn
m=0
DIF Radix-2 FFT: Computational complexity
Divide X (k) into even-index and odd-index sequences:

!
N/2−1
kn
X (2k) = [x(n) + x(n + N/2)]WN/2
m=0

!
N/2−1
X (2k + 1) = [x(n) − x(n + N/2)]WNn WN/2
kn

m=0

Computational complexity: (N/2) log 2 N complex multiplications


and N log2 N complex additions.
Xm−1 (p) Xm (p)

Xm−1 (q) Xm (q)


−1 WNr
Figure: Butterfly computations
DIF Radix-2 FFT: Complete signal flowgraph

x(0) X (0)

WN0
x(1) X (4)
−1
WN0
x(2) X (2)
−1
WN2 WN0
x(3) X (6)
−1 −1
WN0
x(4) X (1)
−1
WN1 WN0
x(5) X (5)
−1 −1
WN2 WN0
x(6) X (3)
−1 −1
WN3 WN2 WN0
x(7) X (7)
−1 −1 −1

You might also like