Digitale Filter

16
1. Digitale Filter Allgemein unterscheidet man bei digitalen Filtern zwei unterschiedliche Strukturen: ‘Infinite Impulse Response’ (IIR) und ‘Finite Impulse Response’ (FIR) Filter. IIR-Filter enthalten Rückkopplungselemente, woraus sich theoretisch eine unendliche Impulsantwort ergibt. Bei den FIR-Filtern sind alle Rückkoppelungen gleich null und die Impulsantwort ist endlich. FIR-Filter berechnen die Faltungssumme von Eingangssignal und Impulsantwort des Filters. 1.1 IIR-Filter 1.1.1 Frequenzgang von Digitalen Filtern Bild 1: Direkte Form I eines digitalen Filters [Tietze-Schenk, S. 804] Bild 1 zeigt die direkte Form I eines IIR-Filters, die einen einzigen globalen Summierer am Ausgang besitzt. Die Zahl der Filterstufen gibt die Ordnung N des Filters an. Aus der Struktur des Filters läßt sich die Differenzengleichung direkt ablesen. yn xn k yn k k k N k k N [] [ ] [ ] 0 1 (1) Über die z-Transformation 1 1 Die z-Transformation des zeitdiskreten Eingangssignals ist definiert durch Xz xnz n n () []

Transcript of Digitale Filter

Page 1: Digitale Filter

1. Digitale Filter

Allgemein unterscheidet man bei digitalen Filtern zwei unterschiedliche Strukturen: ‘Infinite

Impulse Response’ (IIR) und ‘Finite Impulse Response’ (FIR) Filter. IIR-Filter enthalten

Rückkopplungselemente, woraus sich theoretisch eine unendliche Impulsantwort ergibt. Bei

den FIR-Filtern sind alle Rückkoppelungen gleich null und die Impulsantwort ist endlich.

FIR-Filter berechnen die Faltungssumme von Eingangssignal und Impulsantwort des Filters.

1.1 IIR-Filter

1.1.1 Frequenzgang von Digitalen Filtern

Bild 1: Direkte Form I eines digitalen Filters [Tietze-Schenk, S. 804]

Bild 1 zeigt die direkte Form I eines IIR-Filters, die einen einzigen globalen Summierer am

Ausgang besitzt. Die Zahl der Filterstufen gibt die Ordnung N des Filters an. Aus der Struktur

des Filters läßt sich die Differenzengleichung direkt ablesen.

y n x n k y n kkk

N

kk

N

[ ] [ ] [ ]

0 1

(1)

Über die z-Transformation 1

Y z X z z Y z zkk

kk

k

N

k

N

( ) ( ) ( )

10

(2)

ergibt sich schließlich die digitale Übertragungsfunktion. 1 Die z-Transformation des zeitdiskreten Eingangssignals ist definiert durch

X z x n z n

n

( ) [ ]

Durch diese Transformation wird beispielsweise die zeitdiskrete Folge x[n] = {–1, 0.5, 1} für n = {1, 2, 3} in die

Potenzfunktion X(z) = –z–1 + 0.5z–2 + z–3 übergeführt. Die z-Transformierte ist im Allgemeinen eine unendliche

Potenzreihe, wobei z eine komplexe Variable ist. Die zeitdiskrete Fourier-Transformation

X e x n ej j n

n

( ) [ ]

stellt einen Sonderfall der z-Transformation dar. Die z-Transformierte ausgewertet entlang des Einheitskreises in

der komplexen z-Ebene ist identisch der Fourier-Transformierten. [Oppenheim]

Page 2: Digitale Filter

H zY z

X z

z

z

kk

k

N

kk

k

N( )( )

( )

0

1

1(3)

Ein IIR-Filter ist stabil, wenn die Pole dieser Übertragungsfunktion – das sind die Nullstellen

des Nennerpolynoms – innerhalb des Einheitskreises der komplexen z-Ebene liegen. Diese

