EECS150 - Digital Design Lecture 12 - Combinational Logic Circuits Part 3 March 4, 2002 John Wawrzynek Spring 2002 EECS150 - Lec12-cl3 Page 1 In the News ... Spring 2002 EECS150 - Lec12-cl3 Page 2 Multiplication a3b3 a3b2 a2b3 X a3b1 a2b2 a1b3 a3 b3 a2 b2 a1 b1 a0 b0 a3b0 a2b1 a1b2 a0b3 a2b0 a1b1 a0b2 a1b0 a0b1 a0b0 ... a1b0+a0b1 a0b0 Multiplicand Multiplier Partial products Product Many different circuits exist for multiplication. Each one has a different balance between speed (performance) and amount of logic (cost). Spring 2002 EECS150 - Lec12-cl3 Page 3 “Shift and Add” Multiplier B P n-bit shift registers • Sums each partial product, one at a time. • In binary, each partial product is shifted versions of A or 0. + n-bit adder 0 1 0 A n-bit register • Cost n, = n clock cycles. • What is the critical path for determining the min clock period? Spring 2002 Control Algorithm: 1. P 0, A multiplicand, B multiplier 2. If LSB of B==1 then add A to P else add 0 3. Shift [P][B] right 1 4. Repeat steps 2 and 3 n-1 times. 5. [P][B] has product. EECS150 - Lec12-cl3 Page 4 “Shift and Add” Multiplier Signed Multiplication: Remember for 2’s complement numbers MSB has negative weight: N 2 X xi 2i xn 1 2 n 1 i 0 ex: -6 = 110102 = 0•20 + 1•21 + 0•22 + 1•23 - 1•24 = 0 + 2 + 0 + 8 - 16 = -6 • Therefore for multiplication: a) subtract final partial product b) sign-extend partial products • Modifications to shift & add circuit: a) adder/subtractor b) sign-extender on P shifter register Spring 2002 EECS150 - Lec12-cl3 Page 5 Array Multiplier Generates all partial products simultaneously. b3 0 b2 0 b1 0 b0 0 a0 0 p0 Each row: n-bit adder with AND gates. bj sum in a1 ai 0 p1 a2 FA carry in 0 p2 sum out a3 0 p7 Spring 2002 p6 p5 p4 p3 EECS150 - Lec12-cl3 What is the critical path? Delay ?, cost ? Page 6 Carry-save Addition • Speeding up multiplication is a matter of speeding up the summing of the partial products. • “Carry-save” addition can help. • Carry-save addition passes (saves) the carries to the output, rather than propagating them. carry-save add carry-propagate add • • • • Example: sum three numbers, 310 = 0011, 210 = 0010, 310 = 0011 310 + 210 c s 0011 0010 0100 = 410 0001 = 110 carry-save add 310 0011 c 0010 = 210 s 0110 = 610 1000 = 810 In general, carry-save addition takes in 3 numbers and produces 2. Whereas, carry-propagate takes 2 and produces 1. With this technique, we can avoid carry propagation until final addition Spring 2002 EECS150 - Lec12-cl3 Page 7 Spring 2002 EECS150 - Lec12-cl3 Page 8 Array Multiplier with Carry-Save Spring 2002 EECS150 - Lec12-cl3 Page 9 Spring 2002 EECS150 - Lec12-cl3 Page 10 Spring 2002 EECS150 - Lec12-cl3 Page 11 CL Circuits from Mano • Magnitude Comparator • Multiplexors (revisited) • Decoders – basic – hierarchical • Encoders – standard – Priority Encoder Spring 2002 EECS150 - Lec12-cl3 Page 12 Magnitude Comparator • We studied magnitude comparators in CS61c as part of the MIPS processor design. • What was that method? Why that then and not now? (A>B) = A3B’3 + x3A2B’2 + x3x2A1B’1 + x3x2x1A0B’0 (A>B) = A’3B3 + x3A’2B2 + x3x2A’1B1 + x3x2x1A’0B0 (A=B) = x3x2x1x0 Spring 2002 EECS150 - Lec12-cl3 Page 13 Multiplexors Revisited • • • • • • Basic AND/OR form NAND/NAND tristate buffer based transmission gate based hierarchical decoder based – delay analysis Spring 2002 EECS150 - Lec12-cl3 Page 14 Decoders Spring 2002 EECS150 - Lec12-cl3 Page 15 Hierarchical Decoders Spring 2002 EECS150 - Lec12-cl3 Page 16 Encoders • Generates binary code at output corresponding to input code. • Example: one-hot to binary encoder. (Opposite of decoder) abcd xy 1000 00 0100 01 0010 10 0001 11 • Priority Encoder: – If two or more inputs are equal to 1 at the same time the input with the highest “priority” will take precedence. • Example: abcd 0000 1000 - 100 - - 10 - - - 1 xy V - - 0 00 0 01 1 10 1 11 1 • “V” is the valid signal, “d” has highest priority. Spring 2002 EECS150 - Lec12-cl3 Page 17