Instructor: Alexander Stoytchev

Slides:



Advertisements
Similar presentations
Lecture Adders Half adder.
Advertisements

ECE C03 Lecture 61 Lecture 6 Arithmetic Logic Circuits Hai Zhou ECE 303 Advanced Digital Design Spring 2002.
Design of Arithmetic Circuits – Adders, Subtractors, BCD adders
Chapter 6-1 ALU, Adder and Subtractor
Instructor: Alexander Stoytchev CprE 281: Digital Logic.
COE 202: Digital Logic Design Combinational Circuits Part 2 KFUPM Courtesy of Dr. Ahmad Almulhem.
C-H1 Lecture Adders Half adder. C-H2 Full Adder si is the modulo- 2 sum of ci, xi, yi.
Instructor: Alexander Stoytchev CprE 281: Digital Logic.
Instructor: Alexander Stoytchev CprE 281: Digital Logic.
Instructor: Alexander Stoytchev CprE 281: Digital Logic.
ETE 204 – Digital Electronics Combinational Logic Design Single-bit and Multiple-bit Adder Circuits [Lecture: 9] Instructor: Sajib Roy Lecturer, ETE,ULAB.
Instructor: Alexander Stoytchev CprE 281: Digital Logic.
Instructor: Alexander Stoytchev CprE 281: Digital Logic.
1 Arithmetic Building Blocks Today: Signed ArithmeticFirst Hour: Signed Arithmetic –Section 5.1 of Katz’s Textbook –In-class Activity #1 Second Hour: Adder.
Chapter Contents 3.1 Overview 3.2 Fixed Point Addition and Subtraction
Lecture Adders Half adder.
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Addition and multiplication
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Combinational Circuits
ECE 331 – Digital System Design
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
CSE Winter 2001 – Arithmetic Unit - 1
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Lecture 14 Logistics Last lecture Today
King Fahd University of Petroleum and Minerals
Arithmetic Functions & Circuits
Instructor: Alexander Stoytchev
Arithmetic Circuits (Part I) Randy H
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Digital Systems Section 12 Binary Adders. Digital Systems Section 12 Binary Adders.
CS 140 Lecture 14 Standard Combinational Modules
Chapter 5 – Number Representation and Arithmetic Circuits
Instructor: Alexander Stoytchev
Overview Part 1 – Design Procedure Part 2 – Combinational Logic
Instructor: Alexander Stoytchev
CSE 140 Lecture 14 Standard Combinational Modules
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Addition and multiplication
Instructor: Mozafar Bag-Mohammadi University of Ilam
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Lecture 14 Logistics Last lecture Today
Overview Iterative combinational circuits Binary adders
Addition and multiplication
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Instructor: Alexander Stoytchev
Number Representation
Instructor: Alexander Stoytchev
Lecture 2 Adders Half adder.
Presentation transcript:

Instructor: Alexander Stoytchev CprE 281: Digital Logic Instructor: Alexander Stoytchev http://www.ece.iastate.edu/~alexs/classes/

Fast Adders CprE 281: Digital Logic Iowa State University, Ames, IA Copyright © Alexander Stoytchev

Administrative Stuff HW5 is out It is due on Monday Oct 2 @ 4pm. Please write clearly on the first page (in block capital letters) the following three things: Your First and Last Name Your Student ID Number Your Lab Section Letter Also, please staple all of your pages together.

Administrative Stuff Labs Next Week Mini-Project This one is worth 3% of your grade. Make sure to get all the points. http://www.ece.iastate.edu/~alexs/classes/ 2017_Fall_281/labs/Project-Mini/

Quick Review

The problems in which row are easier to calculate? 82 61 - ?? 48 26 - ?? 32 11 - ?? 82 64 - ?? 48 29 - ?? 32 13 - ??

The problems in which row are easier to calculate? 82 61 - 21 48 26 - 22 32 11 - 21 Why? 82 64 - 18 48 29 - 19 32 13 - 19

Another Way to Do Subtraction 82 – 64 = 82 + 100 – 100 - 64

Another Way to Do Subtraction 82 – 64 = 82 + 100 – 100 - 64 = 82 + (100 – 64) - 100

Another Way to Do Subtraction 82 – 64 = 82 + 100 – 100 - 64 = 82 + (100 – 64) - 100 = 82 + (99 + 1 – 64) - 100

