# Are Tri-state buffers even necessary?

I'm trying to make a 1-bit computer, and I'm stuck on the registers. I think I am going to have 2 of them, and I want a way to separate their outputs. Let me explain. Let's say Register A has a 0, and register B has a 1. If I want to invert Register A(or do anything else with it), I would need to get a 0 on the bus. But I can't do that as long as the registers are connected, because the 1 from Register B would go into the bus and ruin the entire program. If I want to separate A and B, you would say,

  "Just use a tri-state buffer".


But why can't I just use an AND gate to separate the registers from eachother? It would block one register while letting information from the other register pass. So, are tri-state buffers even necessary?

• If you want more than one functional unit output to share a bus, and especially when you are wiring up an external system using MSI/SSI logic parts, then tri-stating makes sense. You can add additional functional units to the bus without going nuts. You can, of course, require that there be only one "owner" of the bus and design it as a multi-input mux that can source from a variety of functional units. To expand the number of functional units, you'd need to break up a bus and insert another mux (and associated control line.) 6 of one, half dozen of another, in some sense. (Fine with FPGA.) – jonk Nov 9 '19 at 20:46
• This does add some clarity, since I only own discrete and SSI parts, but it doesn't explain why I shouldn't use an AND gate instead. – Trevor Mershon Nov 9 '19 at 21:13
• You'll learn soon enough when you start making stuff. It might be one of those things best learned through experience rather than "book-learned." I could try and list the ways, but I'm not in the mood to write an answer of my own. (By the way, there are also open-collector outputs and these can be simply "wire-OR'd." So that's another approach commonly used. In that case, an AND gate with an open collector output does achieve similar things to a two-quadrant + tri-state buffer output.) – jonk Nov 9 '19 at 21:29
• I think I see what you mean. If your comment was an answer I would call my case closed ;) – Trevor Mershon Nov 9 '19 at 21:58
• I could add it, I suppose. I'll keep it short, as I'm not in too much of a state for a long discourse. The sad thing is that almost anything I write has to have context. Which means perhaps drawings here. And that means unavoidable work. It may not happen right away -- an hour? Maybe more? Not sure. – jonk Nov 9 '19 at 22:04