Verwenden von 3-State-Puffer für das Multiplexen

Vor einiger Zeit stieß ich beim Auswendiglernen der Teilenummern der 74xx-Serie auf das Konzept eines Geräts mit einem „3-State“-Ausgang. Die Idee ist, soweit ich das beurteilen kann, dass das Gerät im Grunde logisch niedrig, logisch hoch oder "nicht verbunden" ausgibt.

Ich war sehr interessiert, als ich das las. Es hört sich so an , als könnten Sie damit einen Multiplexer mit weniger Gates erstellen. Zum Beispiel sieht es so aus, als könntest du so etwas nehmen:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Und verwandle es stattdessen in so etwas:

schematisch

Simulieren Sie diese Schaltung

(Der Schaltplan-Editor scheint das Symbol für den 3-Zustands-Puffer nicht zu haben ... es sei denn, mir fehlt etwas.)

Dies verwendet deutlich weniger Gates und scheint die gleiche Aufgabe zu erfüllen.

...oder doch? Wenn ich es heute betrachte und weiß, was ich jetzt weiß, sehe ich zwei potenzielle Probleme:

  1. Wenn Select von High auf Low wechselt, stoppt die obere Reihe von Gates sofort die Ansteuerung des Ausgangs, aber es gibt eine gewisse Laufzeitverzögerung vom NOT-Gate, sodass es ein kurzes Intervall gibt, bevor die zweite Reihe von Gates beginnt, den Ausgang anzusteuern. Das bedeutet, dass die Schaltungsausgänge für eine Gate-Verzögerung schwebend gelassen werden.

  2. Schlimmer noch, wenn Select von niedrig nach hoch geht, gibt es möglicherweise eine Ein-Gate-Verzögerung, bei der beide Gate-Reihen versuchen, die Ausgänge zu treiben, wahrscheinlich auf unterschiedliche Pegel.

Beim Durchsuchen dieser Website habe ich den starken Eindruck, dass es eine katastrophale Katastrophe ist, einen Gate-Eingang schwebend zu lassen , und dass so etwas um jeden Preis vermieden werden muss . Vielleicht würden einige Pulldown-Widerstände das lösen; Ich bin mir nicht sicher.

Dann gibt es die Tatsache, dass, wenn (sagen wir) AND2 versucht, Z1 niedrig zu treiben, und AND5 treibt, um es hoch zu treiben, wir jetzt einen Kurzschluss haben. Vermutlich führt dies zur sofortigen Zerstörung der beteiligten ICs. (Ich glaube nicht, dass es mein Netzteil braten kann; es soll einen Überstromschutz haben. Ebenso glaube ich nicht, dass die Gefahr eines tatsächlichen Feuers oder einer Explosion besteht ...)

Kurz gesagt (haha!), es scheint, dass diese Schaltung nur funktionieren kann, wenn alle Ausbreitungsverzögerungen genau 0 Attosekunden betragen können, was unwahrscheinlich erscheint.

Aber wenn es nicht möglich ist, 3-State-Gates zu verwenden ... warum gibt es sie? Habe ich grundlegend missverstanden, wofür sie sind oder so?

Antworten (2)

Sie haben es richtig, stolpern aber über die Einfachheit. Tri-State bedeutet, dass die Ausgänge abgeschaltet werden können, sodass sie keine Daten (Strom) auf einen gemeinsamen Datenbus legen.

Sie haben auch Recht damit, dass es eine "AUS" -Zeit geben muss, in der der Datenbus von keinem Gerät angesteuert wird. Daher sehen Sie fast alle Datenbusse mit Pullup- oder Pulldown-Widerständen, sodass dies nicht der Fall ist. Floating', das Rauschen aufnehmen und unbekannte Zustände auf den Datenleitungen haben würde.

Nach so vielen Pico- oder Nanosekunden kann ein anderes Gerät aus dem Tri-State-Modus herauskommen und den Datenbus mit allen Daten ansteuern, die es hat.

Diese Verzögerungszeit gilt auch für den Adressbus, wenn die CPU/MPU ihn mit einem DMA-Controller oder einer anderen CPU/MPU teilt.

In allen Fällen MUSS die Verzögerung vor der Übernahme in die Hardware (schnellere Reaktion) oder Software (langsamer, aber funktioniert) eingebaut werden, damit es nicht zu einer „Kollision“ zwischen zwei Geräten kommt, die gleichzeitig den Bus ansteuern.

Kollisionen können zu beschädigten Daten oder einem defekten IC führen, daher ist die Wartezeit, so kurz sie auch sein mag, sehr wichtig.

Ich verstehe. Sie sagen also, zielen Sie absichtlich auf eine Unterlappung und setzen Sie Pull-Widerstände darauf?
Ja. Sie müssen eine Pause zwischen Geräten haben, die einen gemeinsamen Bus antreiben.

3-Zustands-Puffer werden in Computern verwendet, um verschiedene Peripheriegeräte auf einen gemeinsamen Bus zu multiplexen.

Die Probleme mit der Unterlappung sind nicht so schwerwiegend, wie Sie befürchten. Die Kapazität an normalen Eingängen hält sie für die wenigen Momente, bevor der neue Treiber seinen Ausgang bestätigt, auf dem vorherigen Logikpegel.

Die Probleme, die mit Überlappung auftreten könnten, sind auch nicht so schwerwiegend. Alle Gatter haben Ausgänge mit begrenzter Treiberfähigkeit und können kurzzeitig einem Kurzschluss standhalten. Obwohl zwei Ausgänge, die darum kämpfen, einen Bus auf unterschiedliche Pegel zu bringen, den Buspegel auf einen ungültigen Logikpegel bringen könnten / tun könnten, geschieht dies nur innerhalb eines winzigen Zeitfensters, und ein geeignetes Systemdesign würde nicht versuchen, den Buszustand zu diesem Zeitpunkt zu lesen Zeit.