EE 4271 VLSI Design Digital Logic (Review) Overview Binary logic and Gates Boolean Algebra Basic Properties Algebraic Manipulation Standard and Canonical Forms Minterms and Maxterms (Canonical forms) SOP and POS (Standard forms) Karnaugh Maps (K-Maps) 2, 3, 4, and 5 variable maps Simplification using K-Maps K-Map Manipulation Implicants: Prime, Essential Dont Cares More Logic Gates

2020.02.06 Boolean Algebra PJF - 2 Binary Logic Deals with binary variables that take 2 discrete values (0 and 1), and with logic operations Three basic logic operations: AND, OR, NOT Binary/logic variables are typically represented as letters: A,B,C,,X,Y,Z 2020.02.06 Boolean Algebra PJF - 3 Binary Logic Function F(vars) = expression Operators set of binary

variables ( +, , ) Variables Constants ( 0, 1 ) Groupings (parenthesis) Example: F(a,b) = ab + b G(x,y,z) = x(y+z) 2020.02.06 Boolean Algebra PJF - 4 Basic Logic Operators AND OR NOT Binary Unary

F(a,b) = ab, F is 1 if and only if a=b=1 G(a,b) = a+b, G is 1 if either a=1 or b=1 H(a) = a, H is 1 if a=0 2020.02.06 Boolean Algebra PJF - 5 Basic Logic Operators (cont.) 1-bit logic AND resembles binary multiplication: 0 0 = 0, 1 0 = 0, 0 1 = 0, 11 =1 1-bit logic OR resembles binary addition, except for one operation: 0 + 0 = 0, 1 + 0 = 1, 2020.02.06 0 + 1 = 1, 1 + 1 = 1 ( 102)

Boolean Algebra PJF - 6 Truth Tables for logic operators Truth table: tabular form that uniguely represents the relationship between the input variables of a function and its output 2-Input AND 2-Input OR A B F=A B 0 0 0 0 1 0 1 0 0 1 1 1 A B F=A+ B 0 0 0

0 1 1 1 0 1 1 1 1 2020.02.06 Boolean Algebra NOT A F= A 0 1 1 0 PJF - 7 Truth Tables (cont.) Q: Let a function F() depend on n variables. How many rows are there in the truth table of F() ?

n n A: 2 rows, since there are 2 possible binary patterns/combinations for the n variables 2020.02.06 Boolean Algebra PJF - 8 Logic Gates Logic gates are abstractions of electronic circuit components that operate on one or more input signals to produce an output signal. 2-Input AND A B F F = AB

2020.02.06 2-Input OR A B G G = A+B Boolean Algebra NOT (Inverter) A H H = A PJF - 9 Timing Diagram t0 t1 t2 t3 t4 t5 t6 Input signals Gate

Output Signals 2020.02.06 B 1 0 1 0 F=AB 1 0 G=A+B 1 0 H=A 1 0

A Boolean Algebra Transitions Basic Assumption: Zero time for signals to propagate Through gates PJF - 10 Combinational Logic Circuit from Logic Function Consider function F = A + BC + AB A combinational logic circuit can be constructed to implement F, by appropriately connecting input signals and logic gates: Circuit input signals from function variables (A, B, C) Circuit output signal function output (F) Logic gates from logic operations

C F A B 2020.02.06 Boolean Algebra PJF - 11 Combinational Logic Circuit from Logic Function (cont.) In order to design a cost-effective and efficient circuit, we must minimize the circuits size (area) and propagation delay (time required for an input signal change to be observed at the output line) Observe the truth table of F=A + BC + AB and G=A + BC Truth tables for F and G are identical same function Use G to implement the logic circuit

(less components) 2020.02.06 Boolean Algebra A B C F G 0 0 0 1 1 0

0 1 1 1 0 1 0 1 1 0 1 1 1

1 1 0 0 0 0 1 0 1 0 0 1 1

0 1 1 1 1 1 0 0 PJF - 12 Combinational Logic Circuit from Logic Function (cont.) C F A B

C B A 2020.02.06 G Boolean Algebra PJF - 13 Boolean Algebra VERY nice machinery used to manipulate (simplify) Boolean functions George Boole (1815-1864): An investigation of the laws of thought Terminology: Literal: A variable or its complement Product term: literals connected by Sum term: literals connected by + 2020.02.06 Boolean Algebra

