Tristate-Logik, Grundlage und Praxis
Einleitung
Die Rubrik Digitaltechnik enthält unter Logische Grundverknüpfungen die Grundlagen zu den AND-, NAND-, OR-, NOR, EXOR- und EXNOR-Schaltungen, jedoch fehlt die Grundlage der Tristate-Logik. Genaugenommen ist es nicht eine Logikschaltung im üblichen Sinn. Trotzdem ist die Tristate-Logik fester und sehr wichtiger Bestandteil der TTL- und CMOS-Logikschaltkreisfamilien. Was die Tristate-Logik ist und wozu sie dient, beschreibt dieser Elektronik-Minikurs, der in diesem speziellen Fall die logischen Verknüpfungen in der Rubrik Digitaltechnik erweitert. Es ist ebenfalls ein Grundlagenkurs, der jedoch im fliessenden Übergang Experiment und Praxis miteinbezieht.
Was ist Tristate-Logik?
Sie tut das wie die Bezeichnung aussagt: Die Tristate-Logik erzeugt drei logische Zustände am Ausgang eines Gatters. Es gibt diese Tristate-Logik als Quad-Buffers des Types 74LS125 und 74LS126 in TTL und 74HC125 und 74HC126 in HCMOS. Wir beschäftigen uns hier jedoch nur mit der Highspeed-CMOS-Familie 74HCxxx. Es gibt aber auch Tristate-Logikschaltungen an den Ausgängen von komplexeren ditigalen ICs, wie z.B. beim Tristate Octal D-Type Latch 74HC533 oder den Tristate Octal D-Type Flipflop 74HC534. Am Beispiel der oben genannten Quad-Buffers wollen wir die Tristate-Logik kennen lernen. Wir betrachten dazu Bild 1:
Auf der linken Bildseite ist der Tristate-Quad-Buffer 74HC125 und auf
der rechten Bildseite 74HC126 abgebildet. Diese beiden IC-Typen
unterscheiden sich einzig dadurch, dass der 74HC125 mit aktivem
LOW-Pegel und der 74HC126 mit aktivem HIGH-Pegel arbeitet. Zwecks
präziserer Information konsultiere man die Datenblätter.
Man beachte dazu die beiden unter den Schaltbildern angeordneten
Wahrheitstabellen. A ist jeweils der Signaleingang und Y der
Signalausgang. C ist der Control-, also Steuereingang. Ist dieser bei
einem der Buffer des 74HC125 auf LOW gesetzt, dann folgt Ausgang Y dem
logischen Zustand des Einganges A. Beim 74HC126 gilt dies wenn der
Steuereingang auf logisch HIGH liegt.
Wenn beim 74HC125 der Steuereingang auf HIGH oder beim 74HC126 auf LOW
gesetzt ist, liegt Ausgang Y im Zustand Z. Dies bedeutet, dass er
hochohmig ist. Unabhängig vom logischen Eingangspegel A, bleibt Ausgang
Y hochohmig. Es gibt weder eine Verbindung zu Vcc noch zu GND. Y ist
im Z-Modus IC-intern ganz einfach nirgends angeschlossen.
Der Zweck dieses dritten logischen Zustandes ist es, dass man solche
Tristate-Ausgänge parallelschalten kann, vorausgesetzt allerdings, dass
immer nur ein Tristate-Ausgang aktiviert ist. Sind zwei
Tristate-Ausgänge aktiviert, wobei ein Ausgang auf HIGH und der andere
auf LOW liegt, besteht Kurzschluss! Daher sollte man unbedingt darauf
achten, dass ganz speziell bei langsamem Umschalten (mechanischer
Umschalter) der noch aktive Tristate-Buffer erst ausschaltet bevor der
andere einschaltet. Man nennt dies Breaking-before-Making. Diesen
Begriff lernt man kennen, wenn man sich mit Datenblättern von
integrierten analogen Schaltern (Analog-Switches) auseinandersetzt,
welche analoge Signale umschalten können. Man nennt diese Bausteine auch
Analog-Multiplexer.
Wie funktioniert die Tristate-Logik?
Bild 2 zeigt wie man experimentell mit einem Quad-Dual-Input NAND-Gate,
z.B. des Typs 74HC00, und zwei selbstsperrenden FETs, einem N- und
P-Kanal-Typen, ein Tristate-Buffer diskret realisieren kann. Ein solcher
entspricht funktionell einem Buffer des 74HC126, der aktiv ist, wenn der
Steuereingang C auf HIGH gelegt ist. In Wirklichkeit wird die
Tristate-Funktion in einem IC einfacher integriert. Wenige MOSFETs
reichen für den ganzen Tristate-Buffer. Es geht hier also bloss um
Visualisierung und um ein Experiment, falls dies jemand durchführen
möchte. Anstelle von N- und P-Kanal-MOSFETs kann man auch beliebige
bipolare NPN- (z.B. BC109) und PNP-Transistoren (z.B. BC178) verwenden.
Dabei ist es wichtig, dass Widerstände zwischen den IC-Ausgängen und
den Basen geschaltet werden, um die Basisströme auf vernünftige Werte zu
begrenzen. Siehe dazu Bild 2 rechts.
Ein solches Experiment eignet sich gut für den
Elektronikunterricht. Mit Baukastsystemen lässt sich so etwas blockweise
aufbauen und wenn es dabei Blöcke mit LED-Anzeigen hat, kann das sehr
anschaulich gestaltet werden. Dies ist meinerseits nur eine Idee, man
frage mich bitte keine Details, denn ich kenne mich in Baukastsystemen
nicht aus.
Wie funktioniert das Tristate-Experiment?
IC:A1 bis IC:A4 sind die vier NAND-Gatter eines 74HC00. T1 ist ein P-Kanal-MOSFET, z.B. der Logiklevel-MOSFET BS110 und T2 ist ein N-Kanal-MOSFET, z.B. der Logiklevel-MOSFET BS100. Die NAND-Gatters IC:A1 und IC:A4 arbeiten als Inverter. Ihre beiden Eingänge sind parallel geschaltet. Man kann jedoch ebenso gut einer der Eingänge auf HIGH legen, in dem man diese mit der positiven Betriebsspannung verbindet. Betreffs offener Eingänge von logischen Schaltkreisen liest man mehr in:
Die Logiksignale sind an den beiden Eingängen A und C, am Ausgang Y und
bei den Leitungen mit Strichen unterbrochen eingetragen. Am
Steuereingang C sieht man die Reihenfolge LOW, HIGH und HIGH,
dargestellt mit L|H|H. Am Signal-Eingang A ist es X|L|H. X von A
korrespondiert also mit L von C und im Folgeschritt korrespndiert L von
A mit H von C. Ebenso korrespondiert Z von Y mit L von C und X von A. X
bedeutet, dass es gleichgültig ist ob LOW oder HIGH anliegt. Z bedeutet,
dass beide MOSFETs T1 und T2 offen sind und Ausgang Y hochohmig ist.
Diese Art der Darstellungsmethode von Logikpegeln findet man kaum in
einer "offiziellen" Schaltung. In der Regel erstellt man für die
Darstellung logischer Signale Tabellen, sogenannte Wahrheitstabellen.
Dies ist auch richtig, denn die Darstellung ist bei vielen Logikwerten
übersichtlicher. Will man jedoch nur wenige Logikwerte darstellen, ist
die Methode der Darstellung direkt ins Schaltschema manchmal
übersichtlicher. Man assoziiert die Logikpegel leichter mit der
Schaltung. So jedenfalls entwerfe ich oft eine einfache logische
Schaltung mit Papier und Bleisstift. Eine einfache und intuitive
Methode, die ich auch immer wieder gerne weiterempfehle.
Wenn C = LOW, dominiert dieser Logikpegel die beiden NAND-Gatter IC:A2
und IC:A3. Ihre Ausgänge liegen, unabhängig welche Logikpegel an ihren
zweiten Eingängen anliegen, auf HIGH. Das Gate des P-Kanal-MOSFET T1
erhält einen HIGH-Pegel. Seine Drain-Source-Strecke ist offen. T1
sperrt. IC:A4 invertiert den Logikpegel am Ausgang von IC:A3. Das Gate
des N-Kanal-MOSFET T2 erhält einen LOW-Pegel. Seine Drain-Source-Strecke
ist offen. T2 sperrt ebenfalls. Dies ist der logische Zustand Z am
Ausgang Y. Dieser Zustand wird alleine durch den LOW-Pegel am
Steuereingang C erzwungen. In diesem Zustand darf Ausgang Y mit einem
andern Ausgang verbunden sein, der einen LOW- oder HIGH-Pegel aufweist.
Wir werden dies später an Beispielen noch genauer sehen.
Wenn C = HIGH, werden IC:A2 und IC:A3 zur Übernahme des Logikpegels am
Eingang A und dessen Invertierung durch IC:A1 freigegeben. Wenn A = LOW
ist ein Eingang von IC:A2 auf LOW und sein Ausgang folglich auf HIGH. T1
ist offen. IC:A1 invertiert Eingang A. Beide Eingänge von IC:A3 liegen
auf HIGH und dessen Ausgang auf LOW. IC:A4 invertiert diesen Logikpegel
auf HIGH. HIGH am Gate des T2 schaltet ihn ein. Ausgang Y ist somit mit
GND verbunden. Y hat LOW-Pegel entsprechend dem Eingang A, wie es bei
einem nichtinvertierenden Buffer auch sein soll.
Wenn A = HIGH sind beide Eingänge von IC:A2 auf HIGH gesetzt. Sein
Ausgang liegt auf LOW. Das Gate von T1 liegt ebenfalls auf LOW. T1
leitet. HIGH vom Eingang A wird durch IC:A1 zu LOW invertiert. Dies
erzeugt am Ausgang von IC:A3 HIGH- und am Gate von T2 LOW-Pegel. T2 ist
offen. Damit liegt Ausgang Y auf HIGH und dies entspricht dem Logikpegel
am Eingang A.
Tristate macht das Umschalten einfach
Bild 3 zeigt auf der linken Bildseite wie man die Umschaltung zweier
Logiksignale mit herkömmlichen Logikbausteinen realisiert. Es werden
hier NAND-Gatter verwendet. Als Inverter (IC:A) kann man ebenso ein
NAND-Gatter verwenden, in dem man beide Eingänge parallelschaltet oder
den nicht benötigten Eingang mit der positiven Betriebsspannung
verbindet. In diesem Fall benötigt man vollständig einen 74HC00. Wenn
der Steuereingang C auf LOW gesetzt ist - der Schalter ist offen - ist
der Ausgang von IC:B2 auf HIGH gesetzt, unabhängig davon welcher
Logikpegel am Eingang B anliegt. Inverter IC:A setzt in diesem Fall den
einen Eingang von IC:B1 auf HIGH. Damit überträgt und invertiert IC:B1
das Eingangssignal von A. Der Eingang des IC:B3 der mit dem Ausgang von
IC:B2 verbunden ist, liegt konstant auf HIGH. Daher ist IC:B3 offen für
das Signal aus IC:B1 und invertiert es zum Ausgang Y. Diese doppelte
Inversion von IC:B1 und IC:B3 erzeugt an Y das zu A identische logische
Signal. Wenn C auf HIGH gesetzt ist - Schalter ist geschlossen - gilt
die selbe Erklärung, einzig mit dem Unterschied, dass in der Funktion
IC:B1 und IC:B2 vertauscht sind. Y ist jetzt identisch mit B.
Kommen wir zurück zum Hauptthema Tristate-Logik. Im mittleren Bildteil
sehen wir wie die Schaltung mit Tristate-Logik einfacher realisiert
werden kann, in dem man die Tristate-Ausgänge ganz einfach
parallelschaltet. Wenn C = LOW, ist IC:B1 aktiv und Ausgang Y folgt dem
Eingang A. Wenn C = HIGH, ist IC:B2 aktiv und Ausgang Y folgt dem
Eingang B.
Man kann sich in beiden Schaltbildern den Inverter sparen, wenn man
einen Kippumschalter verwendet. Wie es gemacht wird zeigt das kleine
Schema auf der rechten Bildseite. Man benötigt beide Steueranschlüsse
und einen zweiten Pulldown-Widerstand. Damit hat man zusätzlich das
bereits beschriebene Breaking-before-Making erfüllt. Im Falle der
Inverterlösung ist dies zwar nicht der Fall, jedoch ist der Augenblick
des Umschaltens, in dem beide Ausgänge aktiv sind, extrem kurz. Trotzdem
empfiehlt es sich gerade auch aus diesem Grund direkt an der IC-Speisung
mittels keramischem oder Multilayer-Kondensator mit einem Wert von etwa
100 nF abzublocken. Dieser indunktionsarme Kondensator übernimmt bei
einem solchen transienten Vorgang die Spannungsversorgung des IC. In
diesem sehrkurzen Augenblick, im Zeitbereich von etwa 10 ns, tritt ein
etwas höherer Strom auf. Dieser muss dieser Abblock-Kondensator liefern.
Eine kleine Hausaufgabe für den interessierten Leser: Wenn man
anstelle des 74HC125 den 74HC126 (siehe Bild 1) einsetzt, kann man einen
freigebliebenen Tristate-Buffer als Inverter umfunktionieren. Dazu
braucht man bloss einen zusätzlichen Pullup-Widerstand. Den
Signaleingang A schaltet man dauerhaft auf LOW und der Logikpegel des
Steuereinganges C wird am Signalausgang Y invertiert. Wo gehört jetzt
der Pullup-Widerstand hin? Wie sieht wohl diese einfache Schaltung
aus?
Tristate macht das Umschalten noch einfacher
Bild 4 illustriert, dass es bei einem dreistufigen Umschalter mit
Tristate-Logik noch einfacher wird. Die Schaltung auf der linken
Bildseite benötigt ein NAND-Gatter mit drei Eingängen und drei
NAND-Gatter mit je zwei Eingängen. Das sind zwei ICs. Daraus kann man
schliessen, dass das NAND-Gatter am Ausgang soviel Eingänge haben muss,
wie die Schaltung Eingänge hat. Die Tristate-Lösung auf der rechten
Bildseite zeigt wie einfach und elegant die Tristate-Ausgänge
parallelgeschaltet werden.
Eine elegante Tristate-Umschaltlogik mittels siebenstufigem
Drehschalter zeigt der Dekadenteiler, der eine Taktfrequenz in jeweils
1:10-Schritten herunterschaltet, in Kapitel 4 und Bild 6 in:
Hier ein auf die Tristate-Umschaltung reduziertes Schaltschema in Bild
5:
Ohne Tristate keine komplexe Bus-Schaltungen...
Man besorge sich das Datenblatt zum Octal-Tristate-Transceiver 74HC245
und man betrachte ganz genau die Schaltung. Mit dem Wissen über
Tristate-Logik, das wir bisher erworben haben, können wir verstehen wie
diese Schaltung funktioniert.
Es gibt zwei Tristate-Steuereingänge, /OE (Output Enable) und DIR
(Direction). Anstelle von /OE gibt es auch die Bezeichnung /G. Diese
beiden Steuereingänge steuern alle acht integrierten Buffer für den
Byte-Datenfluss in die eine oder alle acht gegenüberliegenden
integrierten Buffer für den Byte-Datenfluss in die entgegengesetzte
Richtung. Die Verantwortung für die Steuerung der Richtung des
Byteflusses liegt bei DIR. Wenn DIR = LOW, folgt der Datenfluss von B
nach A, wenn DIR = HIGH, folgt der Datenfluss von A nach B. Dies ist
einzig dadurch möglich, dass die eine Bufferreihe inaktiv ist, d.h. die
Ausgänge in den Z-Modus geschaltet sind, während die andere Bufferreihe
aktiv ist und das byteweise Eingangssignal auf den byteweisen Ausgang
überträgt. Aber das ist noch nicht alles. Der Steuereingang /G erlaubt
alle Ausgänge, gleichgültig welche Anschlüsse durch DIR auf aktiven
Ausgang geschaltet sind, in den Z-Modus (/G = HIGH) zu setzen. Dies
gestattet diese Ausgänge wiederum mit IC-externen anderen
Tristate-Ausgängen parallel zu schalten.
Fazit zum Schluss: Ohne die Erfindung der Tristate-Logik wäre die
moderne Computertechnik mit ihren komplexen Bussystemen wohl kaum je
möglich geworden. Eine kleine grundlegende Erfindung mit enormer
Wirkung...