| Übersicht Kapitel 4 |  | 4.2 Busarbiter |

## 4. Systemsteuer- und Schnittstellenbausteine

## 4.1 Einleitung

In diesem und dem folgenden Kapitel wollen wir uns mit den Bausteinen befassen, die außer dem µP, eventuell vorhandenen Coprozessoren (Gleitpunktprozessoren, Graphikprozessoren etc.) und Brückenbausteinen sowie den Speicherbausteinen zusätzlich zum Aufbau eines komplexen Mikrorechner-Systems benötigt werden. Einige von ihnen wurden bereits in den vorhergehenden Kapiteln angesprochen. Dazu gehören insbesondere eine ganze Reihe von relativ niedrig integrierten ("diskreten") Bausteinen, also z.B. Bausteine mit einzelnen logischen Gattern, Tristate-Treibern, Registern, (Adreß-)Decodern, Multiplexern bzw. Demultiplexern. In Ermangelung eines besseren Begriffes wollen wir sie als Hilfsbausteine bezeichnen. Diese werden wir hier nicht weiter behandeln.

### 4.1.1 Nicht programmierbare Systemsteuerbausteine

Eine weitere Klasse wird von den Systemsteuerbausteinen gebildet. Bei modernen Mikroprozessoren, insbesondere bei den Mikrocontrollern, sind sie aus technischen oder Kostengründen meist im Prozessorchip selbst integriert. Sie sind teilweise nicht programmierbar, d.h. sie führen bestimmte, fest vorgegebene Funktionen aus, ohne daß die Möglichkeit besteht, vom Programm her auf ihre Arbeitsweise einzuwirken. Das schließt nicht aus, daß durch eine hardwaremäßige Beschaltung gewisser Steuereingänge (z.B. über Schalter) eine von mehreren Betriebsalternativen ausgewählt werden kann. In der Regel ist diese Auswahl aber für die gesamte Einsatzdauer der Bausteine im System fest vorgegeben. Einige von diesen Bausteinen sind zur Funktionsfähigkeit des Systems unerläßlich, während andere nur in komplexeren Systemen benötigt werden. Zu den nicht programmierbaren Bausteinen gehören:

- Taktgeneratoren, die mit Hilfe eines extern anzuschließenden Quarzes eine Grundschwingung mit stabiler Frequenz erzeugen. Durch Zählflipflops wird diese Frequenz dann auf eine oder mehrere Frequenzen heruntergeteilt, die als Systemtakte dem Prozessor und anderen Systembausteinen zur Verfügung gestellt werden.
  In der Regel erfüllen diese Bausteine noch weitere Funktionen. So erzeugen sie beispielsweise aus einem extern angelegten Rücksetz-Signal (RESET) ein mit dem Systemtakt synchronisiertes Signal, das die vom Prozessor verlangten Zeitbeziehungen exakt einhält. Auf dieselbe Weise synchronisieren sie die READY-Signale von Systemkomponenten, die asynchron zum µP arbeiten, mit dem Systemtakt.
- Bus-Steuerbausteine (Bus Controller), die die codiert ausgegebenen Statusinformationen des µPs decodieren und als Einzelsignale den Komponenten zur Bussteuerung zuführen. Dabei müssen sie für die Synchronisation dieser Signale mit dem Systemtakt sorgen. Zu den decodierten Signalen gehören z.B. die Signale R/ bzw. IOR/ zum Lesen oder Schreiben einer Speicherzelle bzw. eines Registers in einem Peripheriebaustein.
- Bausteine zur Steuerung des Systembuszugriffes (Bus Arbiter), die in Systemen mit mehreren Bus Masters den konfliktfreien Zugriff zum Systembus regeln. (Diese Bausteine werden wir im Abschnitt 4.2 beschreiben.)
- Steuerbausteine für dynamische Speicher (Dynamic RAM Controller), die das Auffrischen der dynamischen RAMs vornehmen. Diese wurden in einem späteren Kapitel beschrieben.

### 4.1.2 Programmierbare Systemsteuerbausteine