Bedingung entspricht der Stabilitätsbedingung von analogen Filtern, bei der die Pole in der

linken offenen s-Halbebene liegen müssen. Wie wir später noch zeigen werden, wird die linke

offene s-Halbebene durch die bilineare Transformation auf das Innere des Einheitskreises der

z-Ebene abgebildet.

x[n] y[n]

y[n] = x[n – 1]

Y(z) = z–1X(z) = e–jT X(z)

z–1

Bild 2: Ideales Zeitverzögerungsglied

Zur Berechnung des Frequenzganges betrachten wir zunächst einmal das ideale Zeitver-

zögerungsglied y[n] = x[n – 1] (Bild 2), an dessen Eingang die Sinusfolge x[n] = sin (nT)

angelegt wird. Aus der harmonischen Eingangsfolge ausgedrückt in Exponentialschreibweise

x n e j nT[ ]

folgt die harmonische Ausgangsfolge

y n e e e x n ej n T j nT j T j T[ ] [ ]( ) 1 .

Der Frequenzgang des Zeitverzögerungsgliedes H(z) = Y(z) / X(z) = z–1 lautet demnach

H j e j T( ) . (4)

Entsprechend läßt sich der Frequenzgang jedes beliebigen linearen, zeitunabhängigen

zeitdiskreten Systems durch Substitution von

z e ej T j f f A 1 2 / (5)

und anschließendem Auswerten des Resultats nach Betrag und Phase berechnen. Die

Frequenzgänge aller digitalen Filter ist periodisch mit fA = 1/T.

Für das durch Gleichung (3) beschriebene System ergibt sich der komplexe Frequenzgang

H je

e

kj kT

k

N

kj kT

k

N( )

0

1

1(6)

mit

H j H j e j H j( ) ( ) arg ( ) . (7)

Diese Gleichungen sind gleichermaßen für IIR- sowie für FIR-Filter gültig, da FIR-Filter

durch Nullsetzen der Rückkopplungsparameter k aus IIR-Filtern hervorgehen.

Page 3: Digitale Filter

1.1.2 Die bilineare Transformation

Mit Hilfe einer geeigneten Transformation ist es möglich eine im s-Bereich entworfene

analoge Übertragungsfunktion H(s) in den z-Bereich zu übertragen. Die Schwierigkeit besteht

dabei in der Aufgabe, einen ursprünglich unendlich ausgedehnten Frequenzbereich auf den

endlichen Frequenzbereich f = [–fA/2 ... fA/2] abzubilden (Abtasttheorem). Darüber hinaus muß

der Frequenzgang des Digitalfilters periodisch mit der Abtastfrequenz fA sein. Eine

Transformation die diese Eigenschaften besitzt ist die bilineare Transformation. Die

Arcustangens-Funktion führt analoge Kreisfrequenzen a in digitale Frequenzen d über.

d

a

T

T

2

2arctan (8)

Umgekehrt gilt:

a

d

T

T

2

2tan (9)

Durch diese Beziehungen wird der ursprüngliche analoge Frequenzgang insbesondere bei

höheren Frequenzen (d fA) stark gestaucht, wodurch sich auch die ursprünglichen

Grenzfrequenzen verschieben. Um diesen Effekt zu kompensieren müssen vor dem Entwurf

des analogen Filter-Prototypen die gewünschten digitalen Frequenzspezifikationen mit

Gleichung (9) in analoge umgerechnet werden.

Zur Berechnung der digitalen Übertragungsfunktion H(z) benötigt man nun eine Transfor-

mationsgleichung für die komplexe Frequenzvariable s. Diese Gleichung muß die Fähigkeit

besitzen die Pol- und Nullstellen in der s-Ebene in Pol- und Nullstellen in der z-Ebene

überzuführen. Die j Achse der s-Ebene wird dabei auf den Einheitskreis in der z-Ebene

abgebildet. Mit s = ja folgt aus (9):

s jT

Td2

2tan

Über die mathematische Beziehung j xe e

e e

e

e

jx jx

jx jx

jx

jxtan

1

1

2

2 und z e j Td 1 erhält man

sT

e

e T

z

z

j T

j T

d

d

2 1

1

2 1

1

1

1

(10)

Zur Berechnung der Filterkoeffizienten setzt man in den Frequenzgang des analogen Filters

H sb b s b s

a a s a s( )

0 1 22

0 1 22

die bilineare Transformation (10) ein. Der Koeffizientenvergleich mit dem allgemeinen

Frequenzgang eines IIR-Filters

H zz z

z z( )

0 11

22

11

221

liefert dann die gesuchten Filterkoeffizienten k und k.

Page 4: Digitale Filter

1.1.3 IIR-Biquads

Bei der Realisierung von IIR-Filtern muß aufgrund der Rückkopplung immer eine

Stabilitätsbetrachtung durchgeführt werden. Dazu müssen die Pole – das sind die Nullstellen

des Nennerpolynoms – bestimmt werden, was insbesondere bei Filtern höherer Ordnung nicht

immer problemlos ist. Aus diesem Grund beschränkt man sich gerne auf Filter zweiter

Ordnung, und setzt, genauso wie bei Analogfiltern, Filter höherer Ordnung durch kaskadierte

Filter zweiter Ordnung zusammen. Wegen der quadratischen Terme in Zähler und Nenner

werden diese Filter häufig ‘Biquad’-Filter genannt. Bild 3 zeigt die Struktur einer solchen

Filterstufe, die Übertragungsfunktion ist gegeben durch

H zz z

z z( )

0 11

22

11

221

. (11)

Bild 3: IIR-Filter 2. Ordnung (IIR-Biquad) [Tietze-Schenk, S. 839]

Zur Überprüfung der Stabilität betrachtet man die komplexen Nullstellen des Polynoms

z z21 2 0 . (12)

Als Bedingung dafür, daß beide Pole innerhalb des Einheitskreises liegen erhält man

1 2 und 1 21 1 .

Stellt man diesen Stabilitätsbereich graphisch dar, so erhält man das in Bild 4 gezeigte

Dreieck.

–1

–2 –1 1 2 1

1

2

1

stabil

instabil

Bild 4: Stabilitätsbereich eines IIR-Biquads

1.2 FIR-Filter

Bild 5: FIR-Filter mit einem globalen Summierer am Ausgang [Tietze-Schenk, S. 807]

Page 5: Digitale Filter

Die Koeffizienten k in den digitalen Filtern (Bild 1) bestimmen die Stärke der

Rückkopplung. Macht man sie zu Null, entfällt die Rückkoplung und man erhält als

Ausgangssignal exakt die Faltungssumme des Eingangssignals mit den N + 1 Koeffizienten

k. Aus diesem Grund gibt es bei FIR-Filtern keinerlei Stabilitätsprobleme. Die

Impulsantwort besitzt endliche Länge, sie entspricht den Koeffizienten k. Die Differenzen-

gleichung des in Bild 5 dargestellten FIR-Filters lautet

y n x n x n x n x n N x n kN kk

N

[ ] [ ] [ ] [ ] [ ] [ ] 0 1 2

0

1 2 (13)

Daraus ergibt sich die digitale Übertragungsfunktion

Y z z z z X zNN( ) ( ) 0 1

12

2

H zY z

X zzk

k

k

N

( )( )

( )

0

(14)

Mit z e j T 1 folgt weiters der komplexe Frequenzgang

H j ekj kT

k

N

( )

0

(15)

Diese Beziehung läßt sich vereinfachen wenn die Impulsantwort symmetrisch ist. Das

bedeuted k N k für gerade Symmetrie, bzw. k N k für ungerade. Ist Beispielsweise

