Impressum
< Multiplikation Inhalt Speicher des 8051 >

Das Bussystem des 8051

Ein Bus ist eine Sammelleitung für Daten zur Datenübertragung. Die einfachste Form eines Busses sind parallele Kabel. Ein 8-Bit Bus überträgt 8 Bit auf einmal und besitzt somit 8 parallele Leitungen. Der 8051 Mikrocontroller hat 3 unterschiedliche Bussysteme, welche nach ihren Aufgaben unterschieden werden. Es gibt den Datenbus, den Adressbus und den Steuerbus.
8051 Bussystem
Abb 1: Das Bussystem des 8051

Der Steuerbus

Der Steuerbus ist 8 Bit breit und transportiert Steuersignale. Diese Signale bestimmen, ob in den Speicher geschrieben oder von ihm gelesen wird. Er legt ebenso fest, welche Operation die ALU ausführt bzw. welches Ergebnis die ALU ausgibt.

Der Datenbus

Er transportiert die Daten und hat wie der Steuerbus eine Breite von 8 Bit. Auf diesem Bus gelangen Befehle aus dem ROM zum Steuerwerk, ebenso wie Konstanten aus dem ROM zur Alu. Der Datenbus transportiert Daten vom internen Speicher (RAM) an die Alu und Ergebnisse von der Alu in den Speicher.

Der Adressbus

Der Adressbus hat eine Breite von 16 Bit und gibt die Adresse des nächsten Befehls im ROM an. Wird aus dem RAM gelesen oder in ihn geschrieben, so muss vorher die Adresse der betreffenden Speicherzelle über den Adressbus übermittelt werden. Die ausgelesenen Daten legt der jeweilige Speicher auf den Datenbus. Da der Adressbus 16 Bit breit ist hat das ROM eine maximale Größe von 64kb (=216 Byte).

Anbindung an den Bus

Bindet man Speicherzellen parallel an den Datenbus an, wie es in Abbildung 2 dargestellt ist, treten mehrere Probleme auf. Zum einen lesen alle Speicherzellen gleichzeitig Daten vom Bus, so dass alle Speicherzellen stetig den gleichen Wert haben. Zum anderen schreiben alle Speicherzellen gleichzeitig auf den Bus. Werden unterschiedliche Werte auf den Bus geschrieben, also 0 und 1, so kommt es zu einem Kurzschluss.
falsche Busanbindung 1
Abb 2: falsche Busanbindung 1
Die in Abbildung 3 dargestellte Modifikation bringt die Verbesserungen, dass jede Speicherzellen ein eigenes Schreib- und Lesesignal besitzen. Hierdurch können Speicherzellen gezielt zum Schreiben (write) angesteuert werden, indem man das Write-Signal auf 1 setzt. Ist das Write-Signal 0, so nimmt das statische Flip-Flop keine Werte in seinen Speicher auf.
Das Und-Gatter am Ausgang liefert den gespeicherten Wert nur an den Bus, falls das Read-Signal auf 1 gesetzt ist.
Allerdings kommt es auch hier noch zu Kurzschlüssen auf dem Bus, da ein Und-Gatter immer entweder 0 (-5V) oder 1 (+5V) ausgibt. Somit kommt es zum Kurzschluss, wenn ein Speicherbit auf 1 steht und das zugehörige Read-Signal ebenfalls auf 1 steht. Da alle anderen Speicherzellen das Read-Signal 0 bekommen, schließt die 1 sich mit den 0-Signalen der anderern Flip-Flops kurz.
falsche Busanbindung 2
Abb 3: falsche Busanbindung 2
Um das Kurzschlussproblem zu lösen, benötigt man ein zusätzliches Bauteil, welches Tri-State heißt und in Abbildung 4 dargestellt ist. Dieses Bauteil liefert das Signal am in-Eingang an den out-Ausgang weiter, falls das Signal on auf 1 steht. Ist das on-Signal auf 0 so ist der Ausgang out hochohmig. Das heißt es fließt kein Strom weder -5V noch +5V, sondern es verhält sich so, als ob das Bauteil nicht am Bus angeschlossen wäre. Somit kommt es zu keinen Kurzschlüssen, wenn man mehrere Ausgänge parallel anschließt.
Tristate
Abb 4: Tri-State
Baut man in den Entwurf aus Abbildung 3 je ein Tri-State zwischen dem Und-Gatter und dem Bus ein, so kommt es zu keinen Kurzschlüssen mehr. An den Eingängen der Speicher ist keine Modifikation nötig, da hier nur gelesen und nicht geschrieben wird. Diese Tri-State-Bauteile werden auch Bustreiber genannt. Hierbei handelt es sich um Hardware-Treiber-Bausteine, welche nicht mit Software-Treibern von Betriebssystemen verwechselt werden sollten.
Busanbindung
Abb 5: Busanbindung