4. Aufbau und Funktion 4.3 Die V.24-Schnittstelle

4.2/1

4.2 Die Parallel-Schnittstelle

4.2.1 Aufbau des Portbausteins MC6821

Der Baustein MC6821 stellt eine Schnittstelle zum parallelen Anschluß von Peripheriegeräten zur Verfügung. Er wird von der Herstellerfirma Motorola mit dem Namen

Peripheral Interface Adapter (PIA)
bezeichnet. Andere Hersteller nennen ihre vergleichbaren Produkte 1) beispielsweise
Parallel I/O Circuit (PIO).
Die genaue Struktur des Bausteins kann man dem Bild 4.2-1 entnehmen.


Bild 4.2-1: Blockschaltbild des Bausteins MC6821

Dieser Baustein besitzt zwei 8 bit breite Ein-/Ausgabe-Ports (Port PA, Port PB). Wie die Leitungen des Datenbusses können sie Signale in beiden Richtungen, also bidirektional, übertragen. Jedoch kann hier für jede Leitung getrennt festgelegt werden, ob sie als Eingangs- oder Ausgangsleitung dienen soll. Diese Festlegung geschieht für jeden Port in einem speziellen Register, dem Datenrichtungsregister (Data Direction Register - DDR), auf das weiter unten genauer eingegangen wird.

4.2/2

Zu jedem Port gehören außerdem je ein Interrupteingang (CA1, CB1) und eine weitere "programmierbare" Steuerleitung (CA2, CB2). Diese kann einerseits als zusätzlicher Interrupteingang oder aber als Strobe-Ausgang benutzt werden. Ihre Funktion wird in einem kombinierten Status- und Steuerregister (Control Register - CR) festgelegt. In ihm sind auch die Bits enthalten, durch die die Interrupteingänge aktiviert bzw. deaktiviert werden können (Interrupt Enable), bzw. die das Eintreffen einer Unterbrechungsanforderung anzeigen (Interrupt Flag).

