Kapitel 4: Digitale Systeme
Transcription
Kapitel 4: Digitale Systeme
ZHAW, DSV1, FS2009, Rumc, 4-1 Kapitel 4: Digitale Systeme Inhaltsverzeichnis 4.1. EINLEITUNG.....................................................................................................................2 4.2. LTD-SYSTEME .................................................................................................................3 4.3. DIFFERENZENGLEICHUNG............................................................................................3 4.4. IMPULSANTWORT UND FALTUNGSSUMME ................................................................5 4.5. Z-TRANSFORMATION .....................................................................................................7 4.6. ÜBERTRAGUNGSFUNKTION........................................................................................10 4.7. REALISIERUNGSSTRUKTUREN...................................................................................13 4.8. NICHTIDEALITÄTEN ......................................................................................................17 4.9. BEISPIEL „FESTKOMMA-REALISIERUNG EINES IIR-FILTERS“ .................................20 4.10. ANHANG MATLAB SPT-FUNKTIONEN .......................................................................22 4.11. ANHANG KORRELATION ............................................................................................24 Literatur- bzw. Quellenverzeichnis [1] M. Meier: „Signalverarbeitung“, ISBN 3-528-16955-9, Vieweg Verlag, Oktober 2000. [2] A.V. Oppenheim, R.W. Schafer, J. R. Buck: „Zeitdiskrete Signalverarbeitung“, 2., überarbeitete Auflage, ISBN 3-8273-7077-9, Pearson Studium, 2004. ZHAW, DSV1, FS2009, Rumc, 4-2 4.1. Einleitung Ein digitales System transformiert eine zeitdiskrete (oder digitale) Eingangszahlenfolge mit Hilfe eines Algorithmus in eine zeitdiskrete (oder digitale) Ausgangszahlenfolge, siehe Abbildung 4-1. zeitdiskrete Zahlenfolge x[n] Digitales System (Digitalfilter) y[n] zeitdiskrete Zahlenfolge Abbildung 4-1: Digitales System. In der digitalen Signalverarbeitung verwendet man statt dem Begriff „digitales System“ oft auch den Begriff „Digitalfilter“, auch wenn die Filterfunktion nicht im Vordergrund steht. Digitale Systeme haben gegenüber analogen Systemen grosse Vorteile, siehe [1]: • Reproduzierbarkeit: Das Systemverhalten wird durch exakte numerische Werte und nicht durch Schaltungskomponenten bestimmt, deren Werte innerhalb eines Produktionsloses streuen, mit der Zeit altern und/oder mit der Temperatur driften. • Flexibilität: Die numerischen Parameter lassen sich einfach modifizieren (konfigurieren) oder im Betrieb sogar verändern (adaptive Systeme). • Vorhersagbarkeit: Das digitale System kann in der Entwurfsphase sehr gut simuliert und in der Realisierungsphase dann „1:1“ implementiert werden. • Komplexität: Dank der Reproduzierbarkeit und der Vorhersagbarkeit können mit digitalen Systemen komplexe Algorithmen realisiert werden. • Integrierbarkeit: In einem digitalen System werden oft mehrere Anwendungen integriert. Natürlich gibt es auch Nachteile: • Geschwindigkeit: Auch wenn die digitale real-time Signalverarbeitung grosse Fortschritte macht, ist sie im Vergleich zur analogen Signalverarbeitung langsam. Filter bei hohen Frequenzen werden nach wie vor analog realisiert. • Preis: Für eine einzelne, einfache Anwendung ist die analoge Lösung kostengünstiger. In diesem Kapitel werden nur lineare, zeitdiskrete und zeitinvariante Systeme, sogenannte linear, time-invariant, discrete bzw. LTD-Systeme, betrachtet. Die Beschreibung im Zeit- und im Frequenzbereich ist eng mit der Beschreibung der analogen, linearen Systeme verwandt. Im Folgenden wird der Einfachheit halber die diskrete Zeit statt mit (nTs) nur noch mit [n] dargestellt, solange klar ist, wie gross die Abtastperiode Ts ist. ZHAW, DSV1, FS2009, Rumc, 4-3 4.2. LTD-Systeme Für ein lineares, zeitdiskretes System gilt das Superpositionsprinzip: aus x1[n] → y1[n] und x2[n] → y2[n] folgt: c1·x1[n] + c2·x2[n] → c1·y1[n] + c2·y2[n]. Diskrete Systeme bezeichnet man als zeitinvariant, wenn 2 gleiche, aber um k Abtastperioden zeitverschobene Eingangsfolgen in 2 gleiche, um k Abtastperioden zeitverschobene Ausgangsfolgen transformiert werden: x[n] → y[n] => x[n-k] → y[n-k] für alle k. Die Zeitinvarianz bedeutet, dass die Systemparameter bzw. -koeffizienten konstant bleiben. Ein LTD-System bezeichnet man als kausal, wenn der n-te Eingangswert x[n] nur den aktuellen Ausgangswert y[n] und die zukünftigen Ausgangswerte y[n+1], ... beeinflusst. Ein LTD-System bezeichnet man als stabil, wenn es beschränkte Eingangsfolgen (Ix[n]I<∞ für alle n) in beschränkte Ausgangsfolgen transformiert. 4.3. Differenzengleichung Ein lineares, zeitinvariantes, analoges System kann mit einer Differentialgleichung vollständig beschrieben werden. Ein LTD-System hingegen kann mit einer Differenzengleichung vollständig beschrieben werden. Das soll an einem kleinen Beispiel demonstriert werden. Beispiel Das in Abbildung 4-2 dargestellte analoge RC-Tiefpass-Filter kann mit der folgenden Differentialgleichung vollständig beschrieben werden τ⋅ dy(t) + y(t) = x(t) . dt R b0 τ = RC y[n] x[n] x(t) C y(t) Ts -a1 Abbildung 4-2: Analoges RC-Tiefpass-Filter und digitales Approximationsfilter. Die Differentialgleichung kann digital approximiert werden, indem man die kontinuierliche Zeit t durch die diskrete Zeit nTs ersetzt und für die Ableitung z.B. die folgende Näherung verwendet, dy(t) 1 ≈ [y(nTs ) − y((n − 1)Ts )] . dt Ts ZHAW, DSV1, FS2009, Rumc, 4-4 Das resultierende digitale Approximationsfilter kann jetzt mit der Differenzengleichung y[n] = b 0 ⋅ x[n] − a1 ⋅ y[n − 1] beschrieben werden, wobei b0=Ts/(Ts+τ) und a1=b0-1. In Abbildung 4-2 ist das Blockschaltbild des digitalen Approximationsfilters dargestellt. Es enthält alle Realisierungselemente eines LTD-Systems, nämlich einen Multiplikator mit einer Konstanten, einen Addierer und ein Verzögerungsglied (mit Ts bezeichnet). Die allgemeine Form der Differenzengleichung eines LTD-Systems lautet N M k =0 k =1 y[n] = ∑ b k ⋅ x[n − k] − ∑ a k ⋅ y[n − k] . (4.1) In Abbildung 4-3 ist das zugehörige Blockdiagramm dargestellt. x[n-1] x[n] Ts b0 x[n-N] ... Ts bN-1 b1 bN ... -aM -aM-1 Ts y[n-M] y[n] -a1 ... Ts y[n-1] Abbildung 4-3: Blockdiagramm eines LTD-Systems (ausgezogen: nicht-rekursiver bzw. Feed-Forward-Teil, gestrichelt: rekursiver bzw. Feed-Back-Teil). Man unterscheidet zwei Klassen von LTD-Systemen: • Nichtrekursive LTD-Systeme Alle Koeffizienten ak, k=1,...,M, in der Differenzengleichung (4.1) sind Null. Der in Abbildung 4-3 gestrichelt dargestellte Teil fällt weg. Der Ausgangswert y[n] hängt nur vom aktuellen Eingangswert x[n] und den N letzten Eingangswerten x[n-1], ..., x[n-N] ab. Die Impulsantwort ist endlich lang (siehe unten). Diese Systeme werden meistens Finite Impulse Response bzw. FIR-Filter genannt. Weitere Bezeichnungen: Transversalfilter, moving average bzw. MA-System, All-Zero-Filter. • Rekursive LTD-Systeme Der Ausgangswert y[n] hängt nicht nur vom aktuellen Eingangswert x[n] und den N letzten Eingangswerten x[n-1], ..., x[n-N] ab, sondern auch von den letzten M Ausgangswerten y[n-1], ..., y[n-M]. Die Impulsantwort ist normalerweise unendlich lang (siehe unten). Diese Systeme werden deshalb Infinite Impulse Response bzw. IIR-Filter genannt. Der in Abbildung 4-3 gestrichelt eingezeichnete Feedback-Teil wird manchmal auch als AutoRegressiv- bzw. AR-System oder als All-Pole-Filter bezeichnet. ZHAW, DSV1, FS2009, Rumc, 4-5 4.4. Impulsantwort und Faltungssumme Neben der Differenzengleichung gibt es bei den LTD-Systemen noch eine andere Beschreibung der Ein-/Ausgangscharakteristik. Wird ein LTD-System mit einem Kronecker-Delta- bzw. einem Einheitsimpuls ⎧1 wenn n = 0 ⎩0 wenn n ≠ 0 δ [ n] = ⎨ (4.2) angeregt, so reagiert das System mit der Impulsantwort h[n], siehe Abbildung 4-4. h[n] δ[n] LTDSystem 1 n n Abbildung 4-4: Impulsantwort eines LTD-Systems. Jede Eingangsfolge x[n] kann in der folgenden Form dargestellt werden (siehe [1]): x[n] = ∞ ∑ x[k ] ⋅ δ [n − k ] (4.3) k =−∞ Wegen der Linearität dürfen die Ausgangssignale, die durch die einzelnen Summanden in Gleichung (4.3) angeregt werden, einfach aufsummiert werden. Für den Eingang x0[n] = x[0]·δ[n] resultiert der Ausgang y0[n] = x[0]·h[n]. Wegen der Zeitinvarianz resultiert für den Eingang xk[n] = x[k]·δ[n-k] der Ausgang yk[n] = x[k]·h[n-k]. Die Summe über alle k ergibt dann das Ausgangssignal y[n] = ∞ ∑ k =−∞ x[k ] ⋅ h[n − k ] = ∞ ∑ h[k ] ⋅ x[n − k ] (4.4) k =−∞ Die Summen in diesem Ausdruck werden Faltungssummen genannt. Die zweite Summe folgt durch Variablensubstitution u=n-k in der ersten Summe. Für die Auswertung der Faltungssumme zum Zeitpunkt n muss entweder das Eingangssignal x[k] oder die Impulsantwort h[k] in der Zeit umgekehrt bzw. gefaltet und n Positionen nach rechts verschoben werden. Beispiel Das in Abbildung 4-2 dargestellte digitale RC-Tiefpass-Filter hat die Impulsantwort h[n] = {b 0 , − b 0 ⋅ a1, b 0 ⋅ a12 , − b 0 ⋅ a13 , ...} für n ≥ 0. (4.5) In Abbildung 4-5 ist die Berechnung des Ausgangswerts y[10] grafisch dargestellt, wobei die rechte Faltungssumme in Gleichung (4.4) verwendet wird und am Eingang der Einheitsschritt ZHAW, DSV1, FS2009, Rumc, 4-6 ⎧1 wenn n ≥ 0 ⎩0 wenn n < 0 ε [ n] = ⎨ anliegt. In Abbildung 4-5 ist auch die Schrittantwort dargestellt für den Fall τ=RC=1s (Grenzfrequenz 0.16 Hz) und Ts=0.1s (Abtastfrequenz fs=10 Hz) bzw. b0 = 0.0909 und a1 = -0.9091. y[10] Abbildung 4-5: Berechnung des Ausgangswerts y[n] mit der Faltung. Aus Abbildung 4-3 ist auch ersichtlich, dass die Impulsantwort des FIR-Filters (a-Koeffizienten sind Null) hFIR[n] = {b0, b1, ..., bN} für n=0, ..., N direkt durch die Filterkoeffizienten gebildet wird und endlich lang ist. (4.6) ZHAW, DSV1, FS2009, Rumc, 4-7 4.5. z-Transformation Wie die Laplace-Transformation bei den analogen Systemen spielt die z-Transformation bei der Beschreibung der digitalen Systeme im Bild- bzw. Frequenzbereich eine wichtige Rolle. Ausgehend von der Definition der Laplace-Transformation und Gleichung (2.2) erhält man die Laplace-Transformierte des zeitdiskreten Signals x[n] in der Form X (s) = ∞ x[n] ⋅ e− nsT ∑ n =−∞ s . (4.7) Mit Hilfe der Abkürzung z = esTs (4.8) kann man die Laplace-Transformierte eines zeitdiskreten Signals auch wie folgt darstellen X ( z) = ∞ x[n] ⋅ z − n . ∑ n =−∞ (4.9) X(z) bezeichnet man als z-Transformierte des zeitdiskreten Signals x[n]. Wie aus der Herleitung ersichtlich ist, handelt es sich bei der z-Transformation eigentlich nicht um eine neue Transformation, sondern um eine Anpassung der Laplace-Transformation für zeitdiskrete Signale bzw. um eine Erweiterung der Fouriertransformation für zeitdiskrete Signale, wie wir weiter unten noch sehen werden. Die z-Transformierte existiert nur in ihrem Konvergenzbereich. In diesem Kurs wird dieser Aspekt aber nicht weiter verfolgt, weil wir keine „kritischen“ Signale betrachten. Beispiel Die z-Transformierte des Kronecker-Delta- bzw. Einheitsimpulses lautet δ[n] (4.10) 1 Beispiel Mit Hilfe der z-Transformation der in Gleichung (4.5) gegebenen Impulsantwort erhält man die z-Übertragungsfunktion des digitalen RC-Tiefpass-Filters H(z) = b 0 ⋅ (1 - a1 ⋅ z -1 + a12 ⋅ z -2 -+ ...) = b0 1+a1 ⋅ z -1 wobei im zweiten Schritt die Summenformel für die geometrische Reihe 1 + q + q2 + ... = 1/(1-q), verwendet worden ist für den Fall IqI<1 bzw. Ia1I<1. (4.11) ZHAW, DSV1, FS2009, Rumc, 4-8 Es gibt einen einfachen Zusammenhang zwischen der Fourier- und der z-Transformierten. Die Fouriertransformierte X(f) erhält man aus der Laplace-Transformierten X(s), indem man s=j2πf setzt. Die Laplace-Transformierte X(s) erhält man aus der z-Transformierten X(z), indem man die Abkürzung (4.8) verwendet. Damit folgt: X ( f ) = X ( z = e j2π f Ts ) . (4.12) Interpretation Wenn man die z-Transformierte X(z) auf dem Einheitskreis z=ej2πfTs auswertet, erhält man die Fouriertransformierte X(f) des zeitdiskreten Signals. X(f) ist offensichtlich periodisch mit fs. Dieser Zusammenhang ist übrigens schon in Gleichung (2.6) hergeleitet worden. Beispiel: Der Frequenzgang H(f) des digitalen RC-Tiefpass-Filters kann aus der z-Übertragungsfunktion (4.11) wie folgt bestimmt werden: H(f) = b0 (4.13) 1 + a1 ⋅ e − j 2π f Ts In Abbildung 4-6 ist der Amplitudengang IH(f)I des digitalen RC-Tiefpass-Filters mit der Grenzfrequenz fg=100 Hz und der Abtastfrequenz fs=10 kHz dargestellt (τ=1/(2πfg) bzw. b0 = 0.06 und a1 = -0.94). Im Sperrbereich f>fg kann der Amplitudengang wie erwartet durch eine Gerade mit der Steigung -20 dB pro Dekade approximiert werden. Abbildung 4-6: Amplitudengang des digitalen RC-Tiefpass-Filters. Es existiert eine Formel für die inverse z-Transformation, nämlich x[n] = 1 2πj ∫ X ( z) ⋅ z C n −1 dz (4.14) ZHAW, DSV1, FS2009, Rumc, 4-9 Sie hat in der Praxis aber nur wenig Bedeutung. Das C in Gleichung (4.14) steht für „contour“ und stellt eine geschlossene Kurve um den Nullpunkt dar, die im Gegenuhrzeigersinn durchlaufen werden muss. Es gibt Alternativen, um aus der z-Transformierten X(z) das zeitdiskrete Signal x[n] zu bestimmen: • Integral-Inversionsformel (siehe [2]) • Fortlaufende Division Beispiel Das zeitdiskrete Signal h[n] der in Gleichung (4.11) gegebenen z-Transformierten H(z) kann man z.B. durch ausdividieren wie folgt bestimmen: b0·z : z+a1 = b0 - b0a1·z-1 + b0a12·z-2 ... b0z + b0a1 -b0a1 -b0a1-b0a12·z-1 b0a12·z-1 • Partialbruchzerlegung Wie wir gleich sehen werden, sind die Filter-Übertragungsfunktionen (UTF) H(z) rationale Funktionen mit einem Zähler- und einem Nenner-Polynom (in z bzw. z-1). Solche Funktionen kann man in Partialbrüche zerlegen, wobei für jeden Partialbruch eine geometrische Reihe im Zeitbereich resultiert [vgl. auch Gleichung (4.11)]. H ( z ) = A0 + Ak ⋅ z ∑ k =1 z − pk N h[n] = A0 ⋅ δ [n] + N ∑A ⋅p k =1 k n k (n ≥ 0) (4.15) Die z-Transformation besitzt folgende Eigenschaften, welche ausgehend von der Definitionsgleichung (4.9) der z-Transformierten bewiesen werden können: Linearität: a ⋅ x 1 [n] + b ⋅ x 2 [n] a ⋅ X1 (z) + b ⋅ X 2 (z) Zeitverschiebung: x[n − k] Faltung: x[n] ∗ h[n] z −k ⋅ X(z) X(z) ⋅ H(z) Multiplikation mit einer Exponentialfolge: a n ⋅ x[n] X(z/a) Multiplikation mit der Zeit: n ⋅ x[n] − z ⋅ dX(z)/dz ZHAW, DSV1, FS2009, Rumc, 4-10 4.6. Übertragungsfunktion Im Zeitbereich kann die Ausgangsfolge y[n] eines LTD-Systems durch Faltung der Eingangsfolge x[n] mit der Impulsantwort h[n] gebildet werden. Mit Hilfe der z-Transformation kann die Faltung im Zeitbereich in eine Multiplikation im z-Bereich transformiert werden, siehe Abbildung 4-7. Zeitbereich x[n] Bildbereich X(z) h[n] y[n] = x[n]*h[n] Y(z) = X(z)·H(z) H(z) Abbildung 4-7: Ein- und Ausgang eines LTD-Systems im Zeit- und Bildbereich. Die z-Transformierte H(z) der Impulsantwort h[n] wird (z-) Übertragungsfunktion des LTDSystems genannt. Aus Abbildung 4-7 ist ersichtlich, dass gilt H(z) = Y(z) . X(z) (4.16) Neben der Faltungsumme beschreibt auch die Differenzengleichung den Zusammenhang zwischen x[n] und y[n] am Ein- und Ausgang eines LTD-Systems. Wenn man die Differenzengleichung (4.1) z-transformiert, erhält man mit Hilfe der Zeitverschiebungseigenschaft der z-Transformation den Ausdruck N M k =0 k =1 Y(z) = ∑ b k ⋅ z −k ⋅ X(z) − ∑ a k ⋅z −k ⋅ Y(z) . (4.17) Aus den Gleichungen (4.16) und (4.17) kann man nun die Übertragungsfunktion in Funktion der Koeffizienten der Differenzengleichung bestimmen N Y(z) H(z) = = X(z) ∑b k =0 M k ⋅ z −k 1 + ∑ ak ⋅ z = −k b 0 + b1 ⋅ z −1 + ... + b N ⋅ z −N . 1+ a1 ⋅ z −1 + ... + a M ⋅ z −M (4.18) k =1 Die Übertragungsfunktion H(z) eines LTD-Systems ist eine rationale Funktion bestehend aus einem Zähler- und einem Nennerpolynom in z oder z-1, je nachdem, ob man Zähler und Nenner mit zN erweitert oder nicht. Jedes Polynom mit Grad n hat n Nullstellen. Die Nullstellen zk des Zählerpolynoms von H(z) nennt man die Nullstellen der Übertragungsfunktion und die Nullstellen pk des Nennerpolynoms von H(z) nennt man die Pole der Übertragungsfunktion. Für ein stabiles H(z) liegen die Pole innerhalb des Einheitskreises. ZHAW, DSV1, FS2009, Rumc, 4-11 Die Übertragungsfunktion H(z) eines LTD-Systems kann in die folgende Pol-NullstellenDarstellung gebracht werden: N H(z) = b ∏ (z − z k ∏ (z − p k ) ⋅ z M−N k =1 0 M (4.19) ) k =1 Den Frequenzgang H(f) des Digitalfilters erhält man durch Auswerten dieses Ausdrucks auf dem Einheitskreis, d.h. N H(f) = H(z = e j 2π f Ts )=b ∏ (e j 2π f Ts ∏ (e j 2π f Ts k =1 0 M − zk ) ⋅ e j2π f Ts (M−N) . (4.20) − pk ) k =1 Das Betragsspektrum N H(f) = K ∏e j2πfTs ∏e j2πfTs k =1 M k =1 − zk (4.21) − pk kann man bestimmen, indem man vom Punkt z=ej2πfTs auf dem Einheitskreis die Abstände zu den Nullstellen bzw. den Polen multipliziert bzw. dividiert. Dies soll an einem Beispiel veranschaulicht werden. Beispiel In Abbildung 4-8 ist das Pol-Nullstellen-Diagramm eines Hochpass-Filters in der z-Ebene dargestellt. Die Übertragungsfunktion H(z) lautet (z − 1) ⋅ (z − j) ⋅ (z + j) = K ⋅ (1 − z −1 + z −2 − z −3 ) , z3 H(z) = K ⋅ wobei K einen beliebigen Normierungsfaktor darstellt. z-Ebene s2 s4 f=fs/2 3 Pole P=ej2πfTs für f=fs/8 s1 s3 f=0 x[n] Ts K 1 Ts -1 Ts 1 -1 + y[n] Nullstelle Abbildung 4-8: Hochpass-Filter und Pol-Nullstellendiagramm der Übertragungsfunktion. ZHAW, DSV1, FS2009, Rumc, 4-12 Der Amplitudengang IH(f)I an der Stelle f=fs/8 kann mit den in Abbildung 4-8 dargestellten Abständen bestimmt werden, d.h. H ( f s / 8) = K⋅ s1 ⋅ s 2 ⋅ s 3 s 43 Weiter ist IH(f=0)I=0 und IH(f=±fs/4)I=0, weil in diesen Fällen eine der Strecken s1, s2 oder s3 die Länge Null aufweist. Aus der 2. Darstellung von H(z) oben und der Zeitverschiebungseigenschaft der z-Transformation folgt (für K=1), dass Y(z) = X(z) ⋅ (1 − z −1 + z −2 − z −3 ) y[n] = x[n] − x[n − 1] + x[n − 2] − x[n − 3] Diese Differenzengleichung kann mit dem in Abbildung 4-8 dargestellten FIR-Filter realisiert werden. Aus dem Blockdiagramm ist gut ersichtlich, dass ein konstantes Eingangssignal (DC) vollständig unterdrückt wird. In Abbildung 4-9 ist der Amplitudengang des Hochpass-Filters (für K=1) dargestellt. Abbildung 4-9: Amplitudengang des Hochpass-Filters. ZHAW, DSV1, FS2009, Rumc, 4-13 4.7. Realisierungsstrukturen LTD-Systeme können mit einer Differenzengleichung oder einer Übertragungsfunktion eindeutig beschrieben werden. Es gibt aber viele Möglichkeiten, LTD-Systeme zu realisieren bzw. zu implementieren. Im Idealfall sind die folgenden Realisierungsstrukturen alle gleichwertig. Im Realfall mit endlich genauen Filterkoeffizienten bzw. beschränkten Wortlängen verhalten sie sich aber unterschiedlich. Im Folgenden werden die Realisierungsstrukturen mit vereinfachten Signalflussgraphen wie in Abbildung 4-10 dargestellt. Ein Zweig mit einem beschrifteten Pfeil stellt eine Multiplikation mit einer Konstanten dar. Fehlt die Beschriftung, ist die Konstante 1. Addierer werden mit einem Plus-Symbol gekennzeichnet und Abzweigpunkte mit einem Punkt. Verzögerungselemente schliesslich werden mit einem Pfeil und dem Symbol z-1 dargestellt. b0 x[n] y[n] = b0·x[n] – a1·y[n-1] z -a1 -1 H(z) = b0 / (1+a1·z-1) Abbildung 4-10: Beispiel eines Signalflussgraphen. Die Differenzengleichung (4.1) kann einfach mit der in Abbildung 4-11 dargestellten Direktstruktur 1 realisiert werden. Die Direktstruktur 1 wird in der Praxis meistens nur für die Realisierung von FIR-Filtern verwendet. x[n] z-1 x[n-1] x[n-N] b0 + y[n] + -a1 b1 + bN + -aM z-1 y[n-1] y[n-M] Abbildung 4-11: Direktstruktur 1. Die beiden kaskadierten Teilsysteme in der Direktstruktur 1 dürfen vertauscht werden, ohne dass sich das Verhalten des Gesamtsystems verändert. Dann liegen aber die beiden Verzögerungsketten nebeneinander und können zu einer Kette zusammengefasst werden. Die resultierende Struktur in Abbildung 4-12 wird Direktstruktur 2 genannt. Im Vergleich zur Direktstruktur 1 hat sie nur noch die halbe Anzahl Speicherzellen. Die Anzahl Speicherzellen ist minimal, weil sie gleich der Filterordnung ist (ohne Beweis). ZHAW, DSV1, FS2009, Rumc, 4-14 x[n] + bo w[n] + z-1 -a1 y[n] + b1 + -aM bN w[n-N] Abbildung 4-12: Direktstruktur 2. Mit Hilfe der in Abbildung 4-12 eingezeichneten Werte w[n], w[n-1], ..., w[n-N] kann der Ausgangswert y[n] in Funktion des Eingangswerts x[n] wie folgt berechnet werden: Schritt 0: (zirkulärer) w-Buffer {w[n-1], ..., w[n-N]} mit Nullen initialisieren Schritt 1: w[n] = x[n] - a1·w[n-1] -…- aM·w[n-M] Schritt 2: y[n] = b0·w[n] +…+ bN·w[n-N] ausgeben Schritt 3: w-Buffer schieben, w[n] speichern (effizienter: im Ringbuffer ältesten Wert w[n-N] mit w[n] überschreiben) Schritt 4: neuen Eingangswert x[n+1] lesen und mit Schritt 1 weiterfahren Das Transponierungstheorem für (lineare) Signalflussgraphen besagt, siehe [1] oder [2]: „Werden alle Signalflussrichtungen umgekehrt, alle Addierer durch Knoten und alle Knoten durch Addierer ersetzt sowie Ein- und Ausgang vertauscht, dann bleibt die Übertragungsfuntkion H(z) unverändert.“ Durch Transposition der Direktstruktur 2 erhält man die in Abbildung 4-13 dargestellte transponierte Struktur 2. x[n] bo w1[n] b1 + -a1 + z-1 wN[n] bN y[n] z-1 + -aM Abbildung 4-13: Transponierte Direktstruktur 2. ZHAW, DSV1, FS2009, Rumc, 4-15 Mit Hilfe der in Abbildung 4-13 eingezeichneten Werte w1[n], w2[n], ..., wN[n] kann der Ausgangswert y[n] in Funktion des Eingangswerts x[n] wie folgt berechnet werden (Annahme M=N): y[n] = b0·x[n] + w1[n-1] w1[n] = b1·x[n] - a1·y[n] + w2[n-1] : wN-1[n] = bN-1·x[n] - aM-1·y[n] + wN[n-1] wN[n] = bN·x[n] - aM·y[n] Die in Gleichung (4.19) gegebene Pol-Nullstellen-Darstellung der Übertragungsfunktion H(z) ermöglicht eine weitere Realisierungsstruktur. Die komplexen Pole und Nullstellen treten immer in konjugiert komplexen Paaren auf. Diese Paare können so zusammengefasst werden, dass eine Kaskade von Biquads 2. Ordnung mit reellen Teil-Übertragungsfunktionen Hk(z), k=1,...,L, entsteht, d.h. H(z) = K ⋅ (z − z1 ) ⋅ (z − z1* ) (z − z L ) ⋅ (z − z*L ) ⋅⋅⋅ = K ⋅ H1 (z) ⋅⋅⋅ H L (z) . (z − p1 ) ⋅ (z − p1* ) (z − p L ) ⋅ (z − p*L ) (4.22) K ist ein beliebiger Verstärkungs- bzw. Abschwächungsfaktor. Bei der Realisierung von IIRFiltern ungerader Ordnung degeneriert ein Biquad zu einem System 1. Ordnung. Die einzelnen Biquads werden wieder in einer Direktstruktur realisiert, siehe Abbildung 4-14. x[n] K1 b10 b11 b12 ... + z-1 + z-1 + KL bL0 -a11 bL1 -a12 bL2 y[n] + z-1 + z-1 + -aL1 -aL2 Abbildung 4-14: Kaskadierung von Biquads in transponierter Direktform 2. Kaskaden- und Parallelstrukturen verhalten sich in Bezug auf Quantisierungseffekte (siehe unten) günstiger als Direktstrukturen. Die Quantisierung der Filterkoeffizienten beeinflusst nicht alle Pole und Nullstellen gleichzeitig wie bei der Direktstruktur, sondern immer nur die Paare eines Biquads, und hat damit einen kleineren Einfluss auf den Frequenzgang. Es gibt zahlreiche Möglichkeiten der Pol-Nullstellenpaarung für die Biquads einer Kaskade. In der Praxis wird normalerweise wie folgt verfahren: a) Der letzte Biquad enthält das komplexe Polpaar, das am nächsten beim Einheitskreis liegt, und das dazu nächstgelegene konjugiert komplexe Nullstellenpaar. b) Die übrig gebliebenen Pole und Nullstellen werden nach der Regel a) kombiniert. ZHAW, DSV1, FS2009, Rumc, 4-16 Mit Regel a) wird die grösste Überhöhung im Frequenzgang mit einer Abschwächung ganz in der Nähe der Überhöhung kompensiert. Damit wird der Dynamikbereich des Biquads eingeschränkt, was vorteilhaft ist, wenn die Signale nur mit endlicher Genauigkeit repräsentiert werden können. Die rationale Übertragungsfunktion H(z) in Gleichung (4.18) kann auch als Summe von Partialbrüchen dargestellt werden, siehe Gleichung (4.23). Wenn man wieder die konjugiert komplexen Pole zusammenfasst, kann die Übertragungsfunktion H(z) als Summe von reellen Biquads dargestellt und in einer Parallelstruktur implementiert werden. H(z) = Ak A*k + ∑ z − p*k k =1 z − p k L = L ∑H k =1 k (z) (4.23) FIR-Filter-Strukturen findet man durch Nullsetzen der Feedback-Koeffizienten ak, k=1,...,M, in den oben dargestellten Realisierungsstrukturen. In Abbildung 4-15 ist die Realisierung eines FIR-Filters mit der Direktstruktur 1 dargestellt, die häufig verwendet wird. z-1 x[n] b0 x[n-1] b1 + + z-1 ... bN-1 R=R+X·Y + x[n-N] bN + y[n] Abbildung 4-15: FIR-Filter-Realisierung in Direktstruktur 1. FIR-Filter mit mehr als 100 Taps (Abzapfpunkten) sind in der Praxis keine Seltenheit. In Echtzeit-Anwendungen ist es darum wichtig, dass die N Multiply-And-Accumulate (MAC) Operationen R=R+X·Y in Abbildung 4-15 sehr schnell ausgeführt werden können. Digitale Signalprozessoren sind darauf spezialisiert. Es gibt noch weitere Strukturen für spezielle Realisierungsvarianten von digitalen Systemen bzw. Digitalfiltern, siehe z.B. [2]. ZHAW, DSV1, FS2009, Rumc, 4-17 4.8. Nichtidealitäten Viele Nichtidealitäten bei der Realisierung von digitalen Systemen bzw. Digitalfiltern hängen mit der endlichen Wortlänge in der Zahlendarstellung zusammen. Festkomma-Zahlendarstellung Bei der Festkomma-Zahlendarstellung mit einem Wort der Länge W Bits wird die Position des binären Kommas fest vereinbart. Bei allen gängigen Signalprozessoren wird die Zweierkomplementdarstellung verwendet, da sie viele Vorteile hat (eindeutige Null, einfache Subtraktion, effiziente Algorithmen für die Multiplikation). In Abbildung 4.16 sind die am häufigsten verwendeten Kommastellen und die Gewichtung der einzelnen Bitpositionen für Zweierkomplement-Zahlen mit Vorzeichen und für Zweierkomplement-Zahlen ohne Vorzeichen dargestellt. signed integer bW-1 b0 W-1 20 -2 2W-2 2W-3 sign-bit bW-1 unsigned integer W-1 2 b0 W-2 2 20 W-3 2 b0 bW-1 signed fractional -20 2-1 2-(W-1) 2-2 sign-bit b0 bW-1 unsigned fractional 2-1 2-2 2-W 2-3 Abbildung 4-16: Festkomma-Zahlendarstellungsarten (Zweierkomplement). In Tabelle 4-1 sind für eine Wortlänge von W=3 Bits die Zahlenwerte für die vier oben erwähnten Formate aufgelistet. Vergewissern Sie sich, dass eine binäre Zahl b einfach negiert werden kann, indem alle Bits von b invertiert und 1 LSB addiert wird. [b2 b1 b0] [000] [001] [010] [011] [100] [101] [110] [111] signed integer 0 1 2 3 -4 -3 -2 -1 unsigned integer 0 1 2 3 4 5 6 7 signed fractional 0.00 0.25 0.50 0.75 -1.00 -0.75 -0.50 -0.25 unsigned frac. 0.000 0.125 0.250 0.375 0.500 0.625 0.750 0.875 Tabelle 4-1: Worte der Länge W=3 und entsprechende Festkomma-Zahlenwerte. ZHAW, DSV1, FS2009, Rumc, 4-18 Die Festkomma-Zahlendarstellung hat einen gewichtigen Vorteil. Die HW-Realisierung der Zahlenarithmetik braucht weniger Chipfläche als die HW-Realisierung der GleitkommaZahlenarithmetik. Deshalb sind Festkomma-DSP’s im Allgemeinen kostengünstiger als vergleichbare Gleitkomma-DSP’s. Die Festkomma-Zahlendarstellung hat aber die folgenden Nachteile: • Die Filterkoeffizienten müssen quantisiert bzw. können nicht beliebig genau dargestellt werden. Dadurch verändert sich die Lage der Pole und Nullstellen in der z-Ebene bzw. der resultierende Frequenzgang. Wie erwähnt sind die Kaskaden- und die Parallelstruktur weniger sensitiv auf die Koeffizientenquantisierung als die Direktstrukturen. Besonders selektive IIR-Filter mit Polen ganz nahe beim Einheitskreis können im Extremfall durch die Quantisierung der Filterkoeffizienten ausserhalb des Einheitskreises zu liegen kommen und so sogar instabil werden. • Die Additionsergebnisse können überlaufen. Die resultierenden nichtlinearen Verzerrungen können bei IIR-Filtern im Extremfall grosse Überlaufschwingungen anregen. Dagegen kann man Folgendes unternehmen: => Das Eingangssignal des Filters bzw. eines Biquads kann gezielt so skaliert bzw. abgeschwächt werden, dass die Addierer nicht mehr überlaufen können. Dadurch sinkt aber das Signal-zu-Quantisierungsgeräuschverhältnis (SNR). => Neuere DSP’s weisen ein grosses MAC-Register der Länge 2·W+8 Bits auf. Dadurch können viele Multiplikationsergebnisse ohne Rundungsfehler berechnet und temporäre Überlaufe toleriert werden. Die Zweierkomplement-Arithmetik hat nämlich die folgende, nützliche Eigenschaft: Werden mehrere Zweierkomplement-Zahlen addiert, deren Summe nicht überläuft, ist das Resultat der Zweierkomplement-Addition dieser Zahlen auch richtig, wenn Zwischensummen überlaufen. • Das Resultat der Multiplikation von 2 Zahlen der Länge W-Bits ist im Allgemeinen 2·WBits lang. Irgendwann muss deshalb eine Rundung vorgenommen werden. Das resultierende Rundungsrauschen kann bei IIR-Filtern im Extremfall zu Grenzschwingungen mit kleinen Amplituden führen, die z.B. bei der digitalen Audiosignalverarbeitung stören. Gleitkomma-Zahlendarstellung Die Gleitkomma-Zahlendarstellung soll am Beispiel des IEEE Standards 754/854 (32 Bit) dargestellt werden, siehe Abbildung 4-17. s b31 Exponent 1 ≤ E ≤ 254 b30 b23 Mantisse 1 ≤ M < 2 b22 hidden 1 Abbildung 4-17: IEEE 754/854 Gleitkomma-Zahlendarstellung. b0 ZHAW, DSV1, FS2009, Rumc, 4-19 Der (float)-Wert F der Gleitkomma-Zahl wird bestimmt durch F = (−1)s ⋅ M ⋅ 2E −127 , (4.24) wobei M die Mantisse und E den Exponenten darstellen. Beim IEEE-Standard ist die Mantisse 23 Bit lang, wobei man sich vor dem Komma eine 1 denkt. Dadurch nimmt die Mantisse Werte zwischen 1 und 2 an. Der Exponent ist 8 Bit lang. Die Werte E=0 und E=255 werden zur Darstellung von Null, keine Zahl (engl: nan bzw. not a number) und Unendlich reserviert. In Gleichung (4.24) liegt E deshalb im Bereich 1 ≤ E ≤ 254. Die grösste darstellbare Zahl ist etwas kleiner als 2·2254-127 ≈ 3.4·1038. Die kleinste darstellbare Zahl ist -1·21-127 ≈ -1.17·10-38. Der Dynamikbereich ist damit sehr gross und betragsmässig kleine Zahlen können sehr genau dargestellt werden. Das Überlaufproblem kann im Wesentlichen ausgeschlossen werden. Allerdings entstehen kleine Quantisierungsfehler beim Addieren und Multiplizieren von 2 Gleitkomma-Zahlen. ZHAW, DSV1, FS2009, Rumc, 4-20 4.9. Beispiel „Festkomma-Realisierung eines IIR-Filters“ Es soll ein Digitalfilter mit folgender Spezifikation entworfen und als Biquad-Kaskade mit quantisierten Filterkoeffizienten realisiert werden. Filterart (elliptisches) Tiefpass-Filter Filterordnung N=4 Abtastfrequenz fs=8000 Hz Eckfrequenz Durchlassbereich fDB=1000 Hz Eckfrequenz Sperrbereich fSB=1300 Hz max. Rippel im Durchlassbereich Rp=3 dB min. Rippel im Sperrbereich Rs=40 dB Wortbreite W=8 Bit Tabelle 4-2: Filterspezifikation Beispiel-Filter. In Abbildung 4-18 ist das Pol-Nullstellendiagramm der resultierenden UTF H(z) dargestellt, wobei die Filterkoeffizienten noch nicht quantisiert worden sind. Dieses IIR-Filter wird nun als Biquad-Kaskade realisiert. Die UTF H(z) wird dazu in die beiden Teil-UTF H1(z) und H2(z) faktorisiert, d.h. H(z) = k1·H1(z) · k2·H2(z) , (4.25) wobei die in Abbildung 4-18 dargestellte Pol-Nullstellenpaarung vorgenommen wird (Matlab Signal Processing Toolbox tf2sos). H2(z) H1(z) H1(z) H2(z) Abbildung 4-18: Pol-Nullstellendiagramm zu Beispiel-Filter. ZHAW, DSV1, FS2009, Rumc, 4-21 An den Ausgängen der beiden Biquad-Filter darf kein Wert grösser als 1 werden. Die beiden Skalierungsfaktoren k1 und k2 der beiden Biquad-Filter H1(z) und H2(z) in Gleichung (4.25) werden deshalb so gewählt, dass k1·max(IH1(f)I) < 1 und k1·k2· max(IH1(f)·H2(f)I) < 1 (4.26) Damit wird ein Überlauf unwahrscheinlich, aber nicht unmöglich. Die beiden Skalierungsfaktoren k1 und k2 können in die b-Koeffizienten der beiden Biquad-Filter integriert werden. In Abbildung 4-19 ist das Spektrum [dB] von k1·IH1(f)I und k2·IH2(f)I dargestellt, wobei nun alle Filterkoeffizienten auf W=8 Bit quantisiert worden sind. Im 2. Biquadfilter ist die Pol-Überhöhung gut erkennbar. Die Summe der beiden Teil-Spektren ergibt das Spektrum [dB] des Gesamt-Filters H(z). Es ist gut erkennbar, dass die Spezifikation aus Tabelle 4-2 erfüllt werden kann. In Abbildung 4-19 ist das Spektrum [dB] des Filters IHdir(f)I dargestellt, das ausgehend von der Filterspezifikation in Tabelle 4-2 nicht als Biquad-Kaskade, sondern in einer Direktform mit 8-Bit quantisierten Filterkoeffizienten realisiert worden ist. Man erkennt, dass die Spezifikationen aus Tabelle 4-2 nicht mehr erfüllt sind. Abbildung 4-19: Betragsspektren der beiden Biquadfilter, des Biquad-Kaskaden-Filters sowie eines äquivalenten Filters in Direktstruktur. ZHAW, DSV1, FS2009, Rumc, 4-22 4.10. Anhang Matlab SPT-Funktionen % Dokumentation % ==================================================================== help signal % listet alle Funktionen der Signal Processing Toolbox auf help filter % Hilfe für Funktion "filter" doc conv % Hilfe für Funktion "conv", nur >> doc Zugang zu Index-Suche % Filterung mit der Differenzengleichung (vgl. Beispiel S. 4-5/6) % ==================================================================== b=[0.0909]; % b-Filterkoeffizienten a=[1 -0.9091]; % a-Filterkoeffizienten x=ones(1,50); % Einheitssprung (Zeilenvektor) y=filter(b,a,x); % Filterung via Differenzengleichung 4.1 stem(y,'filled'); % Alternative zu plot, Stängel-Plot pause % Filterung mit der Faltungssumme (vgl. Beispiel S. 4-5/6) % ==================================================================== h=0.0909*(0.9091).^[0:50]; % Impulsantwort stem(h,'filled'); % Plot der Impulsantwort pause y=conv(x,h); stem(y,'filled'); pause % Faltung ZHAW, DSV1, FS2009, Rumc, 4-23 % Frequenzgang eines Filters (vgl. Beispiel S. 4-8) % ==================================================================== clear fs=10000; % Abtastfrequenz b=[0.06]; % Filterkoeffizienten, Zählerkoeffizienten der UTF a=[1 -0.94]; % Filterkoeffizienten, Nennerkoeffizienten der UTF [H,w]=freqz(b,a); % Frequenzgang, Achtung Normierung der Frequenz fachse=(w/pi)*(fs/2); % Entnormierung der Frequenzachse semilogx(fachse,20*log10(abs(H)),'LineWidth',2.0); % Bodediagramm grid; xlabel('Frequenz [Hz]'); % Beschriftung x-Achse ylabel('Amplitude [dB]') % Beschriftung y-Achse title('Bodediagramm RC-TP 1. Ordnung'); % Titel für Plot pause % Pol-Nullstellendiagramm (vgl. Beispiel S. 4-11) % ==================================================================== clear b=[1 -1 1 -1]; % Filterkoeffizienten FIR-Filter a=[1]; zplane(b,a); % Pol-Nullstellen-Darstellung pause % Transformation PN-Darstellung <==> UTF % ==================================================================== [Z,P,K]=tf2zpk(b,a) % UTF => PN-Darstellung, Bildschirmausgabe pause [num,den]=zp2tf(Z,P,K) % PN-Darstellung => UTF ZHAW, DSV1, FS2009, Rumc, 4-24 4.11. Anhang Korrelation Die unnormierte (Kreuz-) Korrelation zwischen den Signalen x[n] und y[n] ist wie folgt definiert rxy [m] = ∞ ∑ x[n] ⋅ y[n + m] . (4.27) n = −∞ Die Korrelation ist ein Mass für die Ähnlichkeit der beiden Signale x[n] und y[n]. Wenn y[n] = x[n] nennt man rxx[m] Autokorrelation. Sie gibt an, wie ähnlich sich ein Signal x[n] und eine um m Abtastintervalle verschobene Kopie von x[n] sind. Die Autokorrelation ist natürlich maximal wenn m=0 und entspricht dann der Signalleistung. In der Technik wird die Korrelation sehr häufig eingesetzt, z.B. um das endlich lange Signalmuster x[n] im unendlich langen Zeitsignal y[n] zu finden, oder die zeitliche Verschiebung zwischen einem Sendesignal x[n] und dem Empfangssignal y[n] zu bestimmen usw. In der Folge nehmen wir an, dass das Signal x[n] nur aus N+1 Werten im Zeitintervall n=0,…,N besteht, y[n] aber unendlich lang ist. Der Korrelationswert rxy[m] kann dann wie folgt bestimmt werden: rxy[m] = x[0]·y[m] + x[1]·y[m+1] + … + x[N]·y[m+N] . (4.28) In Abbildung 4-20 ist die Berechnung der Korrelation rxy[m] grafisch dargestellt. x[n] rxy [m] = ∞ ∑ x[n] ⋅ y[n + m] n = −∞ m·Ts y[n] x[n] … y[1] y[0] y[1] m·Ts … y[m] x[0] … y[m+N] … … x[N] rxy[m] = x[0]·y[m] + x[1]·y[m+1] + … + x[N]·y[m+N] Abbildung 4-20: Berechnung der Korrelation rxy[m]. ZHAW, DSV1, FS2009, Rumc, 4-25 Gleichung (4.28) kann aber wie folgt umformuliert werden: rxy[m] = x[N]·y[m+N] + x[N-1]·y[m+N-1] + … + x[0]·y[m+N-N] . (4.29) Die Korrelation rxy[m] kann also auch durch Faltung von y[n] mit dem zeitlich umgedrehten Signal x[N-n] = h[n], n=0,…,N, bestimmt werden. Damit kann die Korrelation rxy[m] mit dem in Abbildung 4-21 dargestellten FIR-Filter bestimmt werden. y[m+N-1] Ts y[m+N] b0 =x[N] y[m] Ts b1 =x[N-1] bN =x[0] + b0 b1 rxy[m] = x[-.] * y[.] bN Signal x[n] zeitlich umgedreht ! Matlab b = x(N:-1:1); rxy = filter(b,1,y); % oder xcorr() Abbildung 4-21: Bestimmung der Korrelation rxy[m] durch FIR-Filterung.