Die programmierbaren Systemsteuerbausteine enthalten hochintegrierte, komplexe Schaltungen, die während des normalen Betriebes in verschiedene Arbeitsmodi versetzt werden und alternativ unterschiedliche Funktionen ausführen können. Jedoch darf der Begriff "programmierbar" nicht zu dem Fehlschluß verleiten, daß sie notwendigerweise - wie der µP - auf ein im Speicher vorliegendes Maschinenprogramm selbständig zugreifen und es ausführen können. Bausteine, die das können, gehören zu den Hilfs- bzw. Coprozessoren, auf die wir im Rahmen dieses Kurses nicht näher eingehen wollen. Sehr häufig besteht die "Programmierbarkeit" nur darin, daß der Prozessor durch das Einschreiben eines Steuerwortes bzw. eines Befehls den Arbeitsmodus und die auszuführende Funktion bestimmen kann. Dadurch wird dann im Steuerwerk des Bausteins ein spezielles Mikroprogramm mit bestimmten Parametern aufgerufen. Zu diesen Bausteinen, die z.T. bereits beschrieben wurden, gehören:

- Steuerbausteine für den direkten Speicherzugriff (DMA Controller), die den Datentransport zwischen dem Speicher und einer Schnittstelle ohne den Einsatz des Prozessors vornehmen (s. Abschnitt 4.4).
- Cache-Steuerbausteine (Cache Controller) zur Verwaltung eines schnellen Zwischenspeichers zwischen Prozessor und Arbeitsspeicher (wird später beschrieben).
- Speicherverwaltungsbausteine (Memory Management Unit - MMU), die zur Umsetzung von logischen in physikalische Adressen dienen.
- Zeitgeber-/Zähler-Bausteine (Timer), die Zeitintervalle bestimmter, wählbarer Länge erzeugen oder als Ereigniszähler dienen. Diese Bausteine nehmen eine Sonderrolle ein, da sie zusätzlich über Ein-/Ausgänge verfügen, die zur Steuerung der Peripherie benutzt werden können. Sie gehören deshalb auch zu den weiter unten beschriebenen Schnittstellenbausteinen. Jedoch werden sie in vielen µP-Systemen ausschließlich zur Steuerung der internen Komponenten eingesetzt. (Diese Bausteine beschreiben wir im Abschnitt 4.5.)
- Echtzeit-Uhren (Real Time Clocks - RTC) sind spezielle Zeitgeberbausteine, die in ihren Registern die aktuelle Tageszeit und das Datum zur Verfügung stellen. Sie werden gewöhnlich mit einer eigenen Spannungsquelle (Akku, Batterie) versehen, um auch nach Ausschalten des Systems die Zeit weiter messen zu können. (Im Abschnitt 4.5.5 wird ein solcher Baustein kurz vorgestellt.)
- Unterbrechungs-Steuerbausteine (Interrupt Controller), die den Anschluß einer großen Anzahl von Interruptquellen an einen gemeinsamen Eingang des Prozessors erlauben, unter diesen bestimmte Prioritäten festlegen und die Übertragung des Interruptvektors zum Prozessor vornehmen. (Interrupt-Controller sind Gegenstand des Abschnitts 4.3.)

### 4.1.3 Schnittstellenbausteine

Die Schnittstellenbausteine, auch Ein-/Ausgabe-Steuerbausteine (I/O Controller) genannt, dienen als Bindeglied zwischen dem Prozessor und dem Arbeitsspeicher einerseits und den Peripheriegeräten andererseits. Dazu übernehmen sie:

- die Pufferung der Ein-/Ausgabedaten, insbesondere auch zur Anpassung der unterschiedlichen Arbeitsgeschwindigkeiten im System und in den angeschlossenen Geräten;
- die Umsetzung der Daten, insbesondere
  - paralleler Daten in serielle Daten,
  - digitaler Daten in analoge Daten,
  - digitaler Daten in digitale Zeitfunktionen,
