Download Presentation
## K-map Summary

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**K-map Summary**• K-maps are an alternative to algebra for simplifying expressions. • The result is a minimal sum of products, which leads to a minimal two-level circuit. • It’s easy to handle don’t-care conditions. • K-maps are really only good for manual simplification of small expressions... but that’s good enough for CS231! • Things to keep in mind: • Remember the correct order of minterms on the K-map. • When grouping, you can wrap around all sides of the K-map, and your groups can overlap. • Make as few rectangles as possible, but make each of them as large as possible. This leads to fewer, but simpler, product terms. • There may be more than one valid solution. CS231 Boolean Algebra**Design example: Comparing 2-bit numbers**• Let’s design a circuit that compares two 2-bit numbers, A and B. The circuit should have three outputs: • G (“Greater”) should be 1 only when A > B. • E (“Equal”) should be 1 only when A = B. • L (“Lesser”) should be 1 only when A < B. • Make sure you understand the problem. • Inputs A and B will be 00, 01, 10, or 11 (0, 1, 2 or 3 in decimal). • For any inputs A and B, exactly one of the three outputs will be 1. CS231 Boolean Algebra**Step 1: How many inputs and outputs?**• Two 2-bit numbers means a total of four inputs. • We should name each of them. • Let’s say the first number consists of digits A1 and A0 from left to right, and the second number is B1 and B0. • The problem specifies three outputs: G, E and L. • Here is a block diagram that shows the inputs and outputs explicitly. • Now we just have to design the circuitry that goes into the box. CS231 Boolean Algebra**Step 2: Functional specification**• For this problem, it’s probably easiest to start with a truth table. This way, we can explicitly show the relationship (>, =, <) between inputs. • A four-input function has a sixteen-row truth table. • It’s usually clearest to put the truth table rows in binary numeric order; in this case, from 0000 to 1111 for A1, A0, B1 and B0. • Example: 01 < 10, so the sixth row of the truth table (corresponding to inputs A=01 and B=10) shows that output L=1, while G and E are both 0. CS231 Boolean Algebra**Step 2: Functional specification**• For this problem, it’s probably easiest to start with a truth table. This way, we can explicitly show the relationship (>, =, <) between inputs. • A four-input function has a sixteen-row truth table. • It’s usually clearest to put the truth table rows in binary numeric order; in this case, from 0000 to 1111 for A1, A0, B1 and B0. • Example: 01 < 10, so the sixth row of the truth table (corresponding to inputs A=01 and B=10) shows that output L=1, while G and E are both 0. CS231 Boolean Algebra**Step 3: Simplified Boolean expressions**• Let’s use K-maps. There are three functions (each with the same inputs A1 A0 B1 B0), so we need three K-maps. G(A1,A0,B1,B0) = A1 A0 B0’ + A0 B1’ B0’ + A1 B1’ E(A1,A0,B1,B0) = A1’ A0’ B1’ B0’ + A1’ A0 B1’ B0 + A1 A0 B1 B0 + A1 A0’ B1 B0’ L(A1,A0,B1,B0) = A1’ A0’ B0 + A0’ B1 B0 + A1’ B1 CS231 Boolean Algebra**Step 4: Drawing the circuits**G = A1 A0 B0’ + A0 B1’ B0’ + A1 B1’ E = A1’ A0’ B1’ B0’ + A1’ A0 B1’ B0 + A1 A0 B1 B0 + A1 A0’ B1 B0’ L = A1’ A0’ B0 + A0’ B1 B0 + A1’ B1 LogicWorks has gates with NOTs attached (small bubbles) for clearer diagrams. CS231 Boolean Algebra**Testing this in LogicWorks**• Where do the inputs come from? Binary switches, in LogicWorks • How do you view outputs? Use binary probes. probe switches CS231 Boolean Algebra**Example wrap-up**• Data representations. • We used three outputs, one for each possible scenario of the numbers being greater, equal or less than each other. • This is sometimes called a “one out of three” code. • K-map advantages and limitations. • Our circuits are two-level implementations, which are relatively easy to draw and follow. • But, E(A1,A0,B1,B0) couldn’t be simplified at all via K-maps. Can you do better using Boolean algebra? • Extensibility. • We used a brute-force approach, listing all possible inputs and outputs. This makes it difficult to extend our circuit to compare three-bit numbers, for instance. • We’ll have a better solution after we talk about computer arithmetic. CS231 Boolean Algebra**Summary**• Functions can be represented with expressions, truth tables or circuits. These are all equivalent, and we can arbitrarily transform between them. • Circuit analysis involves finding an expression or truth table from a given logic diagram. • Designing a circuit requires you to first find a (simplified) Boolean expression for the function you want to compute. You can then convert the expression into a circuit. • Next time we’ll talk about some building blocks for making larger combinational circuits, and the role of abstraction in designing large systems. CS231 Boolean Algebra**Additional gates**• We’ve already seen all the basic Boolean operations and the associated primitive logic gates. • There are a few additional gates that are often used in logic design. • They are all equivalent to some combination of primitive gates. • But they have some interesting properties in their own right. CS231 Boolean Algebra**Additional Boolean operations**NAND (NOT-AND) NOR (NOT-OR) XOR (eXclusive OR) Operation: Expressions: (xy)’ = x’ + y’ (x + y)’ = x’ y’ x y = x’y + xy’ Truth table: Logic gates: CS231 Boolean Algebra**NANDs are special!**• The NAND gate is universal: it can replace all other gates! • NOT • AND • OR (xx)’ = x’ [ because xx = x ] ((xy)’ (xy)’)’ = xy [ from NOT above ] ((xx)’ (yy)’)’ = (x’ y’)’ [ xx = x, and yy = y ] = x + y [ DeMorgan’s law ] CS231 Boolean Algebra**Making NAND circuits**• The easiest way to make a NAND circuit is to start with a regular, primitive gate-based diagram. • Two-level circuits are trivial to convert, so here is a slightly more complex random example. CS231 Boolean Algebra**Converting to a NAND circuit**• Step 1: Convert all AND gates to NAND gates using AND-NOT symbols, and convert all OR gates to NAND gates using NOT-OR symbols. CS231 Boolean Algebra**Converting to NAND, concluded**• Step 2: Make sure you added bubbles along lines in pairs ((x’)’ = x). If not, then either add inverters or complement the input variables. CS231 Boolean Algebra**NOR gates**• The NOR operation is the dual of the NAND. • NOR gates are also universal. • We can convert arbitrary circuits to NOR diagrams by following a procedure similar to the one just shown: • Step 1: Convert all OR gates to NOR gates (OR-NOT), and all AND gates to NOR gates (NOT-AND). • Step 2: Make sure that you added bubbles along lines in pairs. If not, then either add inverters or complement input variables. CS231 Boolean Algebra**XOR gates**• A two-input XOR gate outputs true when exactly one of its inputs is true: • XOR corresponds more closely to typical English usage of “or,” • I will either finish the homework before dinner or not sleep tonight • Several fascinating properties of the XOR operation: x y = x’ y + x y’ CS231 Boolean Algebra**More XOR tidbits**• The general XOR function is true when an odd number of its arguments are true. • For example, we can use Boolean algebra to simplify a three-input XOR to the following expression and truth table. • XOR is especially useful for building adders (as we’ll see on later) and error detection/correction circuits. x (y z) = x (y’z + yz’) [ Definition of XOR ] = x’(y’z + yz’) + x(y’z + yz’)’ [ Definition of XOR ] = x’y’z + x’yz’ + x(y’z + yz’)’ [ Distributive ] = x’y’z + x’yz’ + x((y’z)’ (yz’)’) [ DeMorgan’s ] = x’y’z + x’yz’ + x((y + z’)(y’ + z)) [ DeMorgan’s ] = x’y’z + x’yz’ + x(yz + y’z’) [ Distributive ] = x’y’z + x’yz’ + xyz + xy’z’ [ Distributive ] CS231 Boolean Algebra**XNOR gates**• Finally, the complement of the XOR function is the XNOR function. • A two-input XNOR gate is true when its inputs are equal: (x y)’ = x’y’ + xy CS231 Boolean Algebra**Design considerations, and where they come from**• Circuits made up of gates, that don’t have any feedback, are called combinatorial circuits • No feedback: outputs are not connected to inputs • If you change the inputs, and wait for a while, the correct outputs show up. • Why? Capacitive loading: • “fill up the water level” analogy. • So, when such ckts are used in a computer, the time it takes to get stable outputs is important. • For the same reason, a single output cannot drive too many inputs • Will be too slow to “fill them up” • May not have enough power • So, the design criteria are: • Propagation delay (how many gets in a sequence from in to out) • Fan-out • Fan-in (Number of inputs to a single gate) CS231 Boolean Algebra**Summary**• NAND and NOR are universal gates which can replace all others. • There are two representations for NAND gates (AND-NOT and NOT-OR), which are equivalent by DeMorgan’s law. • Similarly, there are two representations for NOR gates too. • You can convert a circuit with primitive gates into a NAND or NOR diagram by judicious use of the axiom (x’)’ = x, to ensure that you don’t change the overall function. • An XOR gate implements the “odd” function, outputting 1 when there are an odd number of 1’s in the inputs. • They can make circuit diagrams easier to understand. CS231 Boolean Algebra