Intel 8255 PPI: Programmierung, Betriebsmodi und E/A-Techniken
Eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 5,43 KB
Intel 8255: Programmierbarer Peripherie-Interface (PPI)
Der Intel 8255 ist ein programmierbarer Peripherie-Interface (PPI) für allgemeine Zwecke. Er verfügt über 40 Pins, wovon 24 als konfigurierbare Eingabe-/Ausgabe-Leitungen (E/A) dienen. Diese 24 E/A-Leitungen können individuell in zwei Gruppen zu je 12 Leitungen programmiert werden. Der 8255 unterstützt drei Betriebsmodi. Er enthält drei parallel programmierbare 8-Bit-Ports (Port A, Port B, Port C). Jeder Port verfügt über ein Datenregister, und ein Steuerwortregister dient zur Konfiguration der Ports.
Das Steuerwortformat des Intel 8255
Das Steuerwort wird verwendet, um die beiden Gruppen des 8255 zu konfigurieren. Die ersten drei Bits (D0-D2) definieren den Betriebsmodus und die Konfiguration von Gruppe B (bestehend aus Port B und der unteren Hälfte von Port C). Die folgenden vier Bits (D3-D6) bestimmen den Betriebsmodus und die Konfiguration von Gruppe A (bestehend aus Port A und der oberen Hälfte von Port C). Bit D7 ist das Modus-Set-Flag und muss für Modus-Set-Operationen immer auf '1' gesetzt sein.
Betriebsmodi des Intel 8255 PPI
Modus 0: Einfacher E/A-Betrieb
Dieser Modus ist für grundlegende E/A-Operationen vorgesehen. Es wird kein Handshake-Protokoll für den Datenaustausch verwendet. Daten werden direkt in die Ports geschrieben oder von ihnen gelesen. Ausgangsdaten werden in Latches gespeichert.
Grundlegende Merkmale von Modus 0
- Zwei 8-Bit-Ports (A und B) und zwei 4-Bit-Ports (obere und untere Hälfte von Port C).
- Jeder E/A-Port verfügt über Latch-Ausgänge, aber keine Latch-Eingänge.
Modus 1: Handshake-E/A-Betrieb
Der Datentransfer erfolgt über Handshake-Steuersignale. Port A und Port B nutzen Leitungen von Port C, um Handshake-Signale zu generieren oder zu empfangen.
Grundlegende Funktionen von Modus 1
- Jede Gruppe (A und B) hat einen 8-Bit-Datenport.
- Zusätzlich werden 4-Bit-Steuerleitungen von Port C für Handshake-Signale verwendet.
- Die E/A-Ports sind gelatcht.
Funktionen von E/A-Modulen
E/A-Module übernehmen wichtige Aufgaben:
- Steuerung der Kommunikation mit dem Prozessor.
- Kommunikation mit Peripheriegeräten.
- Temporäre Datenspeicherung.
- Fehlererkennung.
E/A-Techniken für die Datenübertragung
Programmierter E/A (Programmed I/O)
Bei dieser Technik werden Daten direkt zwischen Prozessor und E/A-Modul ausgetauscht. Der Prozessor führt ein Programm aus, das den E/A-Betrieb direkt steuert, einschließlich der Statusabfrage, des Sendens von Lese-/Schreibbefehlen und der Datenübertragung. Der Prozessor ist während des gesamten E/A-Vorgangs blockiert.
Interrupt-gesteuerter E/A (Interrupt-driven I/O)
Bei dieser Technik initiiert der Prozessor den E/A-Vorgang und kann dann andere Anweisungen ausführen. Das E/A-Modul unterbricht den Prozessor, sobald der Vorgang abgeschlossen ist oder eine Aktion erforderlich ist.
Direkter Speicherzugriff (DMA)
Daten werden direkt vom Peripheriegerät in den Speicher übertragen, ohne den Prozessor zu belasten. Dies geschieht mithilfe eines speziellen DMA-Controllers.
Hardware-Interrupts beim Intel 8086
Wenn ein Peripheriegerät einen Interrupt an den 8086 sendet, reagiert der Prozessor mit einem Interrupt-Acknowledge-Signal. Das unterbrechende Gerät legt eine 8-Bit-Interrupt-Typnummer auf den Datenbus. Diese Nummer identifiziert die spezifische Interrupt-Service-Routine (ISR). Der 8086 speichert das Program Status Word (PSW) und die Rücksprungadresse (Program Counter/Instruction Pointer) auf dem Stack. Anschließend springt der Prozessor zur entsprechenden ISR. Der Prozess des Austauschs von Steuersignalen wird als Handshaking bezeichnet (hier im Kontext der Interrupt-Anerkennung). Ein "N-Interrupt" tritt auf, wenn ein Gerät die Interrupt-Nummer N verwendet, um den 8086 zu unterbrechen. Die Übertragung zu einer Interrupt-Routine ist vergleichbar mit einem Prozeduraufruf, wobei der 8086 wichtige Registerinhalte auf dem Stack sichert.
Ablauf eines Interrupts
- Das Gerät sendet ein Interrupt-Signal an den Prozessor.
- Der Prozessor beendet die aktuelle Instruktion.
- Der Prozessor prüft auf ausstehende Interrupts, bestimmt deren Priorität und sendet ein Acknowledge-Signal an das Gerät, das den Interrupt ausgelöst hat. Dieses Signal deaktiviert die Interrupt-Anforderung des Geräts.
- Der Mikroprozessor speichert das Program Status Word (PSW) und die Adresse der nächsten Instruktion (Program Counter/Instruction Pointer) auf dem Stack.
- Der Prozessor lädt die Startadresse der Interrupt-Service-Routine (ISR).
- Der Prozessor sichert weitere wichtige Registerinhalte (Prozessorstatus) auf dem Stack.
- Die Interrupt-Service-Routine wird ausgeführt.
- Der Prozessor stellt die gesicherten Registerinhalte wieder her.
- Das PSW und der Program Counter/Instruction Pointer werden vom Stack wiederhergestellt, und die Ausführung des unterbrochenen Programms wird fortgesetzt.
Techniken zur Interrupt-Identifizierung
- Mehrere Interrupt-Leitungen
- Software-Polling (Daisy Chain)
- Vektorisierte Interrupts (Hardware-Polling)
- Bus-Arbitrierung