0% found this document useful (0 votes)
22 views34 pages

4 Adders Binary

Uploaded by

cvanand2407
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views34 pages

4 Adders Binary

Uploaded by

cvanand2407
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

Adders

Dr. Heranmoy Maity

1
Adders?
Binary Adders are arithmetic circuits in the form of
half-adders and full-adders used to add together
two binary digits.
Another –
Adder is a combinational logic circuit which can be
constructed using just a few basic logic gates
allowing it to add together two or more binary
numbers is the Binary Adder

2
Outline
• One-bit adder,
• basic ripple-carry adder
• Carry-Lookahead adders (CLA)
• Brent-Kung adder

3
Adding Two One-bit Operands
• One-bit Half Adder:
A B Sum Cout
A B 0 0 0 0
0 1 1 0
1 0 1 0
Cout HA
1 1 0 1

Sum

4
Adding Two One-bit Operands
• One-bit Half Adder:
A B Sum Cout
A B 0 0 0 0
0 1 1 0
1 0 1 0
Cout HA
1 1 0 1

Sum From the truth table …….

Sum = A’B + AB’ = A ⊕ B

Cout = A.B

5
Adding Two One-bit Operands
• One-bit Half Adder:
A B Sum Cout
A B 0 0 0 0
0 1 1 0
1 0 1 0
Cout HA
1 1 0 1

Sum

Sum = A’B + AB’ = A ⊕ B

Cout = A.B

6
Adding Two One-bit Operands
• One-bit Full Adder:
Cin A B Sum Cout
A B 0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
Cout FA Cin 0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
Sum
1 1 0 0 1
1 1 1 1 1

7
Adding Two One-bit Operands
• One-bit Full Adder:
Cin A B Sum Cout
A B 0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
Cout FA Cin 0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
Sum
1 1 0 0 1
1 1 1 1 1

Sum = A’BCin’ + AB’Cin’ + A’B’Cin + ABCin


=A ⊕ B ⊕ Cin

Cout = ABCin’ + A’BCin + AB’Cin + ABCin


= A.B + B.Cin + A.Cin
8
Adding Two One-bit Operands
• One-bit Full Adder:
Cin A B Sum Cout
A B 0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
Cout FA Cin 0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
Sum
1 1 0 0 1
1 1 1 1 1
Sum = A’BCin’ + AB’Cin’ + A’B’Cin + ABCin
=A ⊕ B ⊕ Cin

9
Adding Two One-bit Operands
• One-bit Full Adder:
Cin A B Sum Cout
A B 0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
Cout FA Cin 0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
Sum
1 1 0 0 1
1 1 1 1 1
Sum = A’BCin’ + AB’Cin’ + A’B’Cin + ABCin
=A ⊕ B ⊕ Cin

10
Adding Two One-bit Operands
• One-bit Full Adder:
Cin A B Sum Cout
A B 0 0 0 0 0
Sum = A’BCin’ + AB’Cin’ + A’B’Cin + ABCin
=A ⊕ B ⊕ Cin
0 0 1 1 0
0 1 0 1 0
Cout FA Cin Cout = ABCin’ + A’BCin + AB’Cin + ABCin
= A.B + B.Cin + A.Cin
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
Sum
1 1 0 0 1
1 1 1 1 1

11
Adding Two One-bit Operands
• One-bit Full Adder Circuit Using Half-Adder
Cin A B Sum Cout
A B 0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
Cout FA Cin 0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
Sum
1 1 0 0 1
Cout = ABCin’ + A’BCin + AB’Cin + ABCin 1 1 1 1 1
= A.B + B.Cin + A.Cin

12
Adding Two One-bit Operands
• One-bit Full Adder Circuit Using Half-Adder
Cin A B Sum Cout
0 0 0 0 0
A B 0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
Cout FA Cin 1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
Sum
1 1 1 1 1

