| 4.5 Bausteine für parallele Schnittstellen |  | 4.7 Bausteine für asynchrone, serielle Schnittstellen |

## 4.6 Bausteine für parallele Schnittstellen

Wie ihr Name bereits andeutet, sind Parallel-Schnittstellenbausteine (hauptsächlich) für die Übertragung von Daten in paralleler Form vorgesehen. Im englischen Sprachgebrauch wird für diese Bausteine eine ganze Reihe verschiedener Begriffe benutzt:

- Peripheral Interface (Adapter) (PI, PIA),
- Programmable Peripheral Interface (PPI),
- Parallel I/O Circuit (PIO).

Bei der Übertragung zu Peripheriegeräten, die als Ein-/Ausgabe-Einheiten zwischen dem Rechner und dem Menschen dienen, repräsentieren die Daten häufig alphanumerische Zeichen. Für die meisten Anwendungen reicht ein Satz von maximal 256 verschiedenen Zeichen, so daß zur eindeutigen Codierung eines Zeichens 8 bit genügen. Die Schnittstellenbausteine besitzen deshalb in der Regel acht Datenleitungen zur bitparallelen Übertragung eines Zeichens. Die Übertragung zusammenhängender Datenmengen geschieht zeichensequentiell.
Bei der folgenden Beschreibung der Bausteine wird gezeigt, daß ihre acht Datenleitungen aber auch zur Übertragung einzelner Melde- bzw. Steuersignale (Sense Signal, Control Signal) benutzt werden können, über die der Zustand des Gerätes ermittelt bzw. das Gerät gesteuert werden kann.

### 4.6.1 Prinzipieller Aufbau

Von allen Schnittstellenbausteinen besitzen die Parallel-Schnittstellenbausteine den einfachsten Aufbau und den geringsten Funktionsumfang. Sowohl für den Prozessor als auch für das Peripheriegerät erscheinen sie im wesentlichen wie ein "normales" Register, das von beiden gelesen und/oder beschrieben werden kann. Im Bild 4.6-1 ist der prinzipielle Aufbau eines Parallel-Schnittstellenbausteins skizziert.

Bild 4.6-1: Baustein für parallele Schnittstellen

Zur Realisierung einer parallelen Schnittstelle stellt die Ausführungseinheit des Bausteins - wie oben begründet - meistens 8 Datenleitungen und 2 Steuerleitungen zur Verfügung. Die Übertragungsrichtung der Datenleitungen kann durch den Prozessor "programmiert" werden. Die Programmierung geschieht bei einigen Bausteintypen für alle Datenleitungen gemeinsam und einheitlich. Diese Betriebsart ähnelt der des bidirektionalen Datenbusses im System. Bei vielen Bausteinen kann die Festlegung der Übertragungsrichtung jedoch individuell für jede einzelne Datenleitung erfolgen.
Die Ausführungseinheit des Bausteins zusammen mit diesen Leitungen wird gewöhnlich als Port bezeichnet. Reale Bausteine besitzen meistens 2 bis 3 unabhängig voneinander zu betreibende Ports.
Die Funktion der Steuerleitungen S0, S1 ist sehr vielfältig und kann durch die Manipulation bestimmter Bits im Steuerregister festgelegt werden. Wie in Abschnitt 4.1, beschrieben, sind ihnen bestimmte Bits im Status- bzw. Steuerregister fest zugeordnet, die ihren augenblicklichen Zustand widerspiegeln. Dies wird im folgenden in einer Fallstudie genauer beschrieben. Die Steuerleitungen S1, S0 können z.B. folgende Aufgaben übernehmen:

- beide Leitungen dienen als Interrupteingänge,
- S1, S0 dienen als Handshake-Leitungen (REQ, ACK),
- S0 ist ein Ausgang, über den ein Steuersignal zum Peripheriegerät ausgegeben wird (Control Output), S1 ein Eingang, über den der Prozessor den Zustand des Gerätes abfragen kann (Sense Input).

