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...