wobei alle drei Umwandlung auch in umgekehrter Richtung ausgeführt werden;
- die Erzeugung von Signalen zum Steuern eines Peripheriegerätes sowie zur Synchronisation der Datenübertragung zwischen dem Gerät und dem Schnittstellenbaustein;
- die Annahme von Unterbrechungsanforderungen der Peripheriegeräte und deren Weiterreichen zum Prozessor sowie die eigenständige Erzeugung solcher Anforderungen.

Im folgenden fassen wir zur Vereinfachung die programmierbaren Systemsteuerbausteine und die Schnittstellenbausteine unter dem Begriff Systembausteine zusammen.

### 4.1.4 Speicherbezogene und isolierte Adressierung

Wie wir weiter unten darstellen werden, erscheint jeder der programmierbaren Systembausteine für den Prozessor wie ein kleiner Satz von Registern, die unter einem zusammenhängenden Block von Adressen angesprochen werden können. Es wurde bereits gezeigt, daß für das Ansprechen dieser Adressen zwei Alternativen existieren, die wir hier kurz wiederholen wollen:

- In der einfacheren Form wird der Adreßblock zusammen mit allen Speicheradressen in einem gemeinsamen Adreßraum untergebracht. Hier spricht man von der speicherbezogenen Adressierung und spezieller auch von der speicherbezogenen Ein-/Ausgabe (Memory Mapped I/O). Für den Prozessor ist kein Unterschied zwischen einer Speicherzelle und einem Register eines Systembausteins zu erkennen. Daher kann in allen Befehlen und mit jeder zulässigen Adressierungsart auf ein Register eines Systembausteins zugegriffen werden. Diese Art der Bausteinadressierung wird z.B. bei den Prozessoren der Firma Motorola und vielen RISC-Prozessoren angewandt.
- Bei der zweiten Variante besitzt der Prozessor zwei getrennte Adreßräume, zwischen denen er durch ein zusätzliches Signal (M/- Memory/Input-Output) auswählt. Dieses Signal muß durch die Adreßdecoder aller Speicher- und Systembausteine ausgewertet werden. In der Regel sind beide Adreßräume unterschiedlich groß. Der größere Adreßraum wird durch alle Adreßsignale des Prozessors sowie durch M/=1 angesprochen und enthält die Adressen der Speicherzellen des Arbeitsspeichers. Zur Selektion einer bestimmten Adresse im zweiten Adreßraum wird meist nur die niederwertige Hälfte des Adreßbusses sowie der Signalzustand M/ =0 benutzt. In diesem Adreßraum werden (bevorzugt) die Adressen der Register der Systembausteine untergebracht. Zur Ansprache dieser Adressen stehen besondere Befehle zur Verfügung (IN, OUT, s. Abschnitt 3.2), die oft nur eine sehr eingeschränkte Teilmenge der Adressierungsarten zulassen. Wegen der getrennten Adreßräume für den Arbeitsspeicher und die Systembausteine spricht man von der isolierten Adressierung bzw. isolierten Ein-/Ausgabe (isolated I/O). Die isolierte Adressierung wird insbesondere von den Intel-Prozessoren unterstützt.
  Natürlich hat der Systementwickler auch bei einem Prozessortyp mit isolierter Adressierungsmöglichkeit die Freiheit, die Registeradressen der Systembausteine in den Speicher-Adreßbereich zu legen.

### 4.1.5 Anschluß der Schnittstellenbausteine an den µP

