Leseprobe Digitale Signalverarbeitung Abschnitt aus Algorithmische Bausteine 3.3.1 Digitale Filter In den folgenden Abschnitten sollen die digitalen Filter im Gegensatz zum Abschnitt Grundlagen der DSV von den algorithmischen Aspekten her untersucht werden [14]. Dabei spielt die graphische Beschreibung des Filters durch ein digitales Netzwerk aus graphischen Symbolen eine wichtige Rolle. 3.3.1.1 Filternetzwerke In der Symbolsprache der Mathematik läßt sich ein digitales Filter durch seine Übertragungsfunktion H(z) = Y(z) X(z) = A 0 + A1 z-1 + A2 z-2 +... + Am z-m 1 + B1 z-1 + B2 z-2 +... + Bn z-n (3.26) beschreiben. Als Grundlage - für eine Realisierung sowie auch - für eine algorithmische Beschreibung ist zusätzlich die graphische Beschreibung des Filters durch ein digitales Netzwerk bestehend aus den graphischen Symbolen für die Addition, die Multiplikation mit einer Konstanten und die Verschiebung mit Verzögerern wichtig. Für eine Übertragungsfunktion H(z) können verschiedene digitale Netzwerke entwickelt werden. Man bezeichnet Netzwerke als kanonisch, wenn sie ein Minimum an Verzögerern enthalten. Das sind N Verzögerer bei einer Übertragungsfunktion mit einem Nennerpolynom vom Grade N. Die Übertragungsfunktion H(z) läßt sich z.b. für den Fall M = N = 4 als Produkt eines transversalen Faktors H1(z) = A0 + A1 z-1 + A2 z-2 + A3 z-3 + A4 z-4 = Y 1(z) X1(z) (3.27) und eines rein rekursiven Faktors H2(z) = 1 1 + B1 z-1 + B2 z-2 + B3 z-3 + B4 z-4 = Y 2(z) X2(z) (3.28) darstellen. Ein digitales Netzwerk für die transversale Übertragungsfunktion H1(z) ergibt sich, wenn Gl. (3.27) in der Form Y1(z) = A0 X1(z) +A1 X1(z) z-1 +A2 X1(z) z-2 +A3 X1(z) z-3 +A4 X1(z) z-4 (3.29)
geschrieben wird. Man erhält Y1(z) als Summe von Termen Ai X1(z) z-i. So entsteht das Filternetzwerk nach Bild 3.13. Bild 3.13. Filternetzwerk für ein transversales Filter 4. Ordnung Das Polynom der transversalen Übertragungsfunktion H1(z) läßt sich auch in der dem Horner Schema zugrundeliegenden Form schreiben, z.b. wieder für M = 4: H1(z) = (((A4 z-1 + A3) z-1 +A2) z-1 + A1) z-1 +A0 = Y 1(z) X1(z) (3.30) Durch Ausmultiplizieren gewinnt man Y1(z) = [[[A4 X1(z) z-1 + A3 X1(z)] z-1 + A2 X1(z)] z-1 + A1 X1(z)] z-1 + A0 X1(z), (3.31) woraus sich das Netzwerk nach Bild 3.14 ergibt. Bild 3.14. Filternetzwerk für ein transversales Filter 4. Ordnung auf der Grundlage der Polynomschreibweise nach Horner
Ein digitales Netzwerk für die rein rekursive Übertragungsfunktion H2(z) ergibt Bild 3.15. Filternetzwerk für die rein rekursive Übertragungsfunktion sich, wenn Gl. (3.28) durch Ausmultiplizieren auf die Form Y2(z) = X2(z) - B1 Y2(z) z-1 - B2 Y2(z) z-2 - B3 Y2(z) z-3 - B4 Y2(z) z-4 (3.32) gebracht wird. Daraus läßt sich das Netzwerk nach Bild 3.15 ablesen. Schreibt man das Nennerpolynom der Übertragungsfunktion H2(z) in der Horner'schen Form, so ergibt sich H2(z) = 1 (((B4 z-1 + B3) z-1 + B2) z-1 + B1) z-1 + 1 = Y 2(z) X2(z) (3.33) und ausmultipliziert Y2(z) = X2(z) - { [[[B4 Y2(z) z-1 + B3 Y2(z)] z-1 + B2 Y2(z)] z-1 + B1 Y2(z)] z-1 }. (3.34)
Daraus läßt sich ebenfalls ein zweites Filternetzwerk ablesen (s. Bild 3.16). Bild 3.16. Filternetzwerk für die rein rekursive Übertragungsfunktion H 2 (z) auf der Grundlage der Polynomschreibweise nach Horner Ein digitales Netzwerk für die Gesamtübertragungsfunktion H(z) läßt sich auf verschiedene Weise aus den Netzwerken für die Teilübertragungsfunktionen H1(z) und H2(z) zusammensetzen. Üblich ist die Konstruktion eines kanonischen Netzwerkes durch Kombination der Netzwerke aus Bild 3.14 und Bild 3.16, wie weiter unten gezeigt wird. 3.3.1.2 Grundalgorithmus Am Beispiel eines Filters 2. Ordnung mit der Übertragungsfunktion H(z) = Y(z) X(z) = A 0 + A1 z-1 + A2 z-2 1 + B1 z-1 + B2 z-2 (3.35) und der Differenzengleichung y(n) = A0 x(n)+ A1 x(n-1) + A2 x(n-2) - B1 y(n-1) -B2 y(n-2) (3.36) soll zunächst der Grundalgorithmus erläutert werden. Der gegenwärtige Wert der Ausgangsfolge y(n) wird berechnet aus dem gegenwärtigen Wert x(n) der Eingangsfolge sowie den vergangenen Werten der Eingangsfolge x(n-1), x(n-2) und der Ausgangsfolge y(n-1), y(n-2). Bei einer algoritmischen Darstellung des Rechenablaufs in Pascal sind diesen Werten und den Konstanten zunächst Speicherplätze zuzuordnen.
Dies geschieht für die Konstanten der Differenzengleichung mit der typisierten Konstantenvereinbarung CONST A0 : real = ; A1 : real = ; A2 : real = ; B1 : real = ; B2 : real = ; und für die Werte der Eingangs- und Ausgangsfolge mit der Variablenvereinbarung VAR x0 = : real ; { x(n) } x1 = : real ; { x(n-1) } x2 = : real ; { x(n-2) } y0 = : real ; { y(n) } y1 = : real ; { y(n-1) } y2 = : real ; { y(n-2) } Der jeweils neue Wert der Eingangsfolge werde dem Register eines A/D-Wandlers entnommen und der neu berechnete Wert der Ausgangsfolge zur Ausgabe in das Register eines D/A-Wandlers geschrieben. Dementsprechend wird für diese beiden Register vereinbart: VAR AD_Wandler : Word: DA_Wandler : Word; Für die Berechnung der Elemente der Ausgangsfolge ist die Differenzengleichung die Berechnungsvorschrift. Wesentlich dabei ist, daß der gegenwärtige Wert xo der Eingangsfolge zu dem um einen Schritt zurückliegenden Wert x1 wird, wenn der nächste Wert der Ausgangsfolge berechnet wird. Entsprechendes gilt für die weiter zurückliegenden Werte der Eingangs- und Ausgangsfolge. Das bedeutet, daß nach jeder Berechnung eines Wertes der Ausgangsfolge ein Umspeichern der Speicherinhalte zu erfolgen hat (s. Bild 3.17). Bild 3.17. Umspeichern der Speicherinhalte Damit erhält man für die Differenzengleichung die Pascal-Anweisungsfolge Start: x0 := AD_Wandler; y0 := A0 * x0 + A1 * x1 + A2 * x2 - B1 * y1 - B2 * y2 DA_Wandler := y0; x2 := x1; x1 := x0; y2 := y1; y1 := y0; GOTO := Start;
Dies ist der Algorithmus eines Digitalfilters 2. Ordnung. Vor dem Eintritt in die obige endlose Schleife sind noch die Anfangsbedingungen festzulegen. x1 := 0; x2 := 0; y1 := 0; y2 := 0; Im Zusammenhang mit der Implementierung des Algorithmus sollen noch 2 Aspekte in den folgenden Abschnitten behandelt werden: 1. Die Differenzengleichung ist in Teildifferenzengleichungen zu zerlegen; denn die Rechenwerke erledigen in einem Schritt eine Multiplikation und eine Addition. 2. Das Umspeichern der Registerinhalte ist nach Möglichkeit zu umgehen, da das Umspeichern bei hoher Filterordnungszahl sehr zeitaufwendig ist und viele Anwendungen dies wegen der hohen Anforderungen an die Rechengeschwindigkeit nicht zulassen.