Lecture 4 The “WHY” slide

◆ Logistics ◆ Logic Gates and Truth Tables ■ HW1 due Wednesday at start of class ■ Now you know 0’s and 1’s and the basic , now you ■ Office Hours: are ready to go back and forth between , Boolean µ Me: 12:20-1:00 CSE 668 plus one later this week expression, and logic gates. This ability to go back and forth is an µ TAs: Today at 3:30, tomorrow at 12:30 & 2:30 in CSE 220 extremely useful skill designing and optimizing hardware. ■ Lab2 going on this week ◆ Implementing Logic Functions ◆ Last lecture --- Boolean algebra ■ Now with these basic tools you learned, you can “implement” logic ■ Axioms functions. We use Boolean algebra to implement logic functions that ■ Useful laws and theorems are used in the . And these logic functions are used by ■ Simplifying Boolean expressions computer programs you write. ◆ Today’s lecture ◆ Canonical forms ■ Logic gates and truth tables in detail ■ There are many forms to expression one . It is ■ Implementing logic functions good to have one standard way. A canonical form is the standard ■ Canonical forms form for Boolean expressions. It has a nice property that allows you to go back and forth between truth table/expressions/gates easily.

CSE370, Lecture 4 1 CSE370, Lecture 4 2

Logic gates and truth tables Logic gates and truth tables (con’t)

XYZ XYZ X 0 0 0 X 0 0 1 ◆ Z ◆ NAND • Z AND X•Y XY Y 0 1 0 X Y XY Y 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 XYZ XYZ ◆ + X 0 0 1 NOR X Y Z 0 1 0 ◆ OR X+Y X Z 0 0 0 Y Y 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 XYZ X ◆ XOR X ⊕ Y Z 0 0 0 XY Y 0 1 1 ◆ NOT X X’ Y 1 0 1 X 0 1 1 1 0 1 0 XYZ ⊕ X 0 0 1 XY ◆ XNOR X Y Z ◆ X Y Y 0 1 0 Buffer X 0 0 1 0 0 1 1 1 1 1 CSE370, Lecture 4 3 CSE370, Lecture 4 4

Boolean expressions logic gates Truth tables logic gates

◆ Example: F = (A•B)’ + C•D ◆ Given a truth table ■ Write the Boolean expression ■ Minimize the Boolean expression A ■ Draw as gates B ■ Example: F C A B C F F = A’BC’+A’BC+AB’C+ABC D 0 0 0 0 = A’B(C’+C)+AC(B’+B) 0 0 1 0 ◆ Example: F = C•(A+B)’ 0 1 0 1 = A’B+AC 0 1 1 1 A 1 0 0 0 B 1 0 1 1 F C 1 1 0 0 1 1 1 1 CSE370, Lecture 4 5 CSE370, Lecture 4 6 Example: A binary full adder Full adder: Sum

◆ 1-bit binary adder A Sum Before Boolean minimization After Boolean minimization ■ Inputs: A, B, Carry-in B Adder Cout Sum = A'B'Cin + A'BCin' Sum = (A ⊕B) ⊕ Cin ■ Outputs: Sum, Carry-out Cin + AB'Cin' + ABCin

A B Cin Cout Sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 Sum = A'B'Cin + A'BCin' + AB'Cin' + ABCin 0 1 1 1 0 1 0 0 0 1 Cout = A'BCin + AB'Cin + ABCin' + ABCin 1 0 1 1 0 1 1 0 1 0 Both Sum and Cout can be minimized. 1 1 1 1 1

CSE370, Lecture 4 7 CSE370, Lecture 4 8

Full adder: Carry-out Preview: A 2-bit ripple-carry adder

A B Before Boolean minimization After Boolean minimization Cout = A'BCin + AB'Cin Cout = BCin + ACin + AB A1 B1 A2 B2 + ABCin' + ABCin 1-Bit Adder

0 Cin Cout Cin Cout

Cin Cout Sum 1 Sum 2

Overflow

Sum

CSE370, Lecture 4 9 CSE370, Lecture 4 10

Many possible mappings What is the optimal gate realization?

◆ Many ways to map expressions to gates ◆ We use the axioms and theorems of Boolean algebra _ _ _ _ ■ Example: ZABCDABCD= • •() + = • •() + to “optimize” our designs ◆ Design goals vary ■ Reduce the number of gates? ■ Reduce the number of gate inputs? ■ Reduce number of chips and/or wire? ◆ How do we explore the tradeoffs? ■ Logic minimization: Reduce number of gates and : Maximize speed and/or minimize power ■ CAD tools

CSE370, Lecture 4 11 CSE370, Lecture 4 12 Minimal set Canonical forms

