| 4. Aufbau und Funktion | 4.3 Die V.24-Schnittstelle |
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.
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 |
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
Das Datenregister (Data Register) DR bezeichnet die logische Zusammenfassung zweier Komponenten:
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 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 |
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
Aus der Beschaltung des MC6821 im Praktikumsrechner ergibt sich mit dem bisher Gesagten die in der Tabelle 4.2-1 gezeigte Adreßzuteilung.
CRX2 = ì 0, so wird das Datenrichtungsregister DDRX,
í
î 1, so wird das Datenregister DRX vorselektiert.(X=A,B)
| Adresse | CRX2=0 | CRX2=1 | Register |
|---|---|---|---|
| $F000 | DDRA | Datenrichtungsregister Port PA | |
| $F000 | DRA | "Datenregister" Port PA | |
| $F001 | CRA | CRA | Steuerregister Port PA |
| $F002 | DDRB | Datenrichtungsregister Port PB | |
| $F002 | DRB | "Datenregister" Port PB | |
| $F003 | CRB | CRB | 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:
| Adressen | Quelle | Vorbelegung |
|---|---|---|
| $0036,$0037 | CA1 | Break-Taste F4 |
| $0038,$0039 | CB1 | RTI |
| $003A,$003B | CA2 | RTI |
| $003C,$003D | CB2 | RTI |
Im Bild 4.2-5 ist die Ausgabe eines Handshake-Signals über die Ausgangsleitung CA2 bzw. CB2 dargestellt.
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 |
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:
| 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.
|
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.

| Praktische Übung P4.2-2: |
|---|
Schließen Sie die Schnittstellen-Erweiterungskarte an den Praktikumsrechner an.
|
| 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:
|
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
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
können Sie die Aufzeichnung stoppen. Nachdem Sie auch Ihr Programm beendet haben, können Sie durch Anklicken der Ikone
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 |