Wiring Up a Function
A combinational circuit is one whose outputs depend only on its current inputs — it has no memory of the past. (Circuits that do remember are sequential, covered later.) Combinational logic implements a pure boolean function: given the inputs now, the outputs are determined now.
Designing a combinational circuit from a specification follows a reliable recipe:
- Specify the function with a truth table — list the desired output for every input combination.
- Derive an expression from the table — read off the minterms (the 1-rows) and OR them into a sum-of-products formula, or simplify (next lesson).
- Draw the circuit — translate the expression into gates: each AND term is an AND gate, the terms feed an OR gate, and inputs are inverted with NOT gates as needed.
For example, a circuit that outputs 1 when a 2-bit input is odd is just the low bit passed through — a one-wire circuit. A "majority" circuit (output 1 when at least two of three inputs are 1) is a sum of the AND-pairs. The point is that any truth table can be mechanically turned into a circuit.
Two practical concerns shape real designs. Fan-in is how many inputs a single gate takes (real gates have limits, so wide functions are built from trees of smaller gates), and fan-out is how many gate inputs one output can drive before its signal weakens. And gate count / depth matter: fewer gates is cheaper, and fewer gates in series (shallower depth) is faster, since each gate adds delay.
Common pitfall: treating a combinational circuit as if it had memory. Its output is a pure function of the present inputs — the same inputs always give the same outputs, with no dependence on history. Anything that must remember a previous value needs a sequential element (a latch or flip-flop), not combinational logic.