HOME

PDF (letter size)

Butterworth low pass analog filter design

Nasser M. Abbasi

July 10, 2010   Compiled on January 28, 2024 at 8:18pm

Contents

1 Introduction
2 Algorithm diagram
3 Design steps
3.1 backward transformation
3.2 Determine filter order \(N\)
3.3 Finding stables poles assuming \(\Omega _{c}=1\)
3.4 Rescaling the poles
3.5 Converting normalized low pass using frequency transformation
4 Example designs
4.1 Example 1
4.1.1 backward transformation
4.1.2 Determining filter order \(N\)
4.2 Finding stables poles assuming \(\Omega _{c}=1\)
4.2.1 Rescale the poles
4.2.2 Convert normalized low pass using frequency transformation
5 References

1 Introduction

This is a detailed review of low pass Butterworth analog filter design. The goal is to generate Butterworth transfer function \(H(s)\) from frequency specifications. The following are the four specifications of the design

\(f_{p}\) The passband corner frequency in Hz
\(f_{s}\) The stopband corner frequency in Hz
\(A_{p}\) The attenuation in db at \(\Omega _{p}\)
\(A_{s}\) The attenuation in db at \(\Omega _{s}\)

The specifications are given in db (the left diagram above) and not in magnitude (right diagram above).

The specifications are given with reference to the transfer function magnitude. The phase is not taken into account in the specifications. Butterworth analog transfer function transfer function magnitude is given by\[ \left \vert H\left ( j\Omega \right ) \right \vert =\frac {1}{\sqrt {1+\left ( \frac {\Omega }{\Omega _{c}}\right ) ^{2N}}}\] Where \(\Omega _{c}\) is the cutoff frequency. This is the frequency at which \(\left \vert H\left ( j\Omega \right ) \right \vert =\frac {1}{\sqrt {2}}=0.707.\)

The goal of the design is to determine \(N\) and \(\Omega _{c}\) from the specifications. Once \(N\) and \(\Omega _{c}\) are found, \(H(s)\) poles are found. Once the poles are found, then \(H\left ( s\right ) \) is now determined.

2 Algorithm diagram

The following diagram outlines the design algorithm

3 Design steps

3.1 backward transformation

Let \(\Omega _{p}=1\) rad/sec, and let \(\Omega _{s}=\frac {f_{s}}{f_{p}}\) rad/sec.

3.2 Determine filter order \(N\)

\[ A_{p}=-20\log \left \vert H\left ( j\Omega _{p}\right ) \right \vert =-20\log \frac {1}{\sqrt {1+\left ( \frac {\Omega _{p}}{\Omega _{c}}\right ) ^{2N}}}=10\log \left [ 1+\left ( \frac {1}{\Omega _{c}}\right ) ^{2N}\right ] \] Solving for \(\Omega _{c}\) from the above gives \begin {equation} \Omega _{c}=\frac {1}{\left ( 10^{\frac {A_{p}}{10}}-1\right ) ^{\frac {1}{2N}}} \tag {1} \end {equation} Using \(A_{s}\) gives \[ A_{s}=-20\log \left \vert H\left ( j\Omega _{s}\right ) \right \vert =-20\log \frac {1}{\sqrt {1+\left ( \frac {\Omega _{s}}{\Omega _{c}}\right ) ^{2N}}}=10\log \left [ 1+\left ( \frac {\Omega _{s}}{\Omega _{c}}\right ) ^{2N}\right ] \] Solving for \(\Omega _{s}\) from the above results in \begin {equation} \Omega _{s}=\Omega _{c}\left ( 10^{\frac {A_{s}}{10}}-1\right ) ^{\frac {1}{2N}} \tag {2} \end {equation} Substituting \(\Omega _{c}\) found in (1) into the above \(\Omega _{s}\) gives \begin {equation} \Omega _{s}=\left [ \frac {\left ( 10^{\frac {A_{s}}{10}}-1\right ) }{\left ( 10^{\frac {A_{p}}{10}}-1\right ) }\right ] ^{\frac {1}{2N}} \tag {3} \end {equation} Solving for \(N\) in the above by taking logs gives \begin {equation} N=\frac {\log \left [ \frac {\left ( 10^{\frac {A_{s}}{10}}-1\right ) }{\left ( 10^{\frac {A_{p}}{10}}-1\right ) }\right ] }{2\log \Omega _{s}} \tag {4} \end {equation} Since the order of filter is an integer, the above value is rounded upwards to the next integer if it is not an integer. Let this new \(N\) be \(N^{\prime }\) to make it clear that this is an updated \(N\) from the original \(N\).