Die Ausführung der verschiedenen Aufgaben dieser Leitungen wird von der als Steuerlogik bezeichneten Schaltung vorgenommen, die mit dem Status- und Steuerregister sowie der Interruptsteuerung des Bausteins verbunden ist.
Im Unterschied zum allgemeinen Modell eines programmierbaren Systembausteins (s. Bild 4.1-2) kommen die Port-Bausteine scheinbar ohne Befehlsregister aus. Der Grund liegt darin, daß sich die Programmierung des Bausteins im wesentlichen darauf beschränkt, die Funktion der Steuerleitungen und die Richtung der Datenleitungen festzulegen. Die Funktion der Steuerleitungen ist durch das angeschlossene Gerät meist unveränderbar vorgegeben und wird daher im Steuerregister festgelegt. Zur Vereinfachung hat man dort aber auch die Bits untergebracht, die den aktuellen Zustand dieser Steuerleitungen für jeden einzelnen Datentransfer bestimmen. Bei Bausteinen, für die nur eine einheitliche Richtung der Datenübertragung auf allen Datenleitungen möglich ist, wird diese ebenfalls im Steuerregister vorgegeben. Bei den anderen Bausteinen werden die individuellen Übertragungsrichtungen durch ein spezielles Register der Ausführungseinheit bestimmt (DRR, s.u.).

### 4.6.2 Aufbau der Ausführungseinheit

Zur Erklärung der Komponenten der Ausführungseinheit ist im Bild 4.6-2 ihre Funktion für ein einzelnes Datenbit skizziert. (Die darin gezeichneten Tristate-Treiber mit mehreren Kontrolleingängen sollen genau dann aktiviert sein, wenn alle diese Eingänge aktiv sind. Diese Treiber sind zwar als Einzelschaltungen dargestellt, jedoch können sie auch als Tristate-Ausgänge der Register realisiert sein.)
Die Datenleitungen P7..P0 sind bidirektional ausgeführt. (Der Buchstabe P soll an den Begriff "Port" erinnern.) Hier haben wir den Fall zu Grunde gelegt, daß die Richtung jeder Portleitung individuell festgelegt werden kann. Diese Richtungsfestlegung geschieht im Datenrichtungsregister DRR (Data Direction Register - DDR, s. auch Bild 4.6-1), in dem jeder Datenleitung genau ein Bit zugeordnet ist. Üblich ist die folgende Festlegung zwischen der Datenleitung Pi und dem Bit DRRi des Datenrichtungsregister:

DRRi = 0: Pi ist Eingang;

DRRi = 1: Pi ist Ausgang.

Die Bits des Registers DRR steuern die Tristate-Treiber, die den internen Datenbus von den externen Portleitungen trennen. Die Ausgangstreiber der Leitungen, die als Eingänge programmiert sind, werden in den hochohmigen Zustand versetzt. Der Prozessor spricht das DRR unter einer bestimmten Adresse an, aus der der Adreßdecoder des Bausteins das Aktivierungssignal EN DRR (enable) erzeugt. Das Laden des Registers DRR mit einer geeigneten 0-1-Bitkombination ("Maske") geschieht durch einen Schreibbefehl (R/=0). Durch einen Lesebefehl kann der Prozessor jederzeit den Inhalt des Registers DRR abfragen. Beim Rücksetzen des Bausteins über den Reset-Eingang wird das Register DRR gelöscht. Dadurch werden alle Portleitungen als Eingänge geschaltet und so eine unbeabsichtigte Ansteuerung des Peripheriegerätes verhindert.

Bild 4.6-2: Übertragungslogik für ein einzelnes Datenbit