Ein Problem ergibt sich dadurch, daß auch heute noch sehr viele Schnittstellenbausteine eine Datenbusbreite von 8 bit (1 byte) voraussetzen. Dies hat einerseits seinen Grund darin, daß viele Ein-/Ausgabe-Geräte zeichenorientiert sind, ihre Daten also sehr gut durch jeweils ein Byte repräsentiert werden können. Andererseits werden auch für die modernen 16-, 32- bzw. 64-bit-Prozessoren zum großen Teil noch die für die älteren 8-bit-Prozessoren entwickelten Schnittstellenbausteine eingesetzt. In Abschnitt 2.4 und Abschnitt 3.1 wurde bereits gezeigt, wie die modernen Prozessoren verschiedene Operandenlängen unterstützen. Durch zusätzliche Steuersignale (z.B. BE7/3,..,BE0) kann gezielt jedes Byte des Datenbusses aktiviert werden. Daher hat es der Systementwickler in der Hand, mit welchem Byte des µP-Datenbusses er einen Schnittstellenbaustein verbindet. Durch einen Multiplexer/Demultiplexer in der Busschnittstelle des Prozessors wird dafür gesorgt, daß z.B. ein eingelesenes Byte stets in den niederwertigen Zellen der Datenregister abgelegt wird (DR, s. Bild 4.1-1). Diese Möglichkeit sorgt dafür, daß auch 8-bit-Schnittstellen-Bausteine ohne freie Lücken im Adreßraum untergebracht werden können.

Bild 4.1-1: 8-bit-Schnittstelle am 32-bit-Prozessor

### 4.1.6 Aufbau der Systembausteine

Bevor wir in den folgenden Abschnitten auf einige der oben genannten Bausteine näher eingehen, wollen wir noch einmal kurz den prinzipiellen Aufbau der programmierbaren Systembausteine beschreiben (s. Bild 4.1-2). Der Baustein besteht im wesentlichen aus der Steuerung und der eigentlichen Ausführungseinheit. Der Steuerbus, der die Steuerung mit allen Komponenten des Bausteins verbindet, wurde nicht eingezeichnet und wird auch bei den folgenden Bausteinbeschreibungen stets weggelassen.

4.1.6.1 Die Steuerung

Die Steuerung (das Steuerwerk) des Bausteins sorgt für die zeitgerechte Erzeugung der Signale, mit denen die internen Komponenten aktiviert und geschaltet werden, also insbesondere die Register und die Datenweg-Multiplexer. Die Steuerung ist ein synchrones Schaltwerk, das vom µP mit dem Systemtakt versorgt wird. Über den RESET-Eingang können die Steuerung und z.T. auch die Register in einen definierten Anfangszustand versetzt werden. Das -Signal dient zur Auswahl des Bausteins durch den Prozessor. Es wird durch einen Adreßdecoder aus den höherwertigen Adreßbits erzeugt. Die niederwertigen Adreßbits Ai...A0 werden dem Baustein direkt zugeführt und erlauben dem Prozessor, im Baustein ein bestimmtes Register anzusprechen. Die Richtung eines Datentransports zwischen Prozessor und Baustein wird durch das Lese-/Schreib-Signal R/ bestimmt. Durch ein READY-Signale zeigt der Baustein das Ende einer Datenübertragung auf (semi-)synchronen Systembussen an.
Bei Bausteinen, die auf dem Prozessorchip selbst integriert sind, werden die beschriebenen Schnittstellensignale über den internen Steuerbus der Bausteinsteuerung zugeführt.

Bild 4.1-2: Prinzipieller Aufbau eines Systembausteins

Der erwähnte Datentransport findet über den Datenbus statt. Im Datenbuspuffer können eingeschriebene oder ausgelesene Daten kurzzeitig zwischengespeichert werden. Im einfachsten Fall besteht der Datenbuspuffer jedoch nur aus bidirektionalen Tristate-Treibern.
Quelle oder Ziel eines Datentransports sind stets die internen Register des Bausteins. Drei von ihnen sind der Bausteinsteuerung fest zugeordnet und dienen dem Prozessor zur Kommunikation mit dem Baustein.