Another Way to Do Subtraction 82 – 64 = 82 + 100 – 100 - 64 = 82 + (100 – 64) - 100 = 82 + (99 + 1 – 64) - 100 = 82 + (99 – 64) +1 - 100

Another Way to Do Subtraction 82 – 64 = 82 + 100 – 100 - 64 = 82 + (100 – 64) - 100 = 82 + (99 + 1 – 64) - 100 Does not require borrows = 82 + (99 – 64) +1 - 100

9’s Complement (subtract each digit from 9) 99 64 - 35

10’s Complement (subtract each digit from 9 and add 1 to the result) 99 64 - 35 + 1 = 36

Another Way to Do Subtraction 82 – 64 = 82 + (99 – 64) +1 - 100

Another Way to Do Subtraction 9’s complement 82 – 64 = 82 + (99 – 64) +1 - 100

Another Way to Do Subtraction 9’s complement 82 – 64 = 82 + (99 – 64) +1 - 100 = 82 + 35 + 1 - 100

Another Way to Do Subtraction 9’s complement 82 – 64 = 82 + (99 – 64) +1 - 100 10’s complement = 82 + 35 + 1 - 100

Another Way to Do Subtraction 9’s complement 82 – 64 = 82 + (99 – 64) +1 - 100 10’s complement = 82 + 35 + 1 - 100 = 82 + 36 - 100

Another Way to Do Subtraction 9’s complement 82 – 64 = 82 + (99 – 64) +1 - 100 10’s complement = 82 + 35 + 1 - 100 = 82 + 36 - 100 // Add the first two. = 118 - 100

Another Way to Do Subtraction 9’s complement 82 – 64 = 82 + (99 – 64) +1 - 100 10’s complement = 82 + 35 + 1 - 100 = 82 + 36 - 100 // Add the first two. = 118 - 100 // Just delete the leading 1. // No need to subtract 100. = 18

2’s complement Let K be the negative equivalent of an n-bit positive number P. Then, in 2’s complement representation K is obtained by subtracting P from 2n , namely K = 2n – P

Deriving 2’s complement For a positive n-bit number P, let K1 and K2 denote its 1’s and 2’s complements, respectively. K1 = (2n – 1) – P K2 = 2n – P Since K2 = K1 + 1, it is evident that in a logic circuit the 2’s complement can computed by inverting all bits of P and then adding 1 to the resulting 1’s-complement number.

Find the 2’s complement of … 0 1 0 1 0 0 1 0 0 1 0 0 0 1 1 1

Find the 2’s complement of … 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 0 Invert all bits.

Find the 2’s complement of … 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 + 1 1 0 1 1 1 1 1 0 + 0 1 0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 + 1 0 0 0 1 1 0 0 1 + Then add 1.

Interpretation of four-bit signed integers [ Table 3.2 from the textbook ]

Interpretation of four-bit signed integers The top half is the same in all three representations. It corresponds to the positive integers.

Interpretation of four-bit signed integers In all three representations the first bit represents the sign. If that bit is 1, then the number is negative.

Interpretation of four-bit signed integers Notice that in this representation there are two zeros!

Interpretation of four-bit signed integers There are two zeros in this representation as well!

Interpretation of four-bit signed integers In this representation there is one more negative number.

Taking the 2’s complement negates the number decimal b3 b2 b1 b0 take the 2's complement +7 0111 1001 -7 +6 0110 1010 -6 +5 0101 1011 -5 +4 0100 1100 -4 +3 0011 1101 -3 +2 0010 1110 -2 +1 0001 1111 -1 +0 0000 -8 1000

Taking the 2’s complement negates the number decimal b3 b2 b1 b0 take the 2's complement +7 0111 1001 -7 +6 0110 1010 -6 +5 0101 1011 -5 +4 0100 1100 -4 +3 0011 1101 -3 +2 0010 1110 -2 +1 0001 1111 -1 +0 0000 -8 1000 This is the only exception

Taking the 2’s complement negates the number decimal b3 b2 b1 b0 take the 2's complement +7 0111 1001 -7 +6 0110 1010 -6 +5 0101 1011 -5 +4 0100 1100 -4 +3 0011 1101 -3 +2 0010 1110 -2 +1 0001 1111 -1 +0 0000 -8 1000 And this one too.

The number circle for 2's complement [ Figure 3.11a from the textbook ]

A) Example of 2’s complement addition ( + 5 ) 0 1 0 1 + ( + 2 ) + 0 0 1 0 ( + 7 ) 0 1 1 1 [ Figure 3.9 from the textbook ]