4.6.2.1 Datenausgabe
Die auszugebenden Daten werden vom Prozessor über den Datenbus des Bausteins in das Datenregister DR (Data Register) geschrieben. Der Adreßdecoder im Baustein erzeugt dazu aus der angelegten Registeradresse das Signal ENDR. Nach einer kurzen Verzögerung erscheinen alle Datenbits auf denjenigen Portleitungen Pi, die als Ausgänge definiert sind, und bleiben dort solange bestehen, bis der Inhalt des Datenregisters DR oder die Datenrichtung einer Leitung geändert wird. Der elektrische Pegel der als Eingänge geschalteten Portleitungen ist undefiniert und hängt stark von der Technologie der angeschlossenen Bausteine ab. Über das Ausgangssignal (Output Buffer Full, s. Bild 4.6-1) wird das angeschlossene Gerät darüber informiert, daß im Datenregister ein Datum zur Abholung bereitsteht. Dieses Signal wird erst durch ein Quittungssignal des Peripheriegerätes zurückgesetzt. Im Bild 4.6-3a ist das Zusammenwirken der Signale R/ und zur Erzeugung des Statussignals skizziert.
4.6.2.2 Dateneingabe
Das Einlesen von Daten über die Portleitungen geschieht bei vielen Bausteintypen in der Form, daß die Treiber der als Eingänge definierten Leitungen aktiviert und diese Leitungen dadurch unmittelbar, d.h. insbesondere ohne Zwischenspeicherung, auf den internen Datenbus geschaltet werden. Zur Aktivierung der Treiber wird auch das oben erwähnte Enable-Signal ENDR herangezogen, da in der Regel Lese- und Schreibzugriffe auf den Port unter derselben Adresse durchgeführt werden. (Vereinfachend wird daher auch ein Lesezugriff zum Port als Zugriff auf das Datenregister DR interpretiert.) Während des Einlesens muß man durch ein Handshake-Verfahren mit den oben beschriebenen Steuerleitungen verhindern, daß sich das anliegende Datum ändert, da sonst der Zustand der Portleitungen undefiniert sein kann.
Es existieren aber auch Bausteine, bei denen zwischen den Bausteineingängen und ihren Tristate-Treibern ein Eingaberegister IB (Input Buffer) geschaltet ist. Dieses Register kann vom Peripheriegerät durch das Strobe-Signal zur Aufnahme des anliegenden Datums getriggert werden. Über das IBF-Signal (Input Buffer Full) wird dem Gerät angezeigt, daß das Eingaberegister (noch) gefüllt ist. Dieses Signal wird erst durch einen Lesezugriff des Prozessors auf das Register IB zurückgesetzt. Das Zusammenwirken der Signale R/ und zur Erzeugung des Signals IBF ist im Bild 4.6-3b dargestellt.

Bild 4.6-3: Erzeugung der Signale OBF und IBF

Selbsttestaufgabe 4.6-1: (–> Lösungsvorschlag)
Im Bild 4.6-2 wurde nicht darauf eingegangen, was beim Lesen eines Datums auf den Portleitungen geschieht, die als Ausgang geschaltet sind. Es werden hauptsächlich zwei Varianten dafür realisiert, was man als Ergebnis eines Lesezugriffs auf eine Ausgangsleitung erhält: Zustand des Bits DRi im Datenregister, Zustand der Ausgangsleitung Pi. Erweitern Sie das Bild 4.6-2 so, daß jeweils eine der beiden Varianten realisiert wird.

4.6.2.3 Eine Variante
Einige Port-Bausteine erlauben auch den Einsatz der Portleitungen als Interrupteingänge (I7..I0). Diese Möglichkeit findet man auch besonders häufig bei den parallelen Schnittstellen von Mikrocontrollern. In der Regel wird dabei die Unterbrechungsanforderung durch den Pegel des Eingangssignals ("Pegel-Triggerung"), nicht durch dessen Flanke angezeigt. In einem speziellen Maskenregister IMR (Interrupt Mask Register) wird festgelegt, an welchem Eingang eine Unterbrechungsanforderung akzeptiert werden soll. Im Bild 4.6-4 ist für diese Bausteine der typische Aufbau des Steuerregisters dargestellt.

Bild 4.6-4: Das Steuerregister eines Port-Bausteins

Beschreibung der Steuerbits

- Das IE-Bit ist das bereits häufiger beschriebene Interrupt Enable Bit, das die Weitergabe einer Unterbrechungsanforderung zum Prozessor steuert.
- Das IF-Bit (Interrupt Flag) zeigt das Vorliegen einer Unterbrechungsanforderung an.
- Das P-Bit legt fest, ob ein L-Pegel oder ein H-Pegel an einem der Interrupteingänge Ii als Unterbrechungsanforderung gewertet wird.
- Durch das O/A-Bit (or/and) kann ausgewählt werden, ob über alle augenblicklich anstehenden, nicht maskierten Unterbrechungsanforderungen eine Oder- bzw. eine Und-Verknüpfung gebildet werden soll. Im ersten Fall wird also ein Interrupt erzeugt, wenn wenigstens an einem (nicht maskierten) Eingang eine Anforderung vorliegt, im zweiten Fall dann, wenn an allen diesen Eingängen Anforderungen anstehen.
- Das D/I-Bit bestimmt die Betriebsart des Ports, d.h. ob seine Leitungen als Datenleitungen oder Interrupteingänge benutzt werden sollen.
- Das F/P-Bit beeinflußt die Funktion der Steuerleitung S0, die als zusätzlicher Interrupteingang dient. Hier kann gewählt werden, ob eine Flanke oder der Pegel des Signals an S0 zu einer Unterbrechungsanforderung führt.
- Das AM-Bit (Acknowledge Mode) bestimmt die Form des Quittungssignals ACK am Steuerausgang S1: Wahlweise kann ein kurzes Strobe-Signal oder aber ein konstanter H-Pegel (bis zur nächsten Interruptanforderung an S0) ausgegeben werden.

