Filter Design


1 | import numpy as np |
Butterworth Filters
Butterworth Filters [https://people.eecs.ku.edu/~demarest/212/Butterworth%20Filters.pdf]
Stephen Roberts, Signal Processing & Filter Design B3 option: Lecture 2 - Frequency Selective Filters [https://www.robots.ox.ac.uk/~sjrob/Teaching/SP/l2.pdf]


1 | % Parameters |
Bessel Filters
Stephen Roberts, Signal Processing & Filter Design B3 option: Lecture 3 - Transient Response and Transforms [https://www.robots.ox.ac.uk/~sjrob/Teaching/SP/l3.pdf]
Bessel filter is often called Bessel–Thomson filter or simply Thomson filter


besself: Bessel analog filter design
[b,a] = besself(n, Wo)
the transfer function coefficients of an \(n\)th-order lowpass analog Bessel filter, where
Wois the angular frequency up to which the filter's group delay is approximately constant. Larger values ofnproduce a group delay that better approximates a constant up toWo.
scipy.signal.bessel(N, Wn, btype='low', analog=True, output='ba', norm='phase')
norm='phase'— The filter is normalized such that the phase response reaches its midpoint at angular (e.g. rad/s) frequencyWnThis is the default, and matches MATLAB's implementation.
1 | octave:8> [b,a] = besself(5,1) |
1 | b_bess, a_bess = signal.bessel(5, 1, btype='low', analog=True, norm='phase') |

1 | import numpy as np |
Single-Pole LPF Algorithms
Neil Robertson, Model a Sigma-Delta DAC Plus RC Filter [https://www.dsprelated.com/showarticle/1642.php]
Jason Sachs, Ten Little Algorithms, Part 2: The Single-Pole Low-Pass Filter [https://www.embeddedrelated.com/showarticle/779.php]
—. Return of the Delta-Sigma Modulators, Part 1: Modulation [https://www.dsprelated.com/showarticle/1517/return-of-the-delta-sigma-modulators-part-1-modulation]
Derivatives Approximation (\(H_p(s)=\frac{1}{s\tau +1}\))
\[\begin{align} H_p(z)&=\frac{\frac{T_s}{T_s+\tau}}{1+(\frac{T_s}{T_s+\tau}-1)z^{-1}}\tag{EQ-0}\\ H_p(z)&=\frac{\frac{T_s}{\tau}}{1+(\frac{T_s}{\tau}-1)z^{-1}}\tag{EQ-1} \end{align}\]
Matched z-Transform (Root Matching) \[ H_p(z)=\frac{1-e^{-T_s/\tau}}{1-e^{-T_s/\tau}z^{-1}}\tag{EQ-2} \] EQ-2 is connected with EQ-1 by \(1 - e^{-\Delta t/\tau} \approx \frac{\Delta t}{\tau}\)

1 | import numpy as np |
Discrete-Time Integrators
Qasim Chaudhari. Discrete-Time Integrators [https://wirelesspi.com/discrete-time-integrators/]
David Johns (University of Toronto) "Oversampled Data Converters" Course (2019) [https://youtu.be/qIJ2LORYmyA]
Delaying Integrator
Delay-free Integrator

Discrete-Time Differentiator
Qasim Chaudhari. Design of a Discrete-Time Differentiator [https://wirelesspi.com/design-of-a-discrete-time-differentiator/]
TODO 📅
reference
Boris Murmann. EE315A VLSI Signal Conditioning Circuits
Stephen Roberts, Signal Processing & Filter Design B3 option [https://www.robots.ox.ac.uk/~sjrob/Teaching/sp_course.html]
Butterworth, Chebyshev & Bessel filters [https://analogcircuitdesign.com/butterworth-and-chebyshev-filters/]
Qasim Chaudhari. FIR vs IIR Filters – A Practical Comparison [https://wirelesspi.com/fir-vs-iir-filters-a-practical-comparison/]
—. Finite Impulse Response (FIR) Filters [https://wirelesspi.com/finite-impulse-response-fir-filters/]
—. Why FIR Filters have Linear Phase [https://wirelesspi.com/why-fir-filters-have-linear-phase/]
—. Moving Average Filter [https://wirelesspi.com/moving-average-filter/]
—. Cascaded Integrator Comb (CIC) Filters – A Staircase of DSP. [https://wirelesspi.com/cascaded-integrator-comb-cic-filters-a-staircase-of-dsp/]