XOR from NAND — universal gates

corewith one shared subexpression

Answer

4 NAND gates realising A′ · B + A · B′

Why this example is worth doing

Four gates rather than the five a naive expansion gives, because (A·B)′ is computed once and used twice. The page uses this as the introduction to logic sharing: two-level minimisation assumes each product term is built independently, so it systematically overestimates the cost of functions with common subexpressions. Multi-level synthesis exists precisely to find them, and this four-gate XOR is the smallest convincing example.

Try your own input in the Universal gates. Rebuild any of the other gates using only NAND, or only NOR, with the gate count.

How the answer is reached

Gate list

Gate list — columns Node, Gate, Inputs
NodeGateInputs
g1nandA, B
g2nandA, g1
g3nandg1, B
g4nandg2, g3

NAND-only realisation

A ↑ (A ↑ B) ↑ (A ↑ B ↑ B)A′ · B + A · B′4 NAND gates, verified by reading the network back out.

Truth table

Truth table — columns #, A, B, A ↑ (A ↑ B) ↑ (A ↑ B ↑ B)
#ABA ↑ (A ↑ B) ↑ (A ↑ B ↑ B)
0000
1011
2101
3110

Compare with

Open this example in the Universal gates

The field arrives filled in with this example’s input.

Note:

Notation this page assumes

  • Symbols: · is AND, + is OR, ⊕ is XOR, a prime or an overline is NOT. The field also takes ∧ ∨ ¬ ~ ! & | and the words.
  • Operator precedence, tightest first: NOT, then AND (including juxtaposition), then XOR/XNOR, then NAND/NOR, then OR, then IMPLIES, then IFF.
  • Gate symbols follow whichever standard the header toggle is set to: ANSI/IEEE Std 91-1984 distinctive shapes, or IEC 60617-12 rectangles.

Sources

  • Sheffer, “A Set of Five Independent Postulates for Boolean Algebras” (1913)
  • Shannon, “A Symbolic Analysis of Relay and Switching Circuits” (1938)