- Im Statusregister legt die Steuerung Informationen ab, die den Zustand des Bausteins beschreiben. Dazu gehören Informationen über das Ergebnis der zuletzt ausgeführten Funktion, über die Betriebsart, in der der Baustein augenblicklich betrieben wird sowie über eventuell vorliegende Bearbeitungswünsche des angeschlossenen Peripheriegerätes. Ein solcher Wunsch kann entweder vom Gerät direkt über einen Unterbrechungs-Anforderungseingang IRQ (Interrupt Request) oder aber von der Ausführungseinheit des Bausteins als Ergebnis eines durchgeführten Auftrags gestellt werden. Durch die Anforderung wird im Statusregister das IF-Bit (Interrupt Flag) gesetzt.
- Das Steuerregister ((Mode) Control Register) bestimmt die Betriebsart, in der der Baustein arbeiten soll. Sein Inhalt wird üblicherweise während der normalen Betriebszeit sehr selten verändert, häufig sogar nur einmal während der Initialisierung nach dem Einschalten des Systems festgelegt. Dies gilt nicht für ein spezielles Bit des Steuerregisters, das als Interrupt Enable Bit (IE) dient: Nur wenn dieses Bit gesetzt ist, kann eine Unterbrechungsanforderung zum Prozessor weitergeleitet werden. Im Bild ist dies symbolisch durch die Und-Verknüpfung der Bits IF und IE dargestellt. Der Ausgang dieser Und-Schaltung wird der Interruptsteuerung zugeführt, die ein Bestandteil der Bausteinsteuerung ist. Sie ist verantwortlich für die zeitgerechte Erzeugung und Ausgabe des Unterbrechungssignals INT zum Prozessor. Bei einigen Bausteinen muß sie das Quittungssignal INTA (Interrupt Acknowledge) überwachen und für die Ausgabe der Interrupt-Vektornummer sorgen, wie es im Abschnitt 2.3 beschrieben wurde.
- Im Befehlsregister (Command Register) legt der Prozessor alle benötigten Informationen ab, die die Ausführung der aktuell gewünschten Operation verlangt. Das bedeutet, daß dieser Registerinhalt sehr häufig, u.U. mit jeder auszuführenden Operation geändert wird.

Die eben vorgenommene funktionale Unterscheidung zwischen Steuer- und Befehlsregister wird von manchen Bausteinherstellern sehr "großzügig" gehandhabt. So werden dieselben Bits bei Bausteinen vergleichbarer Funktion, aber verschiedener Hersteller häufig willkürlich im Steuer- oder Befehlsregister untergebracht. Außerdem werden zum Teil Status- und Steuerbits in einem einzigen (Schreib-/Lese-)Register zusammengefaßt.
Je nach Komplexitätsgrad des Bausteins können übrigens alle drei Register in mehrfacher Ausführung vorhanden sein. Dies gilt insbesondere dann, wenn ein Baustein mehrere, voneinander getrennte Ausführungseinheiten des gleichen Typs oder verschiedener Typen besitzt. In diesem Fall werden die Register häufig auch den Ausführungseinheiten selbst und nicht der Steuerung zugeordnet.
Bei den folgenden Bausteinbeschreibungen werden wir auf die Bausteinsteuerung, ihre Schnittstelle zum Prozessor und die beschriebenen drei Register nur noch dann eingehen, wenn sie Besonderheiten gegenüber dem jetzt dargestellten Modell aufweisen.

4.1.6.3 Die Ausführungseinheit

Die Ausführungseinheit ist der Teil des Bausteins, der die spezifischen Bausteinfunktionen zur Verfügung stellt. Sie besitzt dazu ein oder mehrere Datenregister, die vom Prozessor gelesen und beschrieben werden können und in dem die Operanden der Funktionen abgelegt werden. In Hilfsregistern können zusätzliche Parameter abgelegt werden, die die Ausführung einer Operation beeinflussen. Dazu gehören z.B. die Angabe, ob eine bidirektionale Datenleitung als Ausgang oder als Eingang geschaltet oder ob ein Zähler inkrementiert oder dekrementiert werden soll.

4.1.6.3 Die Schnittstelle zum Peripheriegerät

Die Schnittstellenbausteine unterscheiden sich von den programmierbaren Systemsteuerbausteinen hauptsächlich dadurch, daß ihre Ausführungseinheit eine mehr oder weniger große Anzahl von Ein- oder Ausgangsleitungen zur Kommunikation mit einem Peripheriegerät oder einem anderen Systembaustein besitzen. Diese Leitungen bilden die sogenannte physikalische Schnittstelle. Dazu gehören:

