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.
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.
|