die Bedingung für gerade Symmetrie erfüllt, so lassen sich jeweils zwei Terme mit gleichen

Koeffizienten zusammenfassen und ein gemeinsamer Phasenterm kann ausgeklammert

werden:

H j e N k Tj T Nk

k

N

( ) cos( )

2

0

2 (16)

Um den Amplitudengang zu berechnen braucht man nun lediglich die Summe in Gleichung

(16) zu berücksichtigen. Aus der Exponentialfunktion folgt die Phasenverschiebung: T N 2

Mit td

dgr

erhält man daraus für die Gruppenlaufzeit

t T Ngr 2 .

Die Erkenntnis aus dieser Ableitung ist, daß FIR-Filter mit symmetrischen Koeffizienten

immer eine lineare Phase und somit eine konstante Gruppenlaufzeit besitzen. Laufzeit-

Verzerrungen können also bei symmetrischen FIR-Filtern nicht auftreten, weswegen man

ausschließlich Filter mit symmetrischen Koeffizienten entwirft.

Die obige Ableitung läßt sich ebenso für ungerade Symmetrie durchführen. In diesem Fall

muß bei gerader Ordnung N der mittlere Koeffizient verschwinden, d.h. N/2 = 0 sein.

1.2.1 Interpolationsfilter für Oversampling

Als Beispiel für ein FIR-Filter soll ein digitales Interpolationsfilter für Oversampling (Über-

abtastung) entwickelt werden. Beim Oversampling wird ein mit konstanter Abtastrate fA

Page 6: Digitale Filter

bereitstehendes digitales Signal in ein Signal mit L-facher Abtastrate fA = LfA umgewandelt.

Durch diesen Vorgang wird die maximale Nutzsignalfrequenz ebenfalls um den Faktor L

erhöht (von fA/2 auf fA/2 = LfA/2). Der entscheidende Vorteil ist, daß durch diese Technik

das komplizierte und teure analoge Rekonstruktionsfilter am Ausgang des digitalen

Übertragungssystems (Error: Reference source not found) durch ein digitales Filter ersetzt

werden kann. Abschließend ist nur noch ein sehr einfaches analoges Filter erforderlich.

Betrachtet man z.B. L = 4 - faches Oversampling, so müssen zwischen den vorhandenen

Abtastwerten zunächst einmal L – 1 = 3 zusätzliche eingeschoben werden. Die Größe dieser

zusätzlichen Abtastwerte wird durch digititale Interpolation aus den bestehenden

Abtastwerten gewonnen. Aufgrund ihrer linearen Phase sind dazu FIR-Filter hervorragend

geeignet.

Lineare Interpolation

Bei der linearen Interpolation werden die L – 1 Zwischenwerte so bestimmt, daß sie genau auf

den Verbindungslinien zwischen je zwei bestehenden Samples liegen. Bild 6 zeigt, daß diese

Interpolation mittels Faltung von einem FIR-Filter durchgeführt werden kann. Die

erforderlichen Filterkoeffizienten, die ja bekanntlich der Impulsantwort entsprechen,

beschreiben eine symmetrische Dreieckfunktion. Die L – 1 eingefügten Zwischenwerte

wurden vor der Faltung zu Null gesetzt.a)

-3 -2 -1 0 1 2 3-0.2

0

0.2

0.4

0.6

0.8

1

FIR-Koeffizienten für lineare Interpolation

n

b)

5 10 15 20-0.2

0

0.2

0.4

0.6

0.8

1

n

Abtastratenerhöhung durch Eifügen von Nullen c)

5 10 15 20-0.2

0

0.2

0.4

0.6

0.8

1

n

Faltungssumme ergibt lineare Interpolation

Bild 6: Lineare Interpolation durch Faltung mit einer Dreieckfunktion; a) FIR-Koeffizienten; b)

Abtastwerte nach der Erhöhung der Abtastrate durch Einfügen von Nullen (o); c) Faltung

