10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example 10: Digital Filter Structures Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 1 / 19 Direct Forms 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example B(z) Filter: H(z) = A(z) with input x[n] and output y[n] Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 2 / 19 Direct Forms 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example B(z) Filter: H(z) = A(z) with input x[n] and output y[n] y[n] = PM k=0 b[k]x[n − k] − PN k=1 a[k]y[n − k] Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 2 / 19 Direct Forms 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example B(z) Filter: H(z) = A(z) with input x[n] and output y[n] y[n] = PM k=0 b[k]x[n − k] − PN k=1 a[k]y[n − k] Direct forms use coefficients a[k] and b[k] directly Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 2 / 19 Direct Forms 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example B(z) Filter: H(z) = A(z) with input x[n] and output y[n] y[n] = PM k=0 b[k]x[n − k] − PN k=1 a[k]y[n − k] Direct forms use coefficients a[k] and b[k] directly Direct Form 1: Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 2 / 19 Direct Forms 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example B(z) Filter: H(z) = A(z) with input x[n] and output y[n] y[n] = PM k=0 b[k]x[n − k] − PN k=1 a[k]y[n − k] Direct forms use coefficients a[k] and b[k] directly Direct Form 1: • Direct implementation of difference equation Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 2 / 19 Direct Forms 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example B(z) Filter: H(z) = A(z) with input x[n] and output y[n] y[n] = PM k=0 b[k]x[n − k] − PN k=1 a[k]y[n − k] Direct forms use coefficients a[k] and b[k] directly Direct Form 1: • Direct implementation of difference equation 1 • Can view as B(z) followed by A(z) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 2 / 19 Direct Forms 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example B(z) Filter: H(z) = A(z) with input x[n] and output y[n] y[n] = PM k=0 b[k]x[n − k] − PN k=1 a[k]y[n − k] Direct forms use coefficients a[k] and b[k] directly Direct Form 1: • Direct implementation of difference equation 1 • Can view as B(z) followed by A(z) Direct Form II: Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 2 / 19 Direct Forms 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example B(z) Filter: H(z) = A(z) with input x[n] and output y[n] y[n] = PM k=0 b[k]x[n − k] − PN k=1 a[k]y[n − k] Direct forms use coefficients a[k] and b[k] directly Direct Form 1: • Direct implementation of difference equation 1 • Can view as B(z) followed by A(z) Direct Form II: 1 • Implements A(z) followed by B(z) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 2 / 19 Direct Forms 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator • Summary • MATLAB routines B(z) Filter: H(z) = A(z) with input x[n] and output y[n] y[n] = PM k=0 b[k]x[n − k] − PN k=1 a[k]y[n − k] Direct forms use coefficients a[k] and b[k] directly Direct Form 1: • Direct implementation of difference equation 1 • Can view as B(z) followed by A(z) Direct Form II: 1 • Implements A(z) followed by B(z) • Saves on delays (= storage) DSP and Digital Filters (2017-10122) Structures: 10 – 2 / 19 Transposition 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Can convert any block diagram into an equivalent transposed form: Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 3 / 19 Transposition 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Can convert any block diagram into an equivalent transposed form: • Reverse direction of each interconnection Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 3 / 19 Transposition 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Can convert any block diagram into an equivalent transposed form: • Reverse direction of each interconnection • Reverse direction of each multiplier Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 3 / 19 Transposition 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Can convert any block diagram into an equivalent transposed form: • Reverse direction of each interconnection • Reverse direction of each multiplier • Change junctions to adders and vice-versa Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 3 / 19 Transposition 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Can convert any block diagram into an equivalent transposed form: • Reverse direction of each interconnection • Reverse direction of each multiplier • Change junctions to adders and vice-versa • Interchange the input and output signals Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 3 / 19 Transposition 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Can convert any block diagram into an equivalent transposed form: • Reverse direction of each interconnection • Reverse direction of each multiplier • Change junctions to adders and vice-versa • Interchange the input and output signals Example: Direct form II → Direct Form IIt Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 3 / 19 Transposition 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Can convert any block diagram into an equivalent transposed form: • Reverse direction of each interconnection • Reverse direction of each multiplier • Change junctions to adders and vice-versa • Interchange the input and output signals Example: Direct form II → Direct Form IIt Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 3 / 19 Transposition 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Can convert any block diagram into an equivalent transposed form: • Reverse direction of each interconnection • Reverse direction of each multiplier • Change junctions to adders and vice-versa • Interchange the input and output signals Example: Direct form II → Direct Form IIt Would normally be drawn with input on the left Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 3 / 19 Transposition 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator Can convert any block diagram into an equivalent transposed form: • Reverse direction of each interconnection • Reverse direction of each multiplier • Change junctions to adders and vice-versa • Interchange the input and output signals Example: Direct form II → Direct Form IIt Would normally be drawn with input on the left Note: A valid block diagram must never have any feedback loops that don’t go through a delay (z −1 block). • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 3 / 19 State Space 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + v[n] is a vector of delay element outputs Can write: v[n + 1] = Pv[n] + qx[n] y[n] = rT v[n] + sx[n] Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 4 / 19 State Space 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + v[n] is a vector of delay element outputs Can write: v[n + 1] = Pv[n] + qx[n] y[n] = rT v[n] + sx[n] Numerator • Summary • MATLAB routines Example: Direct Form IIt P= DSP and Digital Filters (2017-10122) −a[1] 1 −a[2] 0 Structures: 10 – 4 / 19 State Space 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + v[n] is a vector of delay element outputs Can write: v[n + 1] = Pv[n] + qx[n] y[n] = rT v[n] + sx[n] Numerator • Summary • MATLAB routines Example: Direct Form IIt P= DSP and Digital Filters (2017-10122) −a[1] 1 −a[2] 0 q= b[1] − b[0]a[1] b[2] − b[0]a[2] Structures: 10 – 4 / 19 State Space 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + v[n] is a vector of delay element outputs Can write: v[n + 1] = Pv[n] + qx[n] y[n] = rT v[n] + sx[n] Numerator • Summary • MATLAB routines Example: Direct Form IIt P= rT = DSP and Digital Filters (2017-10122) −a[1] 1 −a[2] 0 1 0 q= b[1] − b[0]a[1] b[2] − b[0]a[2] Structures: 10 – 4 / 19 State Space 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + v[n] is a vector of delay element outputs Can write: v[n + 1] = Pv[n] + qx[n] y[n] = rT v[n] + sx[n] Numerator • Summary • MATLAB routines Example: Direct Form IIt P= rT = DSP and Digital Filters (2017-10122) −a[1] 1 −a[2] 0 1 0 q= b[1] − b[0]a[1] b[2] − b[0]a[2] s = b[0] Structures: 10 – 4 / 19 State Space 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + v[n] is a vector of delay element outputs Can write: v[n + 1] = Pv[n] + qx[n] y[n] = rT v[n] + sx[n] P, q, rT , s is the state-space representation of the filter structure. Numerator • Summary • MATLAB routines Example: Direct Form IIt P= rT = DSP and Digital Filters (2017-10122) −a[1] 1 −a[2] 0 1 0 q= b[1] − b[0]a[1] b[2] − b[0]a[2] s = b[0] Structures: 10 – 4 / 19 State Space 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + v[n] is a vector of delay element outputs Can write: v[n + 1] = Pv[n] + qx[n] y[n] = rT v[n] + sx[n] P, q, rT , s is the state-space representation of the filter structure. The transfer function is given by: H(z) = B(z) A(z) = det(zI−P+qrT ) det(zI−P) +s−1 Numerator • Summary • MATLAB routines Example: Direct Form IIt P= rT = DSP and Digital Filters (2017-10122) −a[1] 1 −a[2] 0 1 0 q= b[1] − b[0]a[1] b[2] − b[0]a[2] s = b[0] Structures: 10 – 4 / 19 State Space 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + v[n] is a vector of delay element outputs Can write: v[n + 1] = Pv[n] + qx[n] y[n] = rT v[n] + sx[n] P, q, rT , s is the state-space representation of the filter structure. The transfer function is given by: H(z) = B(z) A(z) = det(zI−P+qrT ) det(zI−P) +s−1 Numerator • Summary • MATLAB routines Example: Direct Form IIt P= rT = −a[1] 1 −a[2] 0 1 0 From which H(z) = DSP and Digital Filters (2017-10122) q= b[1] − b[0]a[1] b[2] − b[0]a[2] s = b[0] b[0]z 2 +b[1]z+b[2] z 2 +a[1]z+a[2] Structures: 10 – 4 / 19 State Space 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + v[n] is a vector of delay element outputs Can write: v[n + 1] = Pv[n] + qx[n] y[n] = rT v[n] + sx[n] P, q, rT , s is the state-space representation of the filter structure. The transfer function is given by: H(z) = B(z) A(z) = det(zI−P+qrT ) det(zI−P) T The transposed form has P → P +s−1 and q ↔ r ⇒ same H(z) Numerator • Summary • MATLAB routines Example: Direct Form IIt P= rT = −a[1] 1 −a[2] 0 1 0 From which H(z) = DSP and Digital Filters (2017-10122) q= b[1] − b[0]a[1] b[2] − b[0]a[2] s = b[0] b[0]z 2 +b[1]z+b[2] z 2 +a[1]z+a[2] Structures: 10 – 4 / 19 Precision Issues 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example If all computations were exact, it would not make any difference which of the equivalent structures was used. Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 5 / 19 Precision Issues 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example If all computations were exact, it would not make any difference which of the equivalent structures was used. However ... • Coefficient precision Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 5 / 19 Precision Issues 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example If all computations were exact, it would not make any difference which of the equivalent structures was used. However ... • Coefficient precision Coefficients are stored to finite precision and so are not exact. Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 5 / 19 Precision Issues 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example If all computations were exact, it would not make any difference which of the equivalent structures was used. However ... • Coefficient precision Coefficients are stored to finite precision and so are not exact. The filter actually implemented is therefore incorrect. Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 5 / 19 Precision Issues 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example If all computations were exact, it would not make any difference which of the equivalent structures was used. However ... • Coefficient precision Coefficients are stored to finite precision and so are not exact. The filter actually implemented is therefore incorrect. • Arithmetic precision Arithmetic calculations are not exact. Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 5 / 19 Precision Issues 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example If all computations were exact, it would not make any difference which of the equivalent structures was used. However ... • Coefficient precision Coefficients are stored to finite precision and so are not exact. The filter actually implemented is therefore incorrect. • Arithmetic precision Arithmetic calculations are not exact. ◦ Worst case for arithmetic errors is when calculating the difference between two similar values: Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 5 / 19 Precision Issues 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator If all computations were exact, it would not make any difference which of the equivalent structures was used. However ... • Coefficient precision Coefficients are stored to finite precision and so are not exact. The filter actually implemented is therefore incorrect. • Arithmetic precision Arithmetic calculations are not exact. ◦ Worst case for arithmetic errors is when calculating the difference between two similar values: 1.23456789 − 1.23455678 = 0.00001111: 9 s.f. → 4 s.f. • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 5 / 19 Precision Issues 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator • Summary • MATLAB routines If all computations were exact, it would not make any difference which of the equivalent structures was used. However ... • Coefficient precision Coefficients are stored to finite precision and so are not exact. The filter actually implemented is therefore incorrect. • Arithmetic precision Arithmetic calculations are not exact. ◦ Worst case for arithmetic errors is when calculating the difference between two similar values: 1.23456789 − 1.23455678 = 0.00001111: 9 s.f. → 4 s.f. Arithmetic errors introduce noise that is then filtered by the transfer function between the point of noise creation and the output. DSP and Digital Filters (2017-10122) Structures: 10 – 5 / 19 Coefficient Sensitivity 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example The roots of high order polynomials can be very sensitive to small changes in coefficient values. Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 6 / 19 Coefficient Sensitivity 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example The roots of high order polynomials can be very sensitive to small changes in coefficient values. Wilkinson’s polynomial: (famous example) f (x) = Q20 20 19 18 (x − n) = x − 210x + 20615x − ... n=1 has roots well separated on the real axis. Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 6 / 19 Coefficient Sensitivity 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example The roots of high order polynomials can be very sensitive to small changes in coefficient values. Wilkinson’s polynomial: (famous example) f (x) = Q20 20 19 18 (x − n) = x − 210x + 20615x − ... n=1 has roots well separated on the real axis. Numerator • Summary • MATLAB routines 5 0 -5 0 DSP and Digital Filters (2017-10122) 5 10 15 20 25 Structures: 10 – 6 / 19 Coefficient Sensitivity 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example The roots of high order polynomials can be very sensitive to small changes in coefficient values. Wilkinson’s polynomial: (famous example) f (x) = Q20 20 19 18 (x − n) = x − 210x + 20615x − ... n=1 has roots well separated on the real axis. Multiplying the coefficient of x19 by 1.000001 moves the roots a lot. Numerator • Summary • MATLAB routines 5 0 -5 0 DSP and Digital Filters (2017-10122) 5 10 15 20 25 Structures: 10 – 6 / 19 Coefficient Sensitivity 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example The roots of high order polynomials can be very sensitive to small changes in coefficient values. Wilkinson’s polynomial: (famous example) f (x) = Q20 20 19 18 (x − n) = x − 210x + 20615x − ... n=1 has roots well separated on the real axis. Multiplying the coefficient of x19 by 1.000001 moves the roots a lot. Numerator • Summary • MATLAB routines 5 5 0 0 -5 -5 0 DSP and Digital Filters (2017-10122) 5 10 15 20 25 0 5 10 15 20 25 Structures: 10 – 6 / 19 Coefficient Sensitivity 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example The roots of high order polynomials can be very sensitive to small changes in coefficient values. Wilkinson’s polynomial: (famous example) f (x) = Q20 20 19 18 (x − n) = x − 210x + 20615x − ... n=1 has roots well separated on the real axis. Multiplying the coefficient of x19 by 1.000001 moves the roots a lot. “Speaking for myself I regard it as the most traumatic experience in my career as a numerical analyst”, James Wilkinson 1984 Numerator • Summary • MATLAB routines 5 5 0 0 -5 -5 0 DSP and Digital Filters (2017-10122) 5 10 15 20 25 0 5 10 15 20 25 Structures: 10 – 6 / 19 Coefficient Sensitivity 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example The roots of high order polynomials can be very sensitive to small changes in coefficient values. Wilkinson’s polynomial: (famous example) f (x) = Q20 20 19 18 (x − n) = x − 210x + 20615x − ... n=1 has roots well separated on the real axis. Multiplying the coefficient of x19 by 1.000001 moves the roots a lot. “Speaking for myself I regard it as the most traumatic experience in my career as a numerical analyst”, James Wilkinson 1984 Numerator • Summary • MATLAB routines 5 5 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. DSP and Digital Filters (2017-10122) Structures: 10 – 6 / 19 Cascaded Biquads 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Avoid high order polynomials by factorizing into quadratic terms: B(z) A(z) = Q (1+bk,1 z−1 +bk,2 z−2 ) Q g (1+ak,1 z−1 +ak,2 z−2 ) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 7 / 19 Cascaded Biquads 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Avoid high order polynomials by factorizing into quadratic terms: B(z) A(z) = Q (1+bk,1 z−1 +bk,2 z−2 ) Q g (1+ak,1 z−1 +ak,2 z−2 ) = g 1+bk,1 z −1 +bk,2 z −2 k=1 1+ak,1 z −1 +ak,2 z −2 QK Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 7 / 19 Cascaded Biquads 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Avoid high order polynomials by factorizing into quadratic terms: B(z) A(z) = Q (1+bk,1 z−1 +bk,2 z−2 ) Q g (1+ak,1 z−1 +ak,2 z−2 ) = g M N where K = max . 2 , 2 1+bk,1 z −1 +bk,2 z −2 k=1 1+ak,1 z −1 +ak,2 z −2 QK Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 7 / 19 Cascaded Biquads 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Avoid high order polynomials by factorizing into quadratic terms: B(z) A(z) = Q (1+bk,1 z−1 +bk,2 z−2 ) Q g (1+ak,1 z−1 +ak,2 z−2 ) = g M N where K = max . 2 , 2 The term 1+bk,1 z −1 +bk,2 z −2 1+ak,1 z −1 +ak,2 z −2 1+bk,1 z −1 +bk,2 z −2 k=1 1+ak,1 z −1 +ak,2 z −2 QK is a biquad (bi-quadratic section). Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 7 / 19 Cascaded Biquads 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Avoid high order polynomials by factorizing into quadratic terms: B(z) A(z) = Q (1+bk,1 z−1 +bk,2 z−2 ) Q g (1+ak,1 z−1 +ak,2 z−2 ) = g M N where K = max . 2 , 2 The term 1+bk,1 z −1 +bk,2 z −2 1+ak,1 z −1 +ak,2 z −2 1+bk,1 z −1 +bk,2 z −2 k=1 1+ak,1 z −1 +ak,2 z −2 QK is a biquad (bi-quadratic section). Numerator • Summary • MATLAB routines Direct Form II Transposed DSP and Digital Filters (2017-10122) Structures: 10 – 7 / 19 Cascaded Biquads 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Avoid high order polynomials by factorizing into quadratic terms: B(z) A(z) = Q (1+bk,1 z−1 +bk,2 z−2 ) Q g (1+ak,1 z−1 +ak,2 z−2 ) = g M N where K = max . 2 , 2 The term 1+bk,1 z −1 +bk,2 z −2 1+ak,1 z −1 +ak,2 z −2 1+bk,1 z −1 +bk,2 z −2 k=1 1+ak,1 z −1 +ak,2 z −2 QK is a biquad (bi-quadratic section). We need to choose: (a) which poles to pair with which zeros in each biquad Numerator • Summary • MATLAB routines Direct Form II Transposed DSP and Digital Filters (2017-10122) Structures: 10 – 7 / 19 Cascaded Biquads 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator Avoid high order polynomials by factorizing into quadratic terms: B(z) A(z) = Q (1+bk,1 z−1 +bk,2 z−2 ) Q g (1+ak,1 z−1 +ak,2 z−2 ) = g M N where K = max . 2 , 2 The term 1+bk,1 z −1 +bk,2 z −2 1+ak,1 z −1 +ak,2 z −2 1+bk,1 z −1 +bk,2 z −2 k=1 1+ak,1 z −1 +ak,2 z −2 QK is a biquad (bi-quadratic section). We need to choose: (a) which poles to pair with which zeros in each biquad (b) how to order the biquads • Summary • MATLAB routines Direct Form II Transposed DSP and Digital Filters (2017-10122) Structures: 10 – 7 / 19 Pole-zero Pairing/Ordering 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Example: Elliptic lowpass filter 1 0.5 0 -0.5 -1 -1 0 z 1 Numerator • Summary • MATLAB routines Gain (dB) 20 0 -20 -40 0 DSP and Digital Filters (2017-10122) 0.5 1 1.5 ω 2 2.5 3 Structures: 10 – 8 / 19 Pole-zero Pairing/Ordering 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Example: Elliptic lowpass filter 2 pole pairs and 2 zero pairs 1 0.5 0 -0.5 -1 -1 0 z 1 Numerator • Summary • MATLAB routines Gain (dB) 20 0 -20 -40 0 DSP and Digital Filters (2017-10122) 0.5 1 1.5 ω 2 2.5 3 Structures: 10 – 8 / 19 Pole-zero Pairing/Ordering 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Example: Elliptic lowpass filter 2 pole pairs and 2 zero pairs need 2 biquads 1 0.5 0 -0.5 -1 -1 0 z 1 Numerator • Summary • MATLAB routines Gain (dB) 20 0 -20 -40 0 DSP and Digital Filters (2017-10122) 0.5 1 1.5 ω 2 2.5 3 Structures: 10 – 8 / 19 Pole-zero Pairing/Ordering 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Example: Elliptic lowpass filter 2 pole pairs and 2 zero pairs need 2 biquads Noise introduced in one biquad is amplified by all the subsequent ones: 1 0.5 0 -0.5 -1 -1 0 z 1 Numerator • Summary • MATLAB routines Gain (dB) 20 0 -20 -40 0 DSP and Digital Filters (2017-10122) 0.5 1 1.5 ω 2 2.5 3 Structures: 10 – 8 / 19 Pole-zero Pairing/Ordering 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Example: Elliptic lowpass filter 2 pole pairs and 2 zero pairs need 2 biquads Noise introduced in one biquad is amplified by all the subsequent ones: 1 0.5 0 -0.5 -1 -1 0 z 1 • Make the peak gain of each biquad as small as possible Numerator • Summary • MATLAB routines Gain (dB) 20 0 -20 -40 0 DSP and Digital Filters (2017-10122) 0.5 1 1.5 ω 2 2.5 3 Structures: 10 – 8 / 19 Pole-zero Pairing/Ordering 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Example: Elliptic lowpass filter 2 pole pairs and 2 zero pairs need 2 biquads Noise introduced in one biquad is amplified by all the subsequent ones: 1 0.5 0 -0.5 -1 -1 0 z 1 • Make the peak gain of each biquad as small as possible ◦ Pair poles with nearest zeros to get lowest peak gain Numerator • Summary • MATLAB routines Nearest Gain (dB) 20 0 -20 -40 0 DSP and Digital Filters (2017-10122) 0.5 1 1.5 ω 2 2.5 3 Structures: 10 – 8 / 19 Pole-zero Pairing/Ordering 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Example: Elliptic lowpass filter 2 pole pairs and 2 zero pairs need 2 biquads Noise introduced in one biquad is amplified by all the subsequent ones: 1 0.5 0 -0.5 -1 -1 0 z 1 • Make the peak gain of each biquad as small as possible ◦ Pair poles with nearest zeros to get lowest peak gain begin with the pole nearest the unit circle Numerator • Summary • MATLAB routines Nearest Gain (dB) 20 0 -20 -40 0 DSP and Digital Filters (2017-10122) 0.5 1 1.5 ω 2 2.5 3 Structures: 10 – 8 / 19 Pole-zero Pairing/Ordering 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Example: Elliptic lowpass filter 1 0.5 2 pole pairs and 2 zero pairs need 2 biquads 0 -0.5 -1 Noise introduced in one biquad is amplified by all the subsequent ones: -1 0 z 1 • Make the peak gain of each biquad as small as possible ◦ Pair poles with nearest zeros to get lowest peak gain ◦ begin with the pole nearest the unit circle Pairing with farthest zeros gives higher peak biquad gain Numerator • Summary • MATLAB routines Nearest 0 -20 -40 0 DSP and Digital Filters (2017-10122) 0.5 1 1.5 ω 2 2.5 3 Farthest 20 Gain (dB) Gain (dB) 20 0 -20 -40 0 0.5 1 1.5 ω 2 2.5 3 Structures: 10 – 8 / 19 Pole-zero Pairing/Ordering 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Example: Elliptic lowpass filter 1 0.5 2 pole pairs and 2 zero pairs need 2 biquads 0 -0.5 -1 Noise introduced in one biquad is amplified by all the subsequent ones: -1 0 z 1 • Make the peak gain of each biquad as small as possible ◦ Pair poles with nearest zeros to get lowest peak gain ◦ begin with the pole nearest the unit circle Pairing with farthest zeros gives higher peak biquad gain Numerator • Poles near the unit circle have the highest peaks and introduce most • Summary • MATLAB routines noise so place them last in the chain Nearest 0 -20 -40 0 DSP and Digital Filters (2017-10122) 0.5 1 1.5 ω 2 2.5 3 Farthest 20 Gain (dB) Gain (dB) 20 0 -20 -40 0 0.5 1 1.5 ω 2 2.5 3 Structures: 10 – 8 / 19 Linear Phase 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Implementation can take advantage of any symmetry in the coefficients. Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 9 / 19 Linear Phase 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Implementation can take advantage of any symmetry in the coefficients. Linear phase filters are always FIR and have symmetric (or, more rarely, antisymmetric) coefficients. Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 9 / 19 Linear Phase 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Implementation can take advantage of any symmetry in the coefficients. Linear phase filters are always FIR and have symmetric (or, more rarely, antisymmetric) coefficients. H(z) = PM −m h[m]z m=0 h[M − m] = h[m] Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 9 / 19 Linear Phase 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Implementation can take advantage of any symmetry in the coefficients. Linear phase filters are always FIR and have symmetric (or, more rarely, antisymmetric) coefficients. PM −m h[M − m] = h[m] h[m]z m=0 M − M P M2 −1 −m m−M = h 2 z 2 + m=0 h[m] z +z H(z) = [m even] Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 9 / 19 Linear Phase 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Implementation can take advantage of any symmetry in the coefficients. Linear phase filters are always FIR and have symmetric (or, more rarely, antisymmetric) coefficients. PM −m h[M − m] = h[m] h[m]z m=0 M − M P M2 −1 −m m−M = h 2 z 2 + m=0 h[m] z +z H(z) = [m even] For M even, we only need M 2 + 1 multiplies instead of M + 1. We still need M additions and M delays. Numerator • Summary • MATLAB routines M = 6: DSP and Digital Filters (2017-10122) Structures: 10 – 9 / 19 Linear Phase 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Implementation can take advantage of any symmetry in the coefficients. Linear phase filters are always FIR and have symmetric (or, more rarely, antisymmetric) coefficients. PM −m h[M − m] = h[m] h[m]z m=0 M − M P M2 −1 −m m−M = h 2 z 2 + m=0 h[m] z +z H(z) = [m even] For M even, we only need M 2 + 1 multiplies instead of M + 1. We still need M additions and M delays. Numerator • Summary • MATLAB routines M = 6: For M odd (no central coefficient), we only need M2+1 multiplies. DSP and Digital Filters (2017-10122) Structures: 10 – 9 / 19 Hardware Implementation 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Software Implementation: All that matters is the total number of multiplies and adds Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 10 / 19 Hardware Implementation 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Software Implementation: All that matters is the total number of multiplies and adds Hardware Implementation: Delay elements (z −1 ) represent storage registers The maximum clock speed is limited by the number of sequential operations between registers Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 10 / 19 Hardware Implementation 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Software Implementation: All that matters is the total number of multiplies and adds Hardware Implementation: Delay elements (z −1 ) represent storage registers The maximum clock speed is limited by the number of sequential operations between registers Example: Symmetric Linear Phase Filter Direct form: Maximum sequential delay = 4a + m Numerator a and m are the delays of adder and multiplier respectively • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 10 / 19 Hardware Implementation 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator Software Implementation: All that matters is the total number of multiplies and adds Hardware Implementation: Delay elements (z −1 ) represent storage registers The maximum clock speed is limited by the number of sequential operations between registers Example: Symmetric Linear Phase Filter Direct form: Maximum sequential delay = 4a + m Transpose form: Maximum sequential delay = a + m , a and m are the delays of adder and multiplier respectively • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 10 / 19 Allpass Filters 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Allpass filters have mirror image numerator and denominator coefficients: b[n] = a[N − n] Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 11 / 19 Allpass Filters 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Allpass filters have mirror image numerator and denominator coefficients: b[n] = a[N − n] ⇔ B(z) = z −N A(z −1 ) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 11 / 19 Allpass Filters 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Allpass filters have mirror image numerator and denominator coefficients: b[n] = a[N − n] ⇔ B(z) = z −N A(z −1 ) ⇒ H(ejω ) ≡ 1∀ω Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 11 / 19 Allpass Filters 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Allpass filters have mirror image numerator and denominator coefficients: b[n] = a[N − n] ⇔ B(z) = z −N A(z −1 ) ⇒ H(ejω ) ≡ 1∀ω There are several efficient structures, e.g. Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 11 / 19 Allpass Filters 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Allpass filters have mirror image numerator and denominator coefficients: b[n] = a[N − n] ⇔ B(z) = z −N A(z −1 ) ⇒ H(ejω ) ≡ 1∀ω There are several efficient structures, e.g. • First Order: H(z) = a[1]+z −1 1+a[1]z −1 Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 11 / 19 Allpass Filters 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Allpass filters have mirror image numerator and denominator coefficients: b[n] = a[N − n] ⇔ B(z) = z −N A(z −1 ) ⇒ H(ejω ) ≡ 1∀ω There are several efficient structures, e.g. • First Order: H(z) = a[1]+z −1 1+a[1]z −1 • Second Order: H(z) = a[2]+a[1]z −1 +z −2 1+a[1]z −1 +a[2]z −2 Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 11 / 19 Allpass Filters 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Allpass filters have mirror image numerator and denominator coefficients: b[n] = a[N − n] ⇔ B(z) = z −N A(z −1 ) ⇒ H(ejω ) ≡ 1∀ω There are several efficient structures, e.g. • First Order: H(z) = a[1]+z −1 1+a[1]z −1 • Second Order: H(z) = a[2]+a[1]z −1 +z −2 1+a[1]z −1 +a[2]z −2 Numerator • Summary • MATLAB routines Allpass filters have a gain magnitude of 1 even with coefficient errors. DSP and Digital Filters (2017-10122) Structures: 10 – 11 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Suppose G is allpass: G(z) = + z −N A(z −1 ) A(z) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 12 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Suppose G is allpass: G(z) = + z −N A(z −1 ) A(z) V (z) = X(z) − kGz −1 V (z) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 12 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + Suppose G is allpass: G(z) = z −N A(z −1 ) A(z) V (z) = X(z) − kGz −1 V (z) ⇒ V (z) = 1 1+kGz −1 X(z) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 12 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + Suppose G is allpass: G(z) = z −N A(z −1 ) A(z) V (z) = X(z) − kGz −1 V (z) ⇒ V (z) = 1 1+kGz −1 X(z) Y (z) = kV (z) + Gz −1 V (z) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 12 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + Suppose G is allpass: G(z) = z −N A(z −1 ) A(z) V (z) = X(z) − kGz −1 V (z) ⇒ V (z) = 1 1+kGz −1 X(z) Y (z) = kV (z) + Gz −1 V (z) = k+z −1 G 1+kGz −1 X(z) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 12 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + Suppose G is allpass: G(z) = z −N A(z −1 ) A(z) V (z) = X(z) − kGz −1 V (z) ⇒ V (z) = 1 1+kGz −1 X(z) Y (z) = kV (z) + Gz Y (z) X(z) = −1 V (z) = k+z −1 G 1+kGz −1 X(z) kA(z)+z −N −1 A(z −1 ) A(z)+kz −N −1 A(z −1 ) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 12 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example + Suppose G is allpass: G(z) = z −N A(z −1 ) A(z) V (z) = X(z) − kGz −1 V (z) ⇒ V (z) = 1 1+kGz −1 X(z) Y (z) = kV (z) + Gz Y (z) X(z) = −1 V (z) = kA(z)+z −N −1 A(z −1 ) A(z)+kz −N −1 A(z −1 ) , k+z −1 G 1+kGz −1 X(z) z −(N +1) D(z −1 ) D(z) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 12 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator • Summary • MATLAB routines + Suppose G is allpass: G(z) = z −N A(z −1 ) A(z) V (z) = X(z) − kGz −1 V (z) ⇒ V (z) = 1 1+kGz −1 X(z) Y (z) = kV (z) + Gz Y (z) X(z) = −1 V (z) = kA(z)+z −N −1 A(z −1 ) A(z)+kz −N −1 A(z −1 ) , k+z −1 G 1+kGz −1 X(z) z −(N +1) D(z −1 ) D(z) Obtaining {d[n]} from {a[n]}: n=0 1 d[n] = a[n] + ka[N + 1 − n] 1 ≤ n ≤ N k n=N +1 DSP and Digital Filters (2017-10122) Structures: 10 – 12 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator • Summary • MATLAB routines + Suppose G is allpass: G(z) = z −N A(z −1 ) A(z) V (z) = X(z) − kGz −1 V (z) ⇒ V (z) = 1 1+kGz −1 X(z) Y (z) = kV (z) + Gz Y (z) X(z) = −1 V (z) = kA(z)+z −N −1 A(z −1 ) A(z)+kz −N −1 A(z −1 ) , k+z −1 G 1+kGz −1 X(z) z −(N +1) D(z −1 ) D(z) Obtaining {d[n]} from {a[n]}: n=0 1 d[n] = a[n] + ka[N + 1 − n] 1 ≤ n ≤ N k n=N +1 Obtaining {a[n]} from {d[n]}: k = d[N + 1] DSP and Digital Filters (2017-10122) a[n] = d[n]−kd[N +1−n] 1−k2 Structures: 10 – 12 / 19 Lattice Stage 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator • Summary • MATLAB routines + Suppose G is allpass: G(z) = z −N A(z −1 ) A(z) V (z) = X(z) − kGz −1 V (z) ⇒ V (z) = 1 1+kGz −1 X(z) Y (z) = kV (z) + Gz Y (z) X(z) = −1 V (z) = kA(z)+z −N −1 A(z −1 ) A(z)+kz −N −1 A(z −1 ) , k+z −1 G 1+kGz −1 X(z) z −(N +1) D(z −1 ) D(z) Obtaining {d[n]} from {a[n]}: n=0 1 d[n] = a[n] + ka[N + 1 − n] 1 ≤ n ≤ N k n=N +1 Obtaining {a[n]} from {d[n]}: k = d[N + 1] a[n] = d[n]−kd[N +1−n] 1−k2 Y (z) If G(z) is stable then X(z) is stable if and only if |k| < 1 (see note) DSP and Digital Filters (2017-10122) Structures: 10 – 12 / 19 Example A(z) ↔ D(z) 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Suppose N = 3, k = 0.5 and A(z) = 1 + 4z −1 − 6z −2 + 10z −3 Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 13 / 19 Example A(z) ↔ D(z) 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Suppose N = 3, k = 0.5 and A(z) = 1 + 4z −1 − 6z −2 + 10z −3 A(z) → D(z) A(z) z −4 A(z −1 ) D(z) = A(z) + kz −4 A(z −1 ) z0 1 1 z −1 4 10 9 z −2 −6 −6 −9 z −3 10 4 12 z −4 1 0.5 Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 13 / 19 Example A(z) ↔ D(z) 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator • Summary • MATLAB routines Suppose N = 3, k = 0.5 and A(z) = 1 + 4z −1 − 6z −2 + 10z −3 A(z) → D(z) z0 1 A(z) z −4 A(z −1 ) D(z) = A(z) + kz −4 A(z −1 ) 1 z −1 4 10 9 z −2 −6 −6 −9 z −3 10 4 12 z −4 1 0.5 D(z) → A(z) D(z) k = d[N + 1] z −4 D(z −1 ) D(z) − kz −4 D(z −1 ) A(z) = DSP and Digital Filters (2017-10122) D(z)−kz −4 D(z −1 ) 1−k2 z0 1 z −1 9 z −2 −9 z −3 12 0.5 0.75 12 3 −9 −4.5 9 7.5 z −4 0.5 0.5 1 0 1 4 −6 10 0 Structures: 10 – 13 / 19 Allpass Lattice 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example We can implement any allpass filter H(z) = z −M A(z −1 ) A(z) as a lattice filter with M stages: Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 14 / 19 Allpass Lattice 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example We can implement any allpass filter H(z) = z −M A(z −1 ) A(z) as a lattice filter with M stages: • Initialize AM (z) = A(z) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 14 / 19 Allpass Lattice 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example We can implement any allpass filter H(z) = z −M A(z −1 ) A(z) as a lattice filter with M stages: • Initialize AM (z) = A(z) • Repeat for m = M : −1 : 1 Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 14 / 19 Allpass Lattice 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example We can implement any allpass filter H(z) = z −M A(z −1 ) A(z) as a lattice filter with M stages: • Initialize AM (z) = A(z) • Repeat for m = M : −1 : 1 ◦ k[m] = am [m] Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 14 / 19 Allpass Lattice 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example We can implement any allpass filter H(z) = z −M A(z −1 ) A(z) as a lattice filter with M stages: • Initialize AM (z) = A(z) • Repeat for m = M : −1 : 1 ◦ k[m] = am [m] ◦ am−1 [n] = am [n]−k[m]am [m−n] 1−k2 [m] for 0 ≤ n ≤ m − 1 Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 14 / 19 Allpass Lattice 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example We can implement any allpass filter H(z) = z −M A(z −1 ) A(z) as a lattice filter with M stages: • Initialize AM (z) = A(z) • Repeat for m = M : −1 : 1 ◦ k[m] = am [m] ◦ am−1 [n] = am [n]−k[m]am [m−n] 1−k2 [m] equivalently Am−1 (z) = for 0 ≤ n ≤ m − 1 Am (z)−k[m]z −m Am (z −1 ) 1−k2 [m] Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 14 / 19 Allpass Lattice 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example We can implement any allpass filter H(z) = z −M A(z −1 ) A(z) as a lattice filter with M stages: • Initialize AM (z) = A(z) • Repeat for m = M : −1 : 1 ◦ k[m] = am [m] ◦ am−1 [n] = am [n]−k[m]am [m−n] 1−k2 [m] equivalently Am−1 (z) = for 0 ≤ n ≤ m − 1 Am (z)−k[m]z −m Am (z −1 ) 1−k2 [m] Numerator • Summary • MATLAB routines A(z) is stable iff |k[m]| < 1 for all m (good stability test) DSP and Digital Filters (2017-10122) Structures: 10 – 14 / 19 Lattice Filter Label outputs um [n] and vm [n] and define Hm (z) = DSP and Digital Filters (2017-10122) Vm (z) Um (z) = z −m Am (z −1 ) Am (z) Structures: 10 – 15 / 19 Lattice Filter Label outputs um [n] and vm [n] and define Hm (z) = Vm (z) Um (z) = z −m Am (z −1 ) Am (z) From earlier slide (slide 12): Um−1 (z) Um (z) = 1 1+k[m]z −1 Hm−1 (z) DSP and Digital Filters (2017-10122) Structures: 10 – 15 / 19 Lattice Filter Label outputs um [n] and vm [n] and define Hm (z) = Vm (z) Um (z) = z −m Am (z −1 ) Am (z) From earlier slide (slide 12): Um−1 (z) Um (z) = 1 1+k[m]z −1 H DSP and Digital Filters (2017-10122) m−1 (z) = Am−1 (z) Am−1 (z)+k[m]z −m Am−1 (z −1 ) Structures: 10 – 15 / 19 Lattice Filter Label outputs um [n] and vm [n] and define Hm (z) = Vm (z) Um (z) = z −m Am (z −1 ) Am (z) From earlier slide (slide 12): Um−1 (z) Um (z) = 1 1+k[m]z −1 H DSP and Digital Filters (2017-10122) m−1 (z) = Am−1 (z) Am−1 (z)+k[m]z −m Am−1 (z −1 ) = Am−1 (z) Am (z) Structures: 10 – 15 / 19 Lattice Filter Label outputs um [n] and vm [n] and define Hm (z) = Vm (z) Um (z) = z −m Am (z −1 ) Am (z) From earlier slide (slide 12): Um−1 (z) Um (z) = 1 1+k[m]z −1 H m−1 (z) = Am−1 (z) Am−1 (z)+k[m]z −m Am−1 (z −1 ) = Am−1 (z) Am (z) Hence: Um (z) X(z) = Am (z) A(z) DSP and Digital Filters (2017-10122) Structures: 10 – 15 / 19 Lattice Filter Label outputs um [n] and vm [n] and define Hm (z) = Vm (z) Um (z) = z −m Am (z −1 ) Am (z) From earlier slide (slide 12): Um−1 (z) Um (z) = 1 1+k[m]z −1 H m−1 (z) = Am−1 (z) Am−1 (z)+k[m]z −m Am−1 (z −1 ) = Am−1 (z) Am (z) Hence: Um (z) X(z) = Am (z) A(z) DSP and Digital Filters (2017-10122) and Vm (z) X(z) = Um (z) X(z) × Vm (z) Um (z) Structures: 10 – 15 / 19 Lattice Filter Label outputs um [n] and vm [n] and define Hm (z) = Vm (z) Um (z) = z −m Am (z −1 ) Am (z) From earlier slide (slide 12): Um−1 (z) Um (z) = 1 1+k[m]z −1 H m−1 (z) = Am−1 (z) Am−1 (z)+k[m]z −m Am−1 (z −1 ) = Am−1 (z) Am (z) Hence: Um (z) X(z) = Am (z) A(z) DSP and Digital Filters (2017-10122) and Vm (z) X(z) = Um (z) X(z) × Vm (z) Um (z) = z −m Am (z −1 ) A(z) Structures: 10 – 15 / 19 Lattice Filter Label outputs um [n] and vm [n] and define Hm (z) = Vm (z) Um (z) = z −m Am (z −1 ) Am (z) From earlier slide (slide 12): Um−1 (z) Um (z) = 1 1+k[m]z −1 H m−1 (z) = Am−1 (z) Am−1 (z)+k[m]z −m Am−1 (z −1 ) = Am−1 (z) Am (z) Hence: Um (z) X(z) = Am (z) A(z) and Vm (z) X(z) = Um (z) X(z) × Vm (z) Um (z) = z −m Am (z −1 ) A(z) V (z) m is of order m so you can create any numerator of order M by The numerator of X(z) summing appropriate multiples of Vm (z): w[n] = PM m=0 cm vm [n] DSP and Digital Filters (2017-10122) Structures: 10 – 15 / 19 Lattice Filter Label outputs um [n] and vm [n] and define Hm (z) = Vm (z) Um (z) = z −m Am (z −1 ) Am (z) From earlier slide (slide 12): Um−1 (z) Um (z) = 1 1+k[m]z −1 H m−1 (z) = Am−1 (z) Am−1 (z)+k[m]z −m Am−1 (z −1 ) = Am−1 (z) Am (z) Hence: Um (z) X(z) = Am (z) A(z) and Vm (z) X(z) = Um (z) X(z) × Vm (z) Um (z) = z −m Am (z −1 ) A(z) V (z) m is of order m so you can create any numerator of order M by The numerator of X(z) summing appropriate multiples of Vm (z): w[n] = PM m=0 cm vm [n] DSP and Digital Filters (2017-10122) ⇒ W (z) = PM m=0 cm z −m Am (z −1 ) A(z) Structures: 10 – 15 / 19 Lattice Example A(z) = A3 (z) = 1 + 0.2z −1 − 0.23z −2 + 0.2z −3 DSP and Digital Filters (2017-10122) Structures: 10 – 16 / 19 Lattice Example A(z) = A3 (z) = 1 + 0.2z −1 − 0.23z −2 + 0.2z −3 • k[3] = 0.2 ⇒a2 [ ] = DSP and Digital Filters (2017-10122) [1, 0.2, −0.23]−0.2[0.2, −0.23, 0.2] 1−0.22 = [1, 0.256, −0.281] Structures: 10 – 16 / 19 Lattice Example A(z) = A3 (z) = 1 + 0.2z −1 − 0.23z −2 + 0.2z −3 • k[3] = 0.2 ⇒a2 [ ] = [1, 0.2, −0.23]−0.2[0.2, −0.23, 0.2] 1−0.22 • k[2] = −0.281 ⇒a1 [ ] = DSP and Digital Filters (2017-10122) = [1, 0.256, −0.281] [1, 0.256]+0.281[−0.281, 0.256] 1−0.2812 = [1, 0.357] Structures: 10 – 16 / 19 Lattice Example A(z) = A3 (z) = 1 + 0.2z −1 − 0.23z −2 + 0.2z −3 • k[3] = 0.2 ⇒a2 [ ] = [1, 0.2, −0.23]−0.2[0.2, −0.23, 0.2] 1−0.22 • k[2] = −0.281 ⇒a1 [ ] = = [1, 0.256, −0.281] [1, 0.256]+0.281[−0.281, 0.256] 1−0.2812 = [1, 0.357] • k[1] = 0.357 ⇒a0 [ ] = 1 DSP and Digital Filters (2017-10122) Structures: 10 – 16 / 19 Lattice Example A(z) = A3 (z) = 1 + 0.2z −1 − 0.23z −2 + 0.2z −3 • k[3] = 0.2 ⇒a2 [ ] = [1, 0.2, −0.23]−0.2[0.2, −0.23, 0.2] 1−0.22 • k[2] = −0.281 ⇒a1 [ ] = = [1, 0.256, −0.281] [1, 0.256]+0.281[−0.281, 0.256] 1−0.2812 = [1, 0.357] • k[1] = 0.357 ⇒a0 [ ] = 1 V0 (z) X(z) = 1 1+0.2z −1 −0.23z −2 +0.2z −3 DSP and Digital Filters (2017-10122) Structures: 10 – 16 / 19 Lattice Example A(z) = A3 (z) = 1 + 0.2z −1 − 0.23z −2 + 0.2z −3 • k[3] = 0.2 ⇒a2 [ ] = [1, 0.2, −0.23]−0.2[0.2, −0.23, 0.2] 1−0.22 • k[2] = −0.281 ⇒a1 [ ] = = [1, 0.256, −0.281] [1, 0.256]+0.281[−0.281, 0.256] 1−0.2812 = [1, 0.357] • k[1] = 0.357 ⇒a0 [ ] = 1 V0 (z) X(z) = 1 −1 1+0.2z −0.23z −2 +0.2z −3 DSP and Digital Filters (2017-10122) V1 (z) X(z) = 0.357+z −1 1+0.2z −1 −0.23z −2 +0.2z −3 Structures: 10 – 16 / 19 Lattice Example A(z) = A3 (z) = 1 + 0.2z −1 − 0.23z −2 + 0.2z −3 • k[3] = 0.2 ⇒a2 [ ] = [1, 0.2, −0.23]−0.2[0.2, −0.23, 0.2] 1−0.22 • k[2] = −0.281 ⇒a1 [ ] = = [1, 0.256, −0.281] [1, 0.256]+0.281[−0.281, 0.256] 1−0.2812 = [1, 0.357] • k[1] = 0.357 ⇒a0 [ ] = 1 V0 (z) X(z) = 1 −1 1+0.2z −0.23z −2 +0.2z −3 V2 (z) X(z) = −0.281+0.256z −1 +z −2 1+0.2z −1 −0.23z −2 +0.2z −3 DSP and Digital Filters (2017-10122) V1 (z) X(z) = 0.357+z −1 1+0.2z −1 −0.23z −2 +0.2z −3 Structures: 10 – 16 / 19 Lattice Example A(z) = A3 (z) = 1 + 0.2z −1 − 0.23z −2 + 0.2z −3 • k[3] = 0.2 ⇒a2 [ ] = [1, 0.2, −0.23]−0.2[0.2, −0.23, 0.2] 1−0.22 • k[2] = −0.281 ⇒a1 [ ] = = [1, 0.256, −0.281] [1, 0.256]+0.281[−0.281, 0.256] 1−0.2812 = [1, 0.357] • k[1] = 0.357 ⇒a0 [ ] = 1 V0 (z) X(z) V2 (z) X(z) = 1 −1 1+0.2z −0.23z −2 +0.2z −3 V1 (z) X(z) = 0.357+z −1 1+0.2z −1 −0.23z −2 +0.2z −3 = −0.281+0.256z −1 +z −2 1+0.2z −1 −0.23z −2 +0.2z −3 V3 (z) X(z) = 0.2−0.23z −1 +0.2z −2 +z −3 1+0.2z −1 −0.23z −2 +0.2z −3 DSP and Digital Filters (2017-10122) Structures: 10 – 16 / 19 Lattice Example A(z) = A3 (z) = 1 + 0.2z −1 − 0.23z −2 + 0.2z −3 • k[3] = 0.2 ⇒a2 [ ] = [1, 0.2, −0.23]−0.2[0.2, −0.23, 0.2] 1−0.22 • k[2] = −0.281 ⇒a1 [ ] = = [1, 0.256, −0.281] [1, 0.256]+0.281[−0.281, 0.256] 1−0.2812 = [1, 0.357] • k[1] = 0.357 ⇒a0 [ ] = 1 V0 (z) X(z) V2 (z) X(z) = 1 −1 1+0.2z −0.23z −2 +0.2z −3 V1 (z) X(z) = 0.357+z −1 1+0.2z −1 −0.23z −2 +0.2z −3 = −0.281+0.256z −1 +z −2 1+0.2z −1 −0.23z −2 +0.2z −3 V3 (z) X(z) = 0.2−0.23z −1 +0.2z −2 +z −3 1+0.2z −1 −0.23z −2 +0.2z −3 V (z) B(z) m to create an arbitrary 1+0.2z −1 −0.23z −2 +0.2z −3 Add together multiples of X(z) DSP and Digital Filters (2017-10122) Structures: 10 – 16 / 19 Lattice Example Numerator Form a new output signal as w[n] = DSP and Digital Filters (2017-10122) PM m=0 cm vm [n] Structures: 10 – 17 / 19 Lattice Example Numerator Form a new output signal as w[n] = W (z) = PM m=0 cm Vm (z) = B(z) −1 1+0.2z −0.23z −2 +0.2z −3 X(z) DSP and Digital Filters (2017-10122) PM m=0 cm vm [n] Structures: 10 – 17 / 19 Lattice Example Numerator Form a new output signal as w[n] = W (z) = PM m=0 cm Vm (z) = B(z) −1 1+0.2z −0.23z −2 +0.2z −3 X(z) V0 (z) X(z) V2 (z) X(z) PM m=0 cm vm [n] = 1 1+0.2z −1 −0.23z −2 +0.2z −3 V1 (z) X(z) = −0.281+0.256z −1 +z −2 1+0.2z −1 −0.23z −2 +0.2z −3 V3 (z) X(z) DSP and Digital Filters (2017-10122) = 0.357+z −1 1+0.2z −1 −0.23z −2 +0.2z −3 = 0.2−0.23z −1 +0.2z −2 +z −3 1+0.2z −1 −0.23z −2 +0.2z −3 Structures: 10 – 17 / 19 Lattice Example Numerator Form a new output signal as w[n] = W (z) = PM m=0 cm Vm (z) = B(z) −1 1+0.2z −0.23z −2 +0.2z −3 X(z) V0 (z) X(z) V2 (z) X(z) = PM m=0 cm vm [n] 1 1+0.2z −1 −0.23z −2 +0.2z −3 V1 (z) X(z) −0.281+0.256z −1 +z −2 1+0.2z −1 −0.23z −2 +0.2z −3 V3 (z) X(z) = b[0] b[1] We have b[2] b[3] = 0.357+z −1 1+0.2z −1 −0.23z −2 +0.2z −3 = 0.2−0.23z −1 +0.2z −2 +z −3 1+0.2z −1 −0.23z −2 +0.2z −3 c0 1 0.357 −0.281 0.2 0 1 0.256 −0.23 c1 = 0 0 1 0.2 c2 c3 0 0 0 1 DSP and Digital Filters (2017-10122) Structures: 10 – 17 / 19 Lattice Example Numerator Form a new output signal as w[n] = W (z) = PM m=0 cm Vm (z) = B(z) −1 1+0.2z −0.23z −2 +0.2z −3 X(z) V0 (z) X(z) V2 (z) X(z) = PM m=0 cm vm [n] 1 1+0.2z −1 −0.23z −2 +0.2z −3 V1 (z) X(z) −0.281+0.256z −1 +z −2 1+0.2z −1 −0.23z −2 +0.2z −3 V3 (z) X(z) = b[0] b[1] We have b[2] b[3] 1 0.357 0 1 = 0 0 0 0 c0 c1 Hence choose cm as c2 = c3 DSP and Digital Filters (2017-10122) = 0.357+z −1 1+0.2z −1 −0.23z −2 +0.2z −3 = 0.2−0.23z −1 +0.2z −2 +z −3 1+0.2z −1 −0.23z −2 +0.2z −3 c0 −0.281 0.2 0.256 −0.23 c1 1 0.2 c2 c3 0 1 −1 1 0.357 −0.281 0.2 0 1 0.256 −0.23 0 0 1 0.2 0 0 0 1 b[0] b[1] b[2] b[3] Structures: 10 – 17 / 19 Summary 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example • Filter block diagrams ◦ Direct forms ◦ Transposition ◦ State space representation Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 18 / 19 Summary 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example • Filter block diagrams ◦ Direct forms ◦ Transposition ◦ State space representation • Precision issues: coefficient error, arithmetic error ◦ cascaded biquads Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 18 / 19 Summary 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example • Filter block diagrams ◦ Direct forms ◦ Transposition ◦ State space representation • Precision issues: coefficient error, arithmetic error ◦ cascaded biquads • Allpass filters ◦ first and second order sections Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 18 / 19 Summary 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator • Summary • MATLAB routines • Filter block diagrams ◦ Direct forms ◦ Transposition ◦ State space representation • Precision issues: coefficient error, arithmetic error ◦ cascaded biquads • Allpass filters ◦ first and second order sections • Lattice filters ◦ Arbitrary allpass response ◦ Arbitrary IIR response by summing intermediate outputs DSP and Digital Filters (2017-10122) Structures: 10 – 18 / 19 Summary 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example Numerator • Summary • MATLAB routines • Filter block diagrams ◦ Direct forms ◦ Transposition ◦ State space representation • Precision issues: coefficient error, arithmetic error ◦ cascaded biquads • Allpass filters ◦ first and second order sections • Lattice filters ◦ Arbitrary allpass response ◦ Arbitrary IIR response by summing intermediate outputs For further details see Mitra: 8. DSP and Digital Filters (2017-10122) Structures: 10 – 18 / 19 MATLAB routines 10: Digital Filter Structures • 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) • Allpass Lattice • Lattice Filter • Lattice Example • Lattice Example residuez tf2sos,sos2tf zp2sos,sos2zp zp2ss,ss2zp tf2ss,ss2tf poly b(z −1) a(z −1 ) b(z −1) a(z −1 ) ↔ → k 1−prkkz−1 Q b0,l +b1,l z−1 +b2,l z−2 {zm , pk , g} ↔ P l 1+a1,l z −1 +a2,l z −2 Q b0,l +b1,l z−1 +b2,l z−2 l 1+a∈1,l z −1 +a2,l z −2 ( ′ x = Ax + Bu {zm , pk , g} ↔ y = Cx + Du ( x′ = Ax + Bu b(z −1) a(z −1 ) ↔ y = Cx + Du poly(A) = det (zI−A) Numerator • Summary • MATLAB routines DSP and Digital Filters (2017-10122) Structures: 10 – 19 / 19