Ein dritter Zustand neben 0 und 1
Der Ausgang eines gewöhnlichen Gatters treibt immer aktiv entweder 0 oder 1. Ein Tri-State-Puffer fügt eine dritte Möglichkeit hinzu: Ist sein Enable-Eingang niedrig, trennt sich der Ausgang vollständig ab — Hochohmigkeit (Hi-Z) —, als wäre die Leitung abgesteckt statt auf eine Spannung getrieben. Boolflow bildet das direkt mit dem TRIBUF-Element ab: ein Dateneingang, ein Enable-Eingang, ein Ausgang, der entweder den Daten folgt oder frei schwebt.
Warum überhaupt eine Leitung teilen
Ein Bus ist eine Gruppe von Leitungen, auf die mehrere Bausteine zu unterschiedlichen Zeiten schreiben müssen — ein Speicherbus mit mehreren Chips, oder eine Registerdatei mit mehreren Leseports auf einen Ausgang. Statt jede Quelle über einen Multiplexer zu leiten, verbindet man mehrere TRIBUF-Ausgänge direkt mit derselben Leitung und aktiviert jeweils genau einen Treiber: Welcher Puffer aktiv ist, beschreibt den Bus, alle anderen bleiben abgetrennt.
Buskonflikt und schwebender Bus
Falsche Enable-Logik führt zu zwei Fehlerarten. Aktiviert man zwei uneinige Treiber gleichzeitig, versuchen beide aktiv, dieselbe Leitung auf entgegengesetzte Spannungen zu treiben — ein Konflikt (Contention), der in echter Hardware Energie verschwendet und die Treiber beschädigen kann. Aktiviert man gar keinen, schwebt der Bus: Wer ihn liest, bekommt einen undefinierten, rauschanfälligen Wert statt einer sauberen 0 oder 1.
Wie Boolflow eine gemeinsame Leitung behandelt
Um in Boolflow eine Leitung zu teilen, verbinden Sie mehrere TRIBUF-Ausgänge mit demselben Eingang. Der Simulator löst das so auf, wie sich ein echter Bus verhält: Ein deaktivierter Treiber gibt die Leitung frei, der aktivierte setzt seinen Wert. Widersprechen sich zwei aktivierte Treiber, wird die Leitung als unbekannt gelesen statt geraten. Das Check-Werkzeug meldet genau diese Situationen — Treiber, die sich gerade widersprechen, einen Bus, den niemand treibt, und zusammengeschaltete normale Gatterausgänge, was nie zulässig ist, weil nur ein Tri-State-Ausgang die Leitung loslassen kann.
Probieren Sie es selbst
Bauen Sie im Schaltungseditor einen gemeinsamen Bus aus zwei TRIBUF-Elementen und schalten Sie deren Enable-Leitungen von Hand um: Ist einer aktiv, folgt der Bus ihm; ist keiner aktiv, zeigt er „?“; sind beide mit unterschiedlichen Daten aktiv, meldet die Check-Seite den Konflikt.