If the reader has only taken some entry-level courses in logic circuits, then he may only be aware of certain simple circuits, such as OR gates, AND gates, NAND gates, NOT gates, Flip-Flops, etc.. But what such a reader must also realize, is that some slightly more-complex logic circuits can be built from the simple ones, that include Half-Adders, Adders, Latches and Tri-State Outputs. Actually, the Tri-State Output cannot be composed just from the simplest logic circuits, because it needs a special output-driver, that OR gates, AND gates etc. cannot offer.
In my musings, I have found that two of the more-complex circuits are especially important:
- Tri-State Outputs.
A Latch is a logic-circuit which has an array of input data-bits, a corresponding array out output data-bits, and which also has as input, a control gate. If the control gate is high, the output-bits will simply follow the logical values of the input-bits continuously. But of the control gate is low, then the output bits will remember the value they last had, ignore any further changes in the values of the input bits, and continue to output an unchanging array of output-bits.
A Latch can be used to time, when a following logic-circuit is supposed to listen for the values of a constantly-changing set of input-bits, as opposed to when it’s supposed to ignore (later input-bit-values).
A Tri-State Output is a bit harder to understand, if the reader’s premise is that any logic component’s output can only have two states. This would be a kind of logic component, with three possible output-states:
- A state in which its output-current drives its output-voltage low,
- A state in which its output-current drives its output-voltage high,
- A state also called its ‘high-impedance state’, in which it produces no output current, so that the voltage at its output terminal can wander high or low, as determined by other Tri-State Output-Drivers, whose outputs are all connected together.
The reason why a tri-state output-driver will eventually become necessary, presents itself in a bus-topology, that is literally a bus. They get used as bus-drivers.
In many modern computers today, the interface buses have a logical bus topology, but are physically not implemented as buses anymore. But inside a chip, there still need to be the simpler buses, that are just parallel lines that connect numerous outputs together, as well as connecting inputs that never posed a special problem.
The problem with just connecting numerous outputs together, is the fact that each will send whatever current is required, to control what the voltage is supposed to be at the output. And each output-driver will have a different reference-voltage, that states what its version of the correct output-voltage would be. By default, this would amount to some overloaded output-drivers and a non-functioning bus.
In a true, physical bus, each output is a tri-state driver, but all the drivers except for one will be in the high-impedance state (because their control-gates are low), so that each of them will allow ‘some other driver’ to control the voltages on the bus.
Only the one tri-state output-driver with its control-gate high, will be in the low-impedance state at any one time, and will control the bus-voltages at any one time, so that they follow the binary value of this driver’s data-input gates.