Gating vs. Tri-State: Two Ways to Disable a Signal
โ† All articles

Gating vs. Tri-State: Two Ways to Disable a Signal

4 min

Two very different meanings of 'disabled'

'Disabling' a signal sounds like one idea, but Boolflow ships two genuinely different elements for it. GATE is an AND-based enable: when EN=0, its output is forced to a clean 0, same as any other logic value. TRIBUF is a tri-state buffer: when EN=0, its output disconnects entirely โ€” high impedance, driving neither 0 nor 1.

INEN = 0GATEY = 0forces 0INEN = 0TRIBUFY = Zlets go of the wire

When 0 is the right answer

If a signal feeds into ordinary combinational logic โ€” say, one operand of an ALU that should contribute nothing when disabled โ€” GATE is exactly right: a forced 0 is a perfectly valid logic value that the downstream AND/OR gates handle normally.

When disconnecting is the right answer

If several drivers need to share the exact same wire and only one may speak at a time, a GATE cannot do that job โ€” driving a plain 0 onto a shared wire is just as much an active assertion as driving a 1, and two GATEs disagreeing would still fight each other. Only TRIBUF's genuine high-impedance state lets the wire truly belong to nobody until exactly one driver is enabled.

Try it yourself

Build the same two-source shared-wire circuit twice in the circuit editor โ€” once with GATE elements, once with TRIBUF elements โ€” and enable both sources at once in each version. See the Help reference for GATE and TRIBUF's exact truth tables, and compare the two outcomes directly: the TRIBUF version behaves like a bus โ€” the disabled driver lets go and the enabled one sets the value โ€” while the GATE version can never let go, because a disabled GATE still drives a hard 0. The Check page reports the GATE wiring as outputs tied together.

Open the tri-state bus example โ†’