A don't-care is a row of the truth table whose output nobody will ever see, so you are free to choose it. It is written X in a truth table and listed with d(…) in the notation: F = Σm(1s) + d(don't-cares).
Where they come from:
- Unused codes. A BCD digit uses 0–9, so codes 10–15 never arrive.
- Impossible inputs. Two sensors that can never both be 1.
- Unused states in a state machine.
How to use them. Each don't-care may be treated as 1 or as 0, independently, whichever gives the cheaper expression. Treat it as 1 only when that lets a group of 1s grow bigger. Otherwise leave it as 0 and ignore it. You never have to cover a don't-care.
Once you choose, the circuit is fixed: if your expression is 1 on a don't-care row, the hardware really outputs 1 there.
In product form, list only the required 0s in ΠM, and keep the don't-cares separate: F = ΠM(…) · d(…). The 1s, 0s and don't-cares never overlap and together cover every row; see on set and off set. A function with don't-cares is an incompletely specified function.
| A\BC | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | 1m0 | 1m1 | 0m3 | 0m2 |
| 1 | Xm4 | Xm5 | 0m7 | 0m6 |