Processing math: 100%

Tuesday, 22 July 2014

Butterworth IIR Filter

Whew! That's the groundwork in place, we're now able to move onto something a bit more interesting and hopefully get back into code at some point too.

In the previous example we looked at the general normalised second order low-pass filter function:

H(s)=1s2+sQ+1


When Q=12  this is known as the Butterworth function and gives a magnitude of 12 at the passband frequency (in the normalised function where ω=1 ). i.e.

|H(ω)|2=1(ω4+(1Q22)ω2+1)

|H(jω)|2ω=1=114+(222)12+1=12


The magnitude response for an analogue low-pass filter can be generalised into function of n2 of terms of ω in the denominator where the Q term in the 2nd order case has been brought into a general purpose coefficient Dn.

|H(jω)|2=1D2nωn+...+D2ω2+1


Note that as this is a squared function it only contains even terms, which can be written:

|H(jω)|2=11+D2nω2n


Graphing this function shows the Butterworth response giving the maximally flat magnitude response in the passband:



This clearly shows for the prototype filter, when the passband frequency is normalised ωωp=1 that the magnitude response is |H(jω)|2=12.



Translating this back from jωs domains gives the following transfer function:

11+D2nω2n|ωsH(s)H(s)=11+(1)ns2n


Giving 2n roots (poles) of the denominator:

1+(1)ns2n=0


s2n={1=ej2kπn odd1=ej(2k+1)πn even


Which gives us 2n poles:

sk=ej[(2k+n1)2n]π k=1,2,....,(2n)


Each of the poles have unitary magnitude and are spread evenly around the left side of the s-plane. In all cases (except n=1) there are a set of matched conjugate pairs and in odd orders an additional pole at s=jω.

The poles have the following polar angle and are positioned as follows on the s-plane where the circle has unitary magnitude:
















The denominator polynomial for the transfer function can then be described as:

H(s)=1DB(s)whereDB(s)=nk=1(ssk)=1+d1s+d2s2+...+dnsn


Where DB(s) is the Butterworth polynomial which can be expressed as a set of roots (sk) or expanded form which can be found in many places and has the following values expressed in factored or non-factored form.



The factored forms show sets of quadratics each representing the complex-conjugate pairs. The polynomial terms can be calculated by:

dk=cos((k1)π2)sin(kπ2n)dk1k=1,2,3...,n


So, with these numbers we just need to apply the s-plane to z-plane mapping, using the Bilinear Transform as described before to calculate the appropriate filter. Well, we didn't quite get to code tonight. Let's see how tomorrow evening goes.


No comments:

Post a Comment