### 4.6.3 Fallstudie: Der PPI-Baustein 8255 von Intel

Der 8255 besitzt drei 8-bit-Ports (PA, PB, PC). Diese Ports können in drei verschiedenen Modi betrieben werden, die durch bestimmte Steuerwörter vom Prozessor selektiert werden können. In allen drei Modi werden die Ports PA und PB als bidirektionale Ein-/Ausgangsleitungen betrieben, wobei hier aber die Richtung für alle Leitungen eines Ports einheitlich vorgegeben wird. Der dritte Port wird stets in zwei Teilports (PCH, PCL) unterteilt, die jeweils einem der Ports PA bzw. PB zugeordnet sind und mit diesen die Leitungs-"Gruppen" A bzw. B bilden. In Abhängigkeit vom ausgewählten Betriebsmodus dienen sie ebenfalls als Ein-/Ausgabeleitungen oder als Steuerleitungen. Im Bild 4.6-5 ist für alle drei Modi die Aufteilung des Ports PC skizziert.

Bild 4.6-5: Aufteilung des Ports PC in den drei Betriebsmodi

Im folgenden werden wir diese Modi jeweils durch eine kleine Logikschaltung und ein Zeitdiagramm ausführlich beschreiben. Dabei ist zu beachten, daß die Schaltungen lediglich eine sehr grobe Vereinfachung der wirklichen Realisierung dargestellten, die lediglich die logische Funktion, nicht aber das exakte Zeitverhalten wiedergeben sollen. So sind z.B. in ihnen die gezeichneten Signale und natürlich nur dann aktiviert, wenn auf das Datenregister lesend oder schreibend zugegriffen - also nicht bei einem Zugriff auf ein anderes Register oder eine Speicherzelle. Auch wird nicht berücksichtigt, daß die Zustandsübergänge nicht durch den logischen Pegel, sondern durch die Flanken der Signale hervorgerufen werden. Wie dies geschieht, wird in den Zeitdiagrammen verdeutlicht.
4.6.3.1 Modus 0
In diesem Modus wird der Port PC in zwei Teilports PCH, PCL mit je vier Leitungen unterteilt (s. Bild 4.6-5a). Jeder Teilport dient als paralleler Ein-/Ausgabeport, dessen Leitungen stets dieselbe Übertragungsrichtung besitzen. Für alle Ports (PA, PB, PCH, PCL) wird im Steuerregister individuell eine Übertragungsrichtung festgelegt. Dafür existieren somit insgesamt 16 verschiedene Möglichkeiten. In diesem Modus werden Eingabedaten unmittelbar, also ohne Zwischenspeicherung im Eingaberegister, in den Prozessor eingelesen. Das Statusregister hat hier keinerlei Funktion.

Selbsttestaufgabe 4.6-2: (–> Lösungsvorschlag)
Skizzieren Sie den zeitlichen Verlauf eines Lese- und eines Schreibzugriffes auf einen der Ports PX, X = A, B, CH, CL. Betrachten Sie dabei die Signale
Di , i=0,..,7 : | Systemdatenbus,
PXi, i=0,..,7 : | Portleitungen,
, A1, A0: | Baustein- und Registerauswahl,
: | Lesesignal,
: | Schreibsignal.
Die beiden letzten Signale benötigt der Baustein anstelle eines kombinierten Lese-/Schreibsignals R/. Sie zeigen alternativ den Typ des Buszyklus an. Die Datenübernahme in den Prozessor bzw. das Datenregister DR des Port-Bausteins geschieht mit der positiven Flanke der Signale bzw. .

