Many real circuits produce several outputs from one set of inputs: a priority encoder gives Y1, Y0 and V; a magnitude comparator gives G, E and L; an adder gives a sum and a carry. That's a multiple-output circuit.
Designing one uses the same combinational design process, with one change: the truth table gets one output column per output. The input columns are shared.
Then treat each column as its own function:
- write its own Σm list
- simplify it separately
- verify it separately
The inputs are wired to every output's gates. Where the outputs have terms in common, a gate can feed several outputs, which saves hardware. A decoder is the extreme case: it builds every minterm once, and each output just ORs the ones it needs.
A ROM stores a multiple-output function naturally: each output is one bit of the stored word.
| Z | P | ||
|---|---|---|---|
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 0 | 0 |