Günter Spahlinger Algorithmen und Schaltungen zur Signalverarbeitung Manuskript zur gleichnamigen Vorlesung an der Universität Stuttgart Algorithmen und Schaltungen zur Signalverarbeitung Systemtheorie Signaldarstellung Hardwarekonzepte Signalprozessoren c Günter Spahlinger, 1989, 2009, 2014 Reproduktion des Inhalts nur mit Genehmigung des Verfassers. Für fehlerhafte Angaben und deren Folgen wird keine Haftung übernommen. ii Inhaltsverzeichnis 1 Signale und Systeme 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 Zeitkontinuierliche Signale und Systeme . . . . . . . . . . . . . . . . . 1.1.1 Determinierte Signale . . . . . . . . . . . . . . . . . . . . . . 1.1.2 Lineare kontinuierliche Systeme mit determinierten Signalen . . 1.1.3 Stochastische Signale . . . . . . . . . . . . . . . . . . . . . . . 1.1.4 Lineare, kontinuierliche Systeme mit stochastischen Signalen . Zeitdiskrete Signale und Systeme . . . . . . . . . . . . . . . . . . . . . 1.2.1 Determinierte Signale . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Lineare diskrete Systeme mit determinierten Signalen . . . . . 1.2.3 Stochastische Signale . . . . . . . . . . . . . . . . . . . . . . . 1.2.4 Lineare diskrete Systeme mit stochastischen Signalen . . . . . . Multivariablensysteme . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Determinierte Signale . . . . . . . . . . . . . . . . . . . . . . 1.3.2 Stochastische Signale . . . . . . . . . . . . . . . . . . . . . . . Umwandlung zeitkontinuierlicher Signale in zeitdiskrete Signale . . . . 1.4.1 Der allgemeine lineare und zeitrasterinvariante Abtaster . . . . 1.4.2 Der Punktabtaster . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.3 Punktabtastung spezieller Spektren . . . . . . . . . . . . . . . 1.4.4 Synchrone Punktabtastung korrelierter Rauschsignale . . . . . . 1.4.5 Abgetastetes farbiges Rauschen . . . . . . . . . . . . . . . . . Umwandlung zeitdiskreter Signale in zeitkontinuierliche Signale . . . . 1.5.1 Der allgemeine lineare und zeitrasterinvariante Impulsformer . . 1.5.2 Der ideale Impulsformer . . . . . . . . . . . . . . . . . . . . . 1.5.3 Der Rechteck-Impulsformer . . . . . . . . . . . . . . . . . . . 1.5.4 Kausaler Rechteck-Impulsformer . . . . . . . . . . . . . . . . Die Stufenübertragungsfunktion . . . . . . . . . . . . . . . . . . . . . Systemanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7.1 Analyse linearer kontinuierlicher Systeme . . . . . . . . . . . . 1.7.2 Analyse diskreter Systeme . . . . . . . . . . . . . . . . . . . . 1.7.3 Kontinuierliche Systeme mit treppenförmigen Eingangssignalen 1.7.4 Auswertung der Übertragungsfunktion . . . . . . . . . . . . . . Simulation von Systemen . . . . . . . . . . . . . . . . . . . . . . . . . 1.8.1 Diskrete Systeme . . . . . . . . . . . . . . . . . . . . . . . . . 1.8.2 Kontinuierliche Systeme . . . . . . . . . . . . . . . . . . . . . 1.8.3 Gemischte Systeme . . . . . . . . . . . . . . . . . . . . . . . . Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 4 4 4 5 6 6 7 7 8 9 10 10 12 13 14 14 15 16 16 17 18 19 20 21 22 22 24 24 25 25 26 iii Inhaltsverzeichnis 1.9.1 Zeitvariante SC-Schaltung . . . . . 1.9.2 Analyse der Schaltung . . . . . . . 1.9.3 Aufbau des Simulationsprogramms 1.10 Übungsaufgaben zu Kapitel 1 . . . . . . . 2 2.2 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Festkommaarithmetik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Binäre Kodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Vorzeichen-Betrags-Darstellung . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 Zweierkomplement-Kodierung . . . . . . . . . . . . . . . . . . . . . . . . 2.1.4 Binäres Zahlensystem mit negativer Basis . . . . . . . . . . . . . . . . . . 2.1.5 Umwandlung von binären Zahlen mit positiver Basis in Zahlen mit negativer Basis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.6 Vorzeichenbehaftete Kodes . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.7 Einfacher Booth-Kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.8 Erweiterter Booth-Kode . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.9 Der CSD-Kode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gleitkommaarithmetik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Mantisse in Vorzeichen-Betragsdarstellung . . . . . . . . . . . . . . . . . 2.2.2 Exponent in Zweierkomplement-Darstellung . . . . . . . . . . . . . . . . 2.2.3 Exponent in Exzess-Kodierung . . . . . . . . . . . . . . . . . . . . . . . . Übungsaufgaben zu Kapitel 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 36 36 37 . . . . . . . . . . 37 38 38 39 40 41 42 42 42 43 3.3 3.4 3.5 3.6 3.7 Die logischen Funktionen . . . . . . . . . . . . . . . . Addition binärer Zahlen . . . . . . . . . . . . . . . . . 3.2.1 Volladdierer in CMOS-Technik . . . . . . . . 3.2.2 Addierwerke mit seriellem Übertrag . . . . . . 3.2.3 Addierwerke mit parallelem Übertrag . . . . . 3.2.4 Mehrfachaddierer . . . . . . . . . . . . . . . . 3.2.5 Akkumulierwerke . . . . . . . . . . . . . . . Schiebewerke für binäre Zahlen . . . . . . . . . . . . Prioritätsenkoder . . . . . . . . . . . . . . . . . . . . Normierwerke . . . . . . . . . . . . . . . . . . . . . . Multiplizierer . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Kodewandler . . . . . . . . . . . . . . . . . . 3.6.2 Serielle Multiplizierwerke . . . . . . . . . . . 3.6.3 Parallele Multiplizierwerke . . . . . . . . . . . Analog-Digital-Wandler . . . . . . . . . . . . . . . . 3.7.1 Wägeverfahren . . . . . . . . . . . . . . . . . 3.7.2 Parallel-Wandler . . . . . . . . . . . . . . . . 3.7.3 Quantisierung . . . . . . . . . . . . . . . . . . 3.7.4 Signal-Rausch-Verhältnis . . . . . . . . . . . . 3.7.5 Überabtastung . . . . . . . . . . . . . . . . . 3.7.6 Überabtastung mit quantisierter Rückkopplung 26 26 28 33 35 Rechenschaltungen 3.1 3.2 iv . . . . Zahlendarstellung und Codierung 2.1 3 . . . . 45 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 47 47 53 54 54 55 55 56 59 60 61 63 64 65 65 66 67 69 69 70 Inhaltsverzeichnis 3.8 3.9 4 3.7.7 Sigma-Delta-Wandler . . . . . . . . . 3.7.8 Anwendungsbeispiele . . . . . . . . . DA-Wandler . . . . . . . . . . . . . . . . . . . 3.8.1 Wandler mit schaltbaren Stromquellen . 3.8.2 Wandler mit schaltbaren Widerständen 3.8.3 Wandler mit Überabtastung . . . . . . Übungsaufgaben zu Kapitel 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Signalprozessoren 4.1 4.2 4.3 4.4 Aufbau von Signalprozessoren . . . . . . 4.1.1 Arithmetik-Einheit . . . . . . . . 4.1.2 Adress-Generator . . . . . . . . . 4.1.3 Programmsteuerwerk . . . . . . . 4.1.4 Bedingungslogik . . . . . . . . . 4.1.5 Instruktionsdekoder . . . . . . . . 4.1.6 Register-File . . . . . . . . . . . 4.1.7 Daten- und Programmspeicher . . 4.1.8 Peripherie-Einheiten . . . . . . . 4.1.9 Takterzeugung und Steuerung . . 4.1.10 Prozessorbusse . . . . . . . . . . Beispiele industrieller Signalprozessoren . 4.2.1 Blockdiagramm des TMS 32020 . 4.2.2 Blockdiagramm eines ADSP 2100 Programmierung . . . . . . . . . . . . . 4.3.1 FIR-Filter mit TMS32020 . . . . 4.3.2 FIR-Filter mit ADSP2100 . . . . Entwicklungswerkzeuge . . . . . . . . . 4.4.1 Compiler . . . . . . . . . . . . . 4.4.2 Assembler . . . . . . . . . . . . 4.4.3 Linker . . . . . . . . . . . . . . . 4.4.4 Simulator . . . . . . . . . . . . . 4.4.5 Emulator . . . . . . . . . . . . . 4.4.6 PC-Entwicklungskarten . . . . . 73 73 74 74 74 75 76 79 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 80 83 84 84 85 85 85 85 86 86 86 86 87 91 91 92 93 94 94 94 94 95 95 v Inhaltsverzeichnis vi 1 Signale und Systeme Der erste Teil dieses Kapitels enthält eine Zusammenfassung systemtheoretischer Grundlagen, auf denen die folgenden Abschnitte aufbauen. Zur Vertiefung eignen sich einschlägige Lehrbücher, wie beispielsweise [1] oder [2]. 1.1 Zeitkontinuierliche Signale und Systeme 1.1.1 Determinierte Signale Zeitkontinuierliche Signale sind kontinuierliche Funktionen der Zeit. Ein zeitkontinuierliches Syx 0 .t/ ✻ ✲ t Bild 1.1: Zeitkontinuierliches Signal stem verarbeitet zeitkontinuierliche Signale (Bild 1.1). Die Kenngrößen (Zeitfunktionen, Spektren, Systemfunktionen usw.) kontinuierlicher Systeme und Signale werden im Gegensatz zu den später eingeführten diskreten Kenngrößen mit einem Strich (0 ) bezeichnet. Fouriertransformation Zu jeder Zeitfunktion x 0 .t / gehört ein Spektrum X 0 .j!/ (Fourierintegral): 0 X .j!/ D Z1 x 0 .t /e j!t dt (1.1) 1 X 0 .j!/ ist komplexwertig. ! D 2f ist die Kreisfrequenz, f ist die natürliche Frequenz. Die Verallgemeinerung p D j! vollführt den Übergang in die komplexe p-Ebene. Falls das Fourierintegral 1 1 Signale und Systeme (1.1) nicht konvergiert, muß der Übergang zur Distributionentheorie vollzogen werden. Dabei wird die ı-Funktion eingeführt: Z1 ı.t t0 /g.t /dt D g.t0 / (1.2) 1 (Ausblendeigenschaft). Das Fourierintegral der ı-Funktion wird damit: Z1 j!t ı.t /e dt D 1 (1.3) 1 Rücktransformation Zu jedem Spektrum X 0 .j!/ ergibt sich die Zeitfunktion über die Rücktransformationsformel: 1 x .t / D 2 0 Z1 X 0 .j!/e j!t d! (1.4) 1 Durch die Rücktransformation läßt sich eine weitere Definition für die ı-Funktion aufstellen: 1 ı.t / D 2 Z1 e j!t d! (1.5) 1 Symbolische Darstellung der Transformation: F x 0 .t / X 0 .j!/ (1.6) Für die ı-Funktion gilt: F 1 ı.t / (1.7) 1.1.2 Lineare kontinuierliche Systeme mit determinierten Signalen Ein Signal x 0 .t / mit dem Spektrum X 0 .j!/ wirke auf den Eingang eines linearen, zeitinvarianten Systems (Bild 1.2). Am Ausgang wird das Signal y 0 .t / mit dem Spektrum Y 0 .j!/ beobachtet. Es gilt: Y 0 .j!/ D H 0 .j!/X 0 .j!/ (1.8) Dabei heißt H 0 .j!/ die Systemfunktion oder Übertragungsfunktion des Systems. Die Funktion h0 .t / mit F h0 .t / 2 H 0 .j!/ (1.9) 1.1 Zeitkontinuierliche Signale und Systeme ❜ x 0 .t/ F F X 0 .j!/ H 0 .j!/ y 0 .t/ ❜ Y 0 .j!/ Bild 1.2: Lineares, kontinuierliches System mit determiniertem Eingangssignal ist die Impulsantwort des Systems, die als Reaktion auf den Diracstoß ı.t / auftritt. Damit ist eine Systembeschreibung im Zeitbereich möglich (Faltungsintegral): y 0 .t / D Z1 h0 .t y 0 .t / D Z1 h0 . /x 0 .t /x 0 . /d (1.10) 1 (1.11) /d 1 Symbolische Darstellung der Faltung: y 0 .t / D h0 .t / x 0 .t / (1.12) 1.1.3 Stochastische Signale Gegeben sei ein stochastisches Signal mit der (unbekannten) Zeitfunktion x 0 .t /. Die Autokorrelationsfunktion ist definiert durch ZT 1 Rxx . / D lim T !1 2T x 0 .t /x 0 .t C /dt (1.13) T Die Fouriertransformierte der Autokorrelationsfunktion ist das Leistungsdichtespektrum F Sxx .j!/ Rxx . / Sxx .j!/ D Z1 Rxx . /e j! d (1.14) 1 Aus dem Leistungsdichtespektrum läßt sich die mittlere Signalleistung errechnen: 1 Nx D 2 Z1 Sxx .j!/d! (1.15) 1 3 1 Signale und Systeme 1.1.4 Lineare, kontinuierliche Systeme mit stochastischen Signalen Am Eingang eines Systems mit der Übertragungsfunktion H 0 .j!/ wirke ein Signal x 0 .t / mit dem Leistungsdichtespektrum Sxx .j!/ (Bild 1.3). Dann hat das Ausgangssignal y 0 .t / das Leistungs❜ x 0 .t/ y 0 .t/ H 0 .j!/ Sxx .j!/ Syy .j!/ ❜ Bild 1.3: Lineares, kontinuierliches System mit stochastischem Eingangssignal dichtespektrum Syy .j!/ D Sxx .j!/jH 0 .j!/j2 (1.16) 1.2 Zeitdiskrete Signale und Systeme 1.2.1 Determinierte Signale Unter einem zeitdiskreten Signal versteht man eine Folge von Signalwerten (Zahlenwerten) fx./g; D 0; ˙1; ˙2; : : : (Bild 1.4). x./ ❜ ❜ ✻ ❜ ❜ ❜ ❜ ❜ ❜ ❜ ✲ Bild 1.4: Zeitdiskretes Signal ´-Transformation: Zu jedem zeitdiskreten Signal existiert eine zweiseitige ´-Transformierte: X.´/ D 4 1 X D 1 x./´ (1.17) 1.2 Zeitdiskrete Signale und Systeme und eine einseitige ´-Transformierte X.´/ D 1 X x./´ (1.18) D0 Die Transformationsbeziehung zwischen einer Folge und ihrer ´-Transformierten wird durch dieses Symbol ausgedrückt: Z X.´/ x./ Bilinear-Transformation Die Abbildung 1Cw ´ 1 I wD 1 w ´C1 überführt die Funktion X.´/ in eine Funktion XQ .w/ (Bilinear-Transformation): 1Cw Q X .w/ D X 1 w (1.19) ´D (1.20) Für die Beziehung zwischen x./ und XQ .w/ steht das Symbol W x./ XQ .w/ Rücktransformationsformeln Die Rücktransformationsformeln lauten: I 1 X.´/´ 1 d´ x./ D 2j Z1 1 C jv 2 1 Q dv X .j v/ x./ D 2 1 C v2 1 j v (1.21) (1.22) 1 1.2.2 Lineare diskrete Systeme mit determinierten Signalen Ein zeitdiskretes System (Bild 1.5) wird beschrieben durch seine Übertragungsfunktion H.´/ bzw. /. Die Ausgangsfolge y./ mit y./ HQ .w/ D H. 1Cw 1 w gegeben mit Y .´/ D Q Y .w/ D Z H.´/X.´/ HQ .w/XQ .w/ W Y .´/ bzw. y./ YQ .w/ ist (1.23) (1.24) 5 1 Signale und Systeme ❜ x./ y./ H.´/ HQ .w/ Q X.´/;X.w/ Y .´/;YQ .w/ ❜ Bild 1.5: Lineares, diskretes System mit determiniertem Eingangssignal Die Reaktion des Systems auf die Einheitsfolge fı./g ist seine Impulsantwort h./ mit Z W h./ H.´/ bzw. h./ HQ .w/. Mit Hilfe der Impulsantwort ist eine Darstellung des Systemverhaltens im Zeitbereich möglich (Faltung): y./ D y./ D 1 X / (1.25) /x./ (1.26) h./x. D 1 1 X h. D 1 oder kurz (1.27) y./ D h./ x./ 1.2.3 Stochastische Signale Die Autokorrelationsfolge xx ./ eines stochastischen, diskreten Signals x./ ist gegeben durch xx ./ D lim N X 1 x.n/x.n C / N !1 1 C 2N (1.28) nD N Durch Anwendung der zweiseitigen ´-Transformation und der Bilineartransformation erhält man Q zwei Funktionen ‰.´/ und ‰.w/ (die die Rolle eines Leistungsdichtespektrums spielen) mit Z W ‰xx .´/I xx ./ xx ./ Q xx .w/ ‰ (1.29) 1.2.4 Lineare diskrete Systeme mit stochastischen Signalen Speist man ein lineares diskretes System H.´/ bzw. HQ .w/ mit einer Folge x./ mit ‰.´/ bzw. Q ‰.w/ (Bild 1.6), so erscheint am Ausgang ein Signal y./ mit der Autokorrelationsfolge yy ./ mit den Transformierten Z yy ./ 6 W ‰yy .´/I yy ./ Q yy .w/ ‰ (1.30) 1.3 Multivariablensysteme ❜ x./ H.´/ HQ .w/ Q xx .w/ ‰xx .´/;‰ y./ ❜ Q yy .w/ ‰yy .´/;‰ Bild 1.6: Lineares, diskretes System mit stochastischem Eingangssignal Für die Transformierten gilt: ‰yy .´/ Q ‰yy .w/ H.´/H.´ 1/‰xx .´/ Q xx .w/ HQ .w/HQ . w/‰ D D Für die mittlere Leistung eines Signals x./ gilt: I 1 Nx D ‰xx .´/´ 1 d´ 2j Z1 1 Q xx .j v/ 2 dv ‰ Nx D 2 1 C v2 (1.31) (1.32) (1.33) (1.34) 1 1.3 Multivariablensysteme 1.3.1 Determinierte Signale Zeitkontinuierliche Systeme Gegeben sei ein System mit n Eingängen und m Ausgängen (Bild 1.7). Eingangs- und Ausgangssignale werden durch (Zeilen-) Vektoren beschrieben: X0 .j!/ D X10 .j!/ Xn0 .j!/ (1.35) 0 0 0 Y .j!/ D Y1 .j!/ Ym .j!/ (1.36) Dabei ist H0 .j!/ eine n; m-Matrix der Teilübertragungsfunktionen: 1 0 0 0 .j!/ .j!/ H1;m H1;1 C B :: :: H0 .j!/ D @ A : : 0 0 Hn;1 .j!/ Hn;m .j!/ (1.37) Das Systemverhalten wird beschrieben durch: Y0 .j!/ D X0 .j!/H0 .j!/ (1.38) 7 1 Signale und Systeme X10 .j!/ ❜ :: : Xn0 .j!/ ❜ ❜ Y 0 .j!/ 1 X0 .j!/ ❜ H0 .j!/ :: : H0 .j!/ ❜ Y0 .j!/ ❜ Ym0 .j!/ Bild 1.7: Multivariablensystem Zeitdiskrete Systeme Entsprechend werden zeitdiskrete Multivariablensysteme im ´-Bereich bzw. im w-Bereich definiert. Im ´-Bereich gilt Y.´/ D X.´/H.´/ (1.39) wobei X.´/ der Vektor der Eingangssignale, Y.´/ der Vektor der Ausgangssignale und H.´/ die Übertragungsmatrix sind. 1.3.2 Stochastische Signale Zeitkontinuierliche Systeme Es seien xi0 .t /; i D 1; 2; : : : n n stochastische Eingangssignale. Die Kreuzkorrelationsfunktion ist definiert durch ZT 1 xi0 .t /xk0 .t C /dt (1.40) Rxi xk . / D lim T !1 2T T Die Elemente Rxi xk bilden zusammen die Korrelationsmatrix 0 1 Rx1 x1 . / Rx1 xn . / B C :: :: Rxx . / D @ A : : Rxn x1 . / Rxn xn . / (1.41) Durch Fouriertransformation der Kreuzkorrelationsfunktion gelangt man zum Kreuzleistungsdichtespektrum: F Rxi xk . / 8 Sxi xk .j!/ 1.4 Umwandlung zeitkontinuierlicher Signale in zeitdiskrete Signale und zur Matrix zusammengefaßt: 1 Sx1 x1 .j!/ Sx1 xn .j!/ C B :: :: Sxx .j!/ D @ A : : Sxn x1 .j!/ Sxn xn .j!/ 0 (1.42) Zum Ausgangssignal gehören die m; m-Matrizen Ryy . / und Syy .j!/. Für die Leistungsdichten gilt: Syy .j!/ D H0 .j!/Sxx .j!/H0 .j!/ (1.43) Zeitdiskrete Systeme Die Eingangssignale sind gegeben durch einen Vektor mit den Elementen xi ./. Die Kreuzkorrelationsfunktion ist dann: N X 1 xi .n/xk .n C / xi xk ./ D lim N !1 1 C 2N (1.44) nD N Zusammenfassung zur Matrix: xx ./ Transformation in den ´-Bereich: 0 B D@ x1 x1 ./ :: : xn x1 ./ x1 xn ./ xn xn ./ :: : 1 C A (1.45) Z xi xk ./ Als Matrix: ‰xi xk .´/ 0 1 ‰x1 x1 .´/ ‰x1 xn .´/ B C :: :: ‰xx .´/ D @ (1.46) A : : ‰xn x1 .´/ ‰xn xn .´/ Wirkt das derart beschriebene Signal auf das oben definierte diskrete Multivariablensystem, so beobachtet man am Ausgang ein Signal mit den statistischen Kenngrößen yy ./ bzw. ‰yy .´/ und es gilt ‰yy .´/ D H .´/‰xx .´/H.´/ (1.47) 1.4 Umwandlung zeitkontinuierlicher Signale in zeitdiskrete Signale Die Umformung eines zeitkontinuierlichen Signals x 0 .t / in ein zeitdiskretes Signal x./ erfolgt durch einen Abtaster, definiert durch den Operator A (bzw A im transformierten Bereich): x./ D Afx 0 .t /g (1.48) 9 1 Signale und Systeme X.´/ D AfX 0 .p/g (1.49) Ein Abtaster ist linear, wenn für beliebige Funktionen x10 .t / und x20 .t / gilt: Afx10 .t / C x20 .t /g D Afx10 .t /g C Afx20 .t /g (1.50) Ein Abtaster ist zeitrasterinvariant mit der Abtastzeit T , wenn für eine beliebige Zahl gilt: x. C / D Afx 0 .t C T /g (1.51) 1.4.1 Der allgemeine lineare und zeitrasterinvariante Abtaster Die Abtastvorschrift A für den allgemeinen linearen und zeitrasterinvarianten Abtaster ist: x./ D Z1 sa0 .t /x 0 .T x./ D Z1 sa0 .T t /dt (1.52) t /x 0 .t /dt (1.53) 1 1 Dabei ist sa0 .t / eine für den Abtaster typische Funktion. 1.4.2 Der Punktabtaster Die Abtastvorschrift A0 des Punktabtasters erhält man mit sa0 .t / D ı.t / (1.54) Dann ist aufgrund der Ausblendeigenschaft der ı-Funktion x./ D x 0 .T / (1.55) d.h., dem kontinuierlichen Signal x 0 .t / (Bild 1.8) werden zu diskreten Zeitpunkten T Proben entnommen. Für den Punktabtaster wird die im Bild 1.9 gezeigte Darstellung verwendet. Es sei nun F x 0 .t / Mit Z X 0 .j!/I 1 x./ D 2 Z1 X.´/ x./ X 0 .j/e j T d (1.56) (1.57) 1 und X.´/ D 10 1 X D 1 x./´ (1.58) 1.4 Umwandlung zeitkontinuierlicher Signale in zeitdiskrete Signale ❜ ❜ x./ x 0 .t/ ✻ ❜ ❜ ❜ ❜ ❜ ✲ t T ; Bild 1.8: Punktabtaster ❜ x 0 .t/ X 0 .j!/ x./ ✞☎ ❜ ❜ ❜ ❜ ✝ ✆ X.´/ Bild 1.9: Symbol des Punktabtasters wird X.e j!T /D Wendet man die Substitution u D Z1 1 X 1 2 1 D X 0 .j/e j . !/T d (1.59) 1 !/ und die Summenformel von Poisson an: . 1 1 X e 2 D 1 j uT D 1 1 X ı.u T nD 1 n 2 / T (1.60) dann wird X.e j!T / D Z1 1 2 X 0 .j/ D 1 T 1 1 X T nD 1 j uT d 1 X ı.u n 2 /d T X 0 .j/ı.! n X 0 .j/ nD 1 1 D e D 1 1 Z1 1 X Z1 2 /d T 1 und es ergibt sich mit der Ausblendeigenschaft der ı-Funktion: X.e Die Funktion j!T / D A0 ˚ 1 1 X X .j!/ D X 0 .j.! T nD 1 0 XO .j!/ D X.e j!T /T n 2 // T (1.61) (1.62) 11 1 Signale und Systeme wird als diskretes Spektrum bezeichnet: F O X.j!/ Das diskrete Spektrum ist eine mit !A D 2 T XO .j!/ D (1.63) x./ periodische Funktion und es gilt: 1 X X 0 .j.! n!A // (1.64) nD 1 1.4.3 Punktabtastung spezieller Spektren Es sei nun X 0 .p D j!/ eine in p rationale Funktion 0 X .p/ D l P i D0 m P ai p i (1.65) bi pi i D0 mit l < m und einfachen Polen pi . Dann ist eine Partialbruchzerlegung möglich: X 0 .p/ D m X i D1 ci p (1.66) pi Das abgetastete diskrete Spektrum ist XO .j!/ D m 1 X X nD 1 i D1 j.! ci n!A / pi (1.67) Mit der Substitution u D j!!Api , Vertauschen der Summationsreihenfolge und Zusammenfassen der konjugiert komplexen Terme ist ! 1 m X ci 1 X 2u O C (1.68) X.j!/ D !A u nD1 n2 C u2 i D1 Für juj > 0 kann die innere Summe berechnet werden: XO .j!/ D m X ci coth u !A (1.69) i D1 Macht man die Substitution rückgängig, ergibt sich XO .j!/ D 12 m X ci T e j!T C e pi T 2 e j!T e pi T i D1 (1.70) 1.4 Umwandlung zeitkontinuierlicher Signale in zeitdiskrete Signale Setzt man noch ´ D e j!T so wird m X ci ´ C e pi T 2 ´ e pi T X.´/ D (1.71) i D1 Die ´-Transformierte des abgetasteten Signals ist also ebenfalls eine rationale Funktion. 1.4.4 Synchrone Punktabtastung korrelierter Rauschsignale Gegeben sei ein Vektor x0 .t / von n kontinuierlichen, stochastischen Signalen mit der Korrelationsmatrix Rxx . /. Jede Komponente dieses Vektors werde nun der Punktabtastung unterworfen, sodaß ein diskretes stochastisches Signal x./ D x0 .T / (1.72) mit der zu bestimmenden Korrelationsmatrix xx ./ entsteht. Zunächst gilt: N X 1 xi0 .nT /xk0 .nT C T / N !1 1 C 2N xi xk ./ D lim (1.73) nD N Das Rauschsignal x 0 .t / sei stationär. Dann gilt für alle t : xi xk ./ N X 1 xi0 .nT C t /xk0 .nT C T C t / N !1 1 C 2N D lim (1.74) nD N andererseits ist 1 Rxi xk . / D lim T0 !1 2T0 ZT0 xi0 .t /xk0 .t C /dt (1.75) T0 Zerlegung in eine Summe von Integralen: ZT =2 N X 1 Rxi xk . / D lim N !1 T .2N C 1/ nD N T =2 xi0 .nT C t /xk0 .nT C C t /dt (1.76) Für D T und Vertauschung der Reihenfolge von Integration und Summation ist: Rxi xk .T / D ZT =2 T =2 N X 1 1 xi0 .nT C t /xk0 .nT C T C t /dt lim T N !1 2N C 1 (1.77) nD N oder Rxi xk .T / D ZT =2 1 T xi xk ./ dt D xi xk ./ (1.78) T =2 13 1 Signale und Systeme damit ist also xx ./ (1.79) D Rxx .T / Die diskrete Kreuzkorrelationsmatrix entsteht durch Punktabtastung der kontinuierlichen Kreuzkorrelationsmatrix. Es ergeben sich die Transformierten F Z Sxx .j!/I Rxx . / (1.80) ‰xx .´/ xx ./ und das diskrete Leistungsdichtespektrum O xx .j!/ D ‰xx .e j!T /T ‰ Damit ist O xx .j!/ D ‰ 1 X nD 1 (1.81) (1.82) Sxx .j.! C n!A // 1.4.5 Abgetastetes farbiges Rauschen Das Leistungsdichtespektrum einer Rauschquelle sei Syy .j!/ D p12 p1 C !2 (1.83) Partialbruchzerlegung: 1 Syy .j!/ D 2 Punktabtastung: ‰yy .´/ D A0 ˚ 1 1 C p1 C j! p1 j! 1 Syy .j!/ D 4 ´Ce ´ e p1 T p1 T ´ C e p1 T ´ e p1 T (1.84) ! (1.85) Nach einigen Vereinfachungen erhält man für das punktförmig abgetastete Signal ‰yy .´/ D ´2 ´ sinh p1 T 2´ cosh p1 T C 1 (1.86) 1.5 Umwandlung zeitdiskreter Signale in zeitkontinuierliche Signale Es ist die Aufgabe des Impulsformers, aus einem zeitdiskreten Signal, nämlich der Zahlenfolge y./, ein zeitkontinuierliches Signal y 0 .t / zu bilden. Dies geschieht durch eine Operation I: y 0 .t / D Ify./g 14 (1.87) 1.5 Umwandlung zeitdiskreter Signale in zeitkontinuierliche Signale Der Impulsformer I ist linear, wenn für alle Folgen y1 ./ und y2 ./ gilt: Ify1 ./ C y2 ./g D Ify1 ./g C Ify2 ./g (1.88) Der Impulsformer ist zeitrasterinvariant wenn für alle gilt: y 0 .t C T / D Ify. C /g (1.89) 1.5.1 Der allgemeine lineare und zeitrasterinvariante Impulsformer Die zeitkontinuierliche Funktion y 0 .t / wird durch eine Modellfunktion si0 .t / gebildet (Bild 1.10). y./ ❜ ❜ ✻ ❜ ❜ ❜ ❜ ❜ 1 si0 .t/ ❜ ❜ ✲ ✻ ✲ t T ✲ t T 1 y 0 .t/ ✻ 1 Bild 1.10: Linearer Impulsformer y 0 .t / D 1 X y./si0 .t (1.90) T / D 1 Das Spektrum von y 0 .t / ist 0 Y .j!/ D Z1 X 1 y./si0 .t T /e j!t dt (1.91) 1 D 1 15 1 Signale und Systeme nach Vertauschen der Reihenfolge von Summation und Integration und der Substitution D t T ist Z1 1 X 0 Y .j!/ D y./ si0 . /e j!. CT / d (1.92) D 1 und mit ´ D e j!T : 1 X 0 Y .j!/ D Z Mit y./ 1 y./´ D 1 Z1 si0 . /e j! d (1.93) 1 F Y .´/ und si0 .t / Si0 .j!/ ist Y 0 .j!/ D Y .e j!T /Si0 .j!/ (1.94) Es sei YO .j!/ D Y .e j!T /T das diskrete Spektrum von y./ Damit ist 1 O Y .j!/Si0 .j!/ T Y 0 .j!/ D (1.95) 1.5.2 Der ideale Impulsformer Der ideale Impulsformer sendet ı-Impulse aus: si0 .t / D T ı.t / (1.96) Y 0 .j!/ D YO .j!/ (1.97) Damit wird 1.5.3 Der Rechteck-Impulsformer Hier ist (Bild 1.11) si0 .t / D 0 für 1 für jt j > T =2 jt j < T =2 (1.98) (1.99) Das zugehörige Spektrum ist Si0 .j!/ !T D T si 2 und es ist Y 0 .j!/ D YO .j!/si 16 !T 2 (1.100) 1.5 Umwandlung zeitdiskreter Signale in zeitkontinuierliche Signale s 0 .t/ ✻i 1 ✲ 1 t T Bild 1.11: Rechteckimpulsformer 1.5.4 Kausaler Rechteck-Impulsformer Beim „kausalen“ Rechteck-Impulsformer ist (Bild 1.12) 0 für jt T =2j > T =2 si0 .t / D 1 für jt T =2j < T =2 (1.101) s 0 .t/ ✻i 1 ✲ 1 t T Bild 1.12: Kausaler Rechteckimpulsformer Das Spektrum dieses Impulses ist Si0 .j!/ D 1 e j!T j! (1.102) Der (kausale) Rechteckimpulsformer überführt also eine Folge y./ in eine Treppenfunktion y 0 .t / (Bild 1.13). Im Bild 1.14 ist das Symbol des kausalen Rechteckimpulsformers gezeigt. y./ y 0 .t/ ✻ ❜ ❜ ❜ ❜ ❜ 1 ❜ ❜ ✲ ; t T Bild 1.13: Treppenförmiges Ausgangssignal des Rechteckimpulsformers 17 1 Signale und Systeme y./ Y .´/ ❜ ❜ ❜ y 0 .t/ Y 0 .j!/ Bild 1.14: Symbol des Rechteckimpulsformers 1.6 Die Stufenübertragungsfunktion Gesucht wird die zeitdiskrete Nachbildung eines kontinuierlichen Systems [3]. Dabei wird das kontinuierliche System von einer Treppenfunktion angeregt. Ein kausaler Rechteckimpulsformer wandelt ein diskretes Signal x./ in das kontinuierliche Signal x 0 .t / um, womit das kontinuierliche System H 0 .p/ gespeist wird. Dessen Ausgangssignal y 0 .t / wird punktförmig abgetastet, wobei das diskrete Signal y./ entsteht (Bild 1.15). Das System H.´/ soll sich bezüglich der Eingangs- und Ausgangs- x./ ❜ X.´/ ❜ ❜ x 0 .t/ X 0 .j!/ H 0 .p/ y./ ✄ ❜ ❜ ❜ ✂ ✁ Y .´/ y 0 .t/ Y 0 .j!/ x./ y./ H.´/ X.´/ Y .´/ Bild 1.15: Diskrete Nachbildung eines kontinuierlichen Systems signale identisch verhalten. Der Impulsformer erzeugt ein Ausgangsspektrum X 0 .j!/ D X.e j!T / 1 e j!T j! (1.103) Am Ausgang des kontinuierlichen Systems entsteht ein Spektrum Y 0 .j!/ D H 0 .j!/X.e j!T / 1 e j!T j! (1.104) Nach der Punktabtastung wird Mit ´ D e j!T ist also ˚ Y .e j!T / D A0 Y 0 .j!/ 1 Y .´/ D A0 H 0 .j!/X.e j!T / (1.105) e j!T j! Wegen der Linearität und Zeitrasterinvarianz des Punktabtasters ist 0 1 j!T H .j!/ Y .´/ D .1 ´ /A0 X.e / j! 18 (1.106) (1.107) 1.7 Systemanalyse Aus demselben Grund und mit p D j! ist Y .´/ D X.´/.1 ´ 1 1 /A0 /A0 H 0 .p/ p (1.108) die gesuchte Funktion H.´/ ist also H.´/ D .1 ´ H 0 .p/ p (1.109) Es sei nun H 0 .p/ in p rational und als Partialbruchentwicklung gegeben: H 0 .p/ D m X ci pi p pi (1.110) i D1 Wegen 1 pi 1 D p p pi p pi 1 p (1.111) ist dann H.´/ D .1 ´ 1 /A0 (m X i D1 ci 1 p 1 p pi ) (1.112) Das abgetastete Spektrum läßt sich nach Gl. (67) und mit ´i D e pi T im ´-Bereich darstellen: H.´/ D .1 ´ 1 / m X ci ´ C ´i 2 ´ ´i i D1 ´C1 ´ 1 (1.113) oder umgeformt m X ˚ ´i 1 H.´/ D S H 0 .p/ D ci ´ ´i (1.114) i D1 H.´/ ist die Stufenübertragungsfunktion von H 0 .p/. Allgemein gilt 0 ˚ H .p/ S H 0 .p/ D .1 ´ 1 /A0 p (1.115) 1.7 Systemanalyse Unter Analyse eines Systems wird hier dessen Beschreibung durch Differenzen- oder Differentialgleichungen oder die Angabe seiner Übertragungsfunktion(en) verstanden. Dabei können die inneren Signale miteinbezogen sein, mitunter genügt die Beschreibung des Verhaltens bezüglich der äußeren Signale. 19 1 Signale und Systeme 1.7.1 Analyse linearer kontinuierlicher Systeme Bei elektrischen Netzwerken können die bekannten Methoden wie Maschenstrom- oder Knotenspannungs-Analyse verwendet werden. In der Regel kann ein lineares System durch Beschreibung des Verhaltens seiner Zustandsvariablen charakterisiert werden. Zustandsvariablen sind Energiespeicher mit integrierender Funktion, wie Kondensatoren oder Induktivitäten. Voraussetzung ist, daß im System ein Satz voneinander unabhängiger Zustandsvariablen s0 .t / gefunden werden kann (Bild 1.16). x0 .t/ ✲ y0 .t/ ✲ statisches Netzwerk ✻ 0 ✲ s .t/ 1 R T dt Bild 1.16: Kontinuierliches System mit Zustandsvariablen Dann ist mit den Matrizen A0 ; B0 ; C0 ; D0 S0 .p/ D Y0 .p/ D 1 .S0 .p/A0 C X0 .p/C0 / pT S0 .p/B0 C X0 .p/D0 (1.116) (1.117) oder als Signalflußgraph, wie im Bild 1.17 gezeigt. X0 r C0 ✲❡ ✻ A0 D0 1 R T dt r ❡ Y ✲❄ B0 S0 0 Bild 1.17: Signalflußgraph des kontinuierlichen Systems Die Zustandsgleichung kann nach S0 .p/ aufgelöst werden: 1 0 0 0 1 0 A S .p/ D X C p1 T T 20 1 (1.118) 1.7 Systemanalyse schließlich Y0 berechnet werden. 1.7.2 Analyse diskreter Systeme Neben dem direkten Anschreiben der Differenzengleichung kann auch hier die Zustandsvariablenform verwendet werden. Die Zustandsvariablen sind hier Verzögerer, die voneinander unabhängig sein müssen (Bild 1.18). x./ ✲ y./ ✲ statisches Netzwerk ✻ s./ ✲ ´ 1 Bild 1.18: Diskretes System mit Zustandsvariablen Hier ist mit den Matrizen A; B; C; D S.´/ Y.´/ D D ´ 1 .S.´/A C X.´/C/ S.´/B C X.´/D (1.119) (1.120) oder als Signalflußgraph wie im Bild 1.19 gezeigt. X r C ✲❡ ✻ D 1 ´ A r ✲❄ ❡ Y B S Bild 1.19: Signalflußgraph des diskreten Systems Die nach S.´/ aufgelöste Gleichung lautet: S.´/ D X.´/´ 1 C 1 ´ 1 A 1 (1.121) 21 1 Signale und Systeme 1.7.3 Kontinuierliche Systeme mit treppenförmigen Eingangssignalen In Analogie zur Stufenübertragungsfunktion läßt sich auch die Signalflußdarstellung des kontinuierlichen Systems mit treppenförmigen Eingangssignalen durch ein diskretes System ersetzen. Dabei gilt: 0 eA B0 0 C0 .e A D0 D D D D A B C D Hierbei ist 0 eA D1C 1/A0 1 A0 2 A0 C C 1Š 2Š (1.122) (1.123) (1.124) (1.125) (1.126) und A0 A0 2 C C (1.127) 2Š 3Š Die Reihen müssen nach einem geeigneten Konvergenzkriterium abgebrochen werden. Dieses Verfahren vermeidet die bei der Berechnung der Stufenübertragungsfunktion notwendige Nullstellenberechnung des Nennerpolynoms. .e A 0 1/A0 1 D1C Praktische Ausführung Man beginnt mit der Berechnung der Matrizenfunktion f.X/ D .e X 1/X 1 (1.128) Um die Konvergenz bei der Reihenentwicklung zu verbessern, kann das Simulationsintervall auf das 2 n -fache verkleinert werden, d.h., es wird zunächst f.2 n X/ (1.129) berechnet. Dann wird durch n-malige Anwendung der Rekursionsgleichung 1 2 Xf .X/ C f.X/ 2 das Intervall n-mal verdoppelt. Schließlich wird die Exponentialfunktion gemäß f.2X/ D e X D Xf.X/ C 1 (1.130) (1.131) berechnet. 1.7.4 Auswertung der Übertragungsfunktion Bei kontinuierlichen und diskreten Systemen muß häufig die Übertragungsfunktion ausgewertet werden, wobei der Betrag, die Phase, bzw. die Gruppenlaufzeit von H 0 .j!/ bzw H.´/ interessieren. 22 1.7 Systemanalyse Betrag Bei der Bestimmung des Betrags muß eine komplexwertige Funktion der Art F .jx/ mit reellem x berechnet werden. Dabei ist bei kontinuerlichen Systemen F .jx/ D H 0 .j!/I (1.132) xD! Bei diskreten Systemen wählt man F .jx/ D H.e j!T / D HQ e j!T 1 e j!T C 1 !T D HQ j tan 2 (1.133) d. h., hier ist x D tan !T . Falls F .jx/ eine in jx rationale Funktion ist, gilt stets 2 G.x 2 / D jF .jx/j2 (1.134) Dabei ist G.y/ eine in y D x 2 rationale und reelle Funktion. Es sei mit u D jx F .u/ D m P1 D0 m P2 a1 u (1.135) a2 u D0 und G.y/ D m1 P D0 m2 P b1 y (1.136) b2 y D0 Dann gilt für i D 1; 2 min.;mi / bi D ai2 C Dabei gelte P0 1 X 2. 1/ ai; ai;C (1.137) D1 D 0. Phase Im kontinuierlichen Fall ist die Phase gegeben durch '.!/ D I ln.H 0 .j!// (1.138) '.!/ D I ln.H.e j!T // (1.139) und im diskreten Fall 23 1 Signale und Systeme Gruppenlaufzeit Im kontinuierlichen Fall ist die Gruppenlaufzeit ˇ d 0 ˇ d'.!/ dp H .p/ ˇ .!/ D DR ˇ d! H 0 .p/ ˇ (1.140) pDj! und im diskreten Fall ˇ d ´T d´ H.´/ ˇˇ d'.!/ DR .!/ D ˇ d! H.´/ ˇ (1.141) ´De j!T 1.8 Simulation von Systemen 1.8.1 Diskrete Systeme Diskrete Systeme werden durch Angabe ihrer Zustandsgleichungen charaktersiert. Die Zustandsgleichungen sind Differenzengleichungen in Matrizenform. Bei bekannten Matrizen A, B, C, D können diese Differenzengleichungen simuliert werden. Das folgende Fortran-Programm liest einen Eingangsvektor X ein und erzeugt einen Ausgangsvektor Y. Der Vektor der Zustandsvariablen S wird bei jedem Aufruf neu berechnet. Die Matrizen und deren Dimensionen werden an das Programm als Argumente übergeben. SUBROUTINE STEP(X,Y,S,A,B,C,D,N,M,L) DIMENSION X(N),S(M),Y(L), *A(M,M),B(M,L),C(N,M),D(N,L) CALL CALL CALL CALL END M_MUL M_MUL_ADD M_MUL M_MUL_ADD (S,B,Y,M,L) (X,D,Y,N,L) (S,A,S,M,M) (X,C,S,N,M) Die Unterprogramme M_MUL und M_MUL_ADD führen Matrizenmultiplikation bzw. Multiplikation und Addition durch. Bei der Simulation müssen die Datenfelder A, B, C und D in einer Initialisierungsphase belegt werden. Das Unterprogramm STEP wird anschließend in der Hauptsimulationsschleife einmal pro Simulationsschritt aufgerufen. Falls nur das Eingangs- Ausgangsverhalten des Systems interessiert, kann die Funktion H(z) berechnet und durch Programmierung eines Digitalfilters simuliert werden: SUBROUTINE D_FILTER(X,Y,A,B,S,N,K) DOUBLE PRECISION A(0:*),B(0:*),S(0:*),U,V,SS J=K 24 1.8 Simulation von Systemen 10 U=X V=0 DO 10 I=1,N J=J-1 IF(J.LT.0)J=N-1 V=V+S(J)*A(I) U=U-S(J)*B(I) CONTINUE V=V+A(0)*U S(J)=U Y=V K=J+1 RETURN END Dabei ist X das Eingangssignal, Y das Ausgangssignal, S der Vektor der Zustandsvariablen, A und B die Zähler- und Nennerkoeffizienten, N der Filtergrad und K ein zyklisch umlaufender Zeiger. Durch die zyklische Addressierung wird ein Umspeichern der Zustandsvariablen vermieden. 1.8.2 Kontinuierliche Systeme Auch hier liefert die Analyse entweder eine Beschreibung im Zustandsraum oder die Übertragungsfunktion. Bei Ansteuerung mit rechteckförmigen Signalen können beide Formen durch eine äquivalente zeitdiskrete Form ersetzt werden. Diese Ersatzsysteme können wie gezeigt simuliert werden. Bei nicht rechteckförmigen Eingangssignalen ist bei genügend feiner Abtastung eine approximative Nachbildung möglich. 1.8.3 Gemischte Systeme Hier ist folgende Vorgehensweise möglich: 1. Aufsuchen der Schnittstellen zwischen kontinuierlichen und diskreten Teilen (Abtaster und Impulsformer, bzw. AD- und DA-Wandler). 2. Transformieren der kontinuierlichen Teile in diskrete Ersatzformen. 3. Analyse des nun vollständig diskreten Systems. 4. Simulation des Systems nach einer der angegebenen Methoden. 25 1 Signale und Systeme 1.9 Beispiel 1.9.1 Zeitvariante SC-Schaltung Gegeben sei die im Bild 1.20 gezeigte SC-Schaltung, die als integrierender Abtaster verwendet werden kann. Der (invertierende) Operationsverstärker ist nichtideal und wird beschrieben durch die C1 r ❜ ❜ X ❄ R1 ❜ r r r ❜ ❜ Verstärker: v; !g ; R3 Y C2 Schalter: R4 ❄ ❜ Bild 1.20: Zeitvariante SC-Schaltung Leerlaufverstärkung v, die Grenzfrequenz !g und den Ausgangswiderstand R3 . Die Schaltung kann je nach Schalterstellung einen von zwei Zuständen annehmen. Der Durchlaßwiderstand des Schalters sei R4 . 1.9.2 Analyse der Schaltung Zunächst Einführen einer Ersatzschaltung für den Verstärker. Dann Analyse der Schaltung in beiden Zuständen. Die Zustandsvariablen sind die 3 Kondensatorspannungen. Für die beiden Schalterstellungen erhält man die im Bild 1.21 und Bild 1.22 dargestellten Schaltungsstrukturen. Das RC-Glied S1 ✛ r ❜ X ❄ ❜ R1 C2 r r C1 1 R2 r v r R3 R4 Y Zustand „1“ S2 ❄ S3 ❄ r C3 Bild 1.21: Schaltung im ersten Zustand 26 ❜ ❄ ❜ 1.9 Beispiel S1 ✛ C1 1 R2 ❜ r v Zustand „2“ ❜ R3 R1 S3 X ❄ ❜ r ❄ C3 r C2 r r r R4 Y S2 ❄ ❄ ❜ Bild 1.22: Schaltung im zweiten Zustand R2 C3 bestimmt die Grenzfrequenz des Operationsverstärkers: !g D R21C3 Zunächst bestimmt man die Zustandsgleichungen für den zeitkontinuierlichen Fall in beiden Zuständen. Mit den Abkürzungen t1 D t2 D t3 D t4 D t5 D t6 D t7 D t8 D t9 D T .R3 C R4 /C1 vT .R3 C R4 /C1 T .R3 C R4 /C2 vT .R3 C R4 /C2 T R1 C2 v!g TR4 R3 C R4 !g T !g TR4 R3 C R4 !g TR3 R3 C R4 ergeben sich die Matrizen A01 ; B01 ; C01 ; D01 für den ersten und A02 ; B02 ; C02 ; D02 für den zweiten Zustand gemäß den Gleichungen (1.116,1.117) zu 1 0 t1 t3 t8 A01 D @ t1 t3 t5 t8 C t7 A t2 t4 t6 t7 0 1 0 0 t7 A02 D @ 0 t3 t5 t9 A 0 t4 t6 27 1 Signale und Systeme B01 D B02 D 1 !g T 1 !g T C01 D01 D D t9 t9 t6 0 t9 t6 C02 D 0 t5 D02 D 0 0 Bei stufenförmigem Eingangssignal kann dieses kontinuierliche System durch ein äquivalentes diskretes System mit den Matrizen A1 ; B1 ; C1 ; D1 bzw. A2 ; B2 ; C2 ; D2 gemäß Gl. (1.122...1.125) für die beiden Zustände ausgedrückt werden. 1.9.3 Aufbau des Simulationsprogramms Der folgende Ausdruck zeigt den Aufbau eines Simulationsprogramms für die SC-Schaltung: IMPLICIT REAL*8 (A-H,O-Z) DIMENSION AA1(3,3),AA2(3,3), *CC(3),S0(4),S1(3),S2(3), *AL1(3,3),AL2(3,3),DU1(3,3), *DU2(3,3),BB1(3),BB2(3) COMMON /C_SC/R1,R2,R3,R4, *C1,C2,C3,V COMMON /MAT_SC/AA1,AA2,CC, *BB1,BB2 COMMON /TIME/T C C C C Eingabe des Simulationsintervalls READ*,NN T0=5.E-7/NN C C C C Definition der Bauteilewerte R1=10.E3 R2=1.E6 R3=200. R4=30. C1=200.E-12 C2=200.E-12 C3=100.E-9 V=-3.7E6 C C C Betrag des Eingangssignals XIN=1. C C C C Berechnung der "kontinuierlichen" Matrizen CALL SETUP_SC C C C C Berechnung der "diskreten" Matrizen CALL MAT_TRANS 28 1.9 Beispiel * (AA1,DU1,AL1,DU2,3,T0) CALL MAT_TRANS * (AA2,DU1,AL2,DU2,3,T0) C C C C 200 C C C Beginn der Hauptsimulationsschleife CONTINUE 3*NN Takte im Zustand "1" DO 220 J=1,3*NN C C C Zustandsuebergang CALL STEP_STATE (S0,S1,AA1,CC,3,XIN) CALL STEP_STATE * (S1,S2,AL1,CC,3,0.Q0) DO 210 I=1,3 S0(I)=T0*S2(I)+S0(I) * 210 C C C C Berechnung des Ausgangssignals CALL DOUT(S0,BB1,S0(4),3) T=T+T0 C C C Ausgabe CALL DSPL(S0) CONTINUE 220 C C C 2*NN Takte im Zustand "2" DO 240 J=1,2*NN C C C Zustandsuebergang CALL STEP_STATE (S0,S1,AA2,CC,3,XIN) CALL STEP_STATE * (S1,S2,AL2,CC,3,0.Q0) DO 230 I=1,3 S0(I)=T0*S2(I)+S0(I) * 230 C C C C Berechnung des Ausgangssignals * C C C 240 CALL DOUT (S0,BB2,S0(4),3) T=T+T0 Ausgabe CALL DSPL(S0) CONTINUE XIN=-XIN GOTO 200 END Berechnen der Matrizen während der Initialisierungsphase: SUBROUTINE SETUP_SC IMPLICIT REAL*8 (A-H,O-Z) 29 1 Signale und Systeme * DIMENSION AA1(3,3),AA2(3,3), CC(3),BB1(3),BB2(3) COMMON /C_SC/R1,R2,R3,R4,C1,C2,C3,V COMMON /MAT_SC/AA1,AA2,CC,BB1,BB2 T=1./(R3+R4) T1=-T/C1 T2=V*T/C1 T3=-T/C2 T4=V*T/C2 T5=1./(R1*C2) T6=V*T*R4/(R2*C3) T7=1./(R2*C3) T8=-T*R4/(R2*C3) T9=T*R3/(R2*C3) AA1(1,1)=T1 AA1(1,2)=T1 AA1(1,3)=T2 AA1(2,1)=T3 AA1(2,2)=T3-T5 AA1(2,3)=T4 AA1(3,1)=T8 AA1(3,2)=T7+T8 AA1(3,3)=T6-T7 AA2(1,1)=0. AA2(1,2)=0. AA2(1,3)=0. AA2(2,1)=0. AA2(2,2)=T3-T5 AA2(2,3)=T4 AA2(3,1)=-T7 AA2(3,2)=T9 AA2(3,3)=T6 CC(1)=0. CC(2)=T5 CC(3)=0. BB1(1)=T*R3 BB1(2)=T*R3 BB1(3)=V*T*R4 BB2(1)=0. BB2(2)=T*R3 BB2(3)=V*T*R4 RETURN END Bildung der zeitdiskreten Matrizen 1 15 30 SUBROUTINE MAT_TRANS(A,B,C,D,N,TT) IMPLICIT REAL*8 (A-H,O-Z) INTEGER BB,DD DIMENSION A(N,N),B(N,N),C(N,N),D(N,N) ISC=0 CONTINUE CALL UNIT_D(B,N) CALL UNIT_D(C,N) K=1 K=K+1 T=TT/2**ISC F=T/K CALL MMULD(A,B,D,N,F) CALL MCOPD(D,B,N) CALL MADDD(C,B,C,N) XB=ABSM_D(B,N) XC=ABSM_D(C,N) IF(XB.GT.10000) THEN ISC=ISC+1 1.9 Beispiel 30 40 GOTO 1 ENDIF IF(XB.LT.XC*1.D-12) GOTO 30 GOTO 15 CONTINUE DO 40 I=1,ISC CALL MMULD(A,C,D,N,0.5D0*T) T=T*2. CALL MADD1_D(D,N) CALL MMULD(C,D,B,N,1.D0) CALL MCOPD(B,C,N) END Berechnung der Zustandsübergänge 10 20 SUBROUTINE STEP_STATE(S0,S1,A,B,N,X) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION A(N,N),B(N),S0(N),S1(N) DO 10 I=1,N S1(I)=X*B(I) DO 20 J=1,N DO 20 I=1,N S1(I)=S1(I)+S0(J)*A(I,J) RETURN END Berechnung des Ausgangssignals 10 SUBROUTINE DOUT(S,C,Y,N) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION S(N),C(N) Y=0. DO 10 I=1,N Y=Y+S(I)*C(I) RETURN END Hilfsprogramme zur Matrizenmanipulation 10 20 5 10 SUBROUTINE UNIT_D(A,N) REAL*8 A(N,N) DO 10 I=1,N DO 10 J=1,N A(I,J)=0. DO 20 I=1,N A(I,I)=1. END SUBROUTINE MMULD(A,B,C,N,F) IMPLICIT DOUBLE PRECISION (A-H,O-Z) DIMENSION A(N,N),B(N,N),C(N,N) DO 10 I=1,N DO 10 J=1,N X=0. DO 5 K=1,N X=X+A(I,K)*B(K,J) C(I,J)=X*F RETURN END SUBROUTINE MCOPD(A,B,N) 31 1 Signale und Systeme 10 10 10 10 IMPLICIT DOUBLE PRECISION (A-H,O-Z) DIMENSION A(N,N),B(N,N) DO 10 I=1,N DO 10 J=1,N B(I,J)=A(I,J) RETURN END SUBROUTINE MADDD(A,B,C,N) IMPLICIT DOUBLE PRECISION (A-H,O-Z) DIMENSION A(N,N),B(N,N),C(N,N) DO 10 I=1,N DO 10 J=1,N C(I,J)=A(I,J)+B(I,J) RETURN END SUBROUTINE MADD1_D(A,N) REAL*8 A(N,N) DO 10 I=1,N A(I,I)=A(I,I)+1. END FUNCTION ABSM_D(A,N) IMPLICIT REAL*8 (A-H,O-Z) DIMENSION A(N,N) AM=0. DO 10 I=1,N DO 10 J=1,N AX=ABS(A(I,J)) IF(AX.GT.AM)AM=AX CONTINUE ABSM_D=AM END .50 s1 -.50 s2 s3 y .5 .0 -.5 2 0 -2 E-7 .5 .0 -.5 1 2 3 4 5 6 7 E-6 Bild 1.23: Ergebnis eines Simulationslaufs Das Ergebnis eines Simulationslaufs mit diesen Programmen ist für NN=30 im Bild 1.23 dargestellt. 32 1.10 Übungsaufgaben zu Kapitel 1 1.10 Übungsaufgaben zu Kapitel 1 1. Leiten Sie eine den Gleichungen (1.33) und (1.34) entsprechende Gleichung für die mittlere O Leistung eines diskreten Signals her, wenn dessen diskretes Leistungsdichtespektrum ‰.j!/ gegeben ist (vgl. Gl. (1.81) und (1.82)). 2. Gegeben sei das im Bild 1.24 dargestellte Netzwerk, das als Multivariablensystem behandelt werden soll. Geben Sie die Matrix H0 .j!/ der Übertragungsfunktionen nach Gl. (1.37) an! ❜ X10 .j!/ R1 ❜ R2 X20 .j!/ ❄ ❄ ❜ ❜ r r r C1 C2 0 Y2 .j!/ ❜ ❜ Y10 .j!/ ❄ ❄ ❜ ❜ Bild 1.24: RC-Netzwerk Zur Vereinfachung der Rechnung wähle man R1 D 2RI R2 D RI C1 D C I C2 D 2C: 3. Beim System von Aufgabe 2 werde der Eingang X10 .j!/ von einem weißen Rauschsignal mit der Leistungsdichte 1V2 s gespeist, der Eingang X20 .j!/ sei kurzgeschlossen. Geben Sie die Matrix der Kreuzleistungsdichtespektren Syy .j!/ nach Gl. (1.42) am Ausgang des Systems an! 4. Die stochastischen Ausgangssignale des Systems nach Aufgabe 3 werden synchron durch einen Punktabtaster abgetastet. Geben Sie die Hauptdiagonalelemente des hierbei entstehenO yy .j!/ unter Verwendung der Gl. (1.83)...(1.86) den diskreten Leistungsdichtespektrums ‰ an. Dabei sei T D RC . 5. Zeigen Sie, daß der mit (1.52) und (1.53) definierte Abtaster linear und zeitinvariant ist. 6. Geben Sie eine Gleichung zur Beschreibung dieses Abtasters im Frequenzbereich an! 7. Ein zeitrasterinvarianter Abtaster A mit der Abtastzeit T erzeuge aus einem Signal x 0 .t / eine Folge x./. Im Unterbereich sei der Zusammenhang beschrieben mit X.´/ D AfX 0 .j!/g. Zeigen Sie, daß der folgende „Verschiebungssatz“ gültig ist: ˚ ˚ A X 0 .j!/e j!nT D ´ n A X 0 .j!/ 8. Ein Punktabtaster überführe X 0 .j!/ in X.´/, d.h. es gelte X.´/ D A0 fX 0 .j!/g. Zeigen Sie allgemein die Gültigkeit der folgenden Regel: dX.´/ dX 0 .j!/ T ´ D A0 d´ dj! 33 1 Signale und Systeme 9. Die Gleichungen (1.66) und (1.71) beschreiben den Abtastvorgang für rationales X 0 .p/ mit einfachen Polen. Geben Sie eine entsprechende Vorschrift für doppelte Pole an. Dabei kann das in der vorigen Aufgabe gewonnene Ergebnis benutzt werden. 10. Wie muß ein Impulsformer beschaffen sein, der das kontinuierliche Signal durch lineare Interpolation aus dem diskreten Signal erzeugt? Wie lautet dessen Beschreibung im Frequenzbereich? 11. Die Stufenübertragungsfunktion überführt ein kontinuierliches System in ein diskretes, wobei ein Rechteck-Impulsformer zugrundeliegt. Wie sehen die entsprechenden Ergebnisse bei Anwendung des interpolierenden Impulsformers nach Aufgabe 10 aus? 12. Die Schaltung nach Aufgabe 2 werde mit treppenförmigen Eingangssignalen gespeist. Die Ausgangssignale werden punktförmig abgetastet. Beschreiben Sie das System durch eine Matrix von Stufenübertragungsfunktionen! 13. Geben Sie die Schaltung für ein zeitdiskretes System an, das die Stufenübertragungsfunktionen der vorigen Aufgabe nachbildet. 14. Entwickeln Sie ein System von Rekursionsgleichungen, die dieses zeitdiskrete System beschreiben. 15. Zeigen Sie die Gültigkeit der Gl. (1.122)...(1.125), die den Übergang von einer kontinuierlichen zur entsprechenden diskreten Zustandsvariablenform beschreiben. 16. Bei der Umwandlung einer kontinuierlichen in eine diskrete Zustandsvariablenform tritt eine Matrizenfunktion f.X/ D .e X 1/X 1 nach Gl. (1.128) auf. Zeigen Sie die Gültigkeit der Gl. (1.130)! 17. Geben Sie ein Rechnerprogramm zur Umwandlung der Koeffizienten für F .j!/ in die Koeffizienten von G.y/ nach Gl. (1.134) an! 18. Gegeben sei die Übertragungsfunktion H 0 .p/ D 1 a0 C a1 p C a2 p 2 Welche Gruppenlaufzeit .!/ gehört zu dieser Übertragungsfunktion? 19. Gegeben sei die Übertragungsfunktion H.´/ D a0 C a1 ´ 1 C a2 ´ 2 Welche Gruppenlaufzeit .!/ gehört zu dieser Übertragungsfunktion? 20. Wie kann die Gruppenlaufzeit bei rationalen Übertragungsfunktionen berechnet werden? 34 2 Zahlendarstellung und Codierung 2.1 Festkommaarithmetik Eine ausführliche Darstellung der binären Arithmetik ist in [4] enthalten. In der Regel ist die Zahlendarstellung in der Form m X ´D ai ci (2.1) i Dn möglich. Lediglich die Vorzeichen-Betragsdarstellung ist nicht in dieser Form möglich. Die ci sind die Stellenwertigkeiten des Zahlensystems, die ai sind die Ziffern der Zahl ´. Häufig ist ci D b i . b ist die Basis des Zahlensystems. 2.1.1 Binäre Kodierung Bei der binären Kodierung kann jede Ziffer ai nur zwei Werte annehmen, d.h. es gilt ai 2 f0; 1g und b D 2, d.h.: m X ´D ai 2i (2.2) i Dn Zur Veranschaulichung ist eine Darstellung als Kodierschema möglich. Für binäre Zahlen hat es die im Bild 2.1 gezeigte Form. Die dargestellte Zahl lautet in binärer Schreibweise ´ D 001110:10. Die m n i 5 4 3 ci 32 16 8 ai 2 1 0 -1 -2 4 2 1 X X X 1 0 X X ´D 0 0 1 1 1 4 X X 1 1 2 0 r1 X 0 = 14,5 Bild 2.1: Kodierschema für binäre Zahlen 35 2 Zahlendarstellung und Codierung binäre Kodierung gestattet die Darstellung positiver gebrochener Zahlen im Bereich ´ 2 Œ0 ; 2mC1 2n (2.3) Um die Lage des Punktes, der den ganzzahligen Teil vom gebrochenen Teil trennt, zu definieren, ist eine Formatangabe der Art m C 1: n üblich. Im Beispiel wäre das Format „6.2“. 2.1.2 Vorzeichen-Betrags-Darstellung Hier wird einem in binärer Kodierung ausgedrückten Betrag j´j noch ein Vorzeichenbit v vorangestellt. Bei gesetztem Vorzeichenbit ist die Zahl negativ. Die Zahl -14,5 würde also im 6.2-Format als ´ D 101110:10 geschrieben. 2.1.3 Zweierkomplement-Kodierung Hier gilt ci D 2i 2m für i 6D m für i D m (2.4) i 2 Œn; m (2.5) und ai 2 f0; 1gI Das Kodierschema ist im Bild 2.2 gezeigt. Der Zahlenbereich der Zweierkomplementkodierung ist m n i 5 4 3 ci -32 16 8 ai 2 1 0 -1 -2 4 2 1 1 X X 0 ´D 1 1 4 X X X X X 1 1 2 0 0 0 1 r1 X 0 D 14; 5 Bild 2.2: Kodierschema für Zweierkomplementzahlen gegeben durch ´ 2 Œ 2m ; 2m 2n Die Zahl -14,5 wird im 6.2-Format als ´ D 110001:10 geschrieben. 36 (2.6) 2.1 Festkommaarithmetik 2.1.4 Binäres Zahlensystem mit negativer Basis Hier ist die Basis b D 2 und es gilt m X ´D i Dn ai0 . 2/i I ai0 2 f0; 1g (2.7) Die Zahl 14,5 wird hier also als ´ D 010011:10 kodiert (Bild 2.3). Durch Zusammenfassen von je m n i 5 4 3 2 1 0 -1 -2 ci -32 16 -8 4 -2 1 1 1 2 4 1 ai0 X 0 X ´D X X X X X 0 1 0 0 1 1 r1 X 0 D 14; 5 Bild 2.3: Kodierschema für binäre Zahlen mit negativer Basis zwei Bits erhält man eine neue Darstellung. Setzt man n0 D m0 D ak00 ck00 n 2 m (2.8) 1 (2.9) 2 0 a2k k D D 0 2a2kC1 I 0 k D n ; :::; m 4 0 (2.10) (2.11) so ergibt sich ein vierstufiger Kode zur Basis 4 (Bild 2.5): 0 ´D m X kDn0 ak00 4k I ak00 2 f 2; 1; 0; 1g (2.12) 2.1.5 Umwandlung von binären Zahlen mit positiver Basis in Zahlen mit negativer Basis Beispiel: 37 2 Zahlendarstellung und Codierung m0 n0 2 16 4 1 X 0 ak00 0 1 k ck00 1 1 1 4 X X 1 X 2 ´D 1 r 2 D 14; 5 0 1 Bild 2.4: Kodierschema des 4-stufigen Kodes zur Basis 4 ´ ´0 ´ D ´ C ´0 = = = ´ = Komplementieren: 0 1 1 x 0 0 0 1 1 1 1 x 0 1 1 0 0 0 1 1 0 x 1 0. 0. 1. 1. 1 1 0 x 1 0 0 0 (Basis 2) (Basis 2) (Basis 2) 0 (Basis -2) 2.1.6 Vorzeichenbehaftete Kodes Bei vorzeichenbehafteten Binärkodes ist ´D m X i Dn ai 2i I (2.13) ai 2 f 1; 0; 1g 2.1.7 Einfacher Booth-Kode Hier drückt man ´ in der Form 2´ ´ aus, wobei die Subtraktion bitweise und übertragsfrei ausgeführt wird, sodaß sich negative Werte für die Ziffern ergeben (Bild 2.5): ´ 2´ ´ 2´ ´ 38 = = = = 0 0 0 0 0 1 0 1 1 1 -1 0 1 1 -1 0 1 0 -1 -1 0. 1. 0. 1. 1 0 -1 -1 0 0 0 0 (Binär) (Binär) (Binär) (Booth, einfach) 2.1 Festkommaarithmetik m n i 5 4 3 ci 32 16 8 2 1 0 -1 -2 4 2 1 X 1 ai 0 X X X ´D 0 0 1 0 1 4 X X X 1 1 2 X 1 1 r 1 0 D 14; 5 Bild 2.5: Kodierschema des einfachen Booth-Kodes 2.1.8 Erweiterter Booth-Kode Der erweiterte Booth-Kode ist ebenfalls ein 3-stufiger Kode. Er wird gewonnen, indem man die Ziffern des einfachen Booth-Kodes zu Zweiergruppen zusammenfaßt, und, falls dort die Ziffernpaare 1,-1 oder -1,1 auftreten, diese durch die gleichwertigen Paare 0,1 bzw. 0,-1 ersetzt. Der so gewonnene Kode hat dann pro Ziffernpaar nur noch ein von Null verschiedenes Element. Beispiel für ´ D 14; 5: einfacher Booth-Kode: erweiterter Booth-Kode: 01 01 00 00 -1 1. 0 -1. -1 0 -1 0 Auch hier kann man die Zweiergruppen zu einer Ziffer zusammenfassen und erhält dann einen 5stufigen Kode zur Basis 4 (Bild 2.6): n0 D m0 D ak00 ck00 n 2 m (2.14) 1 (2.15) 2 0 a2k k D D C 0 2a2kC1 I 0 k D n ; :::; m 0 4 (2.16) (2.17) mit 0 ´D m X kDn0 ak00 4k I ak00 2 f 2; 1; 0; 1; 2g (2.18) Man kann die Ziffern ak0 des erweiterten Booth-Kodes und die Ziffern ak00 des daraus abgeleiteten Basis-4-Kodes unter Anwendung einer Kodiertabelle direkt aus den Koeffizienten ak der binären Darstellung gewinnen: 39 2 Zahlendarstellung und Codierung m0 2 k ck00 n0 1 16 4 0 1 1 4 1 2 1 ak00 0 X X X 1 X 2 ´D 1 0 1 r 2 D 14; 5 Bild 2.6: Kodierschema des erweiterten Booth-Kodes a2kC1 0 0 0 0 1 1 1 1 a2k 0 0 1 1 0 0 1 1 a2k 0 1 0 1 0 1 0 1 1 0 a2kC1 0 0 0 1 -1 0 0 0 0 a2k 0 1 1 0 0 -1 -1 0 ak00 0 1 1 2 -2 -1 -1 0 Beispiel für die Umwandlung nach Tabelle für ´ D 14; 5: 0 0 1 1 1 0. 1 0 Binär Booth, erw. 0 1 0 0 0 -1. -1 0 0 -1. Basis-4 1 -2 2.1.9 Der CSD-Kode Die vorzeichenbehafteten Kodes sind i. a. nicht eindeutig. Eine eindeutige Darstellung erhält man, wenn man fordert, daß jede von Null verschiedene Ziffer eine Null als Nachbarn hat, d. h. ´D m X i Dn ai0 2i I ai0 2 f 1; 0; 1g (2.19) mit aj0 aj0 40 1 D 0I für j D n C 1; :::m (2.20) 2.2 Gleitkommaarithmetik Der so erhaltene CSD-Kode (CSD=canonical signed digit) ist eindeutig, existiert für jede Zahl ´ und besitzt das Minimum an von Null verschiedenen Elementen. Man gewinnt diesen Kode, indem man zunächst in binärer Schreibweise zur Zahl ´ die um eine Stelle nach rechts geschobene Zahl 21 ´ addiert und anschließend bitweise ohne Übertrag wieder subtrahiert: ´ 1 2´ ´ C 21 ´ 1 2´ ´ = = = = = 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 -1 0 1 1 0 -1 -1 0. 1. 1. -1. 0. 1 0 1 0 1 0 1 1 -1 0 (Binär) (Binär) (Binär) (CSD) Ähnlich wie beim Booth-Kode erhält man durch Zusammenfassen zweier benachbarter Elemente wieder einen 5-stufigen Kode zur Basis 4. Das Kodierschema für ´ D 14; 5 ist im Bild 2.7 zu sehen. m0 k ck00 n0 1 0 16 4 1 2 1 1 4 X 2 1 ak00 0 X X 1 X 2 ´D 1 0 2r2 D 14; 5 Bild 2.7: Kodierschema des CSD-Kodes 2.2 Gleitkommaarithmetik Eine Gleitkommazahl wird in der Regel in der folgenden Form dargestellt: ´ D 2e m (2.21) wobei der Exponent e eine ganze Zahl und die Mantisse (oder Signifikand) m eine gebrochene Zahl in Festkommadarstellung sind. Für e und m sind verschiedene Kodierungen und Aufteilungen der Bitfelder üblich. Die Norm ANSI/IEEE-754 hat einen Standard festgelegt. 41 2 Zahlendarstellung und Codierung 2.2.1 Mantisse in Vorzeichen-Betragsdarstellung Die Mantisse m wird als Produkt eines Vorzeichens v und des Betrags m0 D jmj in binärer Kodierung dargestellt. Das Vorzeichen v wird durch ein Bit kodiert. Die Mantisse heißt normiert, wenn m0 D jmj 2 Œ0; 5I 1/ (2.22) erfüllt ist. Durch geeignete Wahl des Exponenten e ist die Darstellung einer Gleitkommazahl ´ in der Regel durch eine normierte Mantisse möglich. Beim Überschreiten des Zahlenbereichs von e und für ´ D 0 ist die normierte Darstellung jedoch nicht möglich. 2.2.2 Exponent in Zweierkomplement-Darstellung Der Exponent wird in Zweierkomplement-Darstellung ausgedrückt. Die Zahl ´ wird dann beispielsweise folgendermaßen kodiert: ´ D vjejm0 D 0j1100j:1010000 D 1 2 4 0; 625 D 0; 0390625 Im normierten Fall ist das MSB von m0 , d.h., das Bit mit der Wertigkeit 0,5 immer gesetzt, und kann deshalb unterdrückt werden. Man kodiert also nicht m0 sondern m00 D m0 0:5. Es gilt: ´ D v 2e .m00 C 0; 5/ (2.23) Bei dieser Darstellung ist die Zahl ´ D 0 nicht mehr darstellbar. 2.2.3 Exponent in Exzess-Kodierung Man kann den Exponenten in der Form e D e0 (2.24) ausdrücken, wobei ein fester Wert ist, und e 0 eine positive Zahl ist, die binär kodiert wird. Dann ist ´ D v 2e 0 .m00 C 0; 5/ (2.25) Beispiel mit D 8 W ´ D vje 0 jm00 D 0j0100j010000 D 1 24 8 .0:5 C 0:125/ D 0; 0390625 Auch hier ist die Zahl ´ D 0 nicht mehr darstellbar. Man kann für diesen Fall jedoch einen bestimmten Kode reservieren, beispielsweise e 0 D 0I m00 D 0. 42 2.3 Übungsaufgaben zu Kapitel 2 2.3 Übungsaufgaben zu Kapitel 2 21. Zeigen Sie die Gültigkeit der Gl. (2.3) und (2.6) für den Zahlenbereich der binären bzw. Zweierkomplement-Kodierung! 22. Geben Sie den Zahlenbereich der binären Kodierung mit negativer Basis gemäß Gl. (2.7) an! 23. Leiten Sie die Gl. (2.8...2.11) zur Erzeugung des Basis-4-Kodes her! 24. Erklären Sie, warum das im Manuskript angebene Verfahren zur Umwandlung von Binärkodes mit positiver in solche mit negativer Basis richtig ist! 25. Leiten Sie die Umwandlungstabelle für den erweiterten Booth-Kode her! 26. Warum erzeugt das in 2.1.9 angegebene Verfahren den CSD-Kode? 43 2 Zahlendarstellung und Codierung 44 3 Schaltungstechnische Realisierung der Rechenfunktionen Digitale Signalverarbeitung kann realisiert werden durch festverdrahtete oder programmierbare bzw. programmierte Bausteine. Die programmierbare Lösung basiert auf Signalprozessoren. Architektur und Programmierung von Signalprozessoren wird im nächsten Abschnitt behandelt. Bei Hochgeschwindigkeitsanwendungen (Bildverarbeitung, breitbandige Regler) ist oft nur die festverdrahtete Lösung möglich. Praktische Realisierung durch kundenspezifische integrierte Schaltungen (Gate-Arrays, Standardzellen). Entwurfshilfsmittel stehen für das Design auf verschiedenen Abstraktionsebenen zur Verfügung: Transistorebene Gatterebene Datenpfad-Ebene Die Entwicklungssysteme enthalten leistungsfähige Werkzeuge zum weitgehend automatischen Entwurf wie Datenpfad-Compiler, Simulatoren für verschiedene Entwurfsebenen. Es stehen Bibliotheken mit komplexen Makros zur Verfügung wie: Gatter, Multiplexer, Selektoren usw. Register, Speicher, Schiebewerke, Bustreiber usw. Addierer, Multiplizierwerke, Zähler usw. Es existiert eine Beschreibungssprache für die Hardware-Struktur solcher Systeme (VHDL). Die folgenden Unterabschnitte zeigen den prinzipiellen Aufbau einiger Grundfunktionen in CMOSTechnik. 45 3 Rechenschaltungen 3.1 Die logischen Funktionen Die arithmetischen Funktionen beruhen auf logischen Schaltungen (kombinatorische Netzwerke) die meist als Gatteranordnungen dargestellt werden. Die Gatter selbst bestehen aus CMOS-Transistoren, d.h. aus selbstsperrenden n-Kanal und p-Kanal Feldeffekt-Transistoren. Die üblicherweise verwendeten Gatterfunktionen sind in der im Bild 3.1 gezeigten Aufstellung zusammengefaßt. Wie diese Funktionen durch Transistorschaltungen ausgebildet werden, ist in den a a 1 1 b 0 1 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 yand D a ^ b b a yor D a _ b b a b a b 0 ✌ ☞ r ynand D a ^ b ✌ ☞ a a 0 ☞ r ynot D a ✌ ☞ b b a ˚ ✌ ☞ r ynor D a _ b ✌ ☞ yexor D a ˚ b ✌ ☞ ˚r yex nor D a ˚ b ✌ Bild 3.1: Symbol und Wahrheitstabelle üblicher Gatter folgenden Bildern zu sehen. Zur Vereinfachung der Darstellung werden für die Transistoren besondere Symbole eingeführ (Bild 3.2). Der p-Kanal-Transistor leitet bei negativ vorgespanntem Gate, der n-Kanal-Transistor leitet bei positiver Gate-Spannung. Die Inverterfunktion (Bild 3.3) wird durch zwei Transistoren verwirklicht. Bei positiver Eingangsspannung (1) leitet der n-Kanal-Transistor und verbindet den Ausgang mit Masse (0), bei negativem Eingangspegel (0) leitet der p-Kanal-Transistor und verbindet den Ausgang mit der Betriebsspannung (1). Die Realisierung der NAND- und NORFunktion erfordert Serien- und Parallelschaltung von Transistoren (Bild 3.4). Dasselbe gilt für die Realisierung der XOR-Funktion (Bild 3.5). Häufig werden Selektoren verwendet, die abhängig von einem Steuersignal c einen von den beiden Eingängen a oder b auswählen und auf den Ausgang y 46 3.2 Addition binärer Zahlen c P-Kanal-MOSFET a c ✎☞ ✍✌ P a b N-Kanal-MOSFET a b c c N a b b Bild 3.2: Symbole für Feldeffekttransistoren 1 a ☞ r y ✌ a r r 0 1 ✎☞ P a y N ✍✌ r y a 0 Bild 3.3: Inverter schalten (Bild 3.6). 3.2 Addition binärer Zahlen Die Addition binärer Zahlen erfolgt i. a. ziffernweise unter Berücksichtigung eines Übertrags von rechts. Für jede Stellenwertigkeit wird neben dem Summenbit s ein Übertrag c 0 für die nächste Stelle erzeugt. 3.2.1 Volladdierer in CMOS-Technik Der Volladdierer berechnet für jede Stelle der Binärzahl das Summenbit s und das Übertragsbit c 0 aus den Eingangsbits a b und c gemäß der Gleichung s c 0 D D D .aN ^ bN ^ c/ _ .aN ^ b ^ c/ N _ .a ^ bN ^ c/ N _ .a ^ b ^ c/ a˚b˚c .a ^ b/ _ .a ^ c/ _ .b ^ c/ (3.1) (3.2) 47 3 Rechenschaltungen 1 ☞ r a ✌ b 1 ✎☞ ✎☞ b ✍✌ ✍✌ r r y a y a „NAND“ b 0 1 ☞ r a ✌ b ✎☞ ✍✌ ✎☞ a „NOR“ y a b ✍✌ r r y b 0 0 Bild 3.4: NAND- und NOR-Funktion 1 ✎☞ ✎☞ b ✍✌ r ✍✌ r b ✍✌ ✍✌ a r ✲ b✛ r ✎☞ ✎☞ a a b ˚ ✏ ✑ 1 y „XOR“ a y r a a b b 0 0 0 b Bild 3.5: XOR-Gatter Wahrheitstabelle und Symbol für den Volladdierer gehen aus dem Bild 3.7 hervor. Im folgenden werden einige Realisierungen der logischen Netzwerke für Summenbit und Übertragsbit als vonein- 48 3.2 Addition binärer Zahlen „Selektor“ r a c a 0 b 1 y r b ✎☞ ✍✌ c c ✎☞ ✍✌ c r ☞☞ r r y ✌✌ r r c ☞ r ✲ c ✌ c Bild 3.6: Selektor a b c c0 s 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 a c b c0 s Bild 3.7: Wahrheitstabelle und Symbol für den Volladdierer ander getrennte Schaltungen und als Netzwerke mit gemeinsamen Schaltungsteilen vorgestellt. Kombinatorische Netwerke für das Summenbit Aus dem oberen Teil der logischen Gleichung für das Summenbit läßt sich die nur aus NANDGattern bestehende Schaltung ableiten (Bild 3.8). Wenn die Gatter wie beschrieben mit CMOSTransistoren aufgebaut werden, ist der Gesamtaufwand 38 Transistoren. Man kann auch den zweiten Teil der logischen Gleichung umsetzen und erhält dann eine Schaltung mit XOR-Gattern (Bild 3.9). Verwendet man die oben vorgestellten XOR-Gatter, dann benötigt die Schaltung 18 Transistoren. 49 3 Rechenschaltungen a b c r r r ☞ r ☞ r r ✌ r ☞ r r ✌ r ☞ r r ✌ r ✌ ☞ r ☞ r ✌ ✌ ☞ ✌ ☞ r s r ✌ Bild 3.8: Schaltnetz für Summenbit a b c ˚ ✜ ✢ ˚ ✜ ✢ s Bild 3.9: Alternatives Netzwerk für die Summe Kombinatorische Netzwerke für den Übertrag Aus der logischen Gleichung für den Übertrag läßt sich direkt die Schaltung im Bild 3.10 ableiten. Bei Verwendung von CMOS-Gattern beträgt der Aufwand 18 Transistoren. Eine Schaltung mit geringerem Aufwand ergibt sich, wenn man das Komplement des Übertrags erzeugt. Das Bild 3.11 zeigt eine Realisierung als CMOS-Verbundgatter. Eine weitere Möglichkeit ist die Realisierung als Brückenschaltung mit demselben Aufwand (Bild 3.12). Die Komplementierung kann durch einen Inverter rückgängig gemacht werden. Dann benötigen die beiden letzten Schaltungen 12 Transistoren. Netzwerke für Summe und Übertrag mit gemeinsamen Schaltungsteilen Baut man einen kompletten Volladdierer mit den oben gezeigten Schaltungen auf, dann beträgt der Aufwand im günstigsten Fall 30 Transistoren, bei Verwendung regulärer Gatter sogar 56 Transistoren. Einsparungen sind möglich durch Verwendung gemeinsamer Teile. 50 3.2 Addition binärer Zahlen ☞ r r a b c r r ✌ ☞ ☞ r r ✌ ✌ ☞ c0 r ✌ Bild 3.10: Kombinatorisches Netzwerk für den Übertrag 1 1 1 ✎☞ ✎☞ ✎☞ b ✍✌ ✍✌ ✍✌ r ✎☞ ✎☞ a a ✍✌ r c c a 0 r b ✍✌ r c0 b b a 0 0 Bild 3.11: Verbundgatter für den Übertrag Man kann die Wahrheitstabelle des Volladdierers folgendermaßen interpretieren: Wenn a und b gleich sind, ist c 0 D a D b Wenn a und b verschieden sind, ist c 0 D c Daraus läßt sich das Konzept des im Bild 3.13 gezeigten Addierers mit geschaltetem Übertrag ableiten. Das Summenbit wird wieder mit zwei XOR-Gattern bestimmt. Der Ausgang des ersten Gatters zeigt gerade die obige Bedingung an. Ein Selektor wählt, abhängig von der genannten Bedingung, die richtige Quelle für c 0 aus. Verwendet man die angebenen Gatter und den angebenen Selektor, dann benötigt dieser Volladdierer 26 Transistoren. Mit 24 Transistoren kommt die Schaltung mit Verbundgattern im Bild 3.14 aus, die allerdings das 51 3 Rechenschaltungen 1 1 ✎☞ ✎☞ b ✍✌ r ✍✌ r b ✍✌ ✍✌ ✎☞ r r c ✍✌ ✎☞ ✎☞ a a a b r c0 r c a b 0 0 Bild 3.12: Brückenschaltung für den Übertrag a b c r ˚ r ✜ r ✢ ˚ 1 0 ✜ ✢ s c0 Bild 3.13: Volladdierer mit geschaltetem Übertrag Komplement von s und c 0 liefert. Als weitere Variante ist eine Brückenschaltung mit 20 Transistoren möglich (Bild 3.15). In der Literatur sind Anordungen mit nur bis zu 16 Transistoren beschrieben. Nicht nur der Aufwand sondern auch das dynamische Verhalten und der sogenannte fan-out spielen eine Rolle bei der Schaltungsauswahl. 52 3.2 Addition binärer Zahlen 1 1 1 1 1 1 ✎☞ 1 ✎☞ ✎☞ ✎☞ ✎☞ ✎☞ ✎☞ ✍✌ ✎☞ a a c a b b ✍✌ ✍✌ ✍✌ ✍✌ ✍✌ ✍✌ b ✍✌ r r ✎☞ ✎☞ ✎☞ ✎☞ ✍✌ r c c r a b ✍✌ r c0 b a c ✍✌ r ✍✌ r s c 0 c c0 r b b a a b c 0 0 0 0 0 a 0 0 Bild 3.14: Volladdierer mit Verbundgattern 1 1 1 1 ✎☞ ✎☞ ✎☞ ✎☞ b ✍✌ r ✍✌ r ✍✌ r c ✍✌ r c ✍✌ ✍✌ ✎☞ r r b ✍✌ ✎☞ ✎☞ b ✍✌ ✍✌ ✎☞ r r c ✍✌ ✎☞ ✎☞ a b r c 0 a a r c c0 c r b a 0 s c0 r a b c0 a 0 0 0 0 Bild 3.15: Volladdierer mit Brückenschaltung 3.2.2 Addierwerke mit seriellem Übertrag Bei der Addition binärer Zahlen wird für jede Stelle ein Volladdierer benötigt. Verwendet man als Eingangsübertrag der laufenden Stelle den Ausgangsübertrag der vorhergehenden Stelle, dann spricht man von einem seriellen Addierwerk (Bild 3.16). Da sich die Durchlaufverzögerungszeiten 53 3 Rechenschaltungen für die Überträge addieren, kommt es zu relativ großen Additionszeiten, insbesondere bei großen Wortlängen. Man kann sich den Additionsvorgang auch „vektoriell“, d.h., auf die ganze Binärzahl a2 b2 c20 a c0 a1 b1 b sc s2 a a c0 a c0 a0 b0 b sc a c0 b sc s1 c0 s0 b a b b sc a s b 1 s s Bild 3.16: Addierwerk mit seriellem Übertrag angewandt, vorstellen. Die entsprechende Darstellung ist im Bild 3.16 unten links zu sehen. Das Weiterreichen des Übertrags an die höherwertigere Stelle ist durch eine Schiebeoperation angedeutet. Das Symbol für ein Addierwerk ohne die Darstellung der inneren Überträge ist unten rechts zu sehen. 3.2.3 Addierwerke mit parallelem Übertrag Den Nachteil der großen Additionszeiten umgeht das Konzept des Addierwerks mit parallelem Übertrag, bzw. mit Übertragsvorbestimmung. Ein eigenes logisches Netzwerk berechnet aus den Eingangssummanden alle Überträge bzw. die Überträge für Gruppen von Addieren (Siehe Übungsaufgabe). 3.2.4 Mehrfachaddierer In der Signalverarbeitung muß häufig die Summe mehrerer Terme berechnet werden. Auch die Multiplikation wird auf die Summe vieler Einzelterme zurückgeführt. Legt man auf eine geringe Gesamtlaufzeit Wert, kommen parallel arbeitende Mehrfachaddierer mit Baumstruktur in Betracht (Bild 3.17). Die Einzelelemente sind hier binäre Addierwerke mit seriellem Übertag bzw. Übertragsvorbestimmung. Man kann aber auch Arrays von Volladdierern verwenden, die ihren Übertrag 54 3.3 Schiebewerke für binäre Zahlen a1 a2 a3 a4 a5 a6 a7 a8 a s b a a s b a s b a s b a a s b s b s b s Bild 3.17: Mehrfachaddierer als binärer Baum an die nächste Ebene weiterleiten (Carry-Save-Prinzip). Jede Ebene reduziert die Summandenzahl hier maximal um 23 . In der letzten Ebene ist wieder eine normale binäre Addition notwendig. Der gezeigte Addiererbaum (Bild 3.18) ist auch unter dem Namen Wallace tree bekannt. 3.2.5 Akkumulierwerke Eine besondere Art von Mehrfachaddierern sind die Akkumulierwerke, bei denen die Summe (zeitlich) seriell in einem Register (Akkumulator) aufgebaut wird (Bild 3.19). Auch hier sind die Varianten mit dem normalen binären Addierer und das Carry-Save-Prinzip möglich. 3.3 Schiebewerke für binäre Zahlen Schiebewerke sind für den Aufbau von Multiplizierern und in der Signalverarbeitung zur Realisierung von Koeffizienten von Bedeutung. Es gibt fest eingestellte und einstellbare Schiebewerke. Fest eingestellte Schiebewerke bestehen einfach aus entsprechend verdrahteten Bitleitungen (Bild 3.20). Bei Zweierkomplementzahlen ist die korrekte Behandlung des Vorzeichenbits zu beachten. Einstellbare Parallelschiebewerke bestehen aus durch Selektoren auswählbaren fest eingestellten Verschiebern (Barrel-Shifter) (Bild 3.21). Soll eine große Zahl verschiedener Schiebepositionen möglich sein, wird der Schaltungsaufwand des Barrel-Shifters groß. Mit weniger Bauteilen kommt das binär gestaffelte Schiebewerk aus (Bild 3.22). 55 3 Rechenschaltungen a1 a2 a3 a4 a5 a6 a7 a8 a9 a b sc c0 a c0 1 a b sc a c0 1 1 b sc c0 a 1 a b sc c0 b sc 1 b sc c0 1 a c0 b sc 1 a s b s Bild 3.18: Wallace tree 3.4 Prioritätsenkoder Der Prioritätsenkoder findet bei einem gegebenen Bitmuster der Länge L die Position p der ersten „1“ (von links oder rechts gesucht). Anwendung: Normierung von Gleitkommazahlen, serielle Multiplikation, parallele AD-Wandlung. Beispiel: x D 00010101 Hier ist L D 8 und p D 3 (von links). Falls alle Elemente von x gleich Null sind, ist p D L. Falls alle Elemente von x gleich Eins sind, ist p D 0. Im folgenden sei L eine Zweierpotenz mit L D 2k 1 (3.3) Dann läßt sich p als binäre Zahl mit k Stellen angeben. Es seien zwei Bitmuster xa und xb der Länge L mit den Positionen der ersten „1“ an den Stellen pa und pb gegeben. Die Zahlen pa und pb bestehen aus k Binärstellen. Zerlegt man sie in das führende Bit und den Rest, dann ist pa D pa;k 1 jpa0 I pb D pb;k 1 jpb0 56 3.4 Prioritätsenkoder a a a b sc c0 a s b R 1 R s a s b s Bild 3.19: Akkumulierwerk x y D x2k k y Bild 3.20: Fest verdrahtetes Schiebewerk Setzt man die beiden Muster xa und xb zu einem neuen Muster x D xa jxb der Länge 2L zusammen, dann läßt sich die Position p der ersten „1“ mit k C 1 Binärstellen ausdrücken. Zerlegt man diese Zahl in die beiden führenden Bits und den Rest, dann ist p D pk jpk 1 jp 00 Die Zahl p läßt sich nun aus pa und pb nach der folgenden Tabelle bestimmen: pa;k 0 1 1 1 pa0 u 0 0 pb;k v 0 1 1 pb0 w w 0 pk 0 0 1 pk 0 1 0 1 p 00 u w 0 (1) (2) (3) 57 3 Rechenschaltungen x 1 0 2 3 0 1 1 s0 0 s1 1 y Bild 3.21: Einstellbares Schiebewerk x 1 0 s0 1 2 0 s1 1 4 0 s2 1 y Bild 3.22: Binär gestaffeltes Schiebewerk In Zeile (1) ist die gesuchte „1“ im Muster xa , d.h. es gilt p D pa . In Zeile (2) ist die gesuchte „1“ im Muster xb , d.h. es ist p D pb C L. In Zeile (3) gibt es keine „1“, d.h. es ist p D 2L. Als logische Funktion ausgedrückt ist pk pk 58 1 D D pa;k pa;k ^ pb;k 1 ^ pb;k 1 1 1 (3.4) (3.5) 3.5 Normierwerke p 00 D für für pa0 pb0 pa;k pa;k 1 1 D0 D1 (3.6) Aus dieser Funktion des Zusammenfassens von zwei Bitmustern läßt sich die Schaltung im Bild 3.23 für einen „Expander“ eines Prioritätsenkoders ableiten. Ein vollständiger Enkoder wird durch pa;k 1 pb;k 1 ✟ r ✠ r ✟ r ✠ r pa0 ✟ pk r ✠ ✟ pk 1 r ✠ r 0 p 00 1 pb0 Bild 3.23: Expander für Prioritätsenkoder eine baumartige Struktur von Expandern aufgebaut (Bild 3.24). Die Expander der obersten Ebene sind einfache Inverter. x7 1 x6 x5 1 x4 1 x3 1 1 x2 x1 1 x0 1 1 ✡r ✠✡r ✠✡r ✠✡r ✠✡r ✠✡r ✠✡r ✠✡r ✠ 1 1 1 1 1 1 1 1 Expander Expander Expander Expander 2 Expander 2 2 2 Expander 3 3 Expander p 4 Bild 3.24: Vollständiger Prioritätsenkoder 3.5 Normierwerke Bei Gleitkommaoperationen muß häufig eine Mantisse m in die normierte Form jmj 2 Œ0; 5I 1/ 59 3 Rechenschaltungen gebracht werden, bei der das führende Bit gleich „1“ ist. Hierzu wird gemäß (Bild 3.25) durch einen Prioritätsenkoder die Zahl nN der führenden Nullen bestimmt, die dann durch ein Schiebewerk „herausgeschoben“ werden. nN ist auch der Wert, um den der Exponent der Gleitkommazahl verkleinert werden muß. Eine weitere Möglichkeit mit geringerem Aufwand ist das binär gestaffelte Normierjmj Prioritätsenkoder nN rn r nN ❄ ❄ Bild 3.25: Normierwerk mit Prioritätsenkoder werk nach Bild 3.26, das außerdem schneller arbeitet. ✡ r r ✡ r r ✡ r r ✠ ✠ ✠ r r r r 0=4 r r 0=2 r 0=1 Bild 3.26: Binär gestaffeltes Normierwerk 3.6 Multiplizierer Es soll die Multiplikation zweier Zahlen x und ´ durchgeführt werden: y D´x 60 (3.7) 3.6 Multiplizierer Dabei sei z in einer der bekannten Kodierungen gegeben: ´D m X ai b i i Dn (b=Basis der Zahlendarstellung). Dann ist yD m X ai b i x (3.8) i Dn Die in Betracht kommenden Kodes sind neben dem Binärkode mit b D 2 Basis-4-Kodes (b D 4) die aus dem Basis-(-2)-, CSD- und dem Booth-Kode abgeleitet sind: Binär Basis-(-2) CSD Booth 2 4 4 4 f0; 1g f 2; 1; 0; 1g f 2; 1; 0; 1; 2g f 2; 1; 0; 1; 2g 3.6.1 Kodewandler Die Umsetzung des Binärkodes in die daraus abgeleiteten Kodierungen erfolgt durch parallele oder serielle Kodewandler. Ein paralleler Wandler ist gemäß Bild 3.27 aus einzelnen Blöcken zusammengesetzt. Ein serieller Wandler besteht aus einem einzigen Block, einem Schieberegister und a5 r ✛ c6 a4 a3 a2 r a1 a0 r 0 CodeCodeCodewandler- ✛ wandler- ✛ wandler- ✛ 0 Block c4 Block c2 Block c0 a200 a100 a000 Bild 3.27: Schema eines parallelen Kodewandlers einem Zwischenspeicher für ein Bit (Bild 3.28). Aus den im 2. Kapitel beschriebenen Umwandlungsverfahren für die verschiedenen Kodierungen lassen sich die folgenden Wahrheitstabellen für den Kodewandler ableiten: Basis-(-2): 61 3 Rechenschaltungen ´ !2 ci C2 Takt c ✛i CWB ✲ C ak00 I k D 2i Bild 3.28: Serieller Kodewandler ai C1 0 0 0 0 1 1 1 1 ai C2 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 62 ai 0 0 1 1 0 0 1 1 ai C1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 ci 0 1 0 1 0 1 0 1 ak00 0 -1 -1 -2 -2 1 1 0 CSD: ai ci 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 ci C2 0 0 0 0 0 1 1 1 ak00 0 1 2 1 2 -1 0 -1 0 1 -2 1 -2 -1 0 -1 ci C2 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 3.6 Multiplizierer Die Wahrheitstabelle für den Booth-Kode ist im 2. Kapitel hergeleitet worden. 3.6.2 Serielle Multiplizierwerke Das durch eine Summe yD m X ai b i x i Dn ausgedrückte Produkt läßt sich durch einen seriellen Mehrfachaddierer entwickeln. Dabei gibt es grundsätzlich zwei Möglichkeiten. Akkumulator-Schiebearchitektur Gemäß Bild 3.29 wird die bei der Summation notwendige Schiebeoperation b i durch eine feste Verx ´ ai Codewand. L L k L R1 R0 Bild 3.29: Akkumulator-Schiebe-Architektur schiebung um 1 (b D 2) bzw. 2 (b D 4) Stellen nach rechts vor jeder Akkumulation berücksichtigt. Für den Basis(-2)-Kode ergibt sich das im Bild 3.30 gezeigte Multiplizierwerk. Die Multiplikation mit ak00 wird durch den Selektorbaum durchgeführt, der die entsprechenden Faktoren auswählt. Bei der Multiplikation mit 1 bzw. 2 wird der Komplementer verwendet, der in Verbindung mit einem in den Addierer eingespeisten Eingangsübertrag das Zweierkomplement herstellt. Operanden-Schiebearchitektur Wenn man die Schiebeoperation am Operanden x vornimmt, erhält man die im Bild 3.31 dargestellte Grundstruktur. 63 3 Rechenschaltungen r !2 ´ 1 CWB ✛ 0 rx 1 0 0 1 C Komplem. r 0 1 c r ✡✠ 2 R1 R2 Bild 3.30: Multiplizierwerk mit Basis (-2)-Kode x ´ CodeWand. i vi r i Komplem. c ✡r ✠ R Bild 3.31: Operanden-Schiebearchitektur 3.6.3 Parallele Multiplizierwerke Bei Verwendung eines parallelen Kodewandlers und eines parallelen Mehrfachaddierers erhält man ein parallel arbeitendendes Multiplizierwerk (Bild 3.32). 64 3.7 Analog-Digital-Wandler ´ x CWB ✛ CWB ✛ CWB ✛ CWB a000 a100 a200 a300 b 00 3 b 00 2 b 00 1 b 00 0 Mehrfachaddierer y Bild 3.32: Parallelmultiplizierer 3.7 Analog-Digital-Wandler Es gibt eine ganze Reihe von Verfahren zur AD-Wandlung. Spannungs-Frequenzumsetzer und Rampenverfahren sind in der Signalverarbeitung von geringer Bedeutung. Wichtiger sind das Wägeprinzip, die Parallelwandlerverfahren und die verschiedenen Spielarten der Wandler mit Überabtastung [5]. 3.7.1 Wägeverfahren Der AD-Wandler nach dem Wägeverfahren (Bild 3.33) besteht aus ❜ Komparator Eingang r ✛ Näherungsregister r DA-Wandler r ❜ ❜ Takt ❜ Ausgang Bild 3.33: AD-Wandler nach dem Wägeverfahren Komparator 65 3 Rechenschaltungen Näherungsregister Digital-Analogwandler Das Verfahren beruht auf dem Vergleich der unbekannten Eingangsspannung mit dem vom DAWandler gelieferten Wert. Der DA-Wandler wird von einem digitalen Näherungsregister gesteuert, dessen Wert, abhängig vom Ergebnis des Vergleichs, solange variiert wird, bis eine hinreichend gute Approximation erreicht wird. Die digitale Ausgangsgröße ist dann der Inhalt des Näherungsregisters. Der Ablauf dieser sukzessiven Approximation (Bild 3.34) beginnt mit einem zu Null gesetzten 8 ✻ 7 T 6 5 4 T S R T S 3 T=Testen 2 S=Setzen 1 R=Rücksetzen ✲ t Bild 3.34: Sukzessive Approximation Registerinhalt. Dann wird probeweise das MSB am gesetzt. Dann wird anhand des Komparatorsignals geprüft, ob der vom DA-Wandler gelieferte Wert das Eingangssignal überschreitet oder nicht. Im ersten Fall wird das Bit zurückgesetzt, im zweiten Fall bleibt es gesetzt. Dann wiederholt sich der Vorgang mit dem nächsten Bit am 1 . Mit Erreichen des LSB an wird der Vorgang abgebrochen. 3.7.2 Parallel-Wandler Beim n-Bit Parallel-Wandler (Flash-Wandler), (Bild 3.34) wird das Eingangssignal mit 2n 1 Komparatoren gleichzeitig mit 2n 1 gleichmäßig über den Spannungsbereich des Wandlers verteilten Referenzspannungen verglichen, die von einer Spannungsteilerkette geliefert werden. Damit ist eine Zuordnung des Eingangssignals zu einem von 2n Intervallen möglich. Ein nachgeschalteter Prioritätsenkoder liefert die binär verschlüsselte Intervallnummer (n Bit), die dann als Ergebnis zur Verfügung steht. 66 3.7 Analog-Digital-Wandler Uref ❛ Ui n ❛ R q q R q R q R q R q R q R R q q PrioritätsEn- X out koder q q q q Bild 3.35: Parallelwandler 3.7.3 Quantisierung Die Analog-Digital-Wandlung besteht aus der zeitlichen Abtastung eines zeitkontinuierlichen Signals x 0 .t / mit der Abtastzeit T und der anschließenden Quantisierung mit dem Quantisierungsintervall q (Bild 3.36). Die Größe q entspricht der Wertigkeit des niederwertigen Bits des vom AD- x 0 .t/ ✲ A x./ ✲ Q xq ./ ✲ Bild 3.36: Abtastung und Quantisierung Wandler gelieferten digitalen Datenworts. Die Umsetzung der wertekontinuierlichen Folge x./ in die wertediskrete Folge xq ./ läßt sich durch eine Quantisierungskennlinie beschreiben 3.37. Die xq ./ ✻ q 2 q 2 ✲ x./ Bild 3.37: Quantisierungskennlinie 67 3 Rechenschaltungen Quantisierung hat einen von x./ abhängigen Quantisierungsfehler r./ zur Folge (Bild 3.38). Zur x 0 .t/ r./ x x./ q ❄ ✲ ❞ ./ ✲ A Bild 3.38: Berücksichtigung des Quantisierungsfehlers Vereinfachung der Analyse wird in der Regel ein von x./ unabhängiger, und im Intervall . q2 ; q2 / gleichverteilter Quantisierungsfehler r.t / angenommen (Bild 3.39). Das Signal r./ wird demnach als weißes Rauschen betrachtet. Die mittlere Leistung dieses Signals ist pr .R/ ✻1 q q 2 q 2 ✲R Bild 3.39: Verteilungsfunktion des Quantisierungsfehlers Z1 D Nr pr .R/ R2 dR (3.9) 1 Bei der angenommenen Gleichverteilung ist q Nr D Z2 q 2 1 2 R dR q D q2 12 (3.10) O rr .j!/ ist die Rauschleistung andererseits Bei einer gegebenen diskreten Rauschleistungsdichte ‰ !A Nr D 1 2 Z2 O rr .j!/ d! ‰ (3.11) !A 2 Bei weißem Rauschen ist die Leistungsdichte konstant: 2 O rr D T Nr D T q ‰ 12 68 (3.12) 3.7 Analog-Digital-Wandler 3.7.4 Signal-Rausch-Verhältnis Gegeben sei ein Wandler mit einer Wortbreite von n Bit. In Zweierkomplementdarstellung ist der Betrag des darstellbaren Zahlenbereichs q .2n 1/. Ein Sinussignal maximaler Amplitude wäre dann gegeben durch 2n 1 x./ D q sin.˛/ 2 Die mittlere Leistung dieses Signals ist q2 q2 4n (3.13) 8 8 Bezieht man die maximale Nutzsignalleistung auf die Leistung des Quantisierungsrauschens, dann wird das Signal-Rausch-Verhältnis Ns D .2n 1/2 Ns 3 D .2n Nr 2 und SNR D 10 log 1/2 3 n 4 2 (3.14) Ns 6; 02 n C 1; 76 Nr (3.15) .dB/ 3.7.5 Überabtastung Von Überabtastung spricht man, wenn die Abtastfrequenz des AD-Wandlers höher ist, als die für die weitere Verarbeitung des Signals gewählte, bzw. der Bandbreite des analogen Signals angepaßte Taktfrequenz. Siehe hierzu Bild 3.40. Die Taktzeit des Wandlers sei T , diejenige des AusgangssiT1 T x 0 .t/ ❄ AD x./ G.´/ y./ ❄ Abtaster y./ Bild 3.40: AD-Wandlung mit Überabtastung gnals sei T1 D k T k ist der Überabtastfaktor. Ein Dezimierungsfilter G.´/ mit einer Grenzfrequenz !g D die notwendige Bandbegrenzung für die nachfolgende Abtastung mit T1 . (3.16) T1 sorgt für Die Überabtastung verfolgt zwei Ziele Verlagerung der zur Abtastung notwendigen Filterung im wesentlichen auf den digitalen Teil des Systems. Reduktion des Quantisierungsrauschens 69 3 Rechenschaltungen AD-Wandler mit einfacher Überabtastung Verwendet man bei der oben gezeigten Kettenschaltung einfache AD-Wandler, so ist das Quantisierungsrauschen am Eingang des Filters G.´/ weiß, mit der diskreten Leistungsdichte 2 O rr D T q ‰ 12 Das Filter hat eine Grenzfrequenz D T1 kT und begrenzt damit die Bandbreite des Rauschens. Die mittlere Leistung des Quantisierungsrauschens am Ausgang des Filters ist dann !g D Nr0 D 1 2 ZkT kT q2 q2 T d! D 12 12k (3.17) Die Leistung des Quantisierungsrauschens ist damit um den Faktor k reduziert. Das Signal-RauschVerhältnis wird dann Ns 3 3 D .2n 1/2 k 4n k (3.18) Nr0 2 2 Um ein Bit an Auflösung zu gewinnen, muß also die Abtastfrequenz des Wandlers vervierfacht werden. Wollte man mit einem 4-Bit-Wandler eine Auflösung von 16 Bit erreichen, müßte der Überabtastfaktor k D 412 D 16777216 betragen. Bei einer Taktfrequenz am Ausgang von 44,1 kHz müßte die Taktfrequenz des Wandlers also bei etwa 740 GHz liegen. 3.7.6 Überabtastung mit quantisierter Rückkopplung Wandelt man das Signal am Ausgang des AD-Wandlers wieder in die analoge Darstellung zurück, und bildet über ein analoges Filter H 0 .j!/ einen Regelkreis, kann das Spektrum des Quantisierungsrauschens so geformt werden, daß ein Großteil seiner Energie im Sperrbereich des nachgeschalteten Dezimierungsfilters G.´/ liegt (Bild 3.41). Um diese Anordnung analysieren zu können, 0 .p/ X✲ ❛ H 0 .p/ ✻ AD DA X.´/q G.´/ Y .´/ Bild 3.41: AD-Wandler mit quantisierter Rückkopplung werden im Signalflußdiagramm zunächst einige Umformungen vorgenommen (Bild 3.42). Dabei 70 3.7 Analog-Digital-Wandler X0❛ ✲ ✻ X0 X0 H 0 .p/ ✄ ✂❛ ✁❛ ❛ H 0 .p/ ✄ ✂❛ ✁❛ ❛ Q q ❄ ❛ Q ✻ q H 0 .p/ ✄ ✂❛ ✁❛ ❛ H 0 .p/ ✄ ✂❛ ✁❛ ❛ ✲ ❛ - Q ✻ q ❛ X ❛ X ❛ ❛ ❛ ❛ X H.´/ Bild 3.42: Umformung zur Bildung der Stufenübertragungsfunktion werden kontinuierliche und diskrete Teile entkoppelt. In der Regelschleife wird die kontinuierliche Übertragungsfunktion H 0 .p/ durch die äquivalente Stufenübertragungsfunktion H.´/ ersetzt, und schließlich die äquivalenten Rauschquelle R einführt (Bild 3.43). Bei System erster Ordnung ist ✄ ❄ ✂❛ ✁❛ ❛ ✲ ❛ - ✲ ❛ ✻ R X0 H 0 .p/ X q H.´/ Bild 3.43: Quantisierte Rückkopplung mit äquivalenter Rauschquelle H 0 .p/ ein einfacher Integrator: H 0 .p/ D p0 p (3.19) Die Verstärkung p0 kann zunächst frei gewählt werden. Die zugehörige Stufenübertragungsfunktion ist dann: ´ 1 (3.20) H.´/ D p0 T 1 ´ 1 Die Analyse der Schaltung liefert dann X.´/ D 1 p0 1 ´ 1 0 R.´/ C A0 X .p/ ´ 1 .1 p0 T / p (3.21) 71 3 Rechenschaltungen Man beachte, daß aus Stabilitätsgründen p0 T 2 .0; 2/ gelten muß. Das Ausgangssignal X.´/ dieses Wandlers wird einem Dezimierungsfilter G.´/ zugeführt, das die notwendige Bandbegrenzung mit der Grenzfrequenz !g sicherstellt. Außerdem soll es für ! < !g eine Entzerrung der durch den Wandler bedingten Übertragungsfunktion durchführen, d.h. es ist mit ´ D e j!T und p D j! G.´/ D ´ 1 .1 p0 T / p I 1 ´ 1 p0 1 ! < !g Bei genügend bandbegrenztem Eingangssignal ist dann für ! < !g p Y .´/ D X.p/ C R.´/ p0 (3.22) (3.23) Es ist zu sehen, daß der Anteil des Rauschens mit steigendem p0 abnimmt. Andererseits muß aus Stabilitätsgründen p0 T < 2 sein. Um die folgende Abschätzung zu vereinfachen, sei p0 T D p = 3 D 1; 8138. Dann gilt für die Rauschleistung am Ausgang des Filters: 1 Nr0 D 2 ZkT q2 q2 !2 T d! D 12 p02 12k 3 kT (3.24) Die Leistung des Quantisierungsrauschens nimmt also mit der dritten Potenz des Überabtastfaktors ab. Für das Signal-Rausch-Verhältnis gilt: 3 Ns D .2n 0 Nr 2 1/2 k 3 3 n 3 4 k 2 (3.25) Den im obigen Beispiel geforderten Genauigkeitszuwachs von 12 Bit würde man hier bereits bei k D 256, d.h., bei einer Taktfrequenz von 11,36 MHz erhalten. Eine weitere Verbesserung des Signal-Rausch-Verhältnisses erhält man, wenn der Grad m der Übertragungsfunktion in der Rückkoppelschleife weiter erhöht wird. Ein Beispiel für m D 3 ist im Bild 3.44 gezeigt, wo eine Anordnung mit 3 Integratoren dargestellt ist. Die Wahl der Parameter X ❛ ✲ ✻ 0 p0 p ✲❛ ✻ q p1 p ✲❛ ✻ q p2 p AD X DA Bild 3.44: Quantisierte Rückkopplung dritten Grades p0 , p1 und p2 wird auch hier durch Stabilitätsbedingungen eingeschränkt. Für das Signal-RauschVerhältnis erhält man allgemein: Ns .2n Nr0 1/2 k 2mC1 4n k 2mC1 wobei die Proportionalitätskonstante noch von der speziellen Dimensionierung abhängt. 72 (3.26) 3.7 Analog-Digital-Wandler 3.7.7 Sigma-Delta-Wandler Wenn man beim Prinzip der quantisierten Rückkopplung nur zwei Quantisierungsstufen, repräsentiert durch einen positiven und negativen Impuls, verwendet, d.h., mit nur einem Bit (n D 1) bei der AD-Wandlung arbeitet, dann ergeben sich eine Reihe schaltungstechnischer Vereinfachungen: Statt eines AD-Wandlers wird ein einfacher Komparator verwendet. Der DA-Wandler entfällt. Man kann direkt die digitalen Impulse, ggf. durch eine Impulsformerstufe regeneriert, verwenden. Ein Abtast-Halteglied kann entfallen. Das Signal-Rausch-Verhältnis des Sigma-Delta-Wandlers ergibt sich rein formal für n D 1 zu Ns k 2mC1 Nr0 (3.27) Diese Gleichung ist für den Extremfall n D 1 jedoch nur näherungsweise gültig. Genaue Werte kann man für ein derartig hochgradig nichtlineares System im Einzelfall nur durch Simulation erhalten. Die Simulation ist bei Verwendung der im ersten Kapitel angegebenen Verfahren exakt möglich. 3.7.8 Anwendungsbeispiele Die Industrie bietet ein breites Spektrum an Wandlern an. Die folgende Auswahl ist examplarisch und willkürlich und stellt keine Bewertung dar. Beispiel für einen Wandler nach dem Wägeprinzip: AD764A (Analog Devices). Daten: Kompletter 12-Bit-Wandler mit Referenzspannung und Takt. 15s Wandlungszeit. Beispiel für einen Parallel-AD-Wandler: MP7684A (Micropower Systems). Daten: Auflösung: 8 Bit. Maximale Abtastfrequenz: 14 MHz. Beispiel für einen Delta-Sigma-Wandler: DSP56ADC16 (Motorola). Daten: Analog- und Digitalfunktionen einschließlich Dezimierungsfilter G.´/ integriert. 73 3 Rechenschaltungen Überabtastfaktor m D 64. Grad: k D 3. Taktrate am Eingang: maximal 6,4 MHz. Taktrate am Ausgang: maximal 100 kHz. Frequenzbereich: 0-45.5 kHz. Welligkeit: 0.001 dB. Auflösung: 16 Bit. 3.8 DA-Wandler Für Signalverarbeitungszwecke kommen folgende DA-Wandler-Verfahren in Betracht: Wandler mit schaltbaren, binär gewichteten Stromquellen. Wandler mit schaltbaren, binär gewichteten Widerständen. Wandler mit R 2R-Netzwerken. Wandler mit geschalteten Kondensatoren. Wandler mit Überabtastung und Noise-Shaping 3.8.1 Wandler mit schaltbaren Stromquellen Jedem Bit im Datenwort wird eine Stromquelle mit einem der Bitwertigkeit proportionalem Strom zugeordnet. Jedes Bit der Datenleitung schaltet die Stromquelle ein oder aus. Alle Ströme werden summiert und ggf. mit einem Operationsverstärker in eine Spannung umgewandelt (Bild 3.45). Diese Art von Wandlern wird vorwiegend in bipolarer Technik hergestellt, da hier die Stromquellen leicht zu realisieren sind. 3.8.2 Wandler mit schaltbaren Widerständen Dem Konzept der binär gewichteten Stromquellen sehr ähnlich ist das Prinzip mit binär gewichteten, schaltbaren Widerständen. Die Widerstandskaskade ist mit einer Referenzspannungsquelle verbunden, und speist binär gewichtete, schaltbare Ströme in den Summierknoten ein (Bild 3.46). Eine weitere Variante ist das geschaltete R 2R-Netzwerk nach Bild 3.47. Hier wird die binäre Gewichtung durch fortwährende Halbierung des Stroms erreicht. Bei dieser Methode läßt sich eine bessere Paarungsgenauigkeit erreichen, als bei den binär gestuften Widerständen. 74 3.8 DA-Wandler R ❜ r ❜ ❜ ❜ ♠ ♠ I0 r ❜ ❜ ❜ ❜ ❜ ❜ ♠ ♠ ♠ ♠ 2I0 r 4I0 r ❜ ❜ r r - Y ♠ ♠ 8I0 Bild 3.45: DA-Wandler mit schaltbaren Stromquellen R ❜ r ❜ ❜ ❜ r ❜ R r ❜ ❜ r ❜ 2R r ❜ ❜ r ❜ 4R r ❜ r - r Y 8R r Uref Bild 3.46: DA-Wandler mit schaltbaren Widerständen 3.8.3 Wandler mit Überabtastung Ähnlich wie bei den AD-Wandlern gibt es auch bei der DA-Wandlung die Methode der Überabtastung (Bild 3.48). Das Signal X.´/ ist bereits mit dem k-fachen der internen Taktfrequenz abgetastet, und kommt von einem Interpolationsfilter. Der Block Q reduziert die Wortbreite auf n Bits, wodurch ein zusätzliches Rundungsrauschen entsteht. Die Regelschleife mit H.´/ bewirkt eine spektrale Formung dieses Rauschens. Nach der Reduktion der Wortbreite erfolgt die eigentliche DA-Wandlung mit nachfolgender Filterung. Für das Signal-Rausch-Verhältnis gelten im Prinzip die gleichen Formeln wie bei der AD-Wandlung mit Überabtastung. Da das nachgeschaltete Analogfilter G.´/ keine scharfen Filterflanken realisiert, ist die Filterung des Rundungsrauschens weniger perfekt. Auch bei dem DA-Wandler ist das Überabtastprinzip mit 1 Bit möglich. 75 3 Rechenschaltungen R ❜ r ❜ ❜ ❜ r ❜ 2R Uref r R ❜ ❜ r ❜ 2R r R ❜ ❜ r ❜ 2R r R ❜ ✲ ❜ ✲ H.´/ ✻- Q - r Y 2R 2R r Bild 3.47: DA-Wandler mit R X r r 2R-Netzwerk ❜ ❜ ❜ G 0 .p/ Y Bild 3.48: DA-Wandler mit Überabtastung 3.9 Übungsaufgaben zu Kapitel 3 27. Erklären Sie die Funktion der Schaltung für das XOR-Gatter in diesem Kapitel! 28. Weisen Sie die korrekte Funktion für die Brückenschaltung für den Übertrag c 0 nach. 29. Weisen Sie die korrekte Funktion der beiden Schaltungen für den Volladdierer nach. 30. Aus dem vorgestellten Prinzip des geschalteten Übertrags für einen Volladdierer läßt sich ein Konzept für eine parallele, hierarchische Übertragsvorbestimmung herleiten. Die Steuervariable des Selektors heiße x. Wie lauten die Gleichungen für c 0 für die beiden Möglichkeiten? 31. Man gehe davon aus, daß das Prinzip des geschalteten Übertrags auch für eine ganze Gruppe von Volladdierern gilt. Ein Selektor schaltet dabei in Abhängigkeit von einer Steuervariablen entweder den Eingangsübertrag c1 der Gruppe oder eine zunächst noch unbekannte Variable y, die unabhängig vom Eingangsübertrag ist, durch. Zeichnen Sie den Selektor mit seinen logischen Variablen auf! 32. Es werden nun zwei Gruppen mit x1 ; y1 und x2 ; y2 zusammengefaßt. Wie lauten die logischen Variablen x und y für den beide Gruppen zusammenfassenden Selektor für den Ausgangsübertrag? 76 3.9 Übungsaufgaben zu Kapitel 3 33. Entwickeln Sie eine Schaltung, die die zugehörigen logischen Gleichungen realisiert! 34. Zeigen Sie, wie ausgehend von Gruppen mit einem Addierer durch fortlaufendes Zusammenfassen unter Anwendung der hergeleiteten Schaltung sich eine baumartige hierarchische Struktur für einen n-stufigen binären Addierer mit Übertragsvorbestimmung ergibt! 35. Es soll ein Wallace-tree mit Volladdierern, die das Komplement von Summe und Übertrag liefern, aufgebaut werden. Wie kann die Zahl der zusätzlich notwendigen Inverter klein gehalten werden? Man studiere hierzu die Wahrheitstabelle für den Volladdierer. 36. Für den Aufbau von Multiplizierwerken werden auf dem Basis(-2)-Kode, dem CSD-Kode und dem Booth-Kode aufbauende Kodewandlerblöcke eingesetzt. Geben Sie schaltungstechnische Realisierungen für die drei Fälle an! 37. Die vorgestellten Normierwerke sind auf die Vorzeichen-Betrags-Darstellung zugeschnitten. Geben Sie die entsprechenden Schaltungen für die Zweierkomplement-Darstellung an! 38. Entwickeln Sie die Schaltung für ein serielles Multiplizierwerk, das nach dem OperandenSchiebe-Prinzip arbeitet, und den CSD-Kode verwendet. Additionsschritte mit einem Faktor von 0 sollen vermieden werden. 39. Beim Aufbau von Parallelmultiplizierern, die Kodes mit negativen Koeffizienten ausnützen, entsteht ein mit dem Vorzeichenbit der Summanden zusammenhängendes Problem, das scheinbar einen unnötig großen Schaltungsaufwand zur Folge hat. Beschreiben Sie die Problematik! 40. Geben Sie ein Verfahren an, das dieses Problem umgeht. 41. Welches sind die spezifischen Vor- und Nachteile der verschiedenen MultiplikatorKodierungen bei Multiplizierern? Unterscheiden Sie dabei parallel arbeitende Schaltungen und die beiden Spielarten von seriellen Strukturen. 42. Ein Audio-Signal soll mit 44.1 kHz und 96 dB Signal-Rauschabstand abgetastet und mit einem AD-Wandler umgesetzt werden. Welche Wortbreite ist notwendig? 43. Dasselbe Signal soll mit einem 12-Bit-Wandler umgesetzt werden. Wie hoch muß bei der einfachen Überabtastung die Taktfrequenz gewählt werden, damit die Forderungen erfüllt werden? 44. Entwickeln Sie die Schaltung für einen dreistufigen Delta-Sigma-Wandler, der mit drei einfachen Integratoren arbeitet. 45. Wandeln Sie die Schaltung in eine für die Analyse und Simulation günstige Form um. 46. Berechnen Sie die Übertragungsfunktion dieses Wandlers. Dabei gehe man von einer linearisierten Darstellung aus. 47. Machen Sie eine Aussage über die Stabilität. 48. Berechnen Sie das durch den Quantisierungsprozeß hervorgerufene Rauschspektrum am Ausgang des Wandlers, wobei weißes und gleichverteiltes Quantisierungsrauschen unterstellt wird. 77 3 Rechenschaltungen 78 4 Signalprozessoren Signalprozessoren sind speziell auf die Belange der digitalen Signalverarbeitung zugeschnittene Mikroprozessoren. Der Vorteil von Signalprozessorsystemen gegenüber „festverdrahteten“ kundenspezifischen Lösungen ist die durch die Programmierbarkeit gewonnene Flexibilität beim Entwurf. Typische Anwendungen sind Modems Echo-Entzerrer Vocoder Spiele Meßgeräte Graphik-Verarbeitung (Laserdrucker) Regelungs- und Steuerungsaufgaben 4.1 Aufbau von Signalprozessoren Der Aufbau der gängigen Signalprozessoren entspricht mehr oder weniger dem im Bild 4.1 gezeigten Schema. Aufzählung der Baueinheiten: Funktionseinheiten – Arithmetische und logische Einheit – Adress-Generator – Programmsteuerwerk – Bedingungslogik – Instruktionsdekoder – Register-File 79 4 Signalprozessoren Programm-Bus ✻ ❄ Instruktionsdekoder ✲ ❄ Bedingungslogik ✲ ✲ ✻ ❄ ❄❄ ✲ ProgrammSpeicher steuerwerk ✻ Program-Adress-Bus Programm- Adressgenerator ❄ Daten-Adress-Bus ✛ ✲ ❄ ❄ ❄ EinAusgabe Register- DatenSpeicher File ✻ ❄ ✻ ❄ ✻ ❄ Daten-Bus ✻ ❄ ✲ Arithmetische und logische Einheit Takterzeugung und Steuerung Bild 4.1: Architektur eines Signalprozessors – Datenspeicher – Programmspeicher – Peripherieeinheiten – Takterzeugung und Steuerung Busse – Datenbus – Daten-Adress-Bus – Programmbus – Programm-Adress-Bus 4.1.1 Arithmetik-Einheit In der Arithmetikeinheit laufen die eigentlichen Signalverarbeitungsfunktionen ab. Der Kern der Einheit besteht meist aus einem oder mehreren Multiplizierern und Addierern. Dazu kommen in der Regel Schiebewerke und eine Einheit für logische Operationen. Klassifizierung Zur Klassifizierung eignen sich die folgenden Gesichtspunkte: Zahlendarstellung und Wortbreite 80 4.1 Aufbau von Signalprozessoren Festkommarechenwerke. Die Arithmetikeinheit verarbeitet Festkommazahlen. Zu dieser Kategorie gehören: 16 Bit: Texas Instruments: TMS32010 ... TMS32025 und TMS32050 AT&T: DSP16 Analog Devices: ADSP2100 24 Bit: Motorola: DSP56000 Texas Instruments: TMS32030 AT&T: DSP32 32 Bit: *Motorola: DSP96000 Die mit * gekennzeichneten Prozessoren arbeiten auch mit Gleitkommazahlen. Gleitkommarechenwerke. Die Arithmetikeinheit verarbeitet Gleitkommazahlen. 32 Bit: Texas Instruments: TMS32030 Motorola: DSP96000 AT&T: DSP32 Gegenseitige Verschaltung von Addierer und Multiplizierer Unabhängige Funktion. Addierer und Multiplizierer arbeiten parallel und weitgehend voneinander unabhängig. Beispiel: TMS32030, (Bild 4.2). MAC-Anordnung. Dem Multiplizierer ist ein als Akkumulator arbeitender Addierer nachgeschaltet. Beispiel: DSP32, (Bild 4.3). Das p-Register wirkt als Pipeline-Register. Dadurch können die vom Multiplizierer berechneten Produkte erst im nächsten Takt vom Addierer verarbeitet werden. Dieser Effekt muß beim Programmieren berücksichtigt werden. Andere Signalprozessoren haben eine MAC-Struktur ohne Pipelining (ADSP2100, DSP56000). Weitere Klassifizierungsmerkmale: Zusammenwirken mit Registern 81 4 Signalprozessoren CPU1 CPU2 REG1 REG2 ❄ ❄ ❄ ❄ ❄ ❄ ❄ ❄ ❄ ❄ ❄ Multiplizierer ❄ ALU/Shifter ❄ ❄ Register Bild 4.2: Addierer und Multiplizierer beim TMS 32030 ❄ ❄ y x ❄ ❄ ❄ ❄ Multiplizierer ❄ ❄ ❄ ❄ p s ❄ RegisterFile Bild 4.3: MAC-Anordnung Spezielle Register für spezielle Operationen wie beim TMS32010. Allgemeine Register für alle Operationen verwendbar wie beim TMS302030, DSP56000. Teilweise spezialisierte Register beim ADSP2100. Mehrfache Genauigkeit. Addition und Multiplikation auf mehrere Worte ausdehnbar ist zufriedenstellend nur beim ADSP2100 gelöst. 82 4.1 Aufbau von Signalprozessoren 4.1.2 Adress-Generator Viele Algorithmen arbeiten mit indizierten Variablen. Es muß daher mit Zeigern auf Speicherbereiche zugegriffen werden können. Alle Signalprozessoren besitzen spezielle Adress-Register, die als Index- bzw. Offset-Register verwendet werden können. Diese Zeiger können meist automatisch modifiziert werden (Autoinkrement, -dekrement). Oft gibt es hierzu eigene Modifikationsregister (DSP56000, ADSP2100, TMS32030). Viele Algorithmen verschieben Variable durch Verzögererketten (FIR-Filter). Dieses Verschieben kann eliminiert werden, wenn durch geeignete Zeigeroperationen die Lage der Variablen zu einem Zeiger verändert wird. Voraussetzung dafür ist die Fähigkeit zur zyklischen Adressierung von Speicherbereichen. Ein spezielles Längenregister bestimmt die Länge eines zyklischen Datenblocks. Die Zeigermodifikationen erfolgen dann stets modulo der Länge des Blocks. Häufig muß die Summe von Produkten aus Faktoren, die beide indiziert sind, berechnet werden (FIR-Filterung, Korrelation). Zu diesem Zweck sind meist zwei voneinander unabhängige AdressGeneratoren vorhanden, die parallel zur Akkumulation der Teilprodukte arbeiten. Der Algorithmus der schnellen Fouriertransformation erfordert eine bit-inverse Adressierung. Hierzu wird das vom Adressgenerator erzeugte Adresswort gespiegelt. Beim DSP56000 wird die Richtung des Übertragsdurchlaufs im Adressrechenwerk umgekehrt. Als Beispiel sei im Bild 4.4 einer von zwei Adressgeneratoren beim ADSP2100 gezeigt: DMD Bus ✻ ✻ ✻ ❄❄ ❄ LRegister 4x14 ❄ IRegister 4x14 ModulusLogik q ✻✻ ❄ BitReverse q q ❄ ❄ MRegister 4x14 ❄ q ❄ Adresse Bild 4.4: Adressgenerator des ADSP2100 83 4 Signalprozessoren 4.1.3 Programmsteuerwerk Das Programmsteuerwerk erzeugt die Adressen für den Programmspeicher, in dem die Instruktionen des Programms abgelegt sind. Diese Adressen werden von einem Programmzähler geliefert. Im normalen Betrieb wird der Zähler nach jeder Instruktion inkrementiert, um den nächsten Befehl zu adressieren. Neben diesem sequentiellen Programmablauf gibt es weitere Möglichkeiten. Bei programmierten Sprungbefehlen (JUMP) wird der Programmzähler mit einem vorgebenen Wert überschrieben. Mit dem Programmzähler verbunden ist üblicherweise ein Stack, in dem der momentane Programmzählerstand zum Zweck der späteren Rückspeicherung abgelegt wird. Das ist der Fall bei Unterprogrammaufrufen (CALL). Wird im Unterprogramm ein Return-Befehl ausgeführt, wird der Zählerstand nach dem CALL-Befehl des rufenden Programms zurückgespeichert. Auch Programmschleifen sind eine Abweichung vom linearen Programmlauf. Spezielle Schaltungseinheiten speichern Anfang und Ende des mehrfach auszuführenden Programmteils, sowie die Zahl der Durchläufe. Der Rücksprung zum Schleifenanfang erfolgt üblicherweise ohne zusätzlichen Zeitverlust. In der Regel können Schleifen mehrfach verschachtelt werden. Zu diesem Zweck existiert ein eigener Stack für die Schleifenparameter. Eine weitere Ausnahme vom linearen Programmlauf ist die Unterbrechung (Interrupt). Sie kann von internen oder externen Ereignissen ausgelöst werden, und wirkt dann wie ein Unterprogrammaufruf mit einer fest gegebenen Adresse. Neben dem Programmzähler werden dabei häufig noch weitere Register auf dem Stack zwischengespeichert. 4.1.4 Bedingungslogik Viele Algorithmen führen Programmteile nur aus, wenn bestimmte interne oder externe Bedingungen zutreffen. Die Bedingungslogik beeinflußt das Programmsteuerwerk in der Weise, daß bedingte Programmverzweigungen möglich sind. Solch Bedingungen können sein: Interne Bedingungen: ALU=0 ALU negativ Übertrag der ALU Überlauf der ALU Überlauf des MAC Schleifenzähler abgelaufen 84 4.1 Aufbau von Signalprozessoren Externe Bedingungen: Status von Schnittstellen Abfrage spezieller Signale 4.1.5 Instruktionsdekoder Der Instruktionsdekoder arbeitet im Prinzip gleich wie bei normalen Mikroprozessoren. Er entschlüsselt das gerade aus dem Programmspeicher geholte Befehlswort, und leitet die notwendigen Informationen an die betroffenen Einheiten weiter. 4.1.6 Register-File Signalprozessoren haben wie Mikroprozessoren eine Reihe von Registern. Diese sind jedoch häufig bestimmten Einheiten zugeordnet, und nicht frei verfügbar. Insbesondere benötigen die AdressGeneratoren oft eine Vielzahl von Hilfsregistern. 4.1.7 Daten- und Programmspeicher Daten- und Programme können in getrennten Speichern mit eigenen Bussen (Harvard-Architektur) oder in demselben Speicher (von Neumann-Architektur) untergebracht sein. Beim DSP56000 gibt es für die Daten getrennte X- und Y-Speicher. Speicher können sowohl auf dem Chip oder extern angeordnet sein. Verschiedene Prozessoren haben einen Festwertspeicher (ROM oder EPROM) auf dem Chip. Andere Prozessoren gestatten die Verwendung eines langsamen externen Boot-EPROMS, dessen Inhalt während der Initialisierungsphase automatisch in das schnelle interne Programm-RAM gespeichert wird. Einige Signalprozessoren haben auf dem Chip einen Cache-Speicher, in dem Instruktionen des Programmspeichers „eingefroren“ werden können, beispielsweise bei Programmschleifen. Damit wird der Programmbus für zusätzliche Zugriffe, z.B. auf dort abgelegte Daten, frei. 4.1.8 Peripherie-Einheiten Externe periphere Einheiten (AD- und DA-Wandler) können über den Prozessorbus angesprochen werden. Viele Prozessoren besitzen Peripherieeinheiten auf dem Chip (DMA-Steuereinheiten, synchrone, serielle Schnittstellen, CODEC-Schnittstellen). 85 4 Signalprozessoren 4.1.9 Takterzeugung und Steuerung Diese Einheit erzeugt aus einem externen Takt alle notwendigen internen Takte, und steuert den Ablauf der internen Funktionen. 4.1.10 Prozessorbusse Jeder Signalprozessor besitzt interne und externe Busse. Die internen Busse erlauben den Datenaustausch der Funktionseinheiten. Der externe Bus verbindet den Prozessor mit dem externen Speicher und den Peripherieeinheiten, und überträgt Adressen und Daten des Programm- und Datenspeichers und der Peripherie. 4.2 Beispiele industrieller Signalprozessoren 4.2.1 Blockdiagramm des TMS 32020 Als Beispiel für einen in der Praxis häufig verwendeten Signalprozessor ist im Bild 4.5 der Aufbau des TMS32020 gezeigt [6]. Darin bedeuten ACCH ACCL ARn ARAU ARB ARP DP DRR DXR GREG IFR IMR RPTC IR PR PRD TIM TR ST0,ST1 86 = = = = = = = = = = = = = = = = = = = Accumulator high Accumulator low Auxiliary register Auxiliary register arithmetic unit Auxiliary register pointer buffer Auxiliary register pointer Data memory page pointer Serial port data receive register Serial port data transmit register Global memory allocation register Interrupt flag register Interrupt mask register Repeat instruction counter Instruction register Product register Period register for timer Timer Temporary register Status register 4.2 Beispiele industrieller Signalprozessoren Program Bus ✛16 ❄ ❄ ❄ 16 ✛ ✻ ✛ ✛ A15-A0 16 16 ✲ 16 16 ❄ ❄ 16 ✻ 16 16 ❄ 16 ❄ 3 ✲ 3 Program Bus ✲ 16 ✲ 16 ❄ TR(16) ❄ ❄ Data Bus ✻ ❄ ❄ 16 ❄ 9 AR0(16) AR1(16) AR2(16) AR3(16) AR4(16) 16 DP(9) Shifter(0-16) 7 MUL ❄ 16 Block B2 (32x16) Data RAM Block B1 (256x16) ✻ 16 ❄ ✛ PR(32) 16 ❄ 16 ❄ ❄ 32 32 Shifter(-6,0,1,4) ❄ 32 ❄ 16 16 16 9 ARAU ✛ ❄ ❄ DRR(16) DXR(16) TIM(16) PRD(16) IMR(6) GREG(8) 16 ✻❄ ❄ ARB(3) ✛3 ✻ ✲ 16 ✲ ❄ ✲ ✲ ✲ ✲ ✲ ✲ 16 16 16 16 6 8 Stack (4x16) 3 ARP(3) 16 ✲ 16 16 D15-D0 ✛ IR(16) ST0(16) ST1(16) RPTC(8) IFR(6) 16 PC(16) ✛ ❄ ✲✻ ✲ ✲ 16 Controller 16 ❄ ❄ ❄ ❄ 32 ❄ 16 Data/Prog RAM(256x16) Block B0 32 ❄ 32 ACCH(1) ACCL(16) ✻ ❄ ❄ 16 Shifter(0,1,4) ✻ 16 ❄ 16 16 ❄ ✲ Data Bus Bild 4.5: Architektur des TMS 32020 4.2.2 Blockdiagramm eines ADSP 2100 Auch der ADSP2100 [7] (Bild 4.6) hat getrennte Busse für Daten und Instruktionen. Der PMA(program memory address) Bus führt die Adressen des Programmspeichers, der DMD- (data memory address) Bus führt die Adressen des Datenspeichers. Die zu und von diesen Bussen fließenden Daten laufen über den PMD- (program memory data) bzw. DMD- (data memory data) Bus. Der PMD-Bus kann außer Instruktionen auch Daten, die im Programmspeicher liegen können, übertragen. Die drei Recheneinheiten ALU, MAC und Shifter stehen daher mit dem PMD- und DMD-Bus in Verbindung. Daneben besitzen sie noch einen eigenen gemeinsamen R- (result) Bus, über den auf Daten von speziellen Ergebnisregistern der drei Einheiten zugegriffen werden kann. Zur Adressierung der Operanden der Recheneinheiten dienen die beiden Adressgeneratoren, die bereits beschrieben worden sind. Sowohl die ALU wie auch der MAC können gleichzeitig zwei Operanden 87 4 Signalprozessoren ❄ ✻ ❄ Instruction Register ✻ ❄ Data Address Generator 1 ❄ Data Address Generator 2 Program Sequencer ❄ ❄ ❄ PMA Bus (14) DMA Bus (14) ✻❄ ❄ PMD Bus(24) ✲ ✲ ✛ ✲ PMA DMA PMD ✻ ❄ Bus exchange ✻ ❄ ❄ DMD Bus (16) ✻ ✻ ✻ ✲ Input ❄Regs❄ ✻ ✲ Input ❄Regs❄ ✻ ✲ Input ❄Regs ALU Output Regs ❄ MAC ✛ Output Regs ❄ ✛ ✲ DMD ✻ Shifter ✛ R Bus(16) Output Regs ❄ ✛ Bild 4.6: Architektur des ADSP 2100 mit völlig unabhängigen Adressierungsarten ansprechen, falls ein Operand im daten- und der andere im Programmbereich des Speichers liegt. Das Programmsteuerwerk besteht aus dem ProgrammSequenzer und dem Instrukionsdekoder. Die ALU (Bild 4.7) besteht aus dem eigentlichen ALUKern, der neben Additionen und Subtraktionen auch logische Operationen wie AND, OR, negieren u.s.w. durchführen kann. Das Ergebnis dieser Operation kann wahlweise in ein Ergebnis-Register (AR) oder ein Rückführregister (AF) geschrieben werden. Das Ergebnisregister kann auch direkt vom DMD-Bus beschrieben werden. Die Eingänge des ALU-Kerns bilden einen X- und einen YZweig. der X-Zweig hat Zugriff auf den R-Bus oder die Register AX0 und AX1. Über den R-Bus können das Ergebnisrregister AR oder die Ergebnisregister der anderen Recheneinheiten angesprochen werden. Der Y-Zweig hat Zugriff auf das Rückführregister AF oder die Register AY0 und AY1. Das Laden der Register AX0,AX1 vom DMD-Bus bzw. AY0,AY1 vom DMD- oder PMD-Bus geschieht über spezielle Registertransferoperationen, die auch parallel zur ALU-Funktion ablaufen können. Falls die Y-Register vom PMD-Bus geladen werden und dabei den Adressgenerator 2 benutzen, kann eine Paralleloperation von ALU und X- und Y-Datentransfer stattfinden, wobei die Adressierungsarten unterschiedlich sein können. Die ALU liefert noch eine Reihe von Bedingungssignalen (Null, Overflow usw.), die vom Programmsteuerwerk zur Steuerung des Programmflusses verwendet werden können. Der MAC (multiplier-accumulator, Bild 4.8) besteht aus dem eigentlich MAC=Kern, der zwei 16-Bit-Operanden multipliziert und gegebenenfalls zu dem Inhalt des aus den Registern MR2(8), MR1(16), MR0(16) bestehenden 40-bit Akkumulators addiert, bzw. davon subtrahiert. Diese Register sind die Ergebnisregister und können auf den R-Bus geschaltet werden. Auch hier gibt es ein Rückführregister MF. Der X-Operand kann vom R-Bus oder vom MX0,MX1Register geholt werden, der Y-Operand vom Rückführregister oder vom MY0,MY1-Register. MX0 und MX1 werden vom DMD-Bus geladen, MY0,MY1 vom DMD- oder PMD-Bus. Bezüglich des 88 4.2 Beispiele industrieller Signalprozessoren ❄ ❄ ✻ ✻ PMD Bus (24) DMD Bus(16) MUX ❄ AX0, AX1 ❄ AY0, AY1 Register Register ❄ ❄ ❄ ❄ MUX MUX AZ AN AC AV AS AQ ❄ ❄ ✛ ✛ ✛ ✛ ✛ ✛ AF Register ✛ Cl ALU ❄ ❄ MUX ❄ AR Register ❄ R Bus (16) Bild 4.7: Blockdiagramm der ALU ✻ ❄ MX0, MX1 ❄ ❄ ✻ MUX ❄ MY0, MY1 Register Register ❄ ❄ MUX ❄ ❄ ❄ MUX ❄ MF Register Multiplier ❄ ❄ Add/Subtract R1 R2 ❄ ❄ MUX ❄ MR2 Register ❄ ❄ ❄ MUX ❄ MR1 Register ❄ ✻ PMD Bus (24) DMD Bus (16) ✲ MV R0 ❄ ❄ MUX ❄ MR0 Register ✲M ✲U ✲X ❄ R Bus (16) Bild 4.8: Blockdiagramm des MAC 89 4 Signalprozessoren Datentransfers und der Adressierung gilt dasselbe wie bei der ALU. Das Schiebewerk (Bild 4.9) be- ✻ ✲ ❄ ❄ ✻ MUX ❄ SB Register ❄ SE Register ✻ MUX Neg ✻ From Instruction ✻ DMD Bus (16) ❄ ❄ MUX ✛ ✛ x ❄ ❄ ✲ ✲ Hi/Lo ✻✻✻ ❄ SI Register SS Exponent Detector Compare ❄ ❄ MUX ❄ ✻ Shifter Array ❄ ❄ OR/PASS ❄ ❄ MUX ❄ SR1 ❄ ❄ MUX ❄ SR0 Register Register ❄ ❄ MUX ✻ ✻ R Bus (16) Bild 4.9: Blockdiagramm des Schiebewerks steht aus dem Shifter-Array, das wahlweise von dem Eingangsregister SI oder dem R-Bus gespeist werden kann. Die Zahl der gewünschten Verschiebungen kann, eventuell mit negativem Vorzeichen, dem SE-Register entnommen werden, oder kann direkt in der Instruktion verschlüsselt sein. Das Eingangsregister SI wird vom DMD-Bus geladen, das Register SE wird vom DMD-Bus oder von einer Exponenten-Detektor-Einheit geladen. Das Ergebnis der Schiebeoperation wird in ein aus den Registern SR1(16),SR0(16) bestehendes 32-Bit-Ergebnisregister geschrieben. Wahlweise kann auch eine Oder-Verknüpfung mit dem vorigen Inhalt erfolgen. Das Programmsteuerwerk (Bild 4.10) besteht aus dem Programmzähler und einem Selektor der die Adresse der nächsten Instrukion auswählt. Das kann entweder der inkrementierte Programmzähler (Normalfall), eine in der Instruktion enthaltene Adresse (JUMP, CALL, Schleifenrücksprung), eine im PC-Stack gespeicherte Adresse (RETURN, RETURN from Interrupt), oder ein Inrerrupt-Vektor sein. In den PC-Stack wird stets der inkrementierte Inhalt des Programmzählers kopiert (bei CALL, Interrupt, Setzen des Beginns einer Programmschleife). Programmschleifen können ohne zusätzliche Verzweigungsbefehle programmiert werden. Hierzu dient ein Loop-Stack in Verbindung mit einem Loop-Comparator. Ein DO address UNTIL condition -Befehl speichert die letzte Adresse address der Schleife zusammen mit einem Kode condition für die Abbruchbedingung in den Loop-Stack. Gleichzeitig wird der inkrementierte Inhalt des Programmzählers als Anfangsadresse der Schleife in den PC-Stack geschrieben. Abbruchbedingungen können vom arithmetischen Status (Null, Carry, Overflow...) der ALU abgeleitet werden oder von einem speziellen Zähler (down counter) stammen, mit dem eine vorgebene Zahl von Schleifendurchläufen programmiert werden kann. Auch dieser Zähler ist mit einem Stack verbunden. Jeder Schleifenbefehl (DO) bewirkt eine PUSH-Operation von Loop- PC- und Count-Stack, sodaß Schleifen verschachtelt werden können. Ist eine Schleife programmiert worden, vergleicht ein Loop-Komparator beständig die laufende Programmadresse mit der im Loop-Stack stehenden Schleifen-Endadresse. Besteht Übereinstimmung, wird anhand der Abbruchbedingung 90 4.3 Programmierung DMD Bus (16) ✻ ✻ Count Stack 4 14 ❄ ❄ ✻ MUX ❄ From Instruction Register Down Counter ❄ Loop Stack 418 Status Stack 4 16 ✲ Arithmetic Status IRQ0-4 ✲ ❄ ❄ ✻ MUX ❄ ✲ ✲ Status Registers ❄ ❄ Condition Logic ✻ ✻ ❄ MUX Program counter ❄ Interrupt PC Stack 1614 Controller Next Address MUX PMA Bus(14) ✻ ✻ ❄ Increment ❄ ✻ ❄ ❄ ❄ Loop Comparator ❄ ❄❄❄❄ Next Address ✛ Source Select ❄ Bild 4.10: Blockdiagramm des Programmsteuerwerks des ADSP2100 (ebenfalls im Loop-Stack stehend) und des arithmetischen Status bzw. Schleifenzählers entschieden, ob zum Anfang der Schleife (Adresse auf PC-Stack) gesprungen werden muß. In diesem Fall wird der PC-Stack in den Programmzähler geladen. Andernfalls wird der Programmzähler inkrementiert, und es wird eine POP-Operation von Loop- PC- und Count-Stack durchgeführt. Dadurch wird gegebenenfalls eine übergeordnete Schleife wieder sichtbar. Der Interrupt-Controller reagiert auf einen von vier externen Interrupts. Der Programmzähler wird im PC-Stack gerettet und mit einem Interrupt-Vektor überschrieben. Der arithmetische Status wird in einem Status-Stack gerettet. Anschließend läuft eine Interruptroutine ab, die mit RTI (return from interrupt) abgeschlossen wird. Dabei wird eine POP-Operation des PC- und Status-Stacks durchgeführt, d.h. der unterbrochene Programmablauf wird fortgesetzt. 4.3 Programmierung 4.3.1 FIR-Filter mit TMS32020 Als Beispiel für die Programmierung des TMS32020 ist das Programm eines FIR-Filters wiedergegeben. 91 4 Signalprozessoren IN CNFP 0,AD LARP LRLK MPYK RPTK MACD AR1 7 0 7 COF,*- APAC SACH 0 OUT 0,DA ;Wert in Datenspeicher schreiben ;Konfiguriere Block B0 als Programm;speicher ;ARP zeigt auf AR1 ;Setze Zeiger auf N-1 ;Setze Multipliziererausgang auf 0 ;Setze Wiederholzaehler auf N-1 ;Berechne Summe und schiebe Daten;werte ;Akkumuliere letzten Wert ;Akkumulator in Datenadresse 0 ;speichern ;Wert ausgeben Wirkungsweise des Programms: Der Grad des FIR-Filters sei 8. Die Koeffizienten des Filters sind im Speicher ab der Adresse COF abgelegt. Die Eingangswerte des Filters sind im Datenspeicher ab Adresse 0 gespeichert. Zunächst wird ein AD-Wandler Wert gelesen, und in Adresse 0 gespeichert. Die alten Signalwerte sind bereits im Speicher verschoben worden, so daß die Adresse 0 frei ist. Dann wird ein Zeiger für den Datenspicher definiert und auf das Ende des Datenbereichs gesetzt. Der Akkumulator wird gelöscht. Dann erfolgt die eigentliche Akkumulation. Hierzu wird der Befehl MACD N-1 mal ausgeführt. Er führt in einem Zyklus folgende Operationen durch: Modifizieren eines Zeigers (PC) für die Koeffizienten im Datenspeicher. Multiplizieren von ci und xj Akkumulieren des Produkts Verschieben eines Signalwerts im Datenspeicher Dekrementieren des Datenzeigers Dann wird die Akkumulieroperation abgeschlossen und das Ergebnis dem DA-Wandler übergeben. Siehe hierzu das Schema im Bild 4.11. 4.3.2 FIR-Filter mit ADSP2100 Bei der FIR-Filterung kann der ADSP2100 sinnvoll die zyklische Adressiermethode verwenden. Das Programm verwendet dei Indexregister I0 für den Datenbereich in dem die Signalwerte stehen, und I4 für den Programmbereich, in dem die Koeffizienten stehen. Nach jeder Operation mit diesen Zeigern werden sie automatisch mit den Werten in M0 und M4 modifiziert. damit die zyklische Adressierung wirksam wird, müssen die Längenregister L0 und L4 auf N (hier 8) gesetzt sein. Ln, Mn und In werden nur einmal beim Start des Prozessors geladen. Das Programm für die Filterung könnte folgendermaßen beschaffen sein: 92 4.4 Entwicklungswerkzeuge AD ✲ ACC ✲ C❥ ✻ x9 c7 x9✲ x8 x7 x6 x5 x4 x3 x2 c6 x8 c5 x7 c4 x6 ✛ x5 c3 ✲ ❥ c2 x4 ✛ c1 x4 c0 x3 Bild 4.11: FIR-Filterung mit TMS 32020 AX0=DM(AD); CNTR=7; MR=0, MX0=DM(I0,M0),MY0=PM(I4,M4); DO LP UNTIL CE; LP: MR=MR+MX0*MY0(SS),MX0=DM(I0,M0),MY0=PM(I4,M4); MR=MR+MX0*MY0(RND), DM(I0,M0)=AX0; DM(DA)=MR1; Auch hier wird zunächst der AD-Wandler gelesen, Schleifenzähler gesetzt, und der Akkumulator gelöscht. Die Anweisung mit der Marke LP: wird N-1 mal ausgeführt. Im einzelnen wird hier zum Akkumulatorinhalt das neue Teilprodukt MX0*MY0 addiert. Mit Hilfe der beiden Adressgeneratoren werden gleichzeitig die neuen Werte für MX0 und MY0 aus dem Speicher geholt, wobei die Zeiger I0 und I4 modifiziert werden. Nach Ablauf der Schleife wird die Akkumulation abgeschlossen und gleichzeitig das älteste Datenwort im Datenspeicher vom neuen Signalwert überschrieben und der Datenzeiger um 1 erhöht. Damit ist aufgrund der zyklischen Adressierung beim nächsten Ablauf des Filteralgorithmus der Zeiger immer jeweils um 1 größer, sodaß ohne explizite Verschiebung der Datenwerte die richtigen xi adressiert werden. Siehe Bild 4.12. 4.4 Entwicklungswerkzeuge Für die Entwicklung von Signalprozessorsystemen steht für die meisten Fabrikate eine Reihe von Werkzeugen in Form von Entwicklungsprogrammen für verschiedene Rechner (VAX, IBM-PC ...) zur Verfügung. 93 4 Signalprozessoren ✲ ACC ✲ C❥ ✻ x8 c0 c1 x9 c2 x2 c3 x3 ◗ s ❥ x c4 ◗ 4 ❦ ◗ ◗ x5 c5 c6 x6 c7 x7 x8 x x10 9 AD ✲ x2 x3 x4 x5 x6 x7 Bild 4.12: FIR-Filterung mit ADSP 2100 4.4.1 Compiler Compiler erlauben die Beschreibung der Algorithmen in einer höheren Programmiersprache. Üblich ist C, ADA und FORTRAN. Der Nachteil dieser Compiler ist die häufig geringere Effizienz des übersetzten Programms. 4.4.2 Assembler Assembler gestatten die Beschreibung des Algorithmus in einer maschinennahen, dem Prozessor angepaßten Form. Die Effizienz des Programms ist meist hoch, hängt aber von den Kenntnissen des Programmierers über die Architektur des Prozessors ab. 4.4.3 Linker Die Verwendung modularer Programmiertechniken führt dazu, daß viele kleine Programm-Module entwickelt werden, die einzeln übersetzt und ausgetestet werden können. Das Zusammenbinden solcher Module zu einem Ganzen ist mit dem Linker möglich. 4.4.4 Simulator Das Austesten eines Programms kann mit einem Simulator geschehen, der die Arbeitsweise des Signalprozessorsystems auf dem Entwicklungsrechner nachbildet. Er erlaubt Einblick in den Programmlauf, Daten- und Programmspeicher, zeigt Registerinhalte an und gestattet das Setzen von Breakpoints. 94 4.4 Entwicklungswerkzeuge 4.4.5 Emulator Im Gegensatz zum Simulator erlaubt der Emulator das Austesten in Echtzeit an der OriginalHardware. Hierzu wird der Prozessor physikalisch durch den Emulator ersetzt, der die Funktion nachbildet, und ähnlich wie der Simulator Einblick in den Programmlauf gestattet. 4.4.6 PC-Entwicklungskarten Für IBM-PCs sind Entwicklungskarten mit einem kompletten Signalprozessorsystem erhältlich. Die auf dem PC entwickelten Programme können direkt in den Speicher des Signalprozessors geladen und zur Ausführung gebracht werden. Auch hier ist eine Überwachung des Programmablaufs und die Anzeige von Speicher- und Registerinhalten möglich. 95 4 Signalprozessoren 96 Literaturverzeichnis [1] U, R.: Systemtheorie, Grundlagen für Ingenieure. R. Oldenburg Verlag 1990, ISBN 3-486-21513-2. [2] S̈, H. W.: Digitale Signalverarbeitung, Band I. Springer-Verlag 1988, ISBN 3-54018438-4. [3] S, A. D.: Digitale Verarbeitung analoger Signale. R. Oldenburg Verlag 1984, ISBN 3-486-23102-2. [4] R, G. W.: Binary arithmetic, Advances in Computers, Vol. 1, Academic Press, New York. [5] E, L., P̈, J., W, J.: A/D- und D/A-Wandler. Franzis-Verlag München, 1988, ISBN 3-7723-9811-1. [6] T I: Second-Generation TMS320 User’s Guide. Texas Instruments, 1988, ISBN 2-86886-027-3. [7] A D: ADSP-2100 User’s Manual. Analog Devices, Inc, 1989. [8] K, K.: Statistische Nachrichtentheorie. Erster Teil, Signalerkennung und Parameterschätzung. Springer-Verlag 1986, ISBN 3-540-17153-3. [9] K, K.: Statistische Nachrichtentheorie. Zweiter Teil, Signalschätzung. SpringerVerlag 1988, ISBN 3-540-50125-8. [10] G, A.: Applied Optimal Estimation. The M.I.T. Press, 1982, ISBN 0-262-70008-5. 97