4.6.3.2 Modus 1
Je drei Leitungen des Ports PC werden den Ports PA und PB als Handshake-Leitungen zur Synchronisation der Datenübertragung zugeordnet. Auf ihnen werden die Signale (Strobe), (Acknowledge) und INT (Interrupt) übertragen. Die restlichen beiden Leitungen von Port PC gehören zur Portgruppe A und können als Ein-/Ausgabe-Leitungen (I/O) für beliebige Aufgaben benutzt werden.
4.6.3.2.1 Dateneingabe
Im Bild 4.6-6 ist die Beschaltung der Handshake-Leitungen sowie der zeitliche Ablauf der Übertragungssynchronisation für eine Dateneingabe dargestellt. Im Unterschied zum Modus 0 wird hier jedes Datum zunächst im Eingaberegister IB abgelegt.
Die Dateneingabe beginnt damit, daß das Gerät das Datum auf die Portleitungen PX7..PX0 legt (X=A,B). Danach erzeugt es ein kurzes Strobesignal . Durch dessen negative Flanke wird, wie oben beschrieben wurde, ein Flipflop (FF) gesetzt. Das Ausgangssignal IBF des Flipflops zeigt dem angeschlossenen Gerät an, daß das Eingaberegister IB (noch) gefüllt ist (Punkt 1 im Bild 4.6-6b). Die positive Flanke (2) von verursacht die Übernahme der Daten ins Eingaberegister IB. Im Bild 4.6-6 ist vorausgesetzt, daß das Interrupt Enable Bit IE gesetzt ist. (Beim 8255 ist dieses Bit nicht im Steuerregister, sondern im Statusregister untergebracht.) Die positive Flanke von sowie das aktive IBF-Signal und das gesetzte IE-Bit sorgen dafür, daß ein Interruptsignal über den Ausgang INT erzeugt wird, das dem Prozessor das Vorliegen eines Eingabedatums anzeigt (3). Nach einer mehr oder weniger großen Zeit wird der Prozessor dieser Unterbrechungsanforderung stattgeben und das Datum aus dem Eingaberegister lesen. Die negative Flanke des Lesesignals nimmt zunächst das Interruptsignal INT zurück (4). Die positive Flanke löscht dann das IBF-Signal (5) und zeigt dadurch dem Gerät an, daß der Port für die nächste Datenübertragung bereit ist.

Bild 4.6-6: Synchronisation der Dateneingabe im Modus 1
a) Beschaltung der Handshake-Leitungen,
b) zeitlicher Ablauf der Übertragung
4.6.3.2.2 Datenausgabe
Bild 4.6-7 zeigt nun die Beschaltung der Handshake-Leitungen sowie den zeitlichen Ablauf der Übertragungssynchronisation für eine Datenausgabe. Das ausgegebene Datum wird hier zunächst im Datenregister DR zwischengespeichert, bis es dort vom Peripheriegerät abgeholt wird.
Zunächst legt der Prozessor das Datum auf den Datenbus D7...D0. Danach gibt er den (negativen) Schreibimpuls aus. Durch die positive Flanke von wird das Datum ins Ausgaberegister DR übertragen (Punkt 1). Nach einer kleinen Verzögerung erscheint es auf den Portleitungen PX7...PX0 (X=A,B). Eine eventuell vorliegende Unterbrechungsanforderung auf der INT-Leitung, die den Prozessor zur Ausgabe des Datums aufforderte (s.u.), wird gelöscht (2). Gleichzeitig wird ein Flipflop (FF) zurückgesetzt, das dem Datenregister zugeordnet ist. Der Ausgang des Flipflops zeigt durch einen L-Pegel dem Gerät das Vorliegen eines Datums auf den Portleitungen PX7...PX0 an (3).
Nach einer mehr oder weniger großen Zeit übernimmt das Peripheriegerät das Datum und quittiert es durch das -Signal. Die negative Flanke von setzt das Flipflop zurück und verursacht so die Zurücknahme des (negativen) -Signals (4). In Abhängigkeit vom IE-Bit wird nun ggf. über den Ausgang INT eine Interruptanforderung an den Prozessor gestellt (5), die ihm anzeigt, daß die Datenausgabe abgeschlossen ist und der Port für eine neue Übertragung bereit ist.
Bild 4.6-7: Synchronisation der Datenausgabe im Modus 1
a) Beschaltung der Handshake-Leitungen,
b) zeitlicher Ablauf der Übertragung
4.6.3.2.3 Das Statusregister im Modus 1
Das Statusregister ist in zwei Bitfelder eingeteilt, die den Portgruppen A bzw. B zugeordnet sind. Die Bedeutung der Bitfelder ist natürlich vom gewählten Modus abhängig. Im Bild 4.6-8 ist es für den Modus 1 skizziert.
Bild 4.6-8: Das Statusregister im Modus 1