PJF - 14 Boolean Algebra Properties Let X: boolean variable, 0,1: constants 1. 2. 3. 4. 2020.02.06 X + 0 = X -- Zero Axiom X 1 = X -- Unit Axiom X + 1 = 1 -- Unit Property X 0 = 0 -- Zero Property Boolean Algebra PJF - 15 Boolean Algebra Properties (cont.) Let X: boolean variable, 0,1: constants 5. 6.

7. 8. 9. 2020.02.06 X + X = X -- Idepotence X X = X -- Idepotence X + X = 1 -- Complement X X = 0 -- Complement (X) = X -- Involution Boolean Algebra PJF - 16 Duality The dual of an expression is obtained by exchanging ( and +), and (1 and 0) in it, provided that the precedence of operations is not changed. Cannot exchange x with x Example: Find H(x,y,z), the dual of F(x,y,z) = xyz + xyz H = (x+y+z) (x+y+ z) 2020.02.06

Boolean Algebra PJF - 17 Duality (contd) With respect to duality, Identities 1 8 have the following relationship: 1. X+0=X 3. X+1 =1 4. X0 =0 X+X=X 6. X X = X (dual of X + X = 1

8. X X = 0 (dual of 2. X1 =X (dual of 1) (dual of 3) 5. 5) 7. 8) 2020.02.06 Boolean Algebra PJF - 18 More Boolean Algebra Properties Let X,Y, and Z: boolean variables

X+Y=Y+X 12. X + (Y+Z) = (X+Y) + Z 14. X(Y+Z) = XY + XZ 10. 11. X Y=YX -- Commutative 13. X(YZ) = (XY)Z -- Associative 15. X+(YZ) = (X+Y) (X+Z) -- Distributive 16. (X + Y) = X Y 17. (X Y) = X + Y -- DeMorgans In general, ( X1 + X2 + + Xn ) = X1X2 Xn, and ( X1X2 Xn ) = X1 + X2 + + Xn

2020.02.06 Boolean Algebra PJF - 19 Absorption Property 1. x + xy = x 2. x(x+y) = x (dual) Proof: x + xy = x1 + xy = x(1+y) = x1 =x QED (2 true by duality, why?) 2020.02.06 Boolean Algebra PJF - 20 Power of Duality 1. 2. 3.

4. 5. 6. x + xy = x is true, so (x + xy)=x (x + xy)=x(x+y) x(x+y) =x Let X=x, Y=y X(X+Y) =X, which is the dual of x + xy = x. The above process can be applied to any formula. So if a formula is valid, then its dual must also be valid. 7. Proving one formula also proves its dual. 2020.02.06 Boolean Algebra PJF - 21 Consensus Theorem 1.xy + xz + yz = xy + xz 2.(x+y)(x+z)(y+z) = (x+y)(x+z) -- (dual) Proof: xy + xz + yz = xy + xz + (x+x)yz = xy + xz + xyz + xyz = (xy + xyz) + (xz + xzy) = xy + xz

QED (2 true by duality). 2020.02.06 Boolean Algebra PJF - 22 Truth Tables (revisited) Enumerates all possible combinations of variable values and the corresponding function value Truth tables for some arbitrary functions F1(x,y,z), F2(x,y,z), and F3(x,y,z) are shown to the right. 2020.02.06 Boolean Algebra x y z F1 F2 F3 0

0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1

PJF - 23 Truth Tables (cont.) Truth table: a unique representation of a Boolean function If two functions have identical truth tables, the functions are equivalent (and vice-versa). Truth tables can be used to prove equality theorems. However, the size of a truth table grows exponentially with the number of variables involved, hence unwieldy. This motivates the use of Boolean Algebra. 2020.02.06 Boolean Algebra PJF - 24 Boolean expressions-NOT unique Unlike truth tables, expressions representing a Boolean function are NOT unique. Example: F(x,y,z) = xyz + xyz + xyz G(x,y,z) = xyz + yz

The corresponding truth tables for F() and G() are to the right. They are identical. Thus, F() = G() 2020.02.06 Boolean Algebra x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0

1 1 z 0 1 0 1 0 1 0 1 F 1 0 1 0 0 0 1 0 G 1 0

1 0 0 0 1 0 PJF - 25 Algebraic Manipulation Boolean algebra is a useful tool for simplifying digital circuits. Why do it? Simpler can mean cheaper, smaller, faster. Example: Simplify F = xyz + xyz + xz. F = xyz + xyz + xz = xy(z+z) + xz = xy1 + xz = xy + xz 2020.02.06 Boolean Algebra PJF - 26 Algebraic Manipulation (cont.)

