| 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

- der Parallel-Schnittstellenbaustein MC6821 (Abschnitt 4.2),
- der asynchron serielle Schnittstellenbaustein R6551 und die V.24-Schnittstelle (Abschnitt 4.3),
- der Zeitgeber-/Zähler-Baustein (Timer) MC6840 (KE5).

## 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):

- Bei der ersten verfügt der Prozessor über besondere Ein-/Ausgabe-Befehle, die spezielle Signale zur Anwahl der Schnittstellenbausteine erzeugen (vgl. M/IO beim Intel 80x86). Aus den unteren 8 bzw. 16 Bits des Adreßbusses werden Aktivierungssignale zur Auswahl genau eines von maximal 256 bzw. 65536 Registern der Peripherie-Bausteine gewonnen (Chip Enable - CE, Chip Select - CS).

  4.1/2

- Im zweiten Fall wird der Schnittstellenbaustein durch den Adreßdecoder (vgl. Abschnitt 3.1 in KE3) in einem fest vorgegebenen Bereich des Adreßraumes der CPU angesprochen (Memory Mapped I/O). Dazu bietet der Baustein einen oder mehrere Eingänge CSi an. Diese Art besitzt gegenüber der ersten den Vorteil des leichteren Ansprechens des Bausteins und seiner Komponenten, die wie gewöhnliche Speicherzellen angesprochen werden. Deshalb können in der Regel alle Adressierungsarten für die Ein-/Ausgabe benutzt werden. Jedoch hat sie den Nachteil, daß Speicherraum verloren geht und eine aufwendigere Adreßdecodierung nötig ist.

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:

- zunächst dem Steuerregister (Controlregister - CR) zur Aufnahme des oben genannten Steuerwortes,
- einem Statusregister (SR) zur Speicherung und Abfrage des augenblicklichen Zustands des Bausteins

  4.1/3

- und dem Datenregister (Data Register - DR) zur Zwischenspeicherung des aus- bzw. einzugebenden Datums.

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

- programmgesteuert durch die CPUs von Sender und Empfänger der Daten, indem das zugehörige Bit im Steuerregister zurückgesetzt wird,
- automatisch gesteuert durch die Hardware des Peripheriebausteins, und zwar entweder

  - nach Ablauf einer festen Zeit, z.B. eines Maschinenzyklus (Strobe-Signal); diese Variante bietet sich immer dann an, wenn der Empfänger über einen hinreichend großen Pufferspeicher verfügt, in dem die Daten, durch das Strobe-Signal getaktet, eingeschrieben werden,
  - oder durch das Handshake-Signal des Partners veranlaßt; diese Variante muß dann eingesetzt werden, wenn der Empfänger sehr langsam arbeitet und keinen Pufferspeicher besitzt.

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

| Inhalt KE4 |  | 4.2 Die Parallel-Schnittstelle |