von a) und b) ergibt lineare Interpolation (*)

Obwohl die Koeffizienten dieses linearen Interpolationsfilters empirisch ermittelt wurden,

besitzt das resultierende System die typischen Eigenschaften von FIR-Filtern, wie lineare

Phase und Stabilität. Alleine der Frequenzgang ist noch nicht ideal, was zu deutlichen

Signalverzerrungen führt. In der Laborübung wird der resultierende Klirrfaktor anhand eines

MATLAB-Demonstrationsprogrammes gezeigt.

Interpolation mit einem idealen Tiefpaßfilter

Durch das zuvor beschriebene Einfügen der L – 1 Nullen wird die Nyquist-Frequenz um den

Faktor L erhöht. Im resultierenden Nutzfrequenzbereich von fA/2 = LfA/2 ist dadurch das

periodische Spektrum des abgetasteten Originalsignals mehrfach enthalten (Bild 7b). Ein

ideales Interpolationsfilter muß die Spektralanteile oberhalb der ursprünglichen Nyquist-

Frequenz von fA/2 entfernen, nur das Originalspektrum wird durchgelassen. Diese Filterung

Page 7: Digitale Filter

entspricht einer Multiplikation mit einer Rechteckfunktion im Frequenzbereich, so, wie es

bereits in Abschnitt Error: Reference source not found bei der Rekonstruktion des analogen

Signals beschrieben wurde.

Bild 7: Oversampling bei der DA-Umsetzung [Zölzer, S. 70]

Da die Multiplikation im Frequenzbereich einer Faltung im Zeitbereich entspricht, – der

Operation, die unser FIR-Filter durchführt – liegt es nahe, daß man die Filterkoeffizienten

durch inverse Fouriertransformation aus dem Frequenzgang des Filters bestimmt. [Tietze-

Schenk, S. 814ff.]; [ELRAD 7/96]. Die Impulsantwort, respektive die FIR-Koeffizienten

entsprechen der sinc-Funktion

n

n L

n L

sin( / )

/ . (17)

Die Funktion ist symmetrisch, woraus wieder ein linearer Phasengang resultiert, allerdings

erstreckt sie sich von n = [– ... ], was praktisch nicht realisierbar ist.

Eine Lösungsmöglichkeit besteht darin, die sinc-Funktion symmetrisch bei n = (N – 1)/2

abzuschneiden, wodurch man eine Impulsantwort mit N-Punkten erhält. Dieses Abschneiden

kann als Multiplikation der Impulsantwort mit einem Rechteck-Fenster angesehen werden.

Bild 8 zeigt die Auswirkung dieser Multiplikation auf den Frequenzgang des Tiefpaßfilters,

der keineswegs als ideal bezeichnet werden kann. Durchlaß- und Sperrbereich besitzen eine

große Welligkeit, außerdem ist die Sperrdämpfung nicht sehr gut.

Page 8: Digitale Filter

a)

0 5 10 15 20 25 30 35 40-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

n

41 Filterkoeffizienten b)

0 0.5 1 1.5 2

x 104

-100

-90

-80

-70

-60

-50

-40

-30

-20

-10

0Spektrum der Fensterfunktion

Frequenz [Hz]

c)

0 0.5 1 1.5 2

x 104

-100

-90

-80

-70

-60

-50

-40

-30

-20

-10

0Frequenzgang des FIR-Filters

Frequenz [Hz]

Bild 8: a)  Filterkoeffizienten (beschnittene sinc-Funktion); b)  Spektrum des Rechteckfensters;

c)  Frequenzgang des FIR-Filters und dessen Spezifikation (N = 41; L = 4; fA = 48 kHz)

Auch die Vergrößerung der Anzahl der Koeffizienten bringt nur geringfügige

Verbesserungen. Zwar steigt die Frequenzselektivität, Dämpfung im Sperrbereich und

Welligkeit werden hingegen kaum verbessert (Bild 9).a)