Example: Prove xyz + xyz + xyz = xz + yz Proof: xyz+ xyz+ xyz = xyz + xyz + xyz + xyz = xz(y+y) + yz(x+x) = xz1 + yz1 = xz + yz QED. 2020.02.06 Boolean Algebra PJF - 27 Complement of a Function The complement of a function is derived by interchanging ( and +), and (1 and 0), and complementing each variable. Otherwise, interchange 1s to 0s in the truth table column showing F. The complement of a function IS NOT THE SAME as the dual of a function. 2020.02.06

Boolean Algebra PJF - 28 Complementation: Example Find G(x,y,z), the complement of F(x,y,z) = xyz + xyz G = F = (xyz + xyz) = (xyz) (xyz) DeMorgan = (x+y+z) (x+y+z) DeMorgan again Note: The complement of a function can also be derived by finding the functions dual, and then complementing all of the literals 2020.02.06 Boolean Algebra PJF - 29 Canonical and Standard Forms We need to consider formal techniques for the simplification of Boolean functions. Identical functions will have exactly the same canonical form. Minterms and Maxterms

Sum-of-Minterms and Product-of- Maxterms Product and Sum terms Sum-of-Products (SOP) and Product-of-Sums (POS) 2020.02.06 Boolean Algebra PJF - 30 Definitions Literal: A variable or its complement Product term: literals connected by Sum term: literals connected by + Minterm: a product term in which all the variables appear exactly once, either complemented or uncomplemented Maxterm: a sum term in which all the variables appear exactly once, either complemented or uncomplemented 2020.02.06

Boolean Algebra PJF - 31 Minterm Represents exactly one combination in the truth table. Denoted by mj, where j is the decimal equivalent of the minterms corresponding binary combination (bj). A variable in mj is complemented if its value in bj is 0, otherwise is uncomplemented. Example: Assume 3 variables (A,B,C), and j=3. Then, bj = 011 and its corresponding minterm is denoted by mj = ABC 2020.02.06 Boolean Algebra PJF - 32 Maxterm Represents exactly one combination in the truth table. Denoted by Mj, where j is the decimal equivalent of the maxterms corresponding binary combination (bj). A variable in Mj is complemented if its value in bj is 1,

otherwise is uncomplemented. Example: Assume 3 variables (A,B,C), and j=3. Then, bj = 011 and its corresponding maxterm is denoted by Mj = A+B+C 2020.02.06 Boolean Algebra PJF - 33 Truth Table notation for Minterms and Maxterms Minterms and x Maxterms are easy 0 to denote using a 0 truth table. 0 Example: 0 Assume 3 variables1 x,y,z 1 (order is fixed)

2020.02.06 y z Minterm Maxterm 0 0 xyz = m0 x+y+z = M0 0 1 xyz = m1 x+y+z = M1 1 0 xyz = m2 x+y+z = M2 1 1 xyz = m3

0 0 xyz = m4 x+y+z = M4 0 1 xyz = m5 x+y+z = M5 1 1 0 xyz = m6 x+y+z = M6 1 1 1 xyz = m7 x+y+zPJF= - 34

Boolean Algebra x+y+z= M3 Canonical Forms (Unique) Any Boolean function F( ) can be expressed as a unique sum of minterms and a unique product of maxterms (under a fixed variable ordering). In other words, every function F() has two canonical forms: Canonical Sum-Of-Products (sum of minterms) Canonical Product-Of-Sums (product of maxterms) 2020.02.06 Boolean Algebra PJF - 35 Canonical Forms (cont.) Canonical Sum-Of-Products: The minterms included are those mj such that F( ) = 1 in row j of the truth table for F( ). Canonical Product-Of-Sums:

The maxterms included are those Mj such that F( ) = 0 in row j of the truth table for F( ). 2020.02.06 Boolean Algebra PJF - 36 Example Truth table for f1(a,b,c) at right a The canonical sum-of-products form for f1 is 0 f1(a,b,c) = m1 + m2 + m4 + m6 = abc + abc + abc + abc 0 The canonical product-of-sums form for f1 is 0 f1(a,b,c) = M0 M3 M5 M7 0 = (a+b+c)(a+b+c) (a+b+c)(a+b+c). 1 Observe that: mj = Mj

1 1 1 2020.02.06 Boolean Algebra b c f1 0 0 1 1 0 0 1 1 0 1 1 0 1