Im Bild 4.6-8 sind die Belegungen des Registers für eine Dateneingabe sowie eine Datenausgabe aufgeführt. Da die Übertragungsrichtungen beider Portgruppen unabhängig voneinander gewählt werden können, existieren insgesamt vier verschiedene Belegungen.
Die Bits IEA, IEB sind die oben benutzten Interrupt Enable Bits der beiden Portgruppen. Sie werden vom Prozessor gesetzt. Die anderen Bits spiegeln hauptsächlich den Zustand der oben beschriebenen Ausgangsleitungen wider und können vom Prozessor ausgewertet werden. Die Bits I/O bestimmen die Übertragungsrichtung der beiden Ein-/Ausgabe-Leitungen des Ports PCH, die nicht zur Übertragungssynchronisation gebraucht werden (s.o.).
Bemerkung
Durch die beschriebene Synchronisation der Datenübertragung wird jeder Handshake-Leitung eine bestimmte Funktion zugewiesen. Die Erzeugung der Ausgangssignale geschieht dabei automatisch durch die Hardware des Bausteins. Dennoch hat der Prozessor die Möglichkeit, durch Eingabe eines bestimmten Steuerwortes, das die Nummer einer Ausgangsleitung enthält, den Zustand dieser Leitung gezielt zu ändern. Dies kann z.B. in einer Interruptroutine zur Zurücknahme des Anforderungssignals INT benutzt werden. Denn im Bild 4.6-8 ist gezeigt, daß das Interruptsignal bei der Datenausgabe hardwaremäßig erst durch die negative Flanke des nächsten -Signals zurückgenommen wird (Punkt 1). Bei Prozessoren, deren Interrupteingang nicht auf die Flanke, sondern auf den Pegel der anliegenden Anforderung reagiert, kann das zu Problemen führen. Denn hier kann der Prozessor das nach der Datenausgabe gegebenenfalls weiterhin anliegende INT-Signal mehrfach auswerten.
4.6.3.3 Modus 2
Dieser Modus ist im Bild 4.6-5c dargestellt. In ihm werden von Port PC drei Leitungen Port PB zugeordnet. Port PB kann entweder als Eingangs- oder als Ausgangsport geschaltet werden. Wahlweise können dazu die drei Leitungen von Port PC als Ein-/Ausgabe-Leitungen (wie im Modus 0) oder als Handshake-Leitungen (wie im Modus 1) benutzt werden. Die restlichen fünf Leitungen von Port PC werden als Handshake-Leitungen zum Port benutzt. Sie erlauben die bidirektionale Übertragung von Daten zwischen Port-Baustein und Peripheriegerät im sogenannten Halbduplex-Betrieb, bei dem sich nach jedem Datentransfer die Übertragungsrichtung ändern kann. Im Bild 4.6-9a ist die Benutzung der fünf Steuerleitungen symbolisch dargestellt.

Bild 4.6-9: Datenübertragung im Modus 2
a) Beschaltung der Handshake-Leitungen,
b) Statusregister
Auf dieses Bild soll nicht näher eingegangen werden, da man sofort erkennt, daß es sich lediglich um eine Kombination der zum Modus 1 beschriebenen Synchronisationsschaltungen handelt. Jede Teilschaltung kann einen Interrupt anfordern. Ihr spezifisches Interrupt Enable Bit legt dabei fest, ob diese Anforderung zum Prozessor weitergeleitet werden soll. Die Interruptsignale der Teilschaltungen werden durch ein Oder-Gatter zu einem gemeinsamen INT-Signal verknüpft.
4.6.3.3.1 Das Statusregister im Modus 2
Im Bild 4.6-9b ist das Statusregister im Modus 2 skizziert. Die niederwertigen drei Bits sind hier wieder der Portgruppe B zugeordnet. Ihre Belegung hängt von dem für diese Gruppe gewählten Modus (0 oder 1) und der Übertragungsrichtung ab. Die Statusbits der Gruppe A enthalten einerseits die Interrupt Enable Bits IE1, IE0, die den beiden Übertragungsrichtungen zugewiesen sind, und zeigen andererseits wieder den Zustand der Ausgangsleitungen , IBF und INT an.