13
Adding Two One-bit Operands
• One-bit Full Adder Circuit Using Half-Adder
Cin A B Sum Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

14
Adding Two One-bit Operands
• One-bit Full Adder Circuit Using Half-Adder

15
N-Bit Ripple-Carry Adder: Series of FA Cells
• To add two n-bit numbers
An-1 Bn-1 A2 B2 A1 B1 A0 B0

Cn FA ... FA FA FA C0

Sn-1 S2 S1 S0

• Note: adder delay = Tc * n


A B
• Tc = (Cin:Cout delay)
Cout FA Cin

Sum
16
4-bit Ripple Carry Addition: Example
A=0011 0 0 0 1 1 0 1 1
B=0101 A3 B3 A2 B2 A1 B1 A0 B0

C4 C C C
FA FA FA FA C 0
3 2 1
0

S3 S2 S1 S0

T=0 0 0 0 0 0 0 0 0 S=0000
T=1 0 0 0 1 0 1 1 0 S=0110
T=2 0 0 0 1 1 0 1 0 S=0100
T=3 0 0 1 0 1 0 1 0 S=0000
T=4 0 1 1 0 1 0 1 0 S=1000

17
One-bit Full Adder Implementation
• Direct gate implementation
Sum = A ⊕ B ⊕ Cin Cout = A.B + B.Cin + A.Cin
= A.B + Cin. (A+B)
A A
B Sum B
Cin Cout
Cin
A
B

32 Transistors Used

[WE92] p516

18
One-Bit Full Adder: Share Logic
• An observation
Cin A B Sum Cout
▪ Almost always,
0 0 0 0 0
sum = NOT carry
0 0 1 1 0
0 1 0 1 0
includes 111 0 1 1 0 1
1 0 0 1 0
Sum = A.B.Cin + 1 0 1 0 1
(A+B+Cin).Cout 1 1 0 0 1
1 1 1 1 1
excludes
000

19
One-Bit Full Adder: Transistor Implementation
Cout = A.B + C.(A+B) Sum = A.B.C + (A+B+C).Cout

C B A
A B 28 Transistors
A
B C B
A Cou C Su
m
C At C
A B B B
A B C A
– Use inverters to get Cout and Sum [WE92] p517
[Rab96] p390
– C transistors close to output
– Cout delay: 2 inverting stages (1-stage possible?)
– Sum delay: 3 inverting stages (not an issue, though)
20
Outline
• One-bit adder, basic ripple-carry adder
• Carry-Lookahead adders (CLA)
• Brent-Kung adder

21
Carry-Lookahead Adder: Idea
• New look: carry propagation
• Idea:
▪ Try to “predict” Ck earlier than Tc*k
▪ Instead of passing through k stages, compute
Ck separately using 1-stage CMOS logic
• Carry propagation: an example
Bit position 7 6 5 4 3 2 1 0

Carry 1 0 0 1 1 1 1
A 0 1 0 0 1 1 0 1 +
B 0 1 0 0 0 1 1 1

Sum 1 0 0 1 0 1 0 0
22
Carry-Lookahead Adder (CLA): One Bit
• What happens to the
A B Cin Cout
propagating carry in
bit position k? 0 0 - 0 (kill)
0 1 C C
0-propag kill 1 0 C C(propagat
ate
A B A 1 1 - 1e)
B
C Cout
(propagat
B p = A+B e)
(or A ⊕
B)
A A
B (generate
g = A.B
1-propaga genera ) [Rab96] p391
23
CLA: Propagation Equations
• If C4=1, then either:
▪ g3 generated at bit pos 3
▪ g2.p3 generated at bit pos 2, propagated 3
▪ g1.p2.p3 generated at bit pos 1, propagated 2,3
▪ g0.p1.p2.p3 generated at bit pos 0, propagated 1,2,3
▪ Cin.p0.p1.p2.p3 input carry, propagated 0,1,2,3
• C4 = g3+ g2.p3 + g1.p2.p3 + g0.p1.p2.p3 +
Cin.p0.p1.p2.p3