0 1 0 0 1 0 1 0 1 0 1 PJF - 37 Shorthand: and f1(a,b,c) = m(1,2,4,6), where indicates that this is a sum-of-products form, and m(1,2,4,6) indicates that the minterms to be included are m1, m2, m4, and m6. f1(a,b,c) = M(0,3,5,7), where indicates that this is a product-of-sums form, and M(0,3,5,7) indicates that the maxterms to be included are M0, M3, M5, and M7. Since mj = Mj for any j, m(1,2,4,6) = M(0,3,5,7) = f1(a,b,c)

2020.02.06 Boolean Algebra PJF - 38 Conversion Between Canonical Forms Replace with (or vice versa) and replace those js that appeared in the original form with those that do not. Example: f1(a,b,c) = abc + abc + abc + abc = m1 + m 2 + m 4 + m 6 = (1,2,4,6) = (0,3,5,7) = (a+b+c)(a+b+c)(a+b+c)(a+b+c) 2020.02.06 Boolean Algebra PJF - 39 Standard Forms (NOT Unique) Standard forms are like canonical forms, except that not all variables need appear in

the individual product (SOP) or sum (POS) terms. Example: f1(a,b,c) = abc + bc + ac is a standard sum-of-products form f1(a,b,c) = (a+b+c)(b+c)(a+c) is a standard product-of-sums form. 2020.02.06 Boolean Algebra PJF - 40 Conversion of SOP from standard to canonical form Expand non-canonical terms by inserting equivalent of 1 in each missing variable x: (x + x) = 1 Remove duplicate minterms f1(a,b,c) = abc + bc + ac = abc + (a+a)bc + a(b+b)c = abc + abc + abc + abc + abc = abc + abc + abc + abc 2020.02.06 Boolean Algebra

PJF - 41 Conversion of POS from standard to canonical form Expand noncanonical terms by adding 0 in terms of missing variables (e.g., xx = 0) and using the distributive law Remove duplicate maxterms f1(a,b,c) = (a+b+c)(b+c)(a+c) = (a+b+c)(aa+b+c)(a+bb+c) = (a+b+c)(a+b+c)(a+b+c) (a+b+c)(a+b+c) = (a+b+c)(a+b+c)(a+b+c)(a+b+c) 2020.02.06 Boolean Algebra PJF - 42 Karnaugh Maps Karnaugh maps (K-maps) are graphical representations of boolean functions. One map cell corresponds to a row in the truth table. Also, one map cell corresponds to a minterm

or a maxterm in the boolean expression Multiple-cell areas of the map correspond to standard terms. 2020.02.06 Boolean Algebra PJF - 43 Two-Variable Map x1 x2 0 1 0 0 m0 m1 3

m2 m3 0 x2 1 2 1 x1 OR 1 0 0 2

m0 1 1 m2 3 m1 m3 NOTE: ordering of variables is IMPORTANT for f(x1,x2), x1 is the row, x2 is the column. Cell 0 represents x1x2; Cell 1 represents x1x2; etc. If a minterm is present in the function, then a 1Boolean is placed in the 2020.02.06 Algebra PJF - 44 Two-Variable Map (cont.)

Any two adjacent cells in the map differ by ONLY one variable, which appears complemented in one cell and uncomplemented in the other. Example: m0 (=x1x2) is adjacent to m1 (=x1x2) and m2 (=x1x2) but NOT m3 (=x1x2) 2020.02.06 Boolean Algebra PJF - 45 2-Variable Map -- Example f(x1,x2) = x1x2+ x1x2 + x1x2 = m 0 + m1 + m2 = x 1 + x2 1s placed in K-map for specified minterms m0, m1, m2 Grouping (ORing) of 1s allows simplification What (simpler) function is represented by each dashed rectangle? x1 = m 0 + m 1

x2 = m 0 + m 2 Note m0 covered twice 2020.02.06 Boolean Algebra x2 x1 0 0 0 1 1 2 1 1 1 3

1 0 PJF - 46 Minimization as SOP using K-map Enter 1s in the K-map for each product term in the function Group adjacent K-map cells containing 1s to obtain a product with fewer variables. Group size must be in power of 2 (2, 4, 8, ) Handle boundary wrap for K-maps of 3 or more variables. Realize that answer may not be unique 2020.02.06 Boolean Algebra PJF - 47 Three-Variable Map yz x 00

0 0 1 m0 4 1 01 3 m1 5 m4 11 2 m3 7 m5

10 m2 6 m7 m6 -Note: variable ordering is (x,y,z); yz specifies column, x specifies row. -Each cell is adjacent to three other cells (left or right or top or bottom or edge wrap) 2020.02.06 Boolean Algebra PJF - 48 Three-Variable Map (cont.) minterm The types of structures that are either minterms or are generated by repeated application of