B) Example of 2’s complement addition + 1 1 0 1 1 0 1 1 0 0 1 0 2 ( ) 5 – 3 [ Figure 3.9 from the textbook ]

C) Example of 2’s complement addition + 0 0 1 1 0 1 0 1 1 1 1 0 1 ignore 5 ( ) 3 2 – [ Figure 3.9 from the textbook ]

D) Example of 2’s complement addition + 1 0 0 1 1 0 1 1 1 1 1 0 1 ignore 5 – ( ) 7 2 [ Figure 3.9 from the textbook ]

Naming Ambiguity: 2's Complement 2's complement has two different meanings: representation for signed integer numbers algorithm for computing the 2's complement (regardless of the representation of the number)

Naming Ambiguity: 2's Complement 2's complement has two different meanings: representation for signed integer numbers in 2's complement algorithm for computing the 2's complement (regardless of the representation of the number) take the 2's complement

Example of 2’s complement subtraction ( + 5 ) 0 1 0 1 0 1 0 1 – ( + 2 ) – 0 0 1 0 + 1 1 1 0 ( + 3 ) 1 0 0 1 1 ignore means take the 2's complement [ Figure 3.10 from the textbook ]

Example of 2’s complement subtraction ( + 5 ) 0 1 0 1 0 1 0 1 – ( + 2 ) – 0 0 1 0 + 1 1 1 0 ( + 3 ) 1 0 0 1 1 ignore Notice that the minus changes to a plus. means take the 2's complement [ Figure 3.10 from the textbook ]

Example of 2’s complement subtraction ( + 5 ) 0 1 0 1 0 1 0 1 – ( + 2 ) – 0 0 1 0 + 1 1 1 0 ( + 3 ) 1 0 0 1 1 ignore [ Figure 3.10 from the textbook ]

Example of 2’s complement subtraction ( + 5 ) 0 1 0 1 0 1 0 1 – ( + 2 ) – 0 0 1 0 + 1 1 1 0 ( + 3 ) 1 0 0 1 1 ignore [ Figure 3.10 from the textbook ]

Graphical interpretation of four-bit 2’s complement numbers [ Figure 3.11 from the textbook ]

Example of 2’s complement subtraction ( – 5 ) 1 0 1 1 1 0 1 1 – ( + 2 ) – 0 0 1 0 + 1 1 1 0 ( – 7 ) 1 1 0 0 1 ignore [ Figure 3.10 from the textbook ]

Example of 2’s complement subtraction ( + 5 ) 0 1 0 1 0 1 0 1 – ( – 2 ) – 1 1 1 0 + 0 0 1 0 ( + 7 ) 0 1 1 1 [ Figure 3.10 from the textbook ]

Example of 2’s complement subtraction ( – 5 ) 1 0 1 1 1 0 1 1 – ( – 2 ) – 1 1 1 0 + 0 0 1 0 ( – 3 ) 1 1 0 1 [ Figure 3.10 from the textbook ]

Take Home Message Subtraction can be performed by simply adding the 2’s complement of the second number, regardless of the signs of the two numbers. Thus, the same adder circuit can be used to perform both addition and subtraction !!!

Adder/subtractor unit y y y n – 1 1 Add ¤ Sub control x x x n – 1 1 c n -bit adder c n s s s n – 1 1 [ Figure 3.12 from the textbook ]

XOR Tricks y control out

XOR as a repeater y

XOR as an inverter y 1

Addition: when control = 0 y y y n – 1 1 Add ¤ Sub control x x x n – 1 1 c n -bit adder c n s s s n – 1 1 [ Figure 3.12 from the textbook ]

Addition: when control = 0 y y y n – 1 1 Add ¤ Sub control x x x n – 1 1 c n -bit adder c n s s s n – 1 1 [ Figure 3.12 from the textbook ]

Addition: when control = 0 y y y n – 1 1 Add ¤ Sub control x x x n – 1 1 yn-1 … y1 y0 c n -bit adder c n s s s n – 1 1 [ Figure 3.12 from the textbook ]

Subtraction: when control = 1 y y y n – 1 1 Add ¤ Sub control x x x n – 1 1 c n -bit adder c n s s s n – 1 1 [ Figure 3.12 from the textbook ]

Subtraction: when control = 1 y y y n – 1 1 1 Add ¤ Sub control 1 1 1 x x x n – 1 1 c n -bit adder c n s s s n – 1 1 [ Figure 3.12 from the textbook ]

Subtraction: when control = 1 y y y n – 1 1 1 Add ¤ Sub control 1 1 1 x x x n – 1 1 yn-1 … y1 y0 c n -bit adder c n s s s n – 1 1 [ Figure 3.12 from the textbook ]

Subtraction: when control = 1 y y y n – 1 1 1 Add ¤ Sub control 1 1 1 x x x n – 1 1 yn-1 … y1 y0 c n -bit adder c n 1 carry for the first column! s s s n – 1 1 [ Figure 3.12 from the textbook ]

Examples of determination of overflow ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 [ Figure 3.13 from the textbook ]

Examples of determination of overflow 0 1 1 0 0 0 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 1 1 1 0 0 1 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 Include the carry bits: c4 c3 c2 c1 c0

Examples of determination of overflow 0 1 1 0 0 0 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 1 1 1 0 0 1 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 Include the carry bits: c4 c3 c2 c1 c0

Examples of determination of overflow c 4 = 3 1 c 4 = 3 0 1 1 0 0 0 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 c 4 1 = 3 c 4 1 = 3 1 1 1 0 0 1 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 Include the carry bits: c4 c3 c2 c1 c0

Examples of determination of overflow c 4 = 3 1 c 4 = 3 0 1 1 0 0 0 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 c 4 1 = 3 c 4 1 = 3 1 1 1 0 0 1 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 Overflow occurs only in these two cases.

Examples of determination of overflow c 4 = 3 1 c 4 = 3 0 1 1 0 0 0 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 c 4 1 = 3 c 4 1 = 3 1 1 1 0 0 1 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 Overflow = c3c4 + c3c4

Examples of determination of overflow c 4 = 3 1 c 4 = 3 0 1 1 0 0 0 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 c 4 1 = 3 c 4 1 = 3 1 1 1 0 0 1 0 0 0 0 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 Overflow = c3c4 + c3c4 XOR

Calculating overflow for 4-bit numbers with only three significant bits

Calculating overflow for n-bit numbers with only n-1 significant bits

Detecting Overflow x y x y x y c c c FA c FA FA c s s s n – 1 n – 1 1 c 1 c c FA c FA FA c n n ” 1 2 s s s n – 1 1

Detecting Overflow (with one extra XOR) y x y x y n – 1 n – 1 1 1 c 1 c c FA c FA FA c n n ” 1 2 s s s n – 1 1 overflow

Another way to look at the overflow issue X= x3 x2 x1 x0 Y= y3 y2 y1 y0 S= s3 s2 s1 s0 +

Another way to look at the overflow issue X= x3 x2 x1 x0 Y= y3 y2 y1 y0 S= s3 s2 s1 s0 + If both numbers that we are adding have the same sign but the sum does not, then we have an overflow.

Examples of determination of overflow ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1

Examples of determination of overflow ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1

Examples of determination of overflow 3 = y s 1 x 3 1 = y s ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 x 3 = y 1 s x 3 1 = y s ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1

Examples of determination of overflow 3 = y s 1 x 3 1 = y s ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 x 3 = y 1 s x 3 1 = y s ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 In 2's complement, both +9 and -9 are not representable with 4 bits.

Examples of determination of overflow 3 = y s 1 x 3 1 = y s ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 x 3 = y 1 s x 3 1 = y s ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 Overflow occurs only in these two cases.

Examples of determination of overflow 3 = y s 1 x 3 1 = y s ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( + 2 ) 0 0 1 0 + ( + 2 ) 0 0 1 0 ( + 9 ) 1 0 0 1 ( – 5 ) 1 0 1 1 x 3 = y 1 s x 3 1 = y s ( + 7 ) 0 1 1 1 ( – 7 ) 1 0 0 1 + + + ( – 2 ) 1 1 1 0 + ( – 2 ) 1 1 1 0 ( + 5 ) 1 0 1 0 1 ( – 9 ) 1 0 1 1 1 Overflow = x3 y3 s3 + x3 y3 s3

Another way to look at the overflow issue X= x3 x2 x1 x0 Y= y3 y2 y1 y0 S= s3 s2 s1 s0 + If both numbers that we are adding have the same sign but the sum does not, then we have an overflow. Overflow = x3 y3 s3 + x3 y3 s3

How long does it take to compute all sum bits and all carry bits? x y x y x y n – 1 n – 1 1 1 c 1 c c FA c FA FA c n n ” 1 2 s s s n – 1 1

Can we perform addition even faster? The goal is to evaluate very fast if the carry from the previous stage will be equal to 0 or 1.

The Full-Adder Circuit [ Figure 3.3c from the textbook ]

The Full-Adder Circuit Let's take a closer look at this. [ Figure 3.3c from the textbook ]

Decomposing the Carry Expression ci+1 = xi yi + xi ci + yi ci

Decomposing the Carry Expression ci+1 = xi yi + xi ci + yi ci ci+1 = xi yi + (xi + yi )ci

Decomposing the Carry Expression ci+1 = xi yi + xi ci + yi ci ci+1 = xi yi + (xi + yi )ci yi xi ci+1 ci

Another Way to Draw the Full-Adder Circuit ci+1 = xi yi + xi ci + yi ci ci+1 = xi yi + (xi + yi )ci yi xi ci ci+1 si

Another Way to Draw the Full-Adder Circuit ci+1 = xi yi + (xi + yi )ci yi xi ci ci+1 si

Another Way to Draw the Full-Adder Circuit ci+1 = xi yi + (xi + yi )ci gi pi yi xi ci ci+1 si

Another Way to Draw the Full-Adder Circuit g - generate p - propagate ci+1 = xi yi + (xi + yi )ci gi pi yi xi ci ci+1 si gi pi

Yet Another Way to Draw It (Just Rotate It) ci ci+1 si xi yi pi gi

Now we can Build a Ripple-Carry Adder x 1 y g p s Stage 1 Stage 0 c 2 [ Figure 3.14 from the textbook ]

Now we can Build a Ripple-Carry Adder x 1 y g p s Stage 1 Stage 0 c 2 [ Figure 3.14 from the textbook ]

The delay is 5 gates (1+2+2) x 1 y g p s Stage 1 Stage 0 c 2

n-bit ripple-carry adder: 2n+1 gate delays x 1 y g p s Stage 1 Stage 0 c 2 . . .

Decomposing the Carry Expression ci+1 = xi yi + xi ci + yi ci ci+1 = xi yi + (xi + yi )ci gi pi ci+1 = gi + pi ci ci+1 = gi + pi (gi-1 + pi-1 ci-1 ) = gi + pi gi-1 + pi pi-1 ci-1

Carry for the first two stages c1 = g0 + p0 c0 c2 = g1 + p1g0 + p1p0c0

The first two stages of a carry-lookahead adder x 1 y g p s c 2 [ Figure 3.15 from the textbook ]

It takes 3 gate delays to generate c1 x 1 y g p s c 2

It takes 3 gate delays to generate c2 x 1 y g p s c 2

The first two stages of a carry-lookahead adder x 1 y g p s c c 2

It takes 4 gate delays to generate s1 x 1 y g p s c c 2

It takes 4 gate delays to generate s2 x 1 y g p s c 2

N-bit Carry-Lookahead Adder It takes 3 gate delays to generate all carry signals It takes 1 more gate delay to generate all sum bits Thus, the total delay through an n-bit carry-lookahead adder is only 4 gate delays!

Expanding the Carry Expression ci+1 = gi + pi ci c1 = g0 + p0 c0 c2 = g1 + p1g0 + p1p0c0 c3 = g2 + p2g1 + p2p1g0 + p2p1p0c0 . . . c8 = g7 + p7g6 + p7p6g5 + p7p6p5g4 + p7p6p5p4g3 + p7p6p5p4p3g2 + p7p6p5p4p3p2g1+ p7p6p5p4p3p2p1g0 + p7p6p5p4p3p2p1p0c0

Expanding the Carry Expression ci+1 = gi + pi ci c1 = g0 + p0 c0 c2 = g1 + p1g0 + p1p0c0 c3 = g2 + p2g1 + p2p1g0 + p2p1p0c0 . . . c8 = g7 + p7g6 + p7p6g5 + p7p6p5g4 + p7p6p5p4g3 + p7p6p5p4p3g2 + p7p6p5p4p3p2g1+ p7p6p5p4p3p2p1g0 + p7p6p5p4p3p2p1p0c0 Even this takes only 3 gate delays