3.3 Finding stables poles assuming \(\Omega _{c}=1\)

Since Butterworth magnitude square of the transfer function is \[ \left \vert H\left ( s\right ) \right \vert ^{2}=\frac {1}{1+\left ( \frac {s}{j\Omega _{c}^{\prime }}\right ) ^{2N^{\prime }}}\] Hence \(H(s)\) poles are found by setting the denominator of the above to zero. Setting \(\Omega _{c}=1\) gives \begin {align} 1+\left ( \frac {s}{j}\right ) ^{2N^{\prime }} & =0\nonumber \\ \left ( \frac {s}{j}\right ) ^{2N^{\prime }} & =-1\nonumber \\ \left ( \frac {s}{j}\right ) ^{2N^{\prime }} & =e^{j\left ( \pi +2\pi k\right ) }\ \ \ \ \ \nonumber \\ \frac {s}{j} & =e^{j\left ( \frac {\pi +2\pi k}{2N^{\prime }}\right ) \ \ \ \ \ \ \ \ \ \ \ \ }k=0,1,2,\cdots 2N^{\prime }-1\nonumber \\ s_{k} & =j\ e^{j\left ( \frac {\pi +2\pi k}{2N^{\prime }}\right ) }\nonumber \\ s_{k} & =\ e^{j\frac {\pi }{2}}e^{j\left ( \frac {\pi +2\pi k}{2N^{\prime }}\right ) }\nonumber \\ s_{k} & =\ e^{j\left ( \frac {\pi +2\pi k}{2N^{\prime }}+\frac {\pi }{2}\right ) } \tag {5} \end {align}

Only the LHS poles are needed, which are located at \(k=0\cdots N^{\prime }-1\), because these are the stable poles.

Now that the poles are found, \(H(s)\) becomes \begin {equation} H(s)=\frac {1}{{\prod \limits _{k=0}^{N^{\prime }-1}}s-s_{k}}=\frac {1}{\left ( s-s_{0}\right ) \left ( s-s_{1}\right ) \cdots \left ( s-s_{N^{\prime }-1}\right ) } \tag {6} \end {equation}

3.4 Rescaling the poles

Either \(A_{p}\) or \(A_{s}\) have to be adjusted depending on if the excess tolerance is to be assigned to the passband or to the stop band and \(\Omega _{c}\) is calculated based on this.

If the excess tolerance is to be assigned to the passband, then (3) is solved for \(A_{p}\) and this new found value is called \(A_{p}^{\prime }\) \begin {equation} A_{p}^{\prime }=10\log \left ( \frac {\left ( 10^{\frac {A_{s}}{10}}-1\right ) }{\Omega _{s}^{2N^{\prime }}}+1\right ) \tag {6.1} \end {equation} Also \(\Omega _{c}\) needs to be determined from (1). Calling this \(\Omega _{c}^{\prime }\) to reflect that this goes with the updated \(A_{p}^{\prime }\) and not the original \(A_{p}\) \begin {equation} \Omega _{c}^{\prime }=\frac {1}{\left ( 10^{\frac {A_{p}^{\prime }}{10}}-1\right ) ^{\frac {1}{2N^{\prime }}}} \tag {6.2} \end {equation} However, if the excess tolerance is to be assigned to the stopband, then (3) is solved for \(A_{s}\) and this new found value is called \(A_{s}^{\prime }\)\begin {equation} A_{s}^{\prime }=10\log \left ( \Omega _{s}^{2N^{\prime }}\left ( 10^{\frac {A_{p}}{10}}-1\right ) +1\right ) \tag {6.3} \end {equation} \(\Omega _{c}\) is adjusted to \(\Omega _{c}^{\prime }\).

From (2), and using the above new value of \(A_{s}^{\prime }\) gives \begin {equation} \Omega _{c}^{\prime }=\frac {\Omega _{s}}{\left ( 10^{\frac {A_{s}^{\prime }}{10}}-1\right ) ^{\frac {1}{2N^{\prime }}}} \tag {6.4} \end {equation} \(H\left ( s\right ) \) found above in (6) is now adjusted since that was found for \(\Omega _{c}=1\) and now an updated \(\Omega _{c}^{\prime }\) is found. To do that \(s\) is replaced by \(\frac {s}{\Omega _{c}^{\prime }}\), hence \(H(s)\) becomes\begin {align} H(s) & =\frac {1}{\left ( \frac {s}{\Omega _{c}^{\prime }}-s_{0}\right ) \left ( \frac {s}{\Omega _{c}^{\prime }}-s_{1}\right ) \cdots \left ( \frac {s}{\Omega _{c}^{\prime }}-s_{N^{\prime }-1}\right ) }\nonumber \\ & =\frac {\left [ \Omega _{c}^{\prime }\right ] ^{\left ( N^{\prime }-1\right ) }}{\left ( s-\Omega _{c}^{\prime }s_{0}\right ) \left ( s-\Omega _{c}^{\prime }s_{1}\right ) \cdots \left ( s-\Omega _{c}^{\prime }s_{N^{\prime }-1}\right ) } \tag {7} \end {align}

