Ü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:

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:

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:

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:

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.

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:

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.

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.

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