- ein Bündel meist bidirektionaler Datenleitungen zum Austausch paralleler Daten,
- eine Eingangsleitung SIN und eine Ausgangsleitung SOUT zur Übertragung serieller Daten,
- eine Anzahl von Steuerleitungen, über die der Baustein Steuerinformationen ausgeben kann; dazu gehören z.B. Signale zum Ein-/Ausschalten eines Peripheriegerätes und Strobe-Signale zur Synchronisation der Datenübertragung (s.u.). Diese Signale werden zum Teil direkt vom Mikroprozessor kontrolliert, indem er in einem Register des Bausteins bestimmte Bits setzt bzw. zurücksetzt, deren Zustand direkt auf die Steuerleitungen geschaltet wird. Um die Adressierung der Bausteinregister zu erleichtern, werden diese Bits häufig mit in das oben beschriebene Steuerregister eingebunden, obwohl sie funktional nichts mit der Bausteinsteuerung zu tun haben.
- eine Menge von Meldeleitungen, über die der Baustein Informationen über den Zustand der angeschlossenen Komponente bekommen kann, insbesondere darüber, ob sie aktuell bereit ist, Daten auszutauschen. Der Zustand der Meldeleitungen wird gewöhnlich in einem Hilfsregister aufgefangen, dessen Bits aus Vereinfachungsgründen aber auch in das Statusregister des Bausteins eingebunden sein können.

Zusammenfassend ist im Bild 4.1-3 die Einbindung eines Schnittstellenbausteins zwischen Prozessor und Peripheriegerät dargestellt.

Bild 4.1-3: Schnittstellenbaustein zwischen Mikroprozessor und Gerät

### 4.1.7 Die verschiedenen Ein-/Ausgabe-Verfahren

Für den Austausch einer Folge von Daten existieren im wesentlichen drei Varianten.

- Die erste Variante, die in komplexen Systemen hauptsächlich angewandt wird, ist die interruptgesteuerte Ein-/Ausgabe. Bei ihr wird jeder Transfer eines einzelnen Datums oder eines Datenblocks vom Schnittstellenbaustein (oder dem angeschlossenen Gerät) über die INT-Leitung angefordert. Sobald der Prozessor dazu in der Lage ist, unterbricht er seine augenblickliche Programmbearbeitung und ruft eine spezielle Interruptroutine zur Datenübertragung auf.
  Der Vorteil dieser Methode besteht darin, daß der Prozessor zwischen den einzelnen Datentransfers andere Operationen ausführen kann, was insbesondere bei langsamen Peripheriegeräten wichtig ist. Außerdem kann der Prozessor auf diese Weise viele Schnittstellenbausteine ohne großen Steueraufwand bedienen. Die Aufgabe, aus gleichzeitig vorliegenden Übertragungswünschen denjenigen mit der höchsten Priorität auszusuchen, wird ihm von den oben bereits erwähnten Unterbrechungs-Steuerbausteinen abgenommen (vgl. Abschnitt 4.3). Ein Nachteil ist der zusätzliche Zeitaufwand für die Programmumschaltung zur Interruptroutine.
- Die zweite Variante wird mit programmierter Ein-/Ausgabe (programmed I/O) bezeichnet, weil bei ihr die Datenübertragung durch die Ausführung von Schreib-/Lese-Zugriffen auf das Datenregister des Bausteins an geeigneten Stellen im Programm vorgesehen werden muß. Dazu fragt der Prozessor (in regelmäßigen oder unregelmäßigen Abständen) das Statusregister des Schnittstellenbausteins daraufhin ab, ob er bereit ist, ein Datum zu übertragen. Zwischen den Übertragungsanforderungen kann der Prozessor andere Operationen ausführen oder aber in einer Schleife ausschließlich die Abfrage des Statusregisters durchführen. Im zweiten Fall spricht man von "aktivem Warten" (Busy Waiting).
  Dieses Ein-/Ausgabe-Verfahren ist immer dann vorzuziehen, wenn eine sehr große Anforderung an die Reaktionsgeschwindigkeit des Prozessors auf eine gewünschte Datenübertragung vorliegt; und natürlich auch dann, wenn er ohne das erwartete Datum seine Aufgabe nicht weiter ausführen kann. Betreibt der Prozessor jedoch mehrere Schnittstellenbausteine, so muß er deren Statusregister im Polling-Verfahren abfragen. Das bedeutet für viele Anwendungsfälle eine unvertretbar große Zeitverzögerung.