Implement C4 as a one-stage CMOS logic


 large delay

24
CLA: 12-Bit Example
A= 110 100 101
B= 011
1 011
1 110
0
A1 A1 A
1 A A A 0A A A A 1 A A
B1 B1 B B B B B B B B B B
1 0 9 8 7 6 5 4 3 2 1 0
1 0 9 8 7 6 5 4 3 2 1 0
p, p, p, p, p, p, p, p, p, p, p, p,
g g g g g g g g g g g g 0
C
Carry Carry Carry 0

Generator Generator Generator


C1 C C
2 S1 S1 S S 8 S S S S 4 S S S S

T=0 1 0 0 0009 8 7
0 6
0005 4 3
0 2 0001 0

0 0 0
T=2 1 010 0 111 1 011
0 1 1
T=3 1 010 1 000 1 011
0 0 1
T=4 1 010 1 000 1 011
1 0 1
25
Summary: Carry Lookahead Adder
• CLA compared to ripple-carry adder:
▪ Faster (“4 times”?),
but delay still linear (w.r.t. # of bits)
▪ Larger area
o P, G signal generation
o Carry generation circuits
o Carry generation ckt for each bit position (no re-use)
• Limitation: cannot go beyond 4 bits of look-ahead
▪ Large p,g fan-out slows down carry generation

26
Outline
• One-bit adder, basic ripple-carry adder
• Carry-Lookahead adders (CLA)
• Brent-Kung adder

27
Binary Carry-Lookahead or Brent-Kung Adder
• Idea: use binary tree for carry propagation
🡺 logarithmic delay

A0 F

A1 A2 A3 A4 A5 A6 A7
tp ~ N
A0
A1
A2
A3
F
A4
A5
A6 tp ~ log2 (N
A7 ) Hall]
[© Prentice
28
Brent-Kung Adder
• Basic component

MS LS
B B
(gleft, pleft) (gright
glef plef grig prig pright)

t t ht ht
(g,
p)
g p
g = gleft + pleft •
gright
Concatenati p = pleft • pright
on [©Hauck]
29
Brent-Kung Adder: Structure
• Define (Gi, Pi)
▪ generate and propagate for least significant i bits
(G0,P0) = (g0,p0) gi = Ai.Bi pi = Ai⊕Bi
for i>0: (Gi, Pi) = (gi, pi) • (Gi-1, Pi-1)
= (gi, pi) • (gi-1, pi-1) • . . . . • (g1, p1)
• Key to Brent-Kung adder – use tree structure to
perform concatenations
7 6 5 4 3 2 1 0

C5 7-6 5-4 3-2 1-0


?
No! Doesn’t know 7-4 3-0
about
7-0 [©Hauck]
C yet! 30
Brent-Kung: the Complete Tree
( 0 ,p0 )
C0 C2
C1 C4
g( 1 ,p1 )
g

( 2 ,p2 ) C3 C5
g( ,p )
3 3
g

( 4 ,p4 ) C6
g( 5 ,p5 )
g

( 6 ,p6 ) C7
g( ,p )
7 7
g

t ad ~ 2 (N) [© Prentice Hall]


d log 31
Brent-Kung: Timing
x15 x14x13 x12 x x x x8 x x x x x x x x
11 10 9 7 6 5 4 3 2 1 0
Leve
1l

6
s15 s14 s13 s12 s s s s s s s s s s s s [Par00] p.102
11 10 9 8 7 6 5 4 3 2 1 0
[©Oxford U Press]
32
Brent-Kung Adder: Summary
• Area
▪ On average, twice as large as ripple adder
▪ Layout of the cells is very compact
• Delay
▪ Logarithmic time
▪ Once carry signals are ready,
sum bits derived in const time
▪ Good for wide adders

33
Thank You

34

You might also like