Beruflich Dokumente
Kultur Dokumente
• Direct Forms
• Transposition
• State Space +
• Precision Issues
• Coefficient Sensitivity
• Cascaded Biquads
• Pole-zero Pairing/Ordering
• Linear Phase
• Hardware Implementation
• Allpass Filters
• Lattice Stage +
• Example
A(z) ↔ D(z)
10: Digital Filter Structures
• Allpass Lattice
• Lattice Filter
• Lattice Example
• Lattice Example
Numerator
• Summary
• MATLAB routines
-5
0 5 10 15 20 25
-5
0 5 10 15 20 25
0 0
-5 -5
0 5 10 15 20 25 0 5 10 15 20 25
0 0
-5 -5
0 5 10 15 20 25 0 5 10 15 20 25
0 0
-5 -5
0 5 10 15 20 25 0 5 10 15 20 25
Moral: Avoid using direct form for filters orders over about 10.
Direct Form II
Transposed
Direct Form II
Transposed
Direct Form II
Transposed
• Transposition 0.5
• State Space +
0
• Precision Issues
• Coefficient Sensitivity -0.5
• Cascaded Biquads -1
• Pole-zero Pairing/Ordering -1 0 1
• Linear Phase z
• Hardware Implementation
• Allpass Filters
• Lattice Stage +
• Example
A(z) ↔ D(z)
• Allpass Lattice
• Lattice Filter
• Lattice Example
• Lattice Example
Numerator
• Summary
• MATLAB routines
20
Gain (dB)
-20
-40
0 0.5 1 1.5 2 2.5 3
ω
• Transposition 0.5
• State Space + 2 pole pairs and 2 zero pairs 0
• Precision Issues
• Coefficient Sensitivity -0.5
• Cascaded Biquads -1
• Pole-zero Pairing/Ordering -1 0 1
• Linear Phase z
• Hardware Implementation
• Allpass Filters
• Lattice Stage +
• Example
A(z) ↔ D(z)
• Allpass Lattice
• Lattice Filter
• Lattice Example
• Lattice Example
Numerator
• Summary
• MATLAB routines
20
Gain (dB)
-20
-40
0 0.5 1 1.5 2 2.5 3
ω
• Transposition 0.5
• State Space + 2 pole pairs and 2 zero pairs 0
• Precision Issues
• Coefficient Sensitivity
need 2 biquads -0.5
• Cascaded Biquads -1
• Pole-zero Pairing/Ordering -1 0 1
• Linear Phase z
• Hardware Implementation
• Allpass Filters
• Lattice Stage +
• Example
A(z) ↔ D(z)
• Allpass Lattice
• Lattice Filter
• Lattice Example
• Lattice Example
Numerator
• Summary
• MATLAB routines
20
Gain (dB)
-20
-40
0 0.5 1 1.5 2 2.5 3
ω
• Transposition 0.5
• State Space + 2 pole pairs and 2 zero pairs 0
• Precision Issues
• Coefficient Sensitivity
need 2 biquads -0.5
• Cascaded Biquads -1
• Pole-zero Pairing/Ordering Noise introduced in one biquad is amplified -1 0 1
• Linear Phase z
• Hardware Implementation
by all the subsequent ones:
• Allpass Filters
• Lattice Stage +
• Example
A(z) ↔ D(z)
• Allpass Lattice
• Lattice Filter
• Lattice Example
• Lattice Example
Numerator
• Summary
• MATLAB routines
20
Gain (dB)
-20
-40
0 0.5 1 1.5 2 2.5 3
ω
• Transposition 0.5
• State Space + 2 pole pairs and 2 zero pairs 0
• Precision Issues
• Coefficient Sensitivity
need 2 biquads -0.5
• Cascaded Biquads -1
• Pole-zero Pairing/Ordering Noise introduced in one biquad is amplified -1 0 1
• Linear Phase z
• Hardware Implementation
by all the subsequent ones:
• Allpass Filters
• Lattice Stage
• Example
+ • Make the peak gain of each biquad as small as possible
A(z) ↔ D(z)
• Allpass Lattice
• Lattice Filter
• Lattice Example
• Lattice Example
Numerator
• Summary
• MATLAB routines
20
Gain (dB)
-20
-40
0 0.5 1 1.5 2 2.5 3
ω
• Transposition 0.5
• State Space + 2 pole pairs and 2 zero pairs 0
• Precision Issues
• Coefficient Sensitivity
need 2 biquads -0.5
• Cascaded Biquads -1
• Pole-zero Pairing/Ordering Noise introduced in one biquad is amplified -1 0 1
• Linear Phase z
• Hardware Implementation
by all the subsequent ones:
• Allpass Filters
• Lattice Stage
• Example
+ • Make the peak gain of each biquad as small as possible
A(z) ↔ D(z) ◦ Pair poles with nearest zeros to get lowest peak gain
• Allpass Lattice
• Lattice Filter
• Lattice Example
• Lattice Example
Numerator
• Summary
• MATLAB routines
20 Nearest
Gain (dB)
-20
-40
0 0.5 1 1.5 2 2.5 3
ω
• Transposition 0.5
• State Space + 2 pole pairs and 2 zero pairs 0
• Precision Issues
• Coefficient Sensitivity
need 2 biquads -0.5
• Cascaded Biquads -1
• Pole-zero Pairing/Ordering Noise introduced in one biquad is amplified -1 0 1
• Linear Phase z
• Hardware Implementation
by all the subsequent ones:
• Allpass Filters
• Lattice Stage
• Example
+ • Make the peak gain of each biquad as small as possible
A(z) ↔ D(z) ◦ Pair poles with nearest zeros to get lowest peak gain
• Allpass Lattice
• Lattice Filter begin with the pole nearest the unit circle
• Lattice Example
• Lattice Example
Numerator
• Summary
• MATLAB routines
20 Nearest
Gain (dB)
-20
-40
0 0.5 1 1.5 2 2.5 3
ω
• Transposition 0.5
• State Space + 2 pole pairs and 2 zero pairs 0
• Precision Issues
• Coefficient Sensitivity
need 2 biquads -0.5
• Cascaded Biquads -1
• Pole-zero Pairing/Ordering Noise introduced in one biquad is amplified -1 0 1
• Linear Phase z
• Hardware Implementation
by all the subsequent ones:
• Allpass Filters
• Lattice Stage
• Example
+ • Make the peak gain of each biquad as small as possible
A(z) ↔ D(z) ◦ Pair poles with nearest zeros to get lowest peak gain
• Allpass Lattice
• Lattice Filter begin with the pole nearest the unit circle
• Lattice Example
• Lattice Example
◦ Pairing with farthest zeros gives higher peak biquad gain
Numerator
• Summary
• MATLAB routines
20 Nearest 20 Farthest
Gain (dB)
Gain (dB)
0 0
-20 -20
-40 -40
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
ω ω
• Transposition 0.5
• State Space + 2 pole pairs and 2 zero pairs 0
• Precision Issues
• Coefficient Sensitivity
need 2 biquads -0.5
• Cascaded Biquads -1
• Pole-zero Pairing/Ordering Noise introduced in one biquad is amplified -1 0 1
• Linear Phase z
• Hardware Implementation
by all the subsequent ones:
• Allpass Filters
• Lattice Stage
• Example
+ • Make the peak gain of each biquad as small as possible
A(z) ↔ D(z) ◦ Pair poles with nearest zeros to get lowest peak gain
• Allpass Lattice
• Lattice Filter begin with the pole nearest the unit circle
• Lattice Example
• Lattice Example
◦ Pairing with farthest zeros gives higher peak biquad gain
Numerator
• Summary • Poles near the unit circle have the highest peaks and introduce most
• MATLAB routines
noise so place them last in the chain
20 Nearest 20 Farthest
Gain (dB)
Gain (dB)
0 0
-20 -20
-40 -40
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
ω ω
M = 6:
M = 6:
Vm (z) z −m Am (z −1 )
Label outputs um [n] and vm [n] and define Hm (z) = Um (z) = Am (z)
Vm (z) z −m Am (z −1 )
Label outputs um [n] and vm [n] and define Hm (z) = Um (z) = Am (z)
Vm (z) z −m Am (z −1 )
Label outputs um [n] and vm [n] and define Hm (z) = Um (z) = Am (z)
Vm (z) z −m Am (z −1 )
Label outputs um [n] and vm [n] and define Hm (z) = Um (z) = Am (z)
Vm (z) z −m Am (z −1 )
Label outputs um [n] and vm [n] and define Hm (z) = Um (z) = Am (z)
Vm (z) z −m Am (z −1 )
Label outputs um [n] and vm [n] and define Hm (z) = Um (z) = Am (z)
Vm (z) z −m Am (z −1 )
Label outputs um [n] and vm [n] and define Hm (z) = Um (z) = Am (z)
Vm (z) z −m Am (z −1 )
Label outputs um [n] and vm [n] and define Hm (z) = Um (z) = Am (z)
m V (z)
The numerator of X(z) is of order m so you can create any numerator of order M by
summing appropriate multiples of Vm (z):
PM
w[n] = m=0 cm vm [n]
Vm (z) z −m Am (z −1 )
Label outputs um [n] and vm [n] and define Hm (z) = Um (z) = Am (z)
m V (z)
The numerator of X(z) is of order m so you can create any numerator of order M by
summing appropriate multiples of Vm (z):
PM
PM cm z −m Am (z −1 )
w[n] = m=0 cm vm [n] ⇒ W (z) = m=0
A(z)
V2 (z) −0.281+0.256z −1 +z −2
X(z) = 1+0.2z −1 −0.23z −2 +0.2z −3
m V (z) B(z)
Add together multiples of X(z) to create an arbitrary 1+0.2z −1 −0.23z −2 +0.2z −3
PM
Form a new output signal as w[n] = m=0 cm vm [n]
PM
Form a new output signal as w[n] = m=0 cm vm [n]
PM
W (z) = m=0 cm Vm (z) =
B(z)
1+0.2z −0.23z −2 +0.2z −3 X(z)
−1
PM
Form a new output signal as w[n] = m=0 cm vm [n]
PM
W (z) = m=0 cm Vm (z) =
B(z)
1+0.2z −0.23z −2 +0.2z −3 X(z)
−1
PM
Form a new output signal as w[n] = m=0 cm vm [n]
PM
W (z) = m=0 cm Vm (z) =
B(z)
1+0.2z −0.23z −2 +0.2z −3 X(z)
−1
PM
Form a new output signal as w[n] = m=0 cm vm [n]
PM
W (z) = m=0 cm Vm (z) =
B(z)
1+0.2z −0.23z −2 +0.2z −3 X(z)
−1