the minimization theorem on a three variable map are shown at right. Groups of 1, 2, 4, 8 are possible. group of 2 terms group of 4 terms 2020.02.06 Boolean Algebra PJF - 49 Simplification Enter minterms of the Boolean function into the map, then group terms Example: f(a,b,c) = ac + abc + bc Result: f(a,b,c) = ac+ b abc 1 2020.02.06 1 1

1 1 Boolean Algebra 1 1 1 1 1 PJF - 50 More Examples yz X f1(x, y, z) = m(2,3,5,7) f1(x, y, z) = xy + xz f2(x, y, z) = m (0,1,2,3,6) f

(x, y, z) = x+yz 2 2020.02.06 Boolean Algebra 00 01 11 10 1 1 1 1 1

1 1 0 1 1 1 PJF - 51 Four-Variable Maps YZ WX 00 01 11 10 00 m0

m1 m3 m2 01 m4 m5 m7 m6 11 m12 m13 m15 m14 10 m8 m9

m11 m10 Top cells are adjacent to bottom cells. Left-edge cells are adjacent to right-edge cells. Note variable ordering (WXYZ). 2020.02.06 Boolean Algebra PJF - 52 Four-variable Map Simplification One square represents a minterm of 4 literals. A rectangle of 2 adjacent squares represents a product term of 3 literals. A rectangle of 4 squares represents a product term of 2 literals. A rectangle of 8 squares represents a product term of 1 literal. A rectangle of 16 squares produces a function that is equal to logic 1. 2020.02.06

Boolean Algebra PJF - 53 Example Simplify the following Boolean function (A,B,C,D) = m(0,1,2,4,5,7,8,9,10,12,13). First put the function g( ) into the map, and then group as many 1s as possible. ab cd 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1 1 1 1 1

g(A,B,C,D) = c+bd+abd 2020.02.06 Boolean Algebra PJF - 54 Don't Care Conditions There may be a combination of input values which will never occur if they do occur, the output is of no concern. The function value for such combinations is called a don't care. They are denoted with x or . Each x may be arbitrarily assigned the value 0 or 1 in an implementation. Dont cares can be used to further simplify a function 2020.02.06 Boolean Algebra PJF - 55 Minimization using Dont Cares Treat don't cares as if they are 1s to generate

PIs. Delete PI's that cover only don't care minterms. Treat the covering of remaining don't care minterms as optional in the selection process (i.e. they may be, but need not be, covered). 2020.02.06 Boolean Algebra PJF - 56 cd ab 00 01 11 10 Example 00 0 1 0 1 01 1 1 0 1 Simplify the function f(a,b,c,d) whose K-map is shown at the right. f = acd+ab+cd+abc or

f = acd+ab+cd+abd 11 0 0 x x 10 1 1 x x 0 1 0 1 1 1 0 1 0 0 x x 1 1 x x 0 1 0 1 1 1 0 1 0 0 x x 1 1 x x 2020.02.06 Boolean Algebra PJF - 57 Another Example Simplify the function g(a,b,c,d) whose K-map is shown at right. g = ac+ ab or g = ac+bd

cd ab x 1 0 0 1 x 0 x 1 x x 1 0 x x 0 x 1 0 0 1 x 0 x 1 x x 1 0 x x 0 x 1 0 0 1 x 0 x 1 x x 1 0 x x 0 2020.02.06 Boolean Algebra PJF - 58 Algorithmic minimization What do we do for functions with more

variables? You can code up a minimizer (ComputerAided Design, CAD) Quine-McCluskey algorithm Iterated consensus We wont discuss these techniques here 2020.02.06 Boolean Algebra PJF - 59 More Logic Gates NAND and NOR Gates NAND and NOR circuits Two-level Implementations Multilevel Implementations Exclusive-OR (XOR) Gates Odd Function Parity Generation and Checking 2020.02.06 Boolean Algebra

PJF - 60 More Logic Gates We can construct any combinational circuit with AND, OR, and NOT gates Additional logic gates are used for practical reasons 2020.02.06 Boolean Algebra PJF - 61 BUFFER, NAND and NOR 2020.02.06 Boolean Algebra PJF - 62 NAND Gate Known as a universal gate because ANY digital circuit can be implemented with NAND gates alone.

To prove the above, it suffices to show that AND, OR, and NOT can be implemented using NAND gates only. 2020.02.06 Boolean Algebra PJF - 63 NAND Gate Emulation X X Y F = (XX) = X+X = X X F = ((XY)) = (X+Y) = XY = XY