- Die dritte Variante ist die im Abschnitt 4.4 beschriebene DMA-Übertragung. Neben ihrer großen Übertragungsrate, die von den beiden anderen Verfahren nicht erreicht wird, hat sie den Vorteil, daß bei ihr der Prozessor von der Übertragung derjenigen Daten befreit wird, die für seine augenblickliche Programmausführung keine Bedeutung (mehr) haben.

### 4.1.8 Synchronisation der Datenübertragung

Für die Synchronisation der Datenübertragung zwischen Schnittstellenbaustein und Peripheriegerät existieren mehrere Alternativen. Im Bild 4.1-4 ist eine Hardwarelösung dargestellt.

Bild 4.1-4: Synchronisation der Datenübertragung zwischen Schnittstelle und Peripheriegerät

Als Beispiel zeigt das Bild die Übertragung paralleler Daten. Angenommen wird dabei, daß für beide Übertragungsrichtungen getrennte Datenwege zur Verfügung stehen; jedoch funktioniert das im folgenden beschriebene Verfahren auch bei bidirektionalen Datenleitungen. Für jede Richtung existiert eine Signalleitung REQ (Request), mit der die Datenquelle das Ziel zur Ausführung der Übertragung auffordert, und eine Leitung ACK (Acknowledge), über die das Datenziel den Erhalt der Daten anzeigt. Für die exakte Ausführung der Synchronisation, das sogenannte Übertragungsprotokoll, gibt es viele Varianten. Eine davon ist im Bild 4.1-5 für die Übertragung von der Schnittstelle zum Gerät dargestellt.

Bild 4.1-5: Übertragungsprotokoll für die Datenausgabe

Vom Prozessor gesteuert, legt der Schnittstellenbaustein zunächst das Datum auf die (Tristate-) Ausgänge seiner Datenleitungen. Danach zeigt er durch sein REQ-Signal an, daß er die Übernahme der Daten durch das Peripheriegerät erwartet.

- Besitzt das Gerät ein Auffangregister, das durch das REQ-Signal getriggert wird, so muß die Schnittstelle nur ein kurzes Strobe-Signal ausgeben und kann danach die Datenleitungen wieder abschalten, was durch gestrichelte Linien im Bild 4.1-5 angedeutet ist. In diesem Fall wartet die Schnittstelle solange mit der Übertragung eines weiteren Datums, bis das Gerät durch das ACK-Signal anzeigt, daß es das zuletzt übertragene aus dem Register entnommen hat.
- Besitzt das Gerät kein Auffangregister, so müssen Daten und REQ-Signal solange festgehalten werden, bis das Gerät die Übernahme der Daten durch sein ACK-Signal anzeigt.

Als Folge des aktivierten ACK-Signals wird im Statusregister des Schnittstellenbausteins ein Bit gesetzt. Oben wurde bereits erwähnt, daß dieses Statusbit entweder vom Prozessor gelesen wird oder aber sein Zustand über den Interruptausgang des Schnittstellenbausteins als Unterbrechungsanforderung zum Prozessor ausgegeben wird.
Verfahren der beschriebenen Art hatten wir bereits als Handshake-Verfahren (Quittungsverfahren) bezeichnet, da sich bei ihnen beide Kommunikationspartner durch den Austausch der REQ- bzw. ACK-Signale sozusagen "die Hand geben".

| Übersicht Kapitel 4 |  | 4.2 Busarbiter |