0 10 20 30 40 50 60 70 80-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

n

81 Filterkoeffizienten b)

0 0.5 1 1.5 2

x 104

-100

-90

-80

-70

-60

-50

-40

-30

-20

-10

0Spektrum der Fensterfunktion

Frequenz [Hz]

c)

0 0.5 1 1.5 2

x 104

-100

-90

-80

-70

-60

-50

-40

-30

-20

-10

0Frequenzgang des FIR-Filters

Frequenz [Hz]

Bild 9: a) Filterkoeffizienten; b) Spektrum der Rechteck-Fensterfunktion; c) Frequenzgang des FIR-

Filters und dessen Spezifikation (N = 81; L = 4; fA = 48 kHz)

Erhebliche Verbesserungen lassen sich erzielen, indem man die sinc-Koeffizienten mit den

von der FFT-Berechnung bekannten Fensterfunktionen bewertet (Bild 10). Auf Kosten der

Selektivität steigt die Dämpfung im Sperrbereich. Die Welligkeit wird auch stark verbessert.a)

0 5 10 15 20 25 30 35 40-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

n

41 Filterkoeffizienten b)

0 0.5 1 1.5 2

x 104

-100

-90

-80

-70

-60

-50

-40

-30

-20

-10

0Spektrum der Fensterfunktion

Frequenz [Hz]

c)

0 0.5 1 1.5 2

x 104

-100

-90

-80

-70

-60

-50

-40

-30

-20

-10

0Frequenzgang des FIR-Filters

Frequenz [Hz]

Bild 10: a) Sinc-Funktion (), Hamming-Funktion (– – –) und resultierende Filterkoeffizienten (–

+–); b) Spektrum der Hamming-Fensterfunktion; c) Frequenzgang des FIR-Filters und dessen

Spezifikation (N = 41; L = 4; fA = 48 kHz)

1.3 Realisierung von digitalen Filtern

1.3.1 FIR-Filter

Listing 1 zeigt die Implementierung eines FIR-Filters auf dem DSP56002. Die

Filterkoeffizienten werden in Zeile 12 per ‘include’-Befehl aus einer externen Datei geladen,

Page 9: Digitale Filter

die zum Beispiel mit dem Filterentwurfsprogramm ‘FIRFilt’ erzeugt werden kann. Das

Programm nützt in sehr anschaulicher Weise die Parallelverarbeitung des DSP. Betrachten

wir zunächst einmal welche Schritte zur Berechnung eines FIR-Filters durchzuführen sind.

Aus Bild 5 sehen wir, daß N + 1 (verzögerte) Eingangswerte mit N + 1 Filterkoeffizienten

multipliziert und anschließend aufsummiert werden müssen. Multiplikation und Summation

können auf elegante Weise von der ‘mac’-Operation erledigt werden (z.B. mac X0,Y0,A),

doch muß zuvor dafür gesorgt werden, daß jeweils der richtige Eingangswert und der

dazugehörige Koeffizient in die Registern X0 und Y0 geladen werden. Die Abtastwerte

stehen in einem Ringpuffer im internen X-Speicher des DSP und die Koeffizienten im Y-

Speicher zur Verfügung. Durch die Modulo-Adressierung ist gewährleistet, daß die

Adreßregister R0 bzw. R4 immer auf die im nächsten Schritt zu multiplizierenden Werte

zeigen. Zur Berechnung einer einzelnen FIR-Stufe sind demnach drei Befehle notwendig:1: move x:(r0)+,x0 ; Eingangs-Sample laden; Zeiger r0 erhöhen2: move y:(r4)+,y0 ; Koeffizient laden; Zeiger r4 erhöhen3: mac x0,y0,a ; Multiplikation und Summation

Unter Ausnutzung der Parallelverarbeitungsmöglichkeiten des DSP lassen sich diese drei

Befehle in nur einem Befehlszyklus durchführen. In Listing 1, Zeile 30 ist die dazu erfor-