The first part of the design is now complete. \(N^{\prime },\Omega _{c}^{\prime }\) is found and adjusted \(A_{p}\) or \(A_{s}\) depending on the requirements for excess tolerance. All the parts needed are found to design \(H\left ( s\right ) \) by finding its poles. Adjusted values must be used from now on.

3.5 Converting normalized low pass using frequency transformation

The above \(H(s)\) found in (7) was designed for frequency \(\Omega _{p}=1\) and \(\Omega _{s}=\frac {2\pi f_{s}}{2\pi f_{p}}\). The above \(H\left ( s\right ) \) is called the normalized transfer function. It is a low pass analog filter, which needs to be mapped to a low pass analog filter, but un-normalized based on the actual frequencies specified (Since the above was designed based on using \(\Omega _{p}=1\)).

Adjustment is now made to obtain \(H(s)\) for \(\Omega _{p}=2\pi f_{p}\) and \(\Omega _{s}=2\pi f_{s}\).

To do this, \(s\) above is replaced by \(\frac {s}{2\pi f_{p}}\). Equation (7) becomes\begin {align} H\left ( s\right ) & =\frac {\left [ \Omega _{c}^{\prime }\right ] ^{\left ( N^{\prime }-1\right ) }}{\left ( \frac {s}{2\pi f_{p}}-\Omega _{c}^{\prime }s_{0}\right ) \left ( \frac {s}{2\pi f_{p}}-\Omega _{c}^{\prime }s_{1}\right ) \cdots \left ( \frac {s}{2\pi f_{p}}-\Omega _{c}^{\prime }s_{N^{\prime }-1}\right ) }\nonumber \\ & \nonumber \\ & =\frac {\left [ \Omega _{c}^{\prime }\times 2\pi f_{p}\right ] ^{\left ( N^{\prime }-1\right ) }}{\left ( s-2\pi f_{p}\Omega _{c}^{\prime }s_{0}\right ) \left ( s-2\pi f_{p}\Omega _{c}^{\prime }s_{1}\right ) \cdots \left ( s-2\pi f_{p}\Omega _{c}^{\prime }s_{N^{\prime }-1}\right ) } \tag {8} \end {align}

The zeros of \(H(s)\) are located at \(\infty \) and there are \(N^{\prime }\) of them.

When simplifying the denominator above, the complex conjugate terms are multiplied with each others to obtain real coefficients.

4 Example designs

4.1 Example 1

Given

\(f_{p}=1000\) hz, \(f_{s}=2000\) hz, \(A_{p}=1\) db, \(A_{s}=20\) db, and Excess tolerance at stopband, determine \(H(s)\)

4.1.1 backward transformation

\begin {align*} \Omega _{p} & =1\text { rad/sec}\\ \Omega _{s} & =\frac {f_{s}}{f_{p}}=2\text { rad/sec} \end {align*}

4.1.2 Determining filter order \(N\)

From (4)\begin {align*} N & =\frac {\log \left [ \frac {\left ( 10^{\frac {A_{s}}{10}}-1\right ) }{\left ( 10^{\frac {A_{p}}{10}}-1\right ) }\right ] }{2\log \Omega _{s}}\\ & \\ & =\frac {\log _{10}\left [ \frac {\left ( 10^{\frac {20}{10}}-1\right ) }{\left ( 10^{\frac {1}{10}}-1\right ) }\right ] }{2\log _{10}2}=4.289\,4 \end {align*}

Hence \[ N^{\prime }=5 \]

4.2 Finding stables poles assuming \(\Omega _{c}=1\)

From (5), and since \(N^{\prime }=5\)\begin {align*} s_{k} & =\ e^{i\left ( \frac {\pi +2\pi k}{2N^{\prime }}+\frac {\pi }{2}\right ) }\\ & =e^{i\left ( \frac {\pi +2\pi k}{2\left ( 5\right ) }+\frac {\pi }{2}\right ) } \end {align*}

Find the poles

