1 / 80

ELEC 2200-002 Digital Logic Circuits Fall 2008 Binary Arithmetic (Chapter 1)

ELEC 2200-002 Digital Logic Circuits Fall 2008 Binary Arithmetic (Chapter 1). Vishwani D. Agrawal James J. Danaher Professor Department of Electrical and Computer Engineering Auburn University, Auburn, AL 36849 http://www.eng.auburn.edu/~vagrawal vagrawal@eng.auburn.edu.

bryony
Download Presentation

ELEC 2200-002 Digital Logic Circuits Fall 2008 Binary Arithmetic (Chapter 1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ELEC 2200-002Digital Logic CircuitsFall 2008Binary Arithmetic (Chapter 1) Vishwani D. Agrawal James J. Danaher Professor Department of Electrical and Computer Engineering Auburn University, Auburn, AL 36849 http://www.eng.auburn.edu/~vagrawal vagrawal@eng.auburn.edu ELEC2200-002 Lecture 2

  2. Exercises from Lecture 1 • Identify radio frequency (RF), mixed (analog and digital) signal, and digital components in a communications system. • Which parts in computing and communications systems contain digital arithmetic logic circuits? • Where is the binary machine code stored in a digital computer? • What is the difference between sequential and combinational circuits? Which category does the control of a computer belong to? ELEC2200-002 Lecture 2

  3. Answers • Components of a communications system: • RF: Antenna, duplexer, filter, mixer, local oscillator. • Mixed-signal: ADC, DAC. • Digital: DSP. • Arithmetic logic is contained in DSP and datapath. • Machine code is stored in a memory. • Sequential and combinational circuits: • A sequential circuit contains memory. Its output is determined by input and the content of the memory. • A combinational circuit contains no memory. Its output depends entirely upon the input. • Control of a computer is a sequential circuit. ELEC2200-002 Lecture 2

  4. Why Binary Arithmetic? • Hardware can only deal with binary digits, 0 and 1. • Must represent all numbers, integers or floating point, positive or negative, by binary digits, called bits. • Can devise electronic circuits to perform arithmetic operations: add, subtract, multiply and divide, on binary numbers. ELEC2200-002 Lecture 2

  5. Positive Integers • Decimal system: made of 10 digits, {0,1,2, . . . , 9} 41 = 4×101 + 1×100 255 = 2×102 + 5×101 + 5×100 • Binary system: made of two digits, {0,1} 00101001 = 0×27 + 0×26 + 1×25 + 0×24 +1×23 +0×22 + 0×21 + 1×20 =32 + 8 +1 = 41 11111111 = 255, largest number with 8 binary digits, 28-1 ELEC2200-002 Lecture 2

  6. Base or Radix • For decimal system, 10 is called the base or radix. • Decimal 41 is also written as 4110 or 41ten • Base (radix) for binary system is 2. • Thus, 41ten = 1010012 or 101001two • Also, 111ten = 1101111two and 111two = 7ten ELEC2200-002 Lecture 2

  7. Signed Integers – What Not to Do • Use fixed length binary representation • Use left-most bit (called most significant bit or MSB) for sign: 0 for positive 1 for negative • Example: +18ten = 00010010two –18ten = 10010010two ELEC2200-002 Lecture 2

  8. Why Not to Use Sign Bit • Sign and magnitude bits should be differently treated in arithmetic operations. • Addition and subtraction require different logic circuits. • Overflow is difficult to detect. • “Zero” has two representations: + 0ten = 00000000two – 0ten = 10000000two • Signed-integers are not used in modern computers. ELEC2200-002 Lecture 2

  9. Integers With Sign – Other Ways • Use fixed-length representation, but no sign bit • 1’s complement: To form a negative number, complement each bit in the given number. • 2’s complement: To form a negative number, start with the given number, subtract one, and then complement each bit, or first complement each bit, and then add 1. • 2’s complement is the preferred representation. ELEC2200-002 Lecture 2

  10. 1’s-Complement • To change the sign of a binary integer simply complement (invert) each bit. • Example: 3 = 0011, – 3 = 1100 • n-bit representation: Negation is equivalent to subtraction from 2n – 1 0000 0100 1000 1100 10000 10100 Infinite universe of integers -∞ -4 0 4 8 12 16 20 ∞ 0000 0000 1111 1111 16/0 0 15 15 Modulo-16 (4-bit) universe -0 1100 12 4 0100 1100 12 -3 4 0100 -7 7 7 8 8 0111 1000 1000 ELEC2200-002 Lecture 2

  11. 2’s-Complement • Why not 1’s-complement? Don’t like two zeros. • Add 1 to 1’s-complement representation. • Some properties: • Only one representation for 0 • Exactly as many positive numbers as negative numbers • Slight asymmetry – there is one negative number with no positive counterpart ELEC2200-002 Lecture 2

  12. General Method for Binary Integers with Sign • Select number (n) of bits in representation. • Partition 2n integers into two sets: • 00…0 through 01…1 are n/2 positive integers. • 10…0 through 11…1 are n/2 negative integers. • Negation rule transforms negative to positive, and vice-versa: • Signed integers: invert MSB • 1’s complement: Subtract from 2n – 1 = 1…1 (same as “invert all bits”) • 2’s complement: Subtract from 2n = 10…0 (same as 1’s complement + 1) ELEC2200-002 Lecture 2

  13. Three Systems 10000 0000 0000 0000 1111 1111 1111 0 0010 0 0 – 7 – 0 2 5 0101 – 6 6 – 2 7 7 7 0110 – 5 1010 – 0 – 7 – 8 0111 1010 1010 1000 1000 1000 1010 = – 2 Signed intergers 1010 = – 5 1’s complement integers 1010 = – 6 2’s complement integers ELEC2200-002 Lecture 2

  14. Three Representations Sign-magnitude 000 = +0 001 = +1 010 = +2 011 = +3 100 = - 0 101 = - 1 110 = - 2 111 = - 3 1’s complement 000 = +0 001 = +1 010 = +2 011 = +3 100 = - 3 101 = - 2 110 = - 1 111 = - 0 2’s complement 000 = +0 001 = +1 010 = +2 011 = +3 100 = - 4 101 = - 3 110 = - 2 111 = - 1 (Preferred) ELEC2200-002 Lecture 2

  15. 2’s Complement Numbers 0 000 -1 +1 -1 111 001 +1 Positive numbers 010 +2 Negative numbers -2 110 011 +3 -3 101 100 Overflow Negation - 4 ELEC2200-002 Lecture 2

  16. 2’s Complement n-bit Numbers • Range: –2n –1 through 2n –1 – 1 • Unique zero: 00000000 . . . . . 0 • Negation rule: see slide 9. • Expansion of bit length: stretch the left-most bit all the way, e.g., 11111101 is still – 3. • Overflow rule: If two numbers with the same sign bit (both positive or both negative) are added, the overflow occurs if and only if the result has the opposite sign. • Subtraction rule: for A – B, add – B to A. ELEC2200-002 Lecture 2

  17. 2’s-Compliment to Decimal Conversion n-2 an-1an-2 . . . a1a0 = -2n-1an-1 + Σ 2i ai i=0 8-bit conversion box -128 64 32 16 8 4 2 1 -128 64 32 16 8 4 2 1 1 1 1 1 1 1 0 1 Example -128+64+32+16+8+4+1 = -128 + 125 = -3 ELEC2200-002 Lecture 2

  18. For More on 2’s-Complement • Chapter 2 in D. E. Knuth, The Art of Computer Programming: Seminumerical Algorithms, Volume II, Second Edition, Addison-Wesley, 1981. • A. al’Khwarizmi, Hisab al-jabr w’al-muqabala, 830. • Read: A two part interview with D. E. Knuth, Communications of the ACM (CACM), vol. 51, no. 7, pp. 35-39 (july), and no. 8, pp. 31-35 (August), 2008. Donald E. Knuth (1938 - ) Abu Abd-Allah ibn Musa al’Khwarizmi (~780 – 850) ELEC2200-002 Lecture 2

  19. Addition • Adding bits: • 0 + 0 = 0 • 0 + 1 = 1 • 1 + 0 = 1 • 1 + 1 = (1)0 • Adding integers: carry 1 1 0 0 0 0 . . . . . . 0 1 1 1 two = 7ten + 0 0 0 . . . . . . 0 1 1 0 two = 6ten = 0 0 0 . . . . . . 1 (1)1 (1)0 (0)1 two = 13ten ELEC2200-002 Lecture 2

  20. Subtraction • Direct subtraction • Two’s complement subtraction 0 0 0 . . . . . . 0 1 1 1 two = 7ten - 0 0 0 . . . . . . 0 1 1 0 two = 6ten = 0 0 0 . . . . . . 0 0 0 1two = 1ten 1 1 1 . . . . . . 1 1 0 0 0 0 . . . . . . 0 1 1 1 two = 7ten + 1 1 1 . . . . . . 1 0 1 0 two = - 6ten = 0 0 0 . . . . . . 0 (1) 0 (1) 0 (0)1 two = 1ten ELEC2200-002 Lecture 2

  21. Overflow: An Error • Examples: Addition of 3-bit integers (range - 4 to +3) • -2-3 = -5110 = -2 + 101 = -3 = 1011 = 3 (error) • 3+2 = 5011 = 3 010 = 2 = 101 = -3 (error) • Overflow rule: If two numbers with the same sign bit (both positive or both negative) are added, the overflow occurs if and only if the result has the opposite sign. 000 111 0 001 1 -1 – + 2 010 110 -2 3 -3 011 101 - 4 100 Overflow crossing ELEC2200-002 Lecture 2

  22. Design Hardware Bit by Bit • Adding two bits: a b half_sum carry_out h_s(a, b) c_o(a, b) 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 • Half-adder circuit half_sum a XOR b carry_out AND ELEC2200-002 Lecture 2

  23. One-bit Full-Adder • Adding three bits a b ci half sum (a, b) full sum h_s c_o h_s c_o (a, b) (a, b) (h_s(a, b), ci) (h_s(a, b), ci) 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 1 1 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 ci+1 ELEC2200-002 Lecture 2

  24. One-bit Full-Adder Circuit ci FAi h_s (ai, bi) h_s (h_s(ai, bi), ci) XOR sumi ai XOR c_o (ai, bi) c_o (h_s(ai, bi), ci) AND bi AND OR Ci+1 ELEC2200-002 Lecture 2

  25. 32-bit Ripple-Carry Adder c0=0 a0 b0 sum0 FA0 sum1 a1 b1 FA1 sum2 a2 b2 FA2 sum31 FA31 a31 b31 ELEC2200-002 Lecture 2

  26. How Fast is Ripple-Carry Adder? • Longest delay path (critical path) runs from cin to sum31. • Suppose delay of full-adder is 100ps. • Critical path delay = 3,200ps • Clock rate cannot be higher than 1/(3,200×10 –12) Hz = 312MHz. • Must use more efficient ways to handle carry. ELEC2200-002 Lecture 2

  27. Speeding Up the Adder a0-a15 16-bit ripple carry adder sum0-sum15 b0-b15 cin a16-a31 16-bit ripple carry adder 0 b16-b31 0 sum16-sum31 Multiplexer a16-a31 16-bit ripple carry adder 1 b16-b31 This is a carry-select adder 1 ELEC2200-002 Lecture 2

  28. Fast Adders • In general, any output of a 32-bit adder can be evaluated as a logic expression in terms of all 65 inputs. • Number of levels of logic can be reduced to log2N for N-bit adder. Ripple-carry has N levels. • More gates are needed, about log2N times that of ripple-carry design. • Fastest design is known as carry lookahead adder. ELEC2200-002 Lecture 2

  29. N-bit Adder Design Options Reference: J. L. Hennessy and D. A. Patterson, Computer Architecture: A Quantitative Approach, Second Edition, San Francisco, California, 1990, page A-46. ELEC2200-002 Lecture 2

  30. Binary Multiplication (Unsigned) 1 0 0 0 two = 8ten multiplicand 1 0 0 1 two = 9ten multiplier ____________ 1 0 0 0 0 0 0 0 partial products 0 0 0 0 1 0 0 0 ____________ 1 0 0 1 0 0 0two = 72ten Basic algorithm: For n = 1, 32, only If nth bit of multiplier is 1, then add multiplicand × 2 n –1 to product ELEC2200-002 Lecture 2

  31. Multiplication Flowchart Start Initialize product register to 0 Partial product number, n = 1 LSB of multiplier ? Add multiplicand to product and place result in product register 1 0 Left shift multiplicand register 1 bit Right shift multiplier register 1 bit n = 32 n < 32 i = ? Done n = n + 1 ELEC2200-002 Lecture 2

  32. Serial Multiplication shift left shift right Multiplicand (expanded 64-bits) 32-bit multiplier 64 64 shift Test LSB 32 times add 64-bit ALU LSB = 1 LSB = 0 64 3 operations per bit: shift right shift left add Need 64-bit ALU 64-bit product register write ELEC2200-002 Lecture 2

  33. Serial Multiplication (Improved) 2 operations per bit: shift right add 32-bit ALU Multiplicand 32 32 add 1 Test LSB 32 times 32-bit ALU LSB 1 32 write 64-bit product register shift right 00000 . . . 00000 32-bit multiplier Initialized product register ELEC2200-002 Lecture 2

  34. Example: 0010two× 0011two 0010two× 0011two = 0110two, i.e., 2ten×3ten = 6ten ELEC2200-002 Lecture 2

  35. Multiplying with Signs • Convert numbers to magnitudes. • Multiply the two magnitudes through 32 iterations. • Negate the result if the signs of the multiplicand and multiplier differed. • Alternatively, the previous algorithm will work with some modifications.See B. Parhami, Computer Architecture, New York: Oxford University Press, 2005, pp. 199-200. ELEC2200-002 Lecture 2

  36. Example 1: 1010two× 0011two 1010two× 0011two = 101110two, i.e., -6ten×3ten = -18ten ELEC2200-002 Lecture 2

  37. Example 2: 1010two× 1011two 1010two× 1011two = 011110two, i.e., -6ten×(-5ten) = 30ten *Last iteration with a negative multiplier in 2’s complement. ELEC2200-002 Lecture 2

  38. Adding Partial Products y3 y2 y1 y0 multiplicand x3 x2 x1 x0 multiplier ________________________ x0y3 x0y2 x0y1 x0y0 four carry← x1y3 x1y2 x1y1 x1y0 partial carry← x2y3 x2y2 x2y1 x2y0 products carry← x3y3 x3y2 x3y1 x3y0 to be __________________________________________________ summed p7 p6 p5 p4 p3 p2 p1 p0 Requires three 4-bit additions. Slow. ELEC2200-002 Lecture 2

  39. Array Multiplier: Carry Forward y3 y2 y1 y0 multiplicand x3 x2 x1 x0 multiplier ________________________ x0y3 x0y2 x0y1 x0y0 four x1y3 x1y2 x1y1 x1y0 partial x2y3 x2y2 x2y1 x2y0 products x3y3 x3y2 x3y1 x3y0 to be __________________________________________________ summed p7 p6 p5 p4 p3 p2 p1 p0 Note: Carry is added to the next partial product (carry-save addition). Adding the carry from the final stage needs an extra (ripple-carry stage. These additions are faster but we need four stages. ELEC2200-002 Lecture 2

  40. Basic Building Blocks • Two-input AND • Full-adder ith bit of kth partial product yi xk sum bit from (k-1)th sum carry bits from (k-1)th sum yi x0 Full adder Slide 24 p0i = x0yi 0th partial product carry bits to (k+1)th sum sum bit to (k+1)th sum ELEC2200-002 Lecture 2

  41. y3 y2 y1 y0 Array Multiplier x0 ppk yj xi 0 x1 ci 0 0 0 0 0 FA x2 co ppk+1 0 x3 Critical path 0 0 FA FA FA FA p3 p2 p1 p0 p7 p6 p5 p4 ELEC2200-002 Lecture 2

  42. Types of Array Multipliers • Baugh-Wooley Algorithm: Signed product by two’s complement addition or subtraction according to the MSB’s. • Booth multiplier algorithm • Tree multipliers • Reference: N. H. E. Weste and D. Harris, CMOS VLSI Design, A Circuits and Systems Perspective, Third Edition, Boston: Addison-Wesley, 2005. ELEC2200-002 Lecture 2

  43. Binary Division (Unsigned) 1 3 Quotient 1 1 / 1 4 7 Divisor / Dividend 1 1 3 7 Partial remainder 3 3 4 Remainder 0 0 0 0 1 1 0 1 1 0 1 1 / 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 ELEC2200-002 Lecture 2

  44. 4-bit Binary Division (Unsigned) 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 negative →quotient bit 0 0 1 0 0→restore remainder 0 0 0 0 1 1 0 1 1 0 0 1 1 0 1 negative →quotient bit 0 0 1 0 0→restore remainder 0 0 0 1 1 0 1 1 0 0 1 1 1 1 negative →quotient bit 0 0 1 0 0→restore remainder 0 0 1 1 0 1 1 0 0 00 1 0positive →quotient bit 1 • Dividend: 6 = 0110 • Divisor: 4 = 0100 • 4 = 1100 • 6 • ─ = 1, remainder 2 • 4 Iteration 4 Iteration 3 Iteration 2 Iteration 1 ELEC2200-002 Lecture 2

  45. 32-bit Binary Division Flowchart Start $R=0, $M=Divisor, $Q=Dividend, count=n $R (33 b) | $Q (32 b) Shift 1-bit left $R, $Q $R and $M have one extra sign bit beyond 32 bits. $R ← $R - $M No Yes $R < 0? $Q0=0 $R←$R+$M $Q0=1 Restore $R (remainder) count = count - 1 Done $Q=Quotient $R= Remainder No count = 0? Yes ELEC2200-002 Lecture 2

  46. 4-bit Example: 6/4 = 1, Remainder 2 count 4 3 2 1 0 Remainder | Quotient ELEC2200-002 Lecture 2

  47. Division 33-bit $M (Divisor) Step 2: Subtract $R← $R - $M 33 33 33-bit ALU Initialize $R←0 Step 1: 1- bit left shift $R and $Q 32 times 33 33-bit $R (Remainder) 32-bit $Q (Dividend) Step 3: If sign-bit ($R)=0, set Q0=1 If sign-bit ($R)=1, set Q0=0 and restore $R V. C. Hamacher, Z. G. Vranesic and S. G. Zaky, Computer Organization, Fourth Edition, New York: McGraw-Hill, 1996. ELEC2200-002 Lecture 2

  48. Example: 8/3 = 2, Remainder = 2 Initialize $R = 0 0 0 0 0 $Q = 1 0 0 0 $M = 0 0 0 1 1 Step 1, L-shift $R,Q = 0 0 0 0 1 $Q = 0 0 0 0 Step 2, Add - $M = 1 1 1 0 1 $R = 1 1 1 1 0 Step 3, Set Q0 $Q = 0 0 0 0 Restore + $M = 0 0 0 1 1 $R = 0 0 0 0 1 Step 1, L-shift $R,Q = 0 0 0 1 0 $Q = 0 0 0 0 $M = 0 0 0 1 1 Step 2, Add - $M = 1 1 1 0 1 $R = 1 1 1 1 1 Step 3, Set Q0 $Q = 0 0 00 Restore + $M = 0 0 0 1 1 $R = 0 0 0 1 0 Iteration 1 Iteration 2 ELEC2200-002 Lecture 2

  49. Example: 8/3 = 2 (Remainder = 2) (Continued) $R = 0 0 0 1 0 $Q = 0 0 0 0 $M = 0 0 0 1 1 Step 1, L-shift $R ,Q = 0 0 1 0 0 $Q = 0 0 0 0$M = 0 0 0 1 1 Step 2, Add - $M = 1 1 1 0 1 $R = 0 0 0 0 1 Step 3, Set Q0 $Q = 0 0 0 1 Step 1, L-shift $R,Q = 0 0 0 1 0 $Q = 00 1 0 $M = 0 0 0 1 1 Step 2, Add - $M = 1 1 1 0 1 $R = 1 1 1 1 1 Step 3, Set Q0 $Q = 00 1 0Final quotient Restore + $M = 0 0 0 1 1 $R = 0 0 0 1 0 Iteration 3 Iteration 4 Remainder Note “Restore $R” in Steps 1, 2 and 4. This method is known as the RESTORING DIVISION. An improved method, NON-RESTORING DIVISION, is possible (see Hamacher, et al.) ELEC2200-002 Lecture 2

  50. Signed Division • Remember the signs and divide magnitudes. • Negate the quotient if the signs of divisor and dividend disagree. • There is no other direct division method for signed division. ELEC2200-002 Lecture 2

More Related