#839 OR Gate with NAND Logic
Demonstrating how an OR gate may constructed solely from NAND gates.

Notes
The NAND boolean function has the property of functional completeness, meaning that any Boolean expression can be expressed with an equivalent expression using only NAND operations.
The NAND Truth Table:
| A | B | Q |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
The OR Truth Table:
| A | B | Q |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
If any of the inputs to a NAND are 0, then the output will be 1. To be an OR gate, however, the output must be 1 if any input is 1. Therefore, if the inputs are inverted, any high input will trigger a high output.

Circuit Design
Designed with Fritzing: see OR.fzz.
To demonstrate an OR gate made from NAND gates, I have the circuit constructed on a breadboard using the CD4011 Quad 2-Input NAND Buffered B Series Gate.
An Arduino is used to automate a demo cycle of inputs.
Inputs and outputs are indicated with LEDs, and captured with an oscilloscope.



The Sketch
See OR.ino.
The sketch simply automates the A, B inputs, cycling through all 4 possibilities.
Test Results
Here’s a scope trace capturing all 4 states, and demonstrating the the output is correct as expected. Traces are offset vertically for clarity.
- CH1 (yellow): input A
- CH2 (blue): input B
- CH3 (red): output Q
