On this page

Logic Gates and Boolean Algebra

Boolean Algebra Basics

Three Basic Operations

AND:  Y = A · B    "1 only if both are 1"
OR:   Y = A + B    "1 if any is 1"
NOT:  Y = Ā        "Invert"

Truth Tables

AND          OR           NOT
A B | Y     A B | Y      A | Y
0 0 | 0     0 0 | 0      0 | 1
0 1 | 0     0 1 | 1      1 | 0
1 0 | 0     1 0 | 1
1 1 | 1     1 1 | 1

Basic Theorems

Associative Law:  (A·B)·C = A·(B·C)
                  (A+B)+C = A+(B+C)
Commutative Law:  A·B = B·A
                  A+B = B+A
Distributive Law: A·(B+C) = A·B + A·C

De Morgan's Theorem (Extremely Important!):
  ───
  A·B = Ā + B̄     "NAND = OR of NOTs"
  ───
  A+B = Ā · B̄     "NOR = AND of NOTs"

Reduction:
  A + Ā = 1
  A · Ā = 0
  A + 1 = 1
  A · 0 = 0
  A + A = A
  A · A = A
  =    (Double Negation)
  A = A

Basic Logic Gates

Symbols and Expressions

AND:     A ──┬──
              │  )── Y    Y = A·B
         B ──┴──

OR:      A ──┬──
              │  )── Y    Y = A+B
         B ──┴──

NOT:     A ──▷── Y        Y = Ā

NAND:    A ──┬──
              │  )─○ Y    Y = A·B̄  (AND + NOT)
         B ──┴──

NOR:     A ──┬──
              │  )─○ Y    Y = A+B̄  (OR + NOT)
         B ──┴──

XOR:     A ──┬──
              │  )── Y    Y = A⊕B = ĀB + AB̄
         B ──┴──            ("1 if different")

XNOR:    A ──┬──
              │  )─○ Y    Y = A⊕B̄  ("1 if same")
         B ──┴──

Universality of NAND / NOR

NAND can implement any logic function!
  NOT:  A NAND A = Ā
  AND:  (A NAND B) NAND (A NAND B) = A·B
  OR:   (A NAND A) NAND (B NAND B) = A+B

NOR can similarly construct everything
This is why NAND Flash and NOR Flash are named as such

Combinational Logic Simplification

Karnaugh Map (K-Map)

2 Variables:
    B
  A 0  1
  0 0  1
  1 1  0   ← Fill in output values

3 Variables: AB/C arrangement
  Group adjacent 1s (in groups of 2ⁿ) → Write minterms → Obtain simplest expression

Goal: Implement a given truth table using the minimum number of gates

Race Conditions and Hazards

Different delays in multiple signal paths → Output produces brief erroneous pulses (glitches)

Example: A and Ā should arrive at the AND gate simultaneously, but Ā has a delay due to the inverter
     → For a brief moment A=1, Ā=1 (hasn't switched to 0 yet) → AND outputs erroneous 1

Solution: Add redundant terms or add a capacitor filter at the output

Logic Levels

TTL vs CMOS

       TTL (5V)         CMOS (5V)       CMOS (3.3V)
VIH:   > 2.0V           > 3.5V          > 2.0V
VIL:   < 0.8V           < 1.5V          < 0.8V
VOH:   > 2.4V           > 4.4V          > 2.9V
VOL:   < 0.4V           < 0.1V          < 0.4V

Noise Margin = min(VOH-VIH, VIL-VOL)
CMOS noise margin is significantly better than TTL

Input Types

Floating Input — Never do this! Floating CMOS input = Indeterminate state + High power consumption
Unused input pins: Connect to Vcc or GND (via resistor)

Practical Logic Gates

CMOS Inverter

       Vdd
        │
    ┌───┤ PMOS (Top transistor)
    │   │
A ──┤   ├── Y
    │   │
    └───┤ NMOS (Bottom transistor)
        │
       GND

A=1 → NMOS ON, PMOS OFF → Y=0
A=0 → NMOS OFF, PMOS ON → Y=1

CMOS's greatest advantage: Static power consumption is nearly zero!
(Power is only consumed during switching transitions)

74 Series Quick Reference

74HC00:  Quad 2-input NAND
74HC02:  Quad 2-input NOR
74HC04:  Hex NOT (Inverter)
74HC08:  Quad 2-input AND
74HC32:  Quad 2-input OR
74HC86:  Quad 2-input XOR
74HC14:  Hex Schmitt Trigger NOT
74HC595: 8-bit Shift Register (Super common!)
74HC165: 8-bit Parallel-to-Serial

Keywords: Boolean Algebra, AND, OR, NOT, NAND, NOR, XOR, De Morgan, Karnaugh Map, CMOS, TTL