Z80 PIO (in der DDR U855) in CMOS-Architektur Z84C30 |
![]() |
![]() |
Letztmalig dran rumgefummelt: 27.09.20 11:44:06 |
![]() |
Implementiert in ein 40-poliges DIL-Gehäuse präsentiert sich die Z80-PIO mit einem 8 Bit breitem Daten-BUS, 3 leitungsfähigen Interruptmodi und einem linear adressierbarem Speichervolumen von 64 KByte (das entspricht 65536 Adressen). Die PIO verfügt über nur eine 5 Volt-Versorgungsspannung, einen Einphasentakt. Alle Ausgänge sind TTL-kompatibel und können eine Standardlast treiben. | |||||||
![]() |
|
|||||||
![]() |
0. Vorläufer des
Z80-PIO 1. Blockschaltbild und technische Daten 2. Portstruktur 3. PIO-Programmierung 4. Handshake-Prinzip und Interruptprogrammierung 5. Schaltpläne und Startprogramm-Listings 6. Verwandte Themen |
|||||||
![]() |
Warum fiel die Wahl für die Unterrichtsarbeit ausgerechnet auf den Z80 bzw. sein System? Dieser Prozessor sowie sein System vereinigt eine Reihe positiver Merkmale für den Rechentechnik-Einsteiger:
|
1. Blockschaltbild und technische Daten |
![]() |
![]() |
![]() |
![]() |
Zwei voneinander unabhängige - allerdings nicht komplett identisch funktionierende Ports stehen pro Baustein mit einer fest verdrahteten Adressierungslogik pro Baustein zur Verfügung. Theoretisch bis zu maximal 256 Bausteine können in einem System implementiert werden - dies wird praktisch so nie realisiert, da sich bedingt durch die Logikabarbeitung in der Prioritätenkette dann Probleme ergeben würden. Acht Bit pro Port, welche theoretisch auch noch zu 16 Bit in der jeweiligen Funktionalität zusammengefasst werden können, ergeben eine in sich, bezogen auf die die verfügbare Leitungsanzahl über theoretisch viele Kilometer (wobei natürlich elektrische Verstärker eine wesentliche Rolle spielen!), eine nahezu sagenhafte "Datendurchsatzrate". Leider stört die Entfernung, was dazu führt, dass wir dies heute anders "erledigen"! | ||||
![]() |
|
||||
![]() |
Funktionsbeschreibung | ||||
![]() |
Pinbelegung | ||||
![]() |
Technische Daten | ||||
![]() |
Taktdiagramme | ||||
![]() |
Schaltpläne |
2. Portstruktur der Z80 PIO (oder PIO U855D) |
![]() |
![]() |
![]() |
![]() |
... die Kernpunkte des jeweiligen Bausteins sind die beiden jeweils theoretisch 8 Bit breiten I/O-Ports. |
![]() |
|
![]() |
Der CPU-Buspuffer dient zur Anpassung der PIO-Daten- und -Steuerinformationen an das Standardzeitverhalten des U880 und ermöglicht eine direkte Zusammenschaltung
beider Bauelemente. Die interne Steuerlogik überwacht in Abhängigkeit vom Systemtakt,
von den CPU-Steuersignalen und vom Zustand der PIO-Quittierungssignale die Funktion
der Einheit. Die Interruptsteuereinheit übernimmt in Auswertung der in den Portlogiken
abgespeicherten Informationen, der an den Kanälen anliegenden Daten, des Zustands
der Quittierungssignale und in Abhängigkeit externer Informationen die Anforderung
von Interrupts an die CPU. Bild oben zeigt die innere Struktur eines der beiden Ein-/Ausgabe-Ports. Das Betriebsartenregister ist ein 2-bit-Register, das durch ein Steuerwort (OUT-Befehl) vom Prozessor programmiert wird. Mit ihm wird eine der vier möglichen Betriebsarten des PIO-Ports (Byteausgabe, Byteeingabe, bidirektionaler Bytebetrieb bei Port A, Bitbetrieb) festgelegt. Das Ausgaberegister dient in der Betriebsart Byteausgabe zur Zwischenspeicherung der Ausgabedaten. Es wird durch die CPU mit Hilfe eines Datenworts (OUT-Befehl) programmiert. Das Eingaberegister dient analog hierzu in der Betriebsart Byteeingabe zur Zwischenspeicherung der Porteingabedaten. Die Übernahme dieser Daten wird durch die Quittierungslogik (Signal STB) gesteuert. Das Register kann vom Prozessor mittels einer IN-Instruktion als Datenwort gelesen werden. In der Betriebsart bidirektionaler Bytebetrieb dienen die Ein- und Ausgaberegister des Ports A zur bidirektionalen Datenübertragung. Die Steuerung hierfür wird von den Quittierungslogiken der Kanäle A (Datenausgabesteuerung) und B (Dateneingabesteuerung) übernommen. Port B muss in diesem Anwendungsfall in der Betriebsart Bitbetrieb verwendet werden, da hierfür keine Quittierungslogik erforderlich ist. Das Ein-/Ausgabe-Wablregister ist ein 8-bit-Register, das in der Betriebsart Bitdatenaustausch zur Festlegung der Funktion der einzelnen Bits (Eingabe oder Ausgabe) dient. Es ist durch den Prozessor per Steuerwort programmierbar (OUT-Operation). Die Portlogik beider Kanäle enthält neben diesen für den eigentlichen Datentransfer nötigen Registern weitere, die eine leistungsfähige gerätebezogene Interruptbearbeitung ermöglichen. Das Interruptfreigabeflipflop dient zur Sperrung bzw. Freigabe der Interruptfähigkeit des entsprechenden Ports und ist über ein Steuerwort von der CPU setz- oder rücksetzbar. Das Vektorregister ist ein 8-bit-Register; es ist mit Hilfe eines Steuerworts programmierbar. In der Interruptbetriebsart IM2 des Prozessors U880 wird nach einer Interruptanmeldung und -quittierung eines systemzugehörigen Peripherieschaltkreises automatisch eine 16-bit-Unterprogrammstartadresse gebildet. Diese Startadresse wird aus zwei aufeinanderfolgenden Speicherplätzen entnommen (Low-Byte, High-Byte), die durch den Inhalt des 8-bit-CPU-Registers I und den sieben niederwertigeren Bits des Vektorregisters des unterbrechenden peripheren Geräts adressiert werden. Es ist somit möglich, in Verbindung mit einer Prioritätsfestlegung mittels der „daisy-chain"-Kaskadierung ein sehr leistungsfähiges und automatisch wirkendes Interruptssystem anzuwenden. In den byteorientierten Betriebsarten des PIO erfolgt eine Interruptanmeldung nach Auswertung der Signale in der Quittierungslogik. Dagegen erfolgt die Interruptanmeldung in der Bitbetriebsart nach Auswertung der anliegenden Portdaten. In dieser Auswertung dienen die Maskierungs- und Maskierungssteuerregister. Beide Register sind ebenfalls durch Steuerwörter vom Prozessor programmierbar. Mit dem 8-bit-Maskierungsregister wird festgelegt, welche der acht Datenlinien des entsprechenden Ports überhaupt für eine Interruptanmeldung verwendet werden. Das 2-bit-Maskierungssteuerregister entscheidet, welcher Pegel als aktiv definiert wird (H oder L) und ob eine AND- oder eine OR-Verknüpfung zwischen den ausgewählten Datenlinien die Anmeldung auslöst. In dieser Betriebsart können also weitere logische Entscheidungen (z. B. Auslösung eines Alarms bei einer bestimmten Bitbelegung des Ports) ohne zusätzlichen Hardwareaufwand bzw. zeitliche Belastung des Mikroprozessors gefällt werden. |
![]() |
in der Interrupt-Kaskade ist der Port A höherwertiger als Port B |
![]() |
in der bidirektionalen Byte-Betriebsart fungieren die Quittungssignale des Port B anders als die des Port A |
![]() |
zwei 8-Bit-Register können funktional zu einem 16-Bit-Register zusammengefasst werden |
3. PIO-Programmierung |
![]() |
![]() |
![]() |
![]() |
PIO-Programmierung war lange Zeit das A und das O der Rechner-Peripherie Verwaltung. Das kann man heute so nicht mehr sagen, da die seriellen Bausteine die ihnen anhaftende Altlast erfolgreich abwerfen konnten - sie sind nicht mehr langsam - im Gegenteil: ... diese sind sehr schnell geworden. Und Parallel-Betrieb benötigt viele Leitungen - mit vielen Bits auf welchen dann auch noch unterschiedliche Signalzustände anliegen. Diese ergeben bei den heute angewandten Taktfrequenzen unangenehme "Überlagerungen" - das Induktionsgesetzt lässt hier grüßen. Wir machen das aber trotzdem noch, weil das Prinzip der Programmierung der I/O-Devices hier noch sehr gut erkennbar sowie noch relativ einfach ist ;-) |
![]() |
|
![]() |
Beispielprogramme zur PIO-Programmierung |
4. Handshake und Interruptprogrammieung |
![]() |
![]() |
![]() |
![]() |
|
![]() |
5. Schaltpläne und Startprogramme |
![]() |
![]() |
![]() |
![]() |
|||||||||||
![]() |
|
||||||||||
![]() |
Schaltplansymbol des Z80 PIO |
![]() |
die einzelnen BUS-Systeme werden immer als "Strang" zusammengefasst - deshalb auch die zusammengehörigen Komponenten am Schaltsymbol so angefügt |
![]() |
der Ausgang eines PIO ist niemals mit "Lasten" zu beschalten - maximal ein TTL-Last |
![]() |
die Kanäle sowie die Signalpegel haben verschiedene Ausgangsströme - siehe auch hier |
![]() |
Beispielprogramme zur PIO-Programmierung |
![]() |
Schnelle LookAhead-Logik |
6. Verwandte Themen |
![]() |
![]() |
![]() |
|
Was soll's - der Z80 lebt! Und 2012 auf Glas implementiert - das alles auf der aktuell gehaltenen Seite von Thomas Scherrer. Aber auch andere Institutionen veröffentlichen marginal, dass der Z80 nahezu unverändert bei ihnen Einsatz findet - z. B. die NASA! | |||
![]() |
|
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im Oktober 1998 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |