105
Binary Adder Design Spring 2003 1 Binary Adders

Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Embed Size (px)

Citation preview

Page 1: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 1

Binary Adders

Page 2: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 2

n-bit Addition

– Ripple Carry Adder

– Conditional Sum Adder

– (Carry Lookahead Adder)

Page 3: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 3

Ripple Carry Adder

incnbnans ]0:1[]0:1[]0:[

Page 4: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 4

Ripple Carry Adder

in

in

in

cbanbna

cbnbana

cnbnans

]0[]0[2]1:1[2]1:1[

]0[2]1:1[]0[2]1:1[

]0:1[]0:1[]0:[

11

11

Page 5: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 5

Ripple Carry Adder

])0[],1[(2]1:1[2]1:1[

]0[]0[2]1:1[2]1:1[

]0[2]1:1[]0[2]1:1[

]0:1[]0:1[]0:[

11

11

11

scnbna

cbanbna

cbnbana

cnbnans

in

in

in

Page 6: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 6

Ripple Carry Adder

]0[2]1[]1:1[]1:1[

])0[],1[(2]1:1[2]1:1[

]0[]0[2]1:1[2]1:1[

]0[2]1:1[]0[2]1:1[

]0:1[]0:1[]0:[

1

11

11

11

scnbna

scnbna

cbanbna

cbnbana

cnbnans

in

in

in

Page 7: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 7

Ripple Carry Adder

]0[2]1[2]2[]2:1[]2:1[

]0[2]1[]1:1[]1:1[

])0[],1[(2]1:1[2]1:1[

]0[]0[2]1:1[2]1:1[

]0[2]1:1[]0[2]1:1[

]0:1[]0:1[]0:[

1

1

11

11

11

sscnbna

scnbna

scnbna

cbanbna

cbnbana

cnbnans

in

in

in

Page 8: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 8

Ripple Carry Adder

]0[2]1[2]2[]2:1[]2:1[

]0[2]1[2]2[]2:1[]2:1[

]0[2]1[]1:1[]1:1[

])0[],1[(2]1:1[2]1:1[

]0[]0[2]1:1[2]1:1[

]0[2]1:1[]0[2]1:1[

]0:1[]0:1[]0:[

12

1

1

11

11

11

sscnbna

sscnbna

scnbna

scnbna

cbanbna

cbnbana

cnbnans

in

in

in

Page 9: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 9

Ripple Carry Adder

]0:1[2]2[]2:1[]2:1[

]0[2]1[2]2[]2:1[]2:1[

]0[2]1[2]2[]2:1[]2:1[

]0[2]1[]1:1[]1:1[

])0[],1[(2]1:1[2]1:1[

]0[]0[2]1:1[2]1:1[

]0[2]1:1[]0[2]1:1[

]0:1[]0:1[]0:[

2

12

1

1

11

11

11

scnbna

sscnbna

sscnbna

scnbna

scnbna

cbanbna

cbnbana

cnbnans

in

in

in

Page 10: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 10

Ripple Carry Adder

]0:1[2][]:1[]:1[

]0:1[2]2[]2:1[]2:1[

]0[2]1[2]2[]2:1[]2:1[

]0[2]1[2]2[]2:1[]2:1[

]0[2]1[]1:1[]1:1[

])0[],1[(2]1:1[2]1:1[

]0[]0[2]1:1[2]1:1[

]0[2]1:1[]0[2]1:1[

]0:1[]0:1[]0:[

2

12

1

1

11

11

11

kskcknbkna

scnbna

sscnbna

sscnbna

scnbna

scnbna

cbanbna

cbnbana

cnbnans

k

in

in

in

Page 11: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 11

Ripple Carry Adder

])0:1[],[(

]0:1[2][]:1[]:1[

]0:1[2]2[]2:1[]2:1[

]0[2]1[2]2[]2:1[]2:1[

]0[2]1[2]2[]2:1[]2:1[

]0[2]1[]1:1[]1:1[

])0[],1[(2]1:1[2]1:1[

]0[]0[2]1:1[2]1:1[

]0[2]1:1[]0[2]1:1[

]0:1[]0:1[]0:[

2

12

1

1

11

11

11

nsnc

kskcknbkna

scnbna

sscnbna

sscnbna

scnbna

scnbna

cbanbna

cbnbana

cnbnans

k

in

in

in

Page 12: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 12

Ripple Carry Adder

)192(128)32()(

)448(480)32()(

RCA

FARCA

RCA

FARCA

DDnnD

CCnnC

Page 13: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 13

Conditional Sum Adder

Main principle: pre-computing upper sums for the cases: c[k]=1 and c[k]=0

Assume n is power of 2:

incnbnans ]0:1[]0:1[]0:[

Page 14: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 14

Conditional Sum Adder

Main principle: pre-computing upper sums for the cases: c[k]=1 and c[k]=0

Assume n is power of 2:

innn

in

cnbnnbnanna

cnbnans

]0:12/[2]2/:1[]0:12/[2]2/:1[

]0:1[]0:1[]0:[2/2/

Page 15: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 15

Conditional Sum Adder

Main principle: pre-computing upper sums for the cases: c[k]=1 and c[k]=0

Assume n is power of 2:

inn

innn

in

cnbnannbnna

cnbnnbnanna

cnbnans

]0:12/[]0:12/[2]2/:1[]2/:1[

]0:12/[2]2/:1[]0:12/[2]2/:1[

]0:1[]0:1[]0:[

2/

2/2/

Page 16: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 16

Conditional Sum Adder

Main principle: pre-computing upper sums for the cases: c[k]=1 and c[k]=0

Assume n is power of 2:

])0:12/[],2/[(2]2/:1[]2/:1[

]0:12/[]0:12/[2]2/:1[]2/:1[

]0:12/[2]2/:1[]0:12/[2]2/:1[

]0:1[]0:1[]0:[

2/

2/

2/2/

nsncnnbnna

cnbnannbnna

cnbnnbnanna

cnbnans

nin

nin

nnin

Page 17: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 17

Conditional Sum Adder

Main principle: pre-computing upper sums for the cases: c[k]=1 and c[k]=0

Assume n is power of 2:

]0:12/[2]2/[2]2/:1[]2/:1[

])0:12/[],2/[(2]2/:1[]2/:1[

]0:12/[]0:12/[2]2/:1[]2/:1[

]0:12/[2]2/:1[]0:12/[2]2/:1[

]0:1[]0:1[]0:[

2/2/

2/

2/

2/2/

nsncnnbnna

nsncnnbnna

cnbnannbnna

cnbnnbnanna

cnbnans

nn

nin

nin

nnin

Page 18: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 18

Conditional Sum Adder

Main principle: pre-computing upper sums for the cases: c[k]=1 and c[k]=0

Assume n is power of 2:

]0:12/[2]2/[]2/:1[]2/:1[

]0:12/[2]2/[2]2/:1[]2/:1[

])0:12/[],2/[(2]2/:1[]2/:1[

]0:12/[]0:12/[2]2/:1[]2/:1[

]0:12/[2]2/:1[]0:12/[2]2/:1[

]0:1[]0:1[]0:[

2/

2/2/

2/

2/

2/2/

nsncnnbnna

nsncnnbnna

nsncnnbnna

cnbnannbnna

cnbnnbnanna

cnbnans

n

nn

nin

nin

nnin

Page 19: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 19

Conditional Sum Adder

Main principle: pre-computing upper sums for the cases: c[k]=1 and c[k]=0

Assume n is power of 2:

1]2/[

0]2/[

1]2/:1[]2/:1[

]2/:1[]2/:1[2]0:12/[

]0:12/[2]2/[]2/:1[]2/:1[

]0:12/[2]2/[2]2/:1[]2/:1[

])0:12/[],2/[(2]2/:1[]2/:1[

]0:12/[]0:12/[2]2/:1[]2/:1[

]0:12/[2]2/:1[]0:12/[2]2/:1[

]0:1[]0:1[]0:[

2/

2/

2/2/

2/

2/

2/2/

nc

nc

if

if

nnbnna

nnbnnans

nsncnnbnna

nsncnnbnna

nsncnnbnna

cnbnannbnna

cnbnnbnanna

cnbnans

n

n

nn

nin

nin

nnin

Page 20: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 20

Conditional Sum Adder

Page 21: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 21

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

Page 22: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 22

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

MUXCSACSA DnDnD )2/()(

Page 23: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 23

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

MUXFA

MUXCSACSADnD

DnDnD

)(log

)2/()(

2

Page 24: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 24

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

)16(14)32(

)(log)2/()(

2

CSA

MUXFA

MUXCSACSA

D

DnDDnDnD

Page 25: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 25

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

MUXCSACSA CnnCnC )12/()2/(3)(

Page 26: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 26

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

)1(3

)12/()2/(3)()(log2

CSAn

MUXCSACSA

C

CnnCnC

Page 27: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 27

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

FAn

CSAn

MUXCSACSA

C

C

CnnCnC

)(log

)(log

2

2

3

)1(3

)12/()2/(3)(

Page 28: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 28

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

FAn

FAn

CSAn

MUXCSACSA

C

C

C

CnnCnC

)3(log)(log

)(log

)(log

22

2

2

2

3

)1(3

)12/()2/(3)(

Page 29: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 29

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

FA

FAn

FAn

CSAn

MUXCSACSA

Cn

C

C

C

CnnCnC

57.1

)3(log)(log

)(log

)(log

22

2

2

2

3

)1(3

)12/()2/(3)(

Page 30: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 30

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

FA

FAn

FAn

CSAn

MUXCSACSA

Cn

C

C

C

CnnCnC

57.1

)3(log)(log

)(log

)(log

22

2

2

2

3

)1(3

)12/()2/(3)(

4398)32(1449)16(474)8(153)4(48)2(14)1(

CSA

CSA

CSA

CSA

CSA

CSA

CCCCCC

Page 31: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 31

Conditional Sum Adder

full adder implements adder for n=1: CSA(1) = FA !!!!

FA

FAn

FAn

CSAn

MUXCSACSA

Cn

C

C

C

CnnCnC

57.1

)3(log)(log

)(log

)(log

22

2

2

2

3

)1(3

)12/()2/(3)( n CSA RCA

1 14 142 48 284 153 568 474 11216 1449 22432 4398 448

Page 32: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 32

Carry Lookahead Adder

Main principle: combine carry computations of substrings

Carry into bit position i: c[i] is computed from bits: a[i-1:0],b[i-1:0], cin

• condition:

0

1

2]0:1[]0:1[

12]0:1[]0:1[

2]0:1[]0:1[][

in

ini

i

iin

c

c

if

if

ibia

ibia

cibiaic

Page 33: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 33

Carry Lookahead Adder

Main principle: combine carry computations of substrings

Carry into bit position i: c[i] is computed from bits: a[i-1:0],b[i-1:0], cin

• condition:

Definition propagate signals:

Definition generate signals:

1, 1]:[]:[1),( ijij ijbijabap

1, 10]:[]:[1),( ijij ijbijabag

10, 10]0:[]0:[1),,(),,( j

ininjinj cjbjacbagcbaG

0

1

2]0:1[]0:1[

12]0:1[]0:1[

2]0:1[]0:1[][

in

ini

i

iin

c

c

if

if

ibia

ibia

cibiaic

Page 34: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 34

Carry Lookahead Adder

Definition propagate signals:

Definition generate signals:

for i>0:

for i=0:

relation to carries:

Computation of the signals , :

for i>0:

for i=0: 2]0[]0[),,(

][][),(

][][),(

0,0

,

,

inin

ii

ii

cbacbag

ibiabag

ibiabap

),(, bap ii ),(, bag ii

1, 1]:[]:[1),( ijij ijbijabap

1, 10]:[]:[1),( ijij ijbijabag

10, 10]0:[]0:[1),,( j

ininj cjbjacbag

),,(),,(][ 10,1 iniini cbaGcbagic

Page 35: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 35

Carry Lookahead Adder

Combination of carry and propagate signals:

ijjkik ppp ,1,,

Page 36: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 36

)( ,1,1,,

,1,,

ijjkjkik

ijjkik

gpgg

ppp

Carry Lookahead Adder

Combination of carry and propagate signals:

Page 37: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 37

ijjkjk

ijjkjkik

ijjkik

gNANDpNANDg

gpgg

ppp

,1,1,

,1,1,,

,1,,

)(

Carry Lookahead Adder

Combination of carry and propagate signals:

Page 38: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 38

Carry Lookahead Adder

Combination of carry and propagate signals:

Given two such pairs of generate and propagate signals and

we define the operation :

ijjkjk

ijjkjkik

ijjkik

gNANDpNANDg

gpgg

ppp

,1,1,

,1,1,,

,1,,

)(

),( 1,1, jkjk pg ),( ,, ijij pg

ijjkijjkjk

ijijjkjkikik

ppgNANDpNANDg

pgpgpg

,1,,1,1,

,,1,1,,,

,

),(),(),(

Page 39: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 39

Carry Lookahead Adder

Carry computation based on computation of generate and propagate signals:

),(

),(),(),(),(

,,

,,1,11,1,,,,

jjjj

k

ij

iiiikkkkkkkkikik

pg

pgpgpgpg

Page 40: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 40

Carry Lookahead Adder

Carry computation based on computation of generate and propagate signals:

),(

),(),(),(),(

,,

,,1,11,1,,,,

jjjj

k

ij

iiiikkkkkkkkikik

pg

pgpgpgpg

),(

),(),(),(

),(),(

,,0

0,00,01,11,1,,

0,0,0,

jjjj

k

j

kkkkkkkk

kkkk

pg

pgpgpg

pgpG

Page 41: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 41

Carry Lookahead Adder

incnbnans ]0:1[]0:1[]0:[

Page 42: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 42

Carry Lookahead Adder

injj

in

cjbjnbjajna

cnbnans

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

Page 43: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 43

Carry Lookahead Adder

inj

injj

in

cjbjajnbjna

cjbjnbjajna

cnbnans

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

Page 44: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 44

Carry Lookahead Adder

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jin

jin

jjin

Page 45: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 45

Carry Lookahead Adder

])0:1[],[(2])[][(2]1:1[]1:1[

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

1

jsjcjbjajnbjna

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jj

jin

jin

jjin

Page 46: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 46

Carry Lookahead Adder

])0:1[],[(2),(2]1:1[]1:1[

])0:1[],[(2])[][(2]1:1[]1:1[

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

,,1

1

jsjcpgjnbjna

jsjcjbjajnbjna

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jjjjj

j

jj

jin

jin

jjin

Page 47: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 47

Carry Lookahead Adder

])0:1[],[(222]1:1[]1:1[

])0:1[],[(2),(2]1:1[]1:1[

])0:1[],[(2])[][(2]1:1[]1:1[

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

,1

,1

,,1

1

jsjcpgjnbjna

jsjcpgjnbjna

jsjcjbjajnbjna

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jjj

jjj

j

jjjjj

j

jj

jin

jin

jjin

Page 48: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 48

Carry Lookahead Adder

])0:1[],[(22]1:1[]1:1[

])0:1[],[(222]1:1[]1:1[

])0:1[],[(2),(2]1:1[]1:1[

])0:1[],[(2])[][(2]1:1[]1:1[

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

,1

,

,1

,1

,,1

1

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcjbjajnbjna

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jjj

jjj

jjj

jjj

j

jjjjj

j

jj

jin

jin

jjin

Page 49: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 49

Carry Lookahead Adder

]0:1[2][22]1:1[]1:1[

])0:1[],[(22]1:1[]1:1[

])0:1[],[(222]1:1[]1:1[

])0:1[],[(2),(2]1:1[]1:1[

])0:1[],[(2])[][(2]1:1[]1:1[

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

,1

,

,1

,

,1

,1

,,1

1

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcjbjajnbjna

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jjjj

jjj

jjj

jjj

jjj

jjj

j

jjjjj

j

jj

jin

jin

jjin

Page 50: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 50

Carry Lookahead Adder

]0:1[222]1:1[]1:1[

]0:1[2][22]1:1[]1:1[

])0:1[],[(22]1:1[]1:1[

])0:1[],[(222]1:1[]1:1[

])0:1[],[(2),(2]1:1[]1:1[

])0:1[],[(2])[][(2]1:1[]1:1[

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

1,0,1

,

,1

,

,1

,

,1

,1

,,1

1

jsGpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcjbjajnbjna

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jj

jjj

jjj

jjjj

jjj

jjj

jjj

jjj

jjj

j

jjjjj

j

jj

jin

jin

jjin

Page 51: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 51

Carry Lookahead Adder

]0:1[22]1:1[]1:1[

]0:1[222]1:1[]1:1[

]0:1[2][22]1:1[]1:1[

])0:1[],[(22]1:1[]1:1[

])0:1[],[(222]1:1[]1:1[

])0:1[],[(2),(2]1:1[]1:1[

])0:1[],[(2])[][(2]1:1[]1:1[

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

1,0,1

,

1,0,1

,

,1

,

,1

,

,1

,1

,,1

1

jsGpgjnbjna

jsGpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcjbjajnbjna

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jjjj

jjj

jj

jjj

jjj

jjjj

jjj

jjj

jjj

jjj

jjj

j

jjjjj

j

jj

jin

jin

jjin

Page 52: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 52

Carry Lookahead Adder

]0:1[22]1:1[]1:1[

]0:1[22]1:1[]1:1[

]0:1[222]1:1[]1:1[

]0:1[2][22]1:1[]1:1[

])0:1[],[(22]1:1[]1:1[

])0:1[],[(222]1:1[]1:1[

])0:1[],[(2),(2]1:1[]1:1[

])0:1[],[(2])[][(2]1:1[]1:1[

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

1,0,1

,0

1,0,1

,

1,0,1

,

,1

,

,1

,

,1

,1

,,1

1

jsGpGjnbjna

jsGpgjnbjna

jsGpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcjbjajnbjna

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jjjj

jj

jjjj

jjj

jj

jjj

jjj

jjjj

jjj

jjj

jjj

jjj

jjj

j

jjjjj

j

jj

jin

jin

jjin

Page 53: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 53

Carry Lookahead Adder

]0:1[22]1:1[]1:1[

]0:1[22]1:1[]1:1[

]0:1[222]1:1[]1:1[

]0:1[2][22]1:1[]1:1[

])0:1[],[(22]1:1[]1:1[

])0:1[],[(222]1:1[]1:1[

])0:1[],[(2),(2]1:1[]1:1[

])0:1[],[(2])[][(2]1:1[]1:1[

])0:1[],[(2]:1[]:1[

]0:1[]0:1[2]:1[]:1[

]0:1[2]:1[]0:1[2]:1[

]0:1[]0:1[]0:[

1,0,1

,0

1,0,1

,

1,0,1

,

,1

,

,1

,

,1

,1

,,1

1

jsGpGjnbjna

jsGpgjnbjna

jsGpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcpgjnbjna

jsjcjbjajnbjna

jsjcjnbjna

cjbjajnbjna

cjbjnbjajna

cnbnans

jjjj

jj

jjjj

jjj

jj

jjj

jjj

jjjj

jjj

jjj

jjj

jjj

jjj

j

jjjjj

j

jj

jin

jin

jjin

1,0,][ jjj Gpjs

Page 54: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 54

Carry Lookahead Adder

• Structure

• Implementation using Parallel Prefix Computation

Page 55: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 55

Parallel Prefix Computation

For associative operation o, we define

Parallel Prefix Operation:

n-bit INPUT:

n-bit OUTPUT:

Compute the operation o on all prefixes of X[n:1]

11 XXXY iii

]1:[nX

]1:[nY

Page 56: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 56

Carry Lookahead Adder

Parallel Prefix Computation:

n=1: n=2^k:

1212212

21212

21212211

122

''''

'

XXXXX

YXY

YXXXXXXXY

XXX

iii

iii

iiiiii

iii

11 XY

Page 57: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 57

Carry Lookahead Adder

Parallel Prefix Computation:

0)1()1()2/()(

PP

PPPPC

CnnCnC

Page 58: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 58

Carry Lookahead Adder

Parallel Prefix Computation:

0)1(2)2/()(

0)1()1()2/()(

PP

PPPP

PP

PPPP

DDnDnD

CCnnCnC

Page 59: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 59

Carry Lookahead Adder

Parallel Prefix Computation:

)(log2)(0)1(

2)2/()(0)1(

)1()2/()(

2 nDnDD

DnDnDC

CnnCnC

PP

PP

PPPP

PP

PPPP

Page 60: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 60

Carry Lookahead Adder

Parallel Prefix Computation:

)(log2)(0)1(

2)2/()(0)1(

)1()2/()(

2 nDnDD

DnDnDC

CnnCnC

PP

PP

PPPP

PP

PPPP

n cost delay

1 0 02 7 4(2)4 28 8(4)8 77 12(8)16 182 16(12)32 399 20(16)

Page 61: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 61

Carry Lookahead Adder

ORANDPPCLA CCnCnnCnC )1(2)()(

Page 62: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 62

Carry Lookahead Adder

ORANDPPCLA

ORANDPPCLADDDnDnD

CCnCnnCnC

2)()(

)1(2)()(

Page 63: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 63

Carry Lookahead Adder

26)32(2)()(

)1(2)()(

CLA

ORANDPPCLA

ORANDPPCLA

DDDDnDnD

CCnCnnCnC

Page 64: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 64

Carry Lookahead Adder

• cost:n CSA RCA CLA

1 14 14 142 48 28 314 153 56 728 474 112 16116 1449 224 34632 4398 448 723

Page 65: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 65

Carry Lookahead Adder

• delay:n CSA RCA CLA

1 4 4 6(4)2 6 8 10(6)4 8 16 14(10)8 10 32 18(14)16 12 64 22(18)32 14 128 26(22)

Page 66: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 66

Carry Lookahead Adder

• Example for n=8 – design

– computation of 183+43

Page 67: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 67

Carry Lookahead Adder

Page 68: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 68

Carry Lookahead Adder

Page 69: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 69

Carry Lookahead Adder

Page 70: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 70

Carry Lookahead Adder

Page 71: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 71

Carry Lookahead Adder

Page 72: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 72

Carry Lookahead Adder

Page 73: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 73

Carry Lookahead Adder

Page 74: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 74

Carry Lookahead Adder

Page 75: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 75

Carry Lookahead Adder

Page 76: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 76

Carry Lookahead Adder

Page 77: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 77

Addition/Substraction

• Addition and Subtration for n-bit two’s complement inputs– bit op signals the case of subtraction (op=1):

]]0:1[[)1(]0:1[[]]0:1[[ nbnans op

Page 78: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 78

Addition/Substraction

• Addition and Subtration for n-bit two’s complement inputs– bit op signals the case of subtraction (op=1):

0]]0:1[[]0:1[[

1]]0:1[[]0:1[[]]0:1[[)1(]0:1[[]]0:1[[

opifnbna

opifnbnanbnans op

Page 79: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 79

Addition/Substraction

• Addition and Subtration for n-bit two’s complement inputs– bit op signals the case of subtraction (op=1):

00]0]0:1[[]0:1[[

11]1]0:1[[]0:1[[

0]]0:1[[]0:1[[

1]]0:1[[]0:1[[]]0:1[[)1(]0:1[[]]0:1[[

opifnbna

opifnbna

opifnbna

opifnbnanbnans op

Page 80: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 80

Addition/Substraction

• Addition and Subtration for n-bit two’s complement inputs– bit op signals the case of subtraction (op=1):

0]]0:1[[]0:1[[

1]]0:1[[]0:1[[

00]0]0:1[[]0:1[[

11]1]0:1[[]0:1[[

0]]0:1[[]0:1[[

1]]0:1[[]0:1[[]]0:1[[)1(]0:1[[]]0:1[[

opifopopnbna

opifopopnbna

opifnbna

opifnbna

opifnbna

opifnbnanbnans op

Page 81: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 81

Addition/Substraction

• Addition and Subtration for n-bit two’s complement inputs– bit op signals the case of subtraction (op=1):

opopnbnaopifopopnbna

opifopopnbna

opifnbna

opifnbna

opifnbna

opifnbnanbnans op

]]0:1[[]0:1[[0]]0:1[[]0:1[[

1]]0:1[[]0:1[[

00]0]0:1[[]0:1[[

11]1]0:1[[]0:1[[

0]]0:1[[]0:1[[

1]]0:1[[]0:1[[]]0:1[[)1(]0:1[[]]0:1[[

Page 82: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 82

Addition/Substraction

• Addition and Subtration for n-bit two’s complement inputs– bit op signals the case of subtraction (op=1):

• assumption: add/sub result is representable with n bits

opopnbnaopifopopnbna

opifopopnbna

opifnbna

opifnbna

opifnbna

opifnbnanbnans op

]]0:1[[]0:1[[0]]0:1[[]0:1[[

1]]0:1[[]0:1[[

00]0]0:1[[]0:1[[

11]1]0:1[[]0:1[[

0]]0:1[[]0:1[[

1]]0:1[[]0:1[[]]0:1[[)1(]0:1[[]]0:1[[

Page 83: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 83

Addition/Substraction

• Addition and Subtration for n-bit two’s complement inputs– bit op signals the case of subtraction (op=1):

• assumption: add/sub result is representable with n bits

• Detection of the case that the result can not be represented with n bits(overflow)

opopnbnaopifopopnbna

opifopopnbna

opifnbna

opifnbna

opifnbna

opifnbnanbnans op

]]0:1[[]0:1[[0]]0:1[[]0:1[[

1]]0:1[[]0:1[[

00]0]0:1[[]0:1[[

11]1]0:1[[]0:1[[

0]]0:1[[]0:1[[

1]]0:1[[]0:1[[]]0:1[[)1(]0:1[[]]0:1[[

Page 84: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 84

Overflow

• Overflow: result too large for finite computer word– e.g., adding two n-bit numbers does not yield an n-bit number

0111+ 0001 note that overflow term is somewhat

misleading, 1000 it does not mean a carry “overflowed”

• Detecting Overflow– No overflow when adding a positive and a negative number– No overflow when signs are the same for subtraction– Overflow occurs when the value affects the sign:

• overflow when adding two positives yields a negative • or, adding two negatives gives a positive• or, subtract a negative from a positive and get a negative• or, subtract a positive from a negative and get a positive

– Consider the operations A + B, and A – B• Can overflow occur if B is 0 ?• Can overflow occur if A is 0 ?

Page 85: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 85

Effects of Overflow

• An exception (interrupt) occurs– Control jumps to predefined address for exception

– Interrupted address is saved for possible resumption

• Details based on software system / language– example: flight control vs. homework assignment

• correct sign has to be computed even for overflows– branches should also work correctly after overflows

– neg signal:

0]]0:1[[)1(]]0:1[[ nbnaneg sub

Page 86: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 86

Overflow & Sign

• Overflow detection:

incnbnaovf ]]0:1[[]]0:1[[ nT

Page 87: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 87

Overflow & Sign

• Overflow detection:

incnbnaovf ]]0:1[[]]0:1[[

innnn

in cnbnabacba ]0:2[]0:2[)(2][][ 111

nT

Page 88: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 88

Overflow & Sign

• Overflow detection:

incnbnaovf ]]0:1[[]]0:1[[

])0:2[],1[()(2

]0:2[]0:2[)(2][][

111

111

nsncba

cnbnabacba

nnn

innnn

in

nT

Page 89: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 89

Overflow & Sign

• Overflow detection:

incnbnaovf ]]0:1[[]]0:1[[

]0:2[])1[2]1[(2

])0:2[],1[()(2

]0:2[]0:2[)(2][][

111

111

111

nsncncba

nsncba

cnbnabacba

nnn

nnn

innnn

in

nT

Page 90: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 90

Overflow & Sign

• Overflow detection:

incnbnaovf ]]0:1[[]]0:1[[

]0:2[])1[2])1[],[((2

]0:2[])1[2]1[(2

])0:2[],1[()(2

]0:2[]0:2[)(2][][

111

111

111

1

nsncnsnc

nsncncba

nsncba

cnbnabacba

nnn

nnn

ninnn

nin

nT

Page 91: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 91

Overflow & Sign

• Overflow detection:

incnbnaovf ]]0:1[[]]0:1[[

]]0:1[[])1[][(2

]0:2[])1[2])1[],[((2

]0:2[])1[2]1[(2

])0:2[],1[()(2

]0:2[]0:2[)(2][][

111

111

111

1

nsncnc

nsncnsnc

nsncncba

nsncba

cnbnabacba

n

nnn

nnn

ninnn

nin

nT

Page 92: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 92

Overflow & Sign

• Overflow detection:

incnbnaovf ]]0:1[[]]0:1[[

]]0:1[[])1[][(2

]0:2[])1[2])1[],[((2

]0:2[])1[2]1[(2

])0:2[],1[()(2

]0:2[]0:2[)(2][][

111

111

111

1

nsncnc

nsncnsnc

nsncncba

nsncba

cnbnabacba

n

nnn

nnn

ninnn

nin

]1[][]]0:1[[])1[][(2 ncncTnsncnc nn

nT

Page 93: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 93

Overflow & Sign

• Overflow detection:

incnbnaovf ]]0:1[[]]0:1[[

]]0:1[[])1[][(2

]0:2[])1[2])1[],[((2

]0:2[])1[2]1[(2

])0:2[],1[()(2

]0:2[]0:2[)(2][][

111

111

111

1

nsncnc

nsncnsnc

nsncncba

nsncba

cnbnabacba

n

nnn

nnn

ninnn

nin

]1[][]]0:1[[])1[][(2 ncncTnsncnc nn

]1[][ ncncovf

nT

Page 94: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 94

Overflow & Sign

• Sign condition:

0]]0:1['[]]0:1[[ incnbnaneg

Page 95: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 95

Overflow & Sign

• Sign condition:

consider sign extended sum:

0]]0:1['[]]0:1[[ incnbnaneg

]0:1[])0:1[],1[(])0:1[],1[( nscnbnbnana in

Page 96: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 96

Overflow & Sign

• Sign condition:

consider sign extended sum:

sign computation:

0]]0:1['[]]0:1[[ incnbnaneg

]0:1[])0:1[],1[(])0:1[],1[( nscnbnbnana in

][nsneg

Page 97: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 97

Overflow & Sign

• Sign condition:

consider sign extended sum:

sign computation:

0]]0:1['[]]0:1[[ incnbnaneg

]0:1[])0:1[],1[(])0:1[],1[( nscnbnbnana in

][]1[]1[][

ncnbnansneg

Page 98: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 98

Overflow & Sign

• Sign condition:

consider sign extended sum:

sign computation:

0]]0:1['[]]0:1[[ incnbnaneg

]0:1[])0:1[],1[(])0:1[],1[( nscnbnbnana in

][),(][]1[]1[

][

1,1 ncbapncnbna

nsneg

nn

Page 99: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 99

Overflow & Sign

• Sign condition:

consider sign extended sum:

sign computation:

0]]0:1['[]]0:1[[ incnbnaneg

]0:1[])0:1[],1[(])0:1[],1[( nscnbnbnana in

),,(),(

][),(][]1[]1[

][

1,01,1

1,1

innnn

nn

cbaGbap

ncbapncnbna

nsneg

Page 100: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 100

Design of an Add/Subtract Unit

Page 101: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 101

Design of an Add/Subtract Unit

])1[][( ncncovf

Page 102: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 102

Design of an Add/Subtract Unit

])1[]1[]1[][(])1[][(

npncnpncncncovf

Page 103: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 103

Design of an Add/Subtract Unit

])1[]1[][(])1[]1[]1[][(

])1[][(

nsnpncnpncnpnc

ncncovf

Page 104: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 104

Design of an Add/Subtract Unit

])1[]1[][(])1[]1[][(

])1[]1[]1[][(])1[][(

nsnpncnsnpnc

npncnpncncncovf

Page 105: Binary Adder DesignSpring 2003 1 Binary Adders. Binary Adder DesignSpring 2003 2 n-bit Addition –Ripple Carry Adder –Conditional Sum Adder –(Carry Lookahead

Binary Adder Design Spring 2003 105

Design of an Add/Subtract Unit

])1[(])1[]1[][(])1[]1[][(

])1[]1[]1[][(])1[][(

nsnegnsnpncnsnpnc

npncnpncncncovf