Selbsttestaufgabe 4.6-3: (–> Lösungsvorschlag)
Erstellen Sie (mit Hilfe von Bild 4.6-6 und Bild 4.6-7) das Zeitdiagramm für die oben beschriebene Halbduplex-Übertragung. Dazu geben wir Ihnen zunächst in Tabelle 4.6-1 den wesentlichen Ausschnitt zum Modus 2 aus dem Datenblatt des 8255 an. Wichtig für die Lösung der Aufgabe ist die Beschreibung des -Signals. Eine bidirektionale Übertragung ist natürlich nur möglich, wenn sowohl der Port-Baustein wie auch das Peripheriegerät die gemeinsamen Datenleitungen hochohmig (tristate) schalten können.
Tabelle 4.6-1: Beschreibung der Signale im Modus 2 Operating Modes: Mode 2 (Strobed Bidirectional Bus I/O). This functional configuration provides a means for communicating with a peripheral device or structure on a single 8-bit bus for both transmitting and receiving data (Bidirectional Bus I/O). "Handshaking" signals are provided to maintain proper bus flow discipline in a similar manner to MODE 1. Interrupt generation and enable/disable functions are also available. MODE 2 Basic Functional Definitions: Used in Group A only. One 8-bit, bidirectional bus port (Port A) and a 5-bit control port (Port C) . Both inputs and outputs are latched. The 5-bit control port (Port C) is used for control and status for the 8-bit, bidirectional bus port (Port A) . Bidirectional Bus I/O Control Signal Definition: INT (Interrupt Request). A "high" on this output can be used to interrupt the CPU for both input or output operations . Output Operations: (Output Buffer Full). The output will go "low" to indicate that the CPU has written data out to Port A. (Acknowledge). A "low" on this input enables the tristate output buffer of Port A to send out the data. Otherwise, the output buffer will be in the high impedance state. IE1 (The INT flip-flop associated with ). Controlled by bit set/reset of PC6 . Input Operations: (Strobe Input). A "low" on this input loads data into the input latch. IBF (Input Buffer Full flip-flop). A "high" on this output indicates that data has been loaded into the input latch. IE0 (the INT flip-flop associated with IBF). Controlled by bit set/reset of PC4 .
Hinweis zur Selbsttestaufgabe Da der Prozessor und das Peripheriegerät asynchron arbeiten, sind natürlich viele Ablaufreihenfolgen der Übertragung möglich. Notwendig ist nur, daß das Schreibsignal vor dem Quittungssignal und das Strobesignal vor dem Lesesignal kommen. Gehen Sie für Ihre Lösung davon aus, daß zunächst der Prozessor ein Datum in das Datenregister DRA des Ports PA und gleichzeitig oder kurze Zeit später das Peripheriegerät ein Datum in den Eingabepuffer IBA schreibt. Erst danach sollen die Daten vom Peripheriegerät aus DRA und vom Prozessor aus IB entnommen werden. Kommentieren Sie Ihre Lösung !

### 4.6.4 Anwendungsbeispiel: Centronics-Schnittstelle

Für die Übertragung von Daten zu (Nadel-)Druckern oder anderen Ausgabegeräten wird heute sehr häufig die sogenannte Centronics-Schnittstelle eingesetzt. Sie überträgt 8-bit-Zeichen parallel und benutzt zur Synchronisation drei Handshake-Leitungen.
Die Zeichen werden im sogenannten ASCII-Code (American Standard Code for Information Interchange) ausgetauscht. Dieser Code ist in der oberen Hälfte der Tabelle A1 dargestellt, die Sie im Anhang vor den Lösungen der Selbsttestaufgaben finden. Zur Verschlüsselung der Zeichen reichen jeweils 7 Bits. Die Zeichen der ersten beiden Zeilen der Tabelle werden vom Peripheriegerät als Steuerzeichen erkannt, die es dem Prozessor erlauben, die Arbeitsweise des Gerätes zu beeinflussen. Auf sie kann hier leider nicht weiter eingegangen werden. Die untere Hälfte der Tabelle zeigt eine (von vielen) nicht standardisierte Erweiterung. Zur Codierung aller Zeichen der Tabelle werden 8 Bits benötigt.
Das Übertragungsprotokoll der Centronics-Schnittstelle ist im Bild 4.6-10 als Zeitdiagramm dargestellt. Die Übertragung beginnt damit, daß der Prozessor das Ausgabedatum auf die Ausgänge DATA1 - DATA8 der Schnittstelle schaltet. Frühestens nach einer halben Mikrosekunde (0,5 µs) zeigt er durch sein -Signal das Vorliegen eines gültigen Datums an. Dieses Signal muß wenigstens 0,5 µs lang aktiv auf L-Pegel liegen. Im Extremfall übernimmt das Ausgabegerät dieses Datum sofort nach der positiven Flanke des -Signals. Deshalb müssen die Daten danach noch wenigstens 0,5 µs lang stabil angeboten werden. In der Regel vergeht aber eine mehr oder weniger lange Zeit bis zur Datenübernahme, während der das Gerät mit der Ausgabe anderer Zeichen beschäftigt ist. In diesem Fall zeigt es der Schnittstelle durch sein Signal BUSY an, daß es beschäftigt ist. Erst wenn es wieder bereit ist, Daten zu empfangen, nimmt es dieses Signal zurück und quittiert die Datenübertragung durch einen negativen Impuls seines -Signals, der wiederum wenigstens 0,5 µs lang sein muß.