derliche Befehls-Syntax ersichtlich. Der Befehl wird von dem voranstehenden ‘rep’-Befehl N-

mal wiederholt. Die abschließende (N+1-te) Multiplikation mit Runden erfolgt in Zeile 31.1: ; FIR_left.ASM2: ;3: ; FIR-Filterung des linken Kanals; Durchschleifen des rechten4: 5: order EQU 41 ; Anzahl der Filterkoeffizienten6:7: ORG x:$40 ; Verzögerungsspeicher im X-Bereich8: data1 BSM order,0 ; Speicher für Ringpuffer löschen9:10: ORG y:0 ; Koeffizienten im Y-Bereich11: koeffs 12: INCLUDE 'tp_ham.asm' ; Koeffizienten des FIR-Filters laden13: INCLUDE 'init_ain.asm' ; Routinen einbinden14:15: move #data1,r0 ; r0 zeigt auf Daten16: move #koeffs,r4 ; r4 zeigt auf Koeffizienten17: move #order-1,m0 ; Datenanzahl = order18: move #order-1,m4 ; Koeffizientenanzahl = order19:20: loop jset #2,x:SSISR,* ; auf nächsten Frame warten21: jclr #2,x:SSISR,*22:23: move x:LEFT_RX_BUFF,y0 ; linken Kanal einlesen24: move x:RIGHT_RX_BUFF,y1 ; rechten Kanal einlesen25:26: move y0,x:-(r0) ; in Datenspeicher schreiben27:28: clr a x:(r0)+,x0 y:(r4)+,y0 ; Ergebnis-Akku löschen; x0, y0 vorbereiten29: rep #order-1 ; Filterschleife30: mac x0,y0,a x:(r0)+,x0 y:(r4)+,y0 ; FIR-Berechnung31: macr x0,y0,a ; letzte Multiplikation, runden32:33: move a,x:LEFT_TX_BUFF ; Sample ausgeben34: move y1,x:RIGHT_TX_BUFF35:36: jmp loop ; und wieder von vorne

Listing 1: Implementierung eines FIR-Filters auf dem DSP56002

Page 10: Digitale Filter

1.3.2 IIR-Biquads

Die bilineare Transformation erlaubt uns Analogfilter 2. Ordnung in IIR-Biquads

umzurechnen (siehe Abschnitt 1.1.2). Als Beispiel für eine Implementierung soll eine

Bandsperre mit einer Mittenfrequenz von f0 = 1000 Hz und der Güte Q = 5 dienen. Für die

vier Filter-Grundtypen in zweiter Ordnung (Tiefpaß, Hochpaß, Bandpaß und Bandsperre)

lassen sich die IIR-Koeffizienten in geschlossener Form angeben und somit leicht berechnen

[Tietze-Schenk, S. 840], [ELRAD 11/96, S. 100]. Für unser Beispiel erhalten wir die

Koeffizienten:

0 = 0.987078 (b0) 1 = –1.95727 (–a1)

1 = –1.95727 (b1) 2 = 0.974157 (–a2)

2 = 0.987078 (b2)

Ein Problem entsteht bei den Koeffizienten 1 und 1, die größer als Eins, und deshalb im

Festkommaformat des DSP nicht darstellbar sind. Zur Abhilfe halbiert man sämtliche

Koeffizienten und macht von der Shift-Logik der ALU gebrauch. Diese tritt beim Auslesen

des Akkumulators in Aktion und sorgt für eine automatische Multiplikation mit 2 (siehe

Listing 2, Zeile 46 und 47). Eingeschaltet wird die Shift-Logik durch das Setzen von Bit 11

des Statusregisters (SR) (siehe Listing 2, Zeile 33). Bild 11 zeigt die Struktur des in Listing 2

realisierten Filters. Beachten sie bitte, daß im Listing und im dazugehörigen Bild andere