◆ We can implement any logic function from NOT, NOR, ◆ Canonical forms and NAND ■ Standard forms for Boolean expressions ■ Example: (X and Y) = not (X nand Y) ■ Generally not the simplest forms µ Can be minimized ◆ In fact, we can do it with only NOR or only NAND ■ Derived from truth table ■ NOT is just NAND or NOR with two identical inputs ◆ Two canonical forms X Y X nor Y X Y X nand Y ■ Sum-of-products (minterms) 0 0 1 0 0 1 ■ Product-of-sum (maxterms) 1 1 0 1 1 0

■ NAND and NOR are duals: Can implement one from the other µ X nand Y = not ((not X) nor (not Y)) µ X nor Y = not ((not X) nand (not Y))

CSE370, Lecture 4 13 CSE370, Lecture 4 14

Sum-of-products canonical form (SOP) Minterms

◆ Also called (DNF) ◆ Variables appear exactly once in each minterm ■ Commonly called a minterm expansion ■ In true or inverted form (but not both) minterm A B C minterms F in canonical form: Σ 001 011 101 110 111 0 0 0 A'B'C' m0 F(A,B,C) = m(1,3,5,6,7) F = A'B'C + A'BC + AB'C + ABC' + ABC 0 0 1 A'B'C m1 = m1 + m3 + m5 + m6 + m7 A B C F F' 0 1 0 A'BC' m2 = A'B'C+A'BC+AB'C+ABC'+ABC 0 0 0 0 1 0 1 1 A'BC m3 0 0 1 1 0 1 0 0 AB'C' m4 0 1 0 0 1 canonical form → minimal form 1 0 1 AB'C m5 0 1 1 1 0 F(A,B,C) = A'B'C+A'BC+AB'C+ABC+ABC' 1 0 0 0 1 1 1 0 ABC' m6 1 0 1 1 0 1 1 1 ABC m7 1 1 0 1 0 = AB + C 1 1 1 1 0 short-hand notation F' = A'B'C' + A'BC' + AB'C'

CSE370, Lecture 4 15 CSE370, Lecture 4 16

Product-of-sums canonical form (POS) Maxterms

◆ Also called (CNF) ◆ Variables appears exactly once in each maxterm ■ Commonly called a maxterm expansion ■ In true or inverted form (but not both) Maxterm (a.k.a. clause)

000 010 100 A B C maxterms F in canonical form: F = (A + B + C) (A + B' + C) (A' + B + C) A B C F F' 0 0 0 A+B+C M0 F(A,B,C) = ΠM(0,2,4) 0 0 0 0 1 0 0 1 A+B+C' M1 = M0 • M2 • M4 0 0 1 1 0 0 1 0 A+B'+C M2 0 1 0 0 1 0 1 1 A+B'+C' M3 = (A+B+C)(A+B'+C)(A'+B+C) 0 1 1 1 0 1 0 0 A'+B+C M4 1 0 0 0 1 1 0 1 A'+B+C' M5 canonical form → minimal form 1 0 1 1 0 1 1 0 A'+B'+C M6 F(A,B,C) = (A+B+C)(A+B'+C)(A'+B+C) 1 1 0 1 0 1 1 1 A'+B'+C' M7 1 1 1 1 0 = AB + C F' = (A+B+C')(A+B'+C')(A'+B+C')(A'+B'+C)(A'+B'+C') short-hand notation

CSE370, Lecture 4 17 CSE370, Lecture 4 18 Canonical implementations of F = AB + C Conversion between canonical forms

◆ Minterm to maxterm ■ Use maxterms that aren’t in minterm expansion ■ F(A,B,C) = ∑m(1,3,5,6,7) = ∏M(0,2,4) ◆ Maxterm to minterm ■ Use minterms that aren’t in maxterm expansion ■ F(A,B,C) = ∏M(0,2,4) = ∑m(1,3,5,6,7) ◆ Minterm of F to minterm of F' ■ Use minterms that don’t appear ■ F(A,B,C) = ∑m(1,3,5,6,7) F'(A,B,C) = ∑m(0,2,4) ◆ Maxterm of F to maxterm of F' ■ Use maxterms that don’t appear ■ F(A,B,C) = ∏M(0,2,4) F'(A,B,C) = ∏M(1,3,5,6,7)

CSE370, Lecture 4 19 CSE370, Lecture 4 20

SOP, POS, and de Morgan's theorem

◆ Sum-of-products ■ F' = A'B'C' + A'BC' + AB'C' ◆ Apply de Morgan's to get POS ■ (F')' = (A'B'C' + A'BC' + AB'C')' ■ F = (A+B+C)(A+B'+C)(A'+B+C)

◆ Product-of-sums ■ F' = (A+B+C')(A+B'+C')(A'+B+C')(A'+B'+C)(A'+B'+C') ◆ Apply de Morgan's to get SOP ■ (F')' = ((A+B+C')(A+B'+C')(A'+B+C')(A'+B'+C)(A'+B'+C'))' ■ F = A'B'C + A'BC + AB'C + ABC' + ABC

CSE370, Lecture 4 21