Bild 4.6-10: Das Übertragungsprotokoll der Centronics-Schnittstelle

Wird das BUSY-Signal vom Ausgabegerät nicht während einer gewissen Zeitschranke (Time out) zurückgenommen, so schließt der Prozessor daraus, daß das Gerät nicht empfangsbereit ist. Gründe dafür sind z.B., daß es nicht eingeschaltet, nicht auf Datenübertragung geschaltet (offline) oder aber defekt ist.

Selbsttestaufgabe 4.6-4: (–> Lösungsvorschlag)
Begründen Sie, warum das Hardwareprotokoll nach Bild 4.6-7 nicht dazu geeignet ist, die Centronics-Schnittstelle mit einem 8255-Port-Baustein auf einfache Weise zu realisieren.

Neben den eben beschriebenen Handshake-Signalen besitzt die Centronics-Schnittstelle noch eine Reihe weiterer Signale. Diese sind in der Anschlußbelegung eines 36-poligen Centronics-Steckers im Bild 4.6-11 aufgeführt.
Die Anschlüsse 19 - 29 sind alle mit Masse belegt. Ihre Leitungen werden zur Erhöhung der Störsicherheit jeweils mit den Signalleitungen paarweise verdrillt (Twisted Pair - TP), die im Stecker genau gegenüber liegen. Die restlichen Steuerleitungen haben die folgende Funktion:

- PE (Paper Empty) ist ein Ausgangssignal des Druckers, das der Schnittstelle anzeigt, wenn der Papiervorrat zu Ende gegangen ist.
- Durch das SLCT-Signal (Select) zeigt der Drucker dem Prozessor an, daß er "online" geschaltet ist, also bereit zum Drucken.
- AUTOFEEDXT dient dem Prozessor dazu, dem Drucker mitzuteilen, daß er nach jedem Wagenrücklauf einen Zeilenvorschub durchführen soll. INIT wird vom Prozessor als Ausgabesignal benutzt, um die Steuerung des Druckers in einen definierten Anfangszustand zu versetzen und einen eventuell vorhandenen Zwischenspeicher im Drucker zu löschen.
- ERROR zeigt der Schnittstelle als kombinierte Fehlermeldung an, daß das Papierende erreicht wurde (s.o.), daß der Drucker nicht auf Datenempfang (offline) geschaltet ist oder aber ein anderer Fehler vorliegt.
- SLCT-IN aktiviert die Interpretation der speziellen Steuerzeichen DC1, DC3 durch den Drucker, die im Strom der Daten mit übertragen werden. (Vgl. dazu die ASCII-Tabelle A1 im Anhang.)

Bild 4.6-11: Anschlußbelegung und Stecker der Centronics-Schnittstelle
Zum Abschluß dieses Abschnittes wird im Bild 4.6-12 dargestellt, wie man mit einem 8255-Portbaustein eine Centronics-Schnittstelle realisieren kann.
Bild 4.6-12: Centronics-Schnittstelle mit 8255

Selbsttestaufgabe 4.6-5: (–> Lösungsvorschlag)
In welchem Modus muß der 8255 für den im Bild 4.6-12 dargestellten Einsatz betrieben werden? Welche Übertragungsrichtungen müssen für die Portleitungen festgelegt werden? Geben Sie das Flußdiagramm für ein Unterprogramm an, das den Datentransfer nach dem Übertragungsprotokoll aus Bild 4.6-10 vornimmt. Der Wert des beschriebenen Time Outs betrage 1 Sekunde und werde in einem nicht näher darzustellenden Unterprogramm überwacht. Im Fehlerfall sollen die Ursachen "Papierende" und "anderer Fehler" unterschieden werden.

| 4.5 Bausteine für parallele Schnittstellen |  | 4.7 Bausteine für asynchrone, serielle Schnittstellen |