\(k\) \(s_{k}\)
\(0\) \(e^{i\left ( \frac {\pi }{10}+\frac {\pi }{2}\right ) }=-0.309+0.951i\)
\(1\) \(e^{i\left ( \frac {\pi +2\pi }{10}+\frac {\pi }{2}\right ) }=-0.809+0.587i\)
\(2\) \(e^{i\left ( \frac {\pi +4\pi }{10}+\frac {\pi }{2}\right ) }=-1.0\)
\(3\) \(e^{i\left ( \frac {\pi +6\pi }{10}+\frac {\pi }{2}\right ) }=-0.809-0.587i\)
\(4\) \(e^{i\left ( \frac {\pi +8\pi }{10}+\frac {\pi }{2}\right ) }=-0.309-0.951i\)

Hence from (6)\begin {align*} H(s) & =\frac {1}{\left ( s-s_{0}\right ) \left ( s-s_{1}\right ) \left ( s-s_{2}\right ) \left ( s-s_{3}\right ) \left ( s-s_{4}\right ) }\\ & \\ & =\frac {1}{\left ( s-\left ( -0.309\,02+0.951\,06i\right ) \right ) \left ( s-\left ( -0.809+0.587i\right ) \right ) \left ( s-\left ( -1\right ) \right ) }\times \\ & \frac {1}{\left ( s-\left ( -0.809-0.587i\right ) \right ) \left ( s-\left ( -0.309-0.951i\right ) \right ) } \end {align*}

4.2.1 Rescale the poles

Excess tolerance is in the stopband, hence from (6.3)\begin {align*} A_{s}^{\prime } & =10\log \left ( \Omega _{s}^{2N^{\prime }}\left ( 10^{\frac {A_{p}}{10}}-1\right ) +1\right ) \\ & =10\log _{10}\left ( 2^{2\left ( 5\right ) }\left ( 10^{\frac {1}{10}}-1\right ) +1\right ) =24.251\text { db} \end {align*}

Hence new \(\Omega _{c}^{\prime }\) is found from (6.4) \begin {align*} \Omega _{c}^{\prime } & =\frac {\Omega _{s}}{\left ( 10^{\frac {A_{s}^{\prime }}{10}}-1\right ) ^{\frac {1}{2N^{\prime }}}}\\ & \\ & =\frac {2}{\left ( 10^{\frac {24.251}{10}}-1\right ) ^{\frac {1}{2\left ( 5\right ) }}}=1.144 \end {align*}

Hence the above \(H\left ( s\right ) \) becomes (using equation 7 as reference)\begin {align*} H(s) & =\frac {1.1447^{5}}{\left ( s-1.144\left ( -0.309+0.951\, i\right ) \right ) \left ( s-1144\left ( -0.809+0.587 \, i\right ) \right ) \left ( s-1.144\left ( -1\right ) \right ) }\times \\ & \frac {1}{\left ( s-1.144\left ( -0.809-0.587 i\right ) \right ) \left ( s-1.1447\left ( -0.309-0.951\, i\right ) \right ) } \end {align*}

4.2.2 Convert normalized low pass using frequency transformation

replace \(s\) by \(\frac {s}{2\pi f_{p}}\), hence \(H\left ( s\right ) \) becomes (using equation 8 as reference), and noting that \(2\pi f_{p}=2\pi \left ( 1000\right ) =\allowbreak 6283.\,\allowbreak 2\)\begin {align*} H(s) & =\frac {\left ( 1.144\times 6283.2\right ) ^{5}}{\left ( s-1.144\times 6283.2\left ( -0.309+0.951 i\right ) \right ) }\times \\ & \frac {1}{\left ( s-1.144\times 6283.2\left ( -0.809+0.587 i\right ) \right ) \left ( s-1.144\times 6283.2\left ( -1\right ) \right ) }\times \\ & \frac {1}{\left ( s-1.144\times 6283.2\left ( -0.809-0.587 i\right ) \right ) \left ( s-1.144\times 6283.2\left ( -0.309-0.951i\right ) \right ) } \end {align*}

Now multiplying the complex conjugate terms with each others (to remove the complex terms) gives \[ H\left ( s\right ) =\frac {7192.4^{5}}{\left ( s+7192.2\right ) \left ( s^{2}+4445.2s+5.173\times 10^{7}\right ) \left ( s^{2}+11638.s+5.173\times 10^{7}\right ) }\]

5 References

  1. ECE 408 lecture notes chapter 12, by Dr James S. Kang. Cal Poly pomona, California, USA.
  2. Mostafa Shiva, Electrical engineering department, California state university, Fullerton, Lecture notes, handout H.
  3. John Proakis, Dimitris Manolakis, digital signal processing, 3rd edition