2020.02.06 F XY X X Y X Y F = X F = (XY) = X+Y Y = X+Y Boolean Algebra F= X+Y

PJF - 64 NAND Circuits To easily derive a NAND implementation of a boolean function: Find a simplified SOP SOP is an AND-OR circuit Change AND-OR circuit to a NAND circuit Use the alternative symbols below 2020.02.06 Boolean Algebra PJF - 65 AND-OR (SOP) Emulation Using NANDs Two-level implementations a)

b) Original SOP Implementation with NANDs 2020.02.06 Boolean Algebra PJF - 66 AND-OR (SOP) Emulation Using NANDs (cont.) Verify: (a) G = WXY + YZ (b) G = ( (WXY) (YZ) ) = (WXY) + (YZ) = WXY + YZ 2020.02.06 Boolean Algebra PJF - 67 SOP with NAND

(a) (b) (c) Original SOP Double inversion and grouping Replacement with NANDs AND-NOT NOT-OR 2020.02.06 Boolean Algebra PJF - 68 Two-Level NAND Gate Implementation - Example F (X,Y,Z) = m(0,6) 1. Express F in SOP form: F = XYZ + XYZ 2. Obtain the AND-OR implementation for F. 3. Add bubbles and inverters to transform ANDOR to NAND-NAND gates. 2020.02.06

Boolean Algebra PJF - 69 Example (cont.) Two-level implementation with NANDs F = XYZ + XYZ 2020.02.06 Boolean Algebra PJF - 70 Multilevel NAND Circuits Starting from a multilevel circuit: 1. Convert all AND gates to NAND gates with AND-NOT graphic symbols. 2. Convert all OR gates to NAND gates with NOT-OR graphic symbols. 3. Check all the bubbles in the diagram. For every bubble that is not counteracted by another bubble along the same line, insert a NOT gate or complement the input literal from its original appearance.

2020.02.06 Boolean Algebra PJF - 71 Example Use NAND gates and NOT gates to implement Z=EF(AB+C+D)+GH AB AB+C+D EF(AB+C+D) EF(AB+C+D)+GH 2020.02.06 Boolean Algebra PJF - 72 Yet Another Example! 2020.02.06

Boolean Algebra PJF - 73 NOR Gate Also a universal gate because ANY digital circuit can be implemented with NOR gates alone. This can be similarly proven as with the NAND gate. 2020.02.06 Boolean Algebra PJF - 74 NOR Circuits To easily derive a NOR implementation of a boolean function:

Find a simplified POS POS is an OR-AND circuit Change OR-AND circuit to a NOR circuit Use the alternative symbols below 2020.02.06 Boolean Algebra PJF - 75 Two-Level NOR Gate Implementation - Example F(X,Y,Z) = m(0,6) 1. Express F in SOP form: 1. F = m(1,2,3,4,5,7) = XYZ + XYZ + XYZ + XYZ + XYZ + XYZ 2. F = XY + XY + Z 2. Take the complement of F to get F in the POS form: F = (F)' = (X'+Y)(X+Y')Z' 3. Obtain the OR-AND implementation for F. 4. Add bubbles and inverters to transform OR-AND implementation to NOR-NOR implementation. 2020.02.06

Boolean Algebra PJF - 76 Example (cont.) Two-level implementation with NORs F = (F)' = (X'+Y)(X+Y')Z' 2020.02.06 Boolean Algebra PJF - 77 XOR and XNOR XOR: not-equal gate X Y F XNOR: equal gate X F

Y 2020.02.06 Boolean Algebra X Y F = XY 0 0 0 0 1 1 1 0

1 1 1 0 X Y F = XY 0 0 1 0 1 0

1 0 0 1 1 1 PJF - 78 Exclusive-OR (XOR) Function XOR (also ) : the not-equal function XOR(X,Y) = X Y = XY + XY Identities: X0=X X 1 = X XX=0

X X = 1 Properties: XY=YX (X Y) W = X ( Y W) 2020.02.06 Boolean Algebra PJF - 79 XOR function implementation XOR(a,b) = ab + ab Straightforward: 5 gates 2 inverters, two 2-input ANDs, one 2-input OR 2 inverters & 3 2-input NANDs Nonstraightforward: 4 NAND gates 2020.02.06 Boolean Algebra PJF - 80

XOR circuit with 4 NANDs 2020.02.06 Boolean Algebra PJF - 81