A hierarchical carry-lookahead adder with ripple-carry between blocks x y x y x y x y 31 – 24 31 – 24 23 – 16 23 – 16 15 – 8 15 – 8 7 – 7 – c 24 c c 8 c Block Block 16 Block Block c 32 3 2 1 s s s s 31 – 24 23 – 16 15 – 8 7 –

A hierarchical carry-lookahead adder with ripple-carry between blocks x y x y x y x y 31 – 24 31 – 24 23 – 16 23 – 16 15 – 8 15 – 8 7 – 7 – c 24 c c 8 c Block Block 16 Block Block c 32 3 2 1 s s s s 31 – 24 23 – 16 15 – 8 7 –

A hierarchical carry-lookahead adder with ripple-carry between blocks x y x y x y x y 31 – 24 31 – 24 23 – 16 23 – 16 15 – 8 15 – 8 7 – 7 – c 24 c c 16 8 c c 32 s s s s 31 – 24 23 – 16 15 – 8 7 –

A hierarchical carry-lookahead adder with ripple-carry between blocks x 31 24 – c 32 y s 15 8 16 7 3 1 [ Figure 3.16 from the textbook ]

A hierarchical carry-lookahead adder Block x 15 8 – y 7 3 1 Second-level lookahead c s P G 31 24 16 32 [ Figure 3.17 from the textbook ]

A hierarchical carry-lookahead adder Block x 15 8 – y 7 3 1 Second-level lookahead c s P G 31 24 16 32 c 32

A hierarchical carry-lookahead adder Block x 15 8 – y 7 3 1 Second-level lookahead c s P G 31 24 16 32 c 32

A hierarchical carry-lookahead adder Block x 15 8 – y 7 3 1 Second-level lookahead c s P G 31 24 16 32 c 32 ? ? ?

The Hierarchical Carry Expression c8 = g7 + p7g6 + p7p6g5 + p7p6p5g4 + p7p6p5p4g3 + p7p6p5p4p3g2 + p7p6p5p4p3p2g1+ p7p6p5p4p3p2p1g0 + p7p6p5p4p3p2p1p0c0

The Hierarchical Carry Expression c8 = g7 + p7g6 + p7p6g5 + p7p6p5g4 + p7p6p5p4g3 + p7p6p5p4p3g2 + p7p6p5p4p3p2g1+ p7p6p5p4p3p2p1g0 + p7p6p5p4p3p2p1p0c0

The Hierarchical Carry Expression c8 = g7 + p7g6 + p7p6g5 + p7p6p5g4 + p7p6p5p4g3 + p7p6p5p4p3g2 + p7p6p5p4p3p2g1+ p7p6p5p4p3p2p1g0 + p7p6p5p4p3p2p1p0c0 G0 P0

The Hierarchical Carry Expression c8 = g7 + p7g6 + p7p6g5 + p7p6p5g4 + p7p6p5p4g3 + p7p6p5p4p3g2 + p7p6p5p4p3p2g1+ p7p6p5p4p3p2p1g0 + p7p6p5p4p3p2p1p0c0 G0 P0 c8 = G0 + P0 c0

The Hierarchical Carry Expression c8 = G0 + P0 c0 c16 = G1 + P1 c8 = G1 + P1 G0 + P1 P0 c0 c24 = G2 + P2 G1 + P2 P1 G0 + P2 P1 P0 c0 c32 = G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 G0+ P3 P2 P1 P0 c0

A hierarchical carry-lookahead adder Block x 15 8 – y 7 3 1 Second-level lookahead c s P G 31 24 16 32 [ Figure 3.17 from the textbook ]

A hierarchical carry-lookahead adder Block x 15 8 – y 7 3 1 Second-level lookahead c s P G 31 24 16 32 c32 =G3+P3G2+P3P2G1 +P3 P2 P1 G0+P3 P2 P1 P0 c0 c16 = G1 + P1 G0 + P1 P0 c0 c8 = G0 + P0 c0 [ Figure 3.17 from the textbook ]

Hierarchical CLA Adder Carry Logic C8 – 5 gate delays C16 – 5 gate delays C24 – 5 Gate delays C32 – 5 Gate delays

Hierarchical CLA Critical Path C9 – 7 gate delays C17 – 7 gate delays C25 – 7 Gate delays

Total Gate Delay Through a Hierarchical Carry-Lookahead Adder Is 8 gates 3 to generate all Gj and Pj +2 to generate c8, c16, c24, and c32 +2 to generate internal carries in the blocks +1 to generate the sum bits (one extra XOR)

Questions?

THE END