Inhalt KE4 4.2 Die Parallel-Schnittstelle

4.1/1

4. Aufbau und Funktion der Schnittstellenbausteine - Teil I

In den beiden folgenden Kapiteln werden die im Bild 3.1-1, KE3, dargestellten Schnittstellenbausteine (Peripheriebausteine) und Schnittstellen ausführlich beschrieben. Dies sind

4.1 Allgemeines zu den Schnittstellenbausteinen

Die Schnittstellenbausteine dienen zur Übertragung eines einzelnen Datums in serieller oder paralleler Form oder einzelner Signale zwischen der CPU und einem Peripheriegerät, wie z.B. einem Terminal oder einem Drucker. Sie übernehmen dazu die Steuerung dieser Peripheriegeräte und die Synchronisation des Datentransports 1).

Sie werden häufig als "programmierbare" Interface-Bausteine bezeichnet, da sie vom Prozessor unter Programmkontrolle in verschiedene Arbeitsweisen gesetzt werden können. Dennoch darf man diese Art der Programmierung nicht mit der Programmierung des Mikroprozessors verwechseln, da hier lediglich durch die Eingabe eines Steuerwortes eines von mehreren fest vorgegebenen "Programmen" im Baustein aufgerufen wird. Im Bild 4.1-1 ist grob der allgemeine Aufbau eines Schnittstellenbausteins skizziert.

Auf der linken Seite sieht man die Anschlüsse zum Mikroprozessor. Dazu gehört vor allem der bidirektionale Datenbus, der bei den meisten Bausteinen 8 bit breit ist. Durch die Schreib/Lese-Leitung R/#W kann die Richtung des Datentransports vom µP in den Baustein (schreiben, write) bzw. aus dem Baustein zum µP (lesen, read) bestimmt werden. Der Eingang E stellt dem Baustein den gemeinsamen Systemtakt zur Verfügung (vgl. die Signale des 6809 im Abschnitt 1.3, KE1). Durch ein L-Signal am Reset-Eingang kann der Baustein in einen definierten Grundzustand zurückgesetzt werden, der dadurch gekennzeichnet ist, daß einige oder alle Register (bis auf spezielle Bits) auf einen definierten Anfangswert (default), oft $0..0, gebracht werden.

Im allgemeinen bestehen zwei verschiedene Möglichkeiten, einen Schnittstellenbaustein durch die CPU anzusprechen2):


Bild 4.1-1:Prinzipieller Aufbau eines Schnittstellenbausteins

Bei beiden Arten dienen spezielle Eingänge RSi zur Anwahl der einzelnen, unterscheidbaren Komponenten des Bausteins. Sie werden am einfachsten durch Adreßsignale niedriger Wertigkeit (z.B. A0, A1,..) ohne zusätzliche Decodierung beschaltet, wodurch der Aufwand verkleinert wird, aber auch einige Adressen "verloren" gehen.

Der Interruptausgang #INT dient zur Übermittlung einer im Baustein erzeugten oder von der Peripherie an einem seiner Eingänge gemeldeten Unterbrechungsanforderung an die CPU.

Alle Schnittstellenbausteine verfügen in der Regel über wenigstens 3 interne Register:

Der wesentliche Unterschied zwischen den Bausteinen besteht in der "Breite" der Information, die an das Peripheriegerät abgegeben oder von dort empfangen wird: Bei den seriellen Bausteinen ist sie in der Regel 1 bit breit, bei den parallelen 1 byte. Im letzgenannten Fall spricht man von einem (Parallel-)Port. Dazu kommen bei beiden Bausteinarten noch einige Steuer- und Kontroll-Leitungen.

Die Information des Prozessors über das Vorliegen eines Datums von der Peripherie bzw. den Wunsch des Peripheriegerätes, ein Datum zu empfangen, geschieht in der Regel über ein Unterbrechungssignal an einem speziellen Eingang (Interrupteingang). Dieses Signal kann zu jedem Zeitpunkt auftreten, also asynchron zum Systemtakt (d.h. dem Signal E beim 6809). Durch ein besonderes Bit im Steuerregister (Interrupt Enable - IE) kann die Weitergabe dieser Unterbrechung an die CPU erlaubt oder unterbunden werden. Diese Weitergabe geschieht, wie oben beschrieben, über den Interruptausgang (#INT) des Bausteins, der mit einem der Interrupteingänge der CPU verbunden wird (vgl. #IRQ, #NMI, #FIRQ im Abschnitt 1.3.2). Die Information, daß ein Unterbrechungssignal von der Peripherie eingetroffen ist oder im Baustein erzeugt wurde, wird in einem Bit des Statusregisters (Interrupt Flag - IF) gespeichert. Dieses Flag wird in der Regel durch das Lesen des vorliegenden Datums bzw. durch das Einschreiben des geforderten Datums in das Datenregister durch die CPU zurückgesetzt. Für zeitunkritische Anwendungen kann die asynchrone Unterbrechung des Prozessors durch einen Programmteil ersetzt werden, in dem der Prozessor zyklisch dieses Bit abfragt. Da der Prozessor in diesem Fall ausschließlich damit beschäftigt ist, auf das Eintreffen einer Unterbrechungsanforderung zu warten, spricht man vom aktiven Warten (Busy Waiting).

Meistens sind im Statusregister noch weitere Bits vorhanden, die den aktuellen Zustand verschiedener Eingangsleitungen widerspiegeln und zur Abfrage durch den Prozessor dienen (Kontroll-Eingänge). Entsprechend existieren im Steuerregister häufig Bits, deren Zustand direkt auf spezielle Ausgangsleitungen des Bausteins gegeben wird, und durch deren Veränderung der Prozessor das Peripheriegerät steuern kann (Steuer Ausgänge).

In der einfachsten Form ermöglichen je eine Eingangs- bzw. Ausgangsleitung mit ihren zugehörigen Bits im Status- bzw. Befehlsregister des Bausteins der CPU und dem P eripheriegerät, den Datenaustausch im Quittungsbetrieb (Handshake) durchzuführen3). Dazu werden beide Leitungen zwischen Prozessor und Peripheriegerät kreuzweise miteinander verbunden. Der Sender eines Datums teilt über seine Ausgangsleitung dem Empfänger das Vorliegen eines gültigen Datums mit, der Empfänger quittiert die Übernahme dieses Datums über seine Ausgangsleitung. Die Rücknahme der Handshake-Signale kann auf drei verschiedene Weisen geschehen:

4.1/4

Beide letztgenannten Steuerungsvarianten werden vom Parallel-Schnittstellenbaustein MC6821 unterstützt und im folgenden Abschnitt 4.2 beschrieben.


Inhalt KE4 4.2 Die Parallel-Schnittstelle