Die Schnittstelle zum Prozessor wurde bereits im einleitenden Abschnitt 4.1 im wesentlichen erklärt. Die einzige Abweichung besteht darin, daß von jedem der beiden Parallel-Ports ein eigener Interruptausgang (#IRQA, #IRQB) herausgeführt wird. Diese Ausgänge können entweder getrennt auf zwei verschiedene Interrupteingänge des Prozessors oder aber miteinander verbunden auf den gleichen Eingang gegeben werden (Open collector-Eigenschaft *) . In diesem Fall muß der Prozessor anhand der Interrupt-Flags in den Steuerregistern entscheiden, von welchem Port eine Unterbrechung angefordert wurde. Im Praktikumsrechner wird das Auswahlsignal der PIA (#CS2) wird vom Adreßdecoder erzeugt (s. KE3). Die Selbsttestaufgabe S3.1-2 zeigt, daß dafür das Signal #CS8 (s. System-Gesamtplan im Anhang der KE3) benutzt und dadurch der Adreßbereich $F000 - $F003 selektiert wird (CS0=CS1=+5V).

Das Bild 4.2-2 zeigt die Anschlußbelegung des Bausteins MC6821.


Bild 4.2-2: Anschlußbelegung des Bausteins MC6821

4.2/3

Der Baustein ist in einem 40-poligen Gehäuse untergebracht. Auffällig ist, daß der Hersteller sich bemüht hat, entsprechend dem oben gezeigten Blockschaltbild 4.2-1, die Signal-Ein-/Ausgänge nach Prozessor- und Peripherieseite getrennt anzuordnen. Auf der "rechten Seite" (Pins 1-20) finden Sie die beiden Ports PA, PB mit ihren jeweils 8 Leitungen PA0,..,PA7 bzw. PB0,..,PB7 und den Steuerleitungen CB1, CB2. Aus "Platzgründen" mußten die Steuerleitungen des Ports PA (CA1, CA2) auf die linke "Prozessorseite" (Pins 21-40) verlegt werden. Dort finden Sie den bidirektionalen Datenbus DB, die Steuerleitungen (R/#W, #RESET, E) sowie die drei Chip-Select-Eingänge CS0, CS1, #CS2. (Mehrere Auswahleingänge mit unterschiedlichen aktiven Pegel erleichtern den Aufbau des Adreßdecoders.) Zur Auswahl der einzelnen Komponenten des Bausteins stehen die zwei Eingänge RS0 und RS1 zur Verfügung.

Jeder Port (Port PA, Port PB) besteht aus

4.2.2 Der Registersatz

Das Datenrichtungsregister (Data Direction Register) DDR ist 8 bit breit. Der Wert des i.ten Bits bestimmt, ob die entsprechende Portleitung PXi als Eingang oder Ausgang benutzt werden kann, und zwar gilt genauer für beide Ports PA, PB:
DDRXi := Bit i von DDRX = ì 0, Leitung PXi von Port PX ist Eingang
í
î 1, Leitung PXi von Port PX ist Ausgang
(X=A,B)
Das Datenregister (Data Register) DR bezeichnet die logische Zusammenfassung zweier Komponenten:

Das Bild 4.2-3 zeigt den inneren Aufbau des Ports PB, dargestellt für eine einzelne Leitung PBi. (Bzgl. der Schaltsymbole vgl. Selbsttestaufgabe S3.1-1 in KE3.)


Bild 4.2-3:Realisierung der Ansteuerung einer einzelnen Leitung im Port PB

Funktionsweise

Durch einen Schreibbefehl mit der Adresse des Datenrichtungsregisters DDRB wird die Information des Datenbits DBi in das Bit DDRBi übernommen.

Vor der Erklärung des Steuerregisters soll nun kurz auf die Adressierung der Register eingegangen werden. Wie im Bild 4.2-2 gezeigt, besitzt der Baustein dazu nur die beiden Auswahleingänge RS0, RS1. Diese sind im Praktikumsrechner durch die niederwertigen Adreßleitungen A0 bzw. A1 beschaltet. Natürlich ist Ihnen klar, daß für die Adressierung der 6 internen Register eigentlich 3 Adreßleitungen benötigt würden. Das 3. Adreßsignal wird im MC6821 durch das Bit CRX2 (X=A,B) des Steuerregisters zur Verfügung gestellt: Vom Prozessor aus werden für jeden Port unter der gleichen Adresse sowohl das Datenrichtungsregister DDRX wie das Datenregister DRX angesprochen. Die Vorauswahl unter ihnen nimmt das Bit CRX2 vor. Ist

CRX2 = ì 0, so wird das Datenrichtungsregister DDRX,
í
î 1, so wird das Datenregister DRX vorselektiert.
(X=A,B)
Aus der Beschaltung des MC6821 im Praktikumsrechner ergibt sich mit dem bisher Gesagten die in der Tabelle 4.2-1 gezeigte Adreßzuteilung.

4.2/6

Tabelle 4.2-1: Adreßzuteilung der Register des MC6821
Adresse CRX2=0CRX2=1 Register
$F000 DDRA  Datenrichtungsregister Port PA
$F000  DRA "Datenregister" Port PA
$F001 CRACRA Steuerregister Port PA
$F002 DDRB  Datenrichtungsregister Port PB
$F002  DRB "Datenregister" Port PB
$F003 CRBCRB Steuerregister Port PB

Das folgende Bild 4.2-4 zeigt die Aufteilung des Status- bzw. Steuerregisters CR in seine unterscheidbaren Bitfelder. Darin bezeichnet X=A, B wieder einen der beiden Ports PA, PB.


Bild 4.2-4:Das Steuerregister CRX (X=A, B) und seine Aufteilung

Es folgt nun die Beschreibung der Funktion der einzelnen Bits (X=A, B).

Aus Abschnitt 1.3.2, KE1, wissen Sie schon, daß beim Eintreffen einer Unterbrechungsanforderung am #IRQ-Eingang der Prozessor eine Interruptroutine ausführt, deren Startadresse in den Speicherstellen $FFF8, $FFF9 steht. In dieser Routine des Monitor-Programms wird dann zunächst entschieden, aus welcher "Quelle" die Anforderung stammt. In der Zero-Page finden Sie im Bereich $0030-$0043 die Tabelle der Startadressen, unter denen die verschiedenen Interruptroutinen beginnen, und zwar in der Form: H-Byte, L-Byte. Diese Tabelle wird bei jedem Rücksetzen des Monitors (Taste C) initialisiert. Für die meisten Unterbrechungsmöglichkeiten zeigt die Vorbelegung auf den Befehl RTI (Return from Interrupt). Durch Ändern der Startadresse können Sie die Ausführung einer eigenen Interrupt-Routine erzwingen. Für die Interrupt-Quellen des MC6821 sind die in Tabelle 4.2-2 aufgeführten Adressen zuständig:

Tabelle 4.2-2: Vorbelegung der IRQ-Interruptvektoren
Adressen QuelleVorbelegung
$0036,$0037CA1 Break-Taste F4
$0038,$0039CB1RTI
$003A,$003BCA2 RTI
$003C,$003D CB2RTI

Im Bild 4.2-5 ist die Ausgabe eines Handshake-Signals über die Ausgangsleitung CA2 bzw. CB2 dargestellt.

4.2/9

Dazu müssen, wie oben gezeigt, im Steuerregister das Bit5=1 und das Bit4=0 sein. Durch das Blitz-Symbol ist eine Unterbrechungsanforderung des Partners am Eingang CX1 gekennzeichnet, die über den Ausgang #IRQX an den Prozessor weitergeleitet wird (X=A, B). Durch sie wird der Prozessor zur Übernahme (Port PA, obere Hälfte des Bildes) bzw. zur Abgabe eines Datums (Port PB, untere Hälfte des Bildes) aufgefordert. Beim Port PA wird das Handshake-Signal durch das Lesen des Datenregisters DRA, beim Port PB durch das Schreiben des Datenregisters DRB ausgelöst. Es beginnt jeweils mit der negativen Flanke des Systemtaktes E. Man sieht, daß in Abhängigkeit vom Bit CRX3 des Steuerregisters das Strobesignal für CRX3=0 bis zum nächsten Interrupt des Partners, für CRX3=1 jedoch - im Minimalfall - nur einen Zyklus des Systemtaktes E dauert. Diese Zykluszeit muß je nach Ausführung des MC6821 wenigstens 0.5 µs bzw. 1 µs dauern. Die Deaktivierung des Strobesignals beginnt in diesem Fall mit der 1. negativen Flanke des Taktes E nach der Deaktivierung (deselection) der Prozessorschnittstelle des Portbausteins (durch die Signale CSi).


Bild 4.2-5:Ausgabe eines Handshake-Signals durch den MC6821

4.2/10

4.2.3 Erklärung der Schnittstellen-Erweiterungskarte

Ein wesentliches Ziel des Praktikums ist es, Ihnen das Arbeiten mit den Schnittstellen des Praktikumsrechners und ihre Programmierung nahezubringen. Natürlich können wir Sie während der Heimphase nicht mit geeigneten Peripheriegeräten zum Anschluß an diese Schnittstellen versorgen. Daher haben wir eine spezielle Schnitt-stellen-Erweiterungskarte entwickelt und jedem Praktikumsrechner beigelegt, die es erlaubt, alle wesentlichen Funktionen der parallelen Schnittstelle und des Zeitgeber/ Zählerbausteins auszutesten.

Im Bild 4.2-6 ist der Aufbau dieser Karte grob dargestellt 2).


Bild 4.2-6:Blockschaltbild der Schnittstellen-Erweiterungskarte

Im Bild 4.2-6 werden bereits die drei E/A-Leitungen des Zeitgeber/Zähler-Bausteins dargestellt, der erst in KE5 ausführlich beschrieben wird. Hier soll nur kurz erwähnt werden, daß C3 ein externer Takteingang, O3 der Zeitgeberausgang und G3 ein Steuereingang ist, durch den die Funktion des Bausteins von außen aktiviert bzw. deaktiviert werden kann, der aber für spezielle Funktionen auch als Signaleingang dient.

Die mit E/A-Modul bezeichneten Schaltungen bestehen aus:

Die Erweiterungskarte unterstützt die folgenden Funktionen:

4.2/12

Praktische Übung P4.2-1:
Verbinden Sie Ihren Praktikumsrechner über die 64-polige-Steckerleiste auf der Rückwand des Gehäuses mit der Schnittstellen-Erweiterungskarte. Schalten Sie danach den Praktikumsrechner ein.
  1. Wählen Sie über die Tastatur (Funktionstaste A) die Register des MC6821 an. "Programmieren" Sie den Baustein so, daß im Port PA jede zweite Leitung als Ausgang, die anderen als Eingang geschaltet werden. Lesen Sie danach mehrfach das Datenregister DRA und schreiben Sie beliebige Werte ein.

  2. Im Port PB sollen die vier niederwertigen Leitungen PB0-PB3 als Ausgänge, die restlichen als Eingänge initialisiert werden. Lesen Sie das Datenregister DRB für verschiedene Schalterstellungen und schreiben Sie mehrere Werte nacheinander ein. Überprüfen Sie die Ergebnisse an den LEDs. (Beachten Sie, daß Sie für jedes Lesen das Register DRB erneut anwählen müssen !)

  3. Verbinden Sie mit Hilfe der beiliegenden Kabel die vier "unteren" Portleitungen PB0-PB3 mit den "oberen" Leitungen: Pi « Pi+4 (i=0,..,3). Schreiben Sie jetzt wie unter II. mehrere Werte in DRB ein und lesen Sie jeweils danach DRB.

Zur Arbeit mit dem 6809-Emulator:

Teil I und II von Aufgabe P4.2-1 können Sie auch mit dem 6809-Simulator ausführen. Das folgende Bild zeigt das geöffnete Fenster zum Port PB (Menüpunkt: Bausteine, Eintrag: Port PB). Wie unter II. gefordert, enthält das Datenrichtungsregister DRRB den Wert $F0=1111 0000, d.h. die oberen 4 Leitungen (PB7-PB4) sind als Ausgänge programmiert, was durch die Lämpchen-Symbole angezeigt ist, und die unteren 4 Leitungen (PB3-PB0) als Eingänge, was durch die Schalter-Symbole angezeigt wird. Über die Ausgangsleitungen wird beispielhaft der Wert $B=1011 ausgegeben, über die Eingänge der Wert $6=0110 eingelesen. Im Datenregister DRB findet sich daher beim Lesen der Wert $B6. Sie können nun jeden beliebigen Hexadezimalwert $0...$F eingeben, indem Sie mit der Maus die Schalter an PB3-PB0 anklicken. Auf die gleiche Weise können Sie an CB1 eine Interruptanforderung stellen und die Auswirkung im Statusregister CRB beobachten. (Selbsttest: Wie wird das Interrupt-Flag Bit 7 in CRB gelöscht ?) Im Bild ist - im Vorgriff auf die folgende Praktische Übung P4.2-2 - die Leitung CB2 als Ausgang programmiert, über den ein (negtiver) Strobe-Impuls ausgegeben wird.

Bild

4.2/13

Praktische Übung P4.2-2:
Schließen Sie die Schnittstellen-Erweiterungskarte an den Praktikumsrechner an.
  1. "Programmieren" Sie nun den Baustein MC6821 über die Tastatur so, daß

    1. kein Interrupt zum Prozessor weitergeleitet wird,
    2. eine positive Flanke am Eingang CB1 als Unterbrechungsanforderung gewertet wird,
    3. CB2 als Handshake-Ausgang geschaltet wird,
    4. ein "langer" Handshake-Impuls an CB2 bis zum nächsten Interrupt an CB1 ausgegeben werden kann.

  2. Erzeugen Sie nun ein Strobe-Signal an CB2. Lesen Sie das Steuerregister CRB vor und nach der Erzeugung des Strobe-Signals und interpretieren Sie dessen Inhalt. Geben Sie dann durch den Schalter einen kurzen L-Impuls auf den Interrupteingang CB1. Beobachten Sie dabei die LED und interpretieren Sie den neuen Wert im Steuerregister CRB. Löschen Sie vor einer erneuten Durchführung dieses Versuches das Interrupt Flag (Bit CRB7) im Steuerregister.

  3. Programmieren Sie den 6809-Simulator, wie oben angegeben, mit der Änderung, daß ein kurzer Strobe-Impuls an CB2 ausgegeben wird.

Praktische Übung P4.2-3:
Schließen Sie die Schnittstellen-Erweiterungskarte an den Praktikumsrechner an. Schreiben Sie ein Programm, daß ein zyklisches Rechtecksignal am Ausgang CB2 erzeugt. Dabei sollen die Pulsdauer TD und die Pulspause TP als Vielfache von 1 ms vor dem Programmstart in den Registern Y und U eingegeben werden können. Erzeugen Sie nacheinander Signale unterschiedlicher Frequenz (zwischen 0,1 bis 100Hz) und unterschiedlicher Impuls/Pausen-Verhältnisse und beobachten Sie die Ausgangssignale an der LED der Leitung CB2.

Hinweise:

  1. Zur Erzeugung der Zeitverzögerung von 1 ms benutzen Sie am besten die Routine DLY1MS aus KE1, Abschnitt 1.2.2.
  2. Nach jedem Betätigen der Clear-Taste C werden alle Register, also auch Y und U, zurückgesetzt.
  3. Diese Routine benötigen Sie noch für die Bearbeitung der Praktischen Übungen in KE5. Sie sollten sie daher im PC abspeichern.

4.2/14

Mit Hilfe der Lösung zur Praktischen Übung P4.2-3 können Sie nun die Ihnen vom 6809-Emulator gebotene Möglichkeit austesten, Ausgangssignale an den Parallel-Ports in einer Datei aufzuzeichnen bzw. von dort einzulesen. Bevor Sie Ihr Programm starten, können Sie durch Anklicken der Ikone

Bild

eine Datei bestimmen, in die für jeden Schreibzugriff auf das Datenregister des Ports (Adresse Port PA: $F000, Port PB: $F002) alle Ausgangszustände eingetragen werden 5). (Solange diese Datei geöffnet ist, wird in der Statuszeile ein Diskettensymbol mit einem hinweisenden Pfeil auf der linken Seite und der Beschriftung 'PIA' angezeigt.) Durch die Ikone

Bild

können Sie die Aufzeichnung stoppen. Nachdem Sie auch Ihr Programm beendet haben, können Sie durch Anklicken der Ikone

Bild

die Datei (oder eine andere) erneut öffnen, aus der nun mit jedem Lesezugriff auf das Datenregister desPorts der Zustand der als Eingänge geschalteten Leitungen eingelesen wird. Dabei wird jeder Eingabewert so lange unverändert gehalten, wie er bei der Ausgabe in die Datei an den Ausgängen anlag. (Die Übertragung der Zeichenkette aus der Datei in den Emulator wird in der Statuszeile durch ein Diskettensymbol mit einem wegweisenden Pfeil auf der rechten Seite und der Beschriftung 'PIA' angezeigt.)


4. Aufbau und Funktion 4.3 Die V.24-Schnittstelle