Bezeichnungen für die Filterkoeffizienten gewählt wurden als bei der Beschreibung der IIR-

Filter.

Bild 11: Struktur des in Listing 2 realisierten IIR-Biquads (Direkte Form I) [ELRAD 11/96, S. 101]

1: ; IIR_LEFT.ASM2: ; IIR Biquad-Filter Beispiel. Bandsperre f0 = 1000 Hz, Q = 53: ; ELRAD DSP-Reihe; Holger Strauss, 02/954: 5: ca1 EQU 1.95727 ; Filterkoeffizienten6: ca2 EQU -0.9741577: cb0 EQU 0.9870788: cb1 EQU -1.957279: cb2 EQU 0.98707810:11: ORG x:$1012: coeffs BSM 5 ; Koeffizienten im X-Speicher13: ORG x:coeffs14: DC cb0/215: DC cb1/216: DC cb2/217: DC ca1/218: DC ca2/219:20: ORG y:021: data_x BSM 2 ; x[n-1], x[n-2]

Page 11: Digitale Filter

22: data_y BSM 2 ; y[n-1], y[n-2]23: 24: INCLUDE 'init_ain.asm' ; Routinen einbinden25:26: move #coeffs,r0 ; r0 zeigt auf Koeffizienten27: move #4,m0 ; 5 Koeffizienten28: move #data_x,r4 ; r4 zeigt auf x[n-1], x[n-2]29: move #1,m4 ; 2 Speicherplätze30: move #data_y,r5 ; r5 zeigt auf y[n-1], y[n-2]31: move #1,m5 ; 2 Speicherplätze32:33: bset #11,sr ; Scale up34:35: loop jset #2,x:SSISR,* ; auf nächsten Frame warten36: jclr #2,x:SSISR,*37: 38: move x:LEFT_RX_BUFF,y1 ; linken Kanal filtern39:40: move x:(r0)+,x0 ; x0 = b0/241: mpy x0,y1,a x:(r0)+,x0 y:(r4)+,y0 ; a = b0/2*x[n]42: mac x0,y0,a x:(r0)+,x0 y:(r4),y0 ; a += b1/2*x[n-1]43: mac x0,y0,a x:(r0)+,x0 y:(r5)+,y0 ; a += b2/2*x[n-2]44: mac x0,y0,a x:(r0)+,x0 y:(r5),y0 ; a += a1/2*y[n-1]45: macr x0,y0,a y1,y:(r4) ; a += a2/2*y[n-2]46: move a,y:(r5) ; y[n-2] = 2*A (mit Shift)47: move a,x:LEFT_TX_BUFF ; Ergebnis schreiben (mit Shift)48:49: move x:RIGHT_RX_BUFF,x0 ; rechten Kanal durchschleifen50: move x0,x:RIGHT_TX_BUFF51:52: jmp loop ; und wieder von vorne

Listing 2: Realisierung eines IIR-Biquads

1.4 Gegenüberstellung IIR – FIR

Grundsätzlich läßt sich sowohl mit IIR- als auch mit FIR-Strukturen jeder beliebige,

gewünschte Frequenzgang realisieren. Systembedingt besitzen jedoch beide Typen gewisse

Vor- und Nachteile, die in Tabelle 1 aufgelistet sind [Tietze-Schenk, S. 850 f.].

Tabelle 1: Gegenüberstellung von FIR- und IIR-Filtern

Merkmal FIR-Filter IIR-Filter

Selektivitäterforderliche OrdnungAnzahl MAC-OperationenSpeicherplatzbedarflineare Phasekonstante GruppenlaufzeitStabilitäterforderliche Wortbreiteerforderliche KoeffizientengenauigkeitGrenzzyklenadaptives Filter

geringhochvielehochproblemlosproblemlosunbedingtmäßigmäßigkeinemöglich

hochniedrigwenigegeringkaum möglichkaum möglichbedingthochhochvorhandenkaum möglich