Você está na página 1de 44

|  

  |




 

Single-bit Addition
Carry-Ripple Adder
Carry-Skip Adder
Carry-Lookahead Adder
Carry-Select Adder
Carry-Increment Adder
Tree Adder



a 




 
A

alf Adder
S

CV 

CV 

C
S

a 

Cout



Cout

Full Adder
S

Cout

Cout S




 
A

alf Adder
SA

Full Adder
SA

Cout

CV  AB

Cout

CV  MAJ  A B C 

C
S

Cout

Cout S



a 




a 
For a full adder, define what happens to carries
Generate: Cout = 1 independent of C
G=
Propagate: Cout = C
P=
Kill: Cout = 0 independent of C
K=



a 




a 
For a full adder, define what happens to carries
Generate: Cout = 1 independent of C
G=AB
Propagate: Cout = C
P=A B
Kill: Cout = 0 independent of C
K = ~A ~B



a 




 |
Brute force implementation from eqns

SA

CV  MAJ  A B C 
A

B
C

MAJ

C
B

C
B

B
A



B
S

Cout

A
B
C
A
B
C

A
B

Cout

a 




 ||
Factor S in terms of Cout
S = ABC + (A + B + C)(~Cout)
Critical path is usually C to Cout in ripple adder
MINORITY
A
B
C
Cout

Cout



a 





Clever layout circumvents usual line of diffusion
Use wide transistors on critical path
Eliminate output inverters



a 




 |||
Complementary Pass Transistor Logic (CPL)
Slightly faster, but more area
B
B
B

A
S

Cout

A
A
S
A

Cout

B
B



a 




 |
2ual-rail domino
Very fast, but large and power hungry
Used in very fast multipliers
0
C_h
A_h

B_h

A_h

C_l

B_h

A_l

C_h
B_h
A_h

C_l
B_l

Cout _l

A_l
B_l

B_l

S_l



Cout _h

S_h
C_h
B_h
A_l

a 




a
N-bit adder called CPA
Each sum bit depends on all previous carries
ow do we compute all these carries quickly?
AN...1 BN...1
Cout

Cout

+
SN...1



Cin

Cin





a 

Cout




Cin
carries
A4...1
B4...1
S4...1





Simplest design: cascade full adders
Critical path goes from Cin to Cout
2esign full adder to have fast carry delay

A4

B4

Cout

B3

C3
S4



A3

A2

B2

C2
S3

A1

B1
Cin

C1
S2

a 

S1



|  
Critical path passes through majority gate
Built from minority + inverter
Eliminate inverter and use inverting full adder
A4

B4

Cout

B3

C3
S4



A3

A2

B2

C2
S3

A1

B1

Cin

C1
S2

a 

S1



 a
Equations often factored into G and P
Generate and propagate for groups spanning i:j



Base case
 
 

 C

 

 
 

Sum:
S


a 




 a
Equations often factored into G and P
Generate and propagate for groups spanning i:j
     
   

Base case
  A  B
  A

 C

 

  C
  

Sum:
S 


 
a 




a 
B4

A4

A3

B3

B2

A2

A1

B1

Cin

1: Bitwise PG logic
G4

P4

G3

P3

G2

P2

G1

P1

G0

P0

2: Group PG logic
G3:0

G2:0

G1:0

G0:0

C3

C2

C1

C0

3: Sum logic

C4
Cout



S4

S3

S2

S1

a 





      
A4

B4

G4

P4

A3

B3

G3

P3

A2

B2

G2

P2

A1

B1

G1

P1

Cin

G0

G3:0

G2:0

G1:0

G0:0

C3

C2

C1

C0

P0

C4
Cout



S4

S3

S2

S1

a 




a 
Bit Position
15

14

13

12

11

10

p? 

2elay

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0



a 




a 
Bit Position
15

14

13

12

11

10

p?  p d    p AO  pV?

2elay

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0



a 




a 
Black cell
i:k

Gray cell

k-1:j

i:k

i:j
Gi:k
Pi:k
Gk-1:j
Pk-1:j



Buffer

k-1:j

i:j

i:j

i:j
Gi:j

Gi:k
Pi:k
Gk-1:j

Pi:j

a 

Gi:j

Gi:j

Gi:j

Pi:j

Pi:j




 
Carry-ripple is slow through all N stages
Carry-skip allows carry to skip over groups of n bits
2ecision based on n-bit propagate signal

Cout

A16:13 B16:13

A12:9 B12:9

A8:5 B8:5

A4:1

P16:13

P12:9

P8:5

P4:1

1
0

C12
+
S16:13



1
0

C8
+

1
0

S12:9

a 

C4
+
S8:5

B4:1

1
0

Cin

S4:1




 a 


16

15

14

13

12

11

10

16:0 15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0

For k n-bit groups (N = nk)


p@


a 




 a 


16

15

14

13

12

11

10

16:0 15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0

For k n-bit groups (N = nk)


p@


p d    A

     p AO  pV?
a 




   !


16

15

14

13

12

11

10

16:0 15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0

2elay grows as O(sqrt(N))




a 




"
Carry-lookahead adder computes Gi:0 for many bits
in parallel.
Uses higher-valency cells with more than two inputs.

A16:13 B16:13
Cout

G16:13
P16:13
+
S16:13



C12

A12:9 B12:9
G12:9
P12:9

A8:5 B8:5
C8

+
S12:9

a 

A4:1
C4

G8:5
P8:5

B4:1

G4:1
P4:1

S8:5

S4:1

Cin




a 
16

15

14

13

12

11

10

16:0 15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0



a 




"   

i:k k-1:l l-1:m m-1:j

i:j

Gi:k
Pi:k
Gk-1:l
Pk-1:l
Gl-1:m
Pl-1:m
Gm-1:j

Gi:j

Pi:j

Pm-1:j



a 




 
Trick for critical paths dependent on late input X
Precompute two possible outputs for X = 0, 1
Select proper output when X arrives
Carry-select adder precomputes n-bit sums
For both possible carries into n-bit group
A16:13 B16:13
0

+
Cout

B8:5

C8

B4:1

C4
+

Cin

a 

+
1

S12:9

A4:1
0

S16:13

A8:5
0

C12
1



A12:9 B12:9

S8:5

S4:1




|  


Factor initial PG and final XOR out of carry-select
15

14

13

12

11

10

13:12

9:8

14:12
15:12

5:4

10:8
11:8

6:4
7:4

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0

p ?


a 




|  


Factor initial PG and final XOR out of carry-select
15

14

13

12

11

10

13:12

9:8

14:12
15:12

5:4

10:8
11:8

6:4
7:4

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0

p ? p d   A


     p AO  pV?
a 




   !


Also buffer
noncritical
signals

15

14

13

12

11

10

12:11

8:7

13:11

5:4

9:7

14:11

3:2

6:4

10:7

15:11

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0
15

14

13

12

11

10

12:11

8:7

13:11

14:11

9:7

10:7

5:4
6:4

3:2

1:0

3:0

6:0

15:11

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0



a 





If lookahead is good, lookahead across lookahead!
Recursive lookahead gives O(log N) delay
Many variations on tree adders



a 




  
15 14 13 12 11 10

15:14

13:12

15:12

11:10

9:8

11:8

7:6

5:4

7:4

15:8

3:2

1:0

3:0

7:0

11:0

13:0

9:0

5:0

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0


a 




 
15 14 13 12 11 10

15:14

13:12

11:10

15:12 14:12

15:8

14:8

11:8 10:8

13:8

9:8

7:6

7:4

5:4

6:4

3:2

3:0

1:0

2:0

12:8

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0



a 




  
15 14 13 12 11 10

15:14 14:13 13:12 12:11 11:10 10:9

9:8

8:7

7:6

6:5

5:4

4:3

3:2

2:1

15:12 14:11 13:10

3:0

2:0

15:8

14:7

13:6

12:9

11:8 10:7

9:6

8:5

7:4

6:3

5:2

4:1

12:5

11:4 10:3

9:2

8:1

7:0

6:0

5:0

4:0

1:0

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0



a 




# 
Ideal N-bit tree adder would have
O = log N logic levels
Fanout never exceeding 2
No more than one wiring track between levels
2escribe adder with 3-2 taxonomy (m, , )
Logic levels:
O+m
Fanout:
2 +1
Wiring tracks:
2
Known tree adders sit on plane defined by
m+ +  = O-1


a 




# 
m(Logic Levels)


(Fanout)


















(Wire Tracks)



a 




# 
m(Logic Levels)


! "

(Fanout)


#$ #%















   


(Wire Tracks)



a 




  
15 14 13 12 11 10

15:14

13:12

11:10

9:8

7:6

5:4

3:2

15:12

13:10

11:8

9:6

7:4

5:2

3:0

15:8

13:6

11:4

9:2

7:0

5:0

1:0

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0


a 




 $%&'('('()
15 14 13 12 11 10

15:14 14:13 13:12 12:11 11:10 10:9

9:8

8:7

7:6

6:5

5:4

4:3

3:2

2:1

15:12 14:11 13:10

3:0

2:0

15:8

14:7

13:6

12:9

11:8 10:7

9:6

8:5

7:4

6:3

5:2

4:1

12:5

11:4 10:3

9:2

8:1

7:0

6:0

5:0

4:0

1:0

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0



a 




 "
15 14 13 12 11 10

15:14

13:12

15:12

11:10

9:8

11:8

15:8

13:8

15:8

13:0

7:6

5:4

7:4

7:0

11:0

3:2

1:0

3:0

5:0

9:0

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0



a 




# 
(f) Ladner-Fischer
(b) Sklansky

15

15 14 13 12 11 10

14

15:14
15:14

13:12

11:10

9:8

7:6

5:4

3:2

13

12

15:8 14:8

11:8 10:8
13:8

7:4

6:4

3:0

15:014:0 13:0 12:011:010:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0

BrentKung

LadnerFischer

LadnerFischer

(Fanout)

13:12

11:10

15:14 14:13 13:12 12:11 11:10 10:9

9:8

8:7

7:6

6:5

5:4

4:3

3:2

2:1

15:12 14:11 13:10

9:6

8:5

7:4

6:3

5:2

4:1

3:0

2:0

12:9

11:8 10:7

15:8

13:8

15:8

13:0

15 14 13

15:14

 
5

14:7

13:6

12:5

11:4 10:3

9:2

8:1

7:0

6:0

5:0

7:6

5:4

3:2

7:4

 

1:0

 
 

9:0

8:0

7:0

6:0

5:0

4:0

3:0

2:0

13:12

11:10

15:12

anCarlson

9:8

7:6

11:8

5:4

3:2

7:4

15:8

1:0

3:0

7:0

11:0
9:0

5:0

4:0

 

15 14 13 12 11 10

13:6

(d) an-Carlson
15 14 13 12 11 10

(c) Kogge-Stone

14:7

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0

anCarlson

Knowles
[2,1,1,1]

15:8

11:10 10:9

9:8

8:7

7:6

6:5

5:4

4:3

3:2

2:1

12:9

11:8 10:7

9:6

8:5

7:4

6:3

5:2

4:1

3:0

2:0

12:5

11:4 10:3

9:2

8:1

7:0

6:0

5:0

4:0

1:0

Kogge 
Stone

15:14

13:12

11:10

9:8

7:6

5:4

3:2

15:12

13:10

11:8

9:6

7:4

5:2

3:0

15:8

13:6

11:4

9:2

7:0

5:0

1:0

(Wire Tracks)

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0

15:0 14:0 13:0 12:0 11:0 10:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0



1:0

0:0

5:0

9:0

New
(1,1,1)

Knowles
[4,2,1,1]

15:014:0 13:012:0 11:010:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0

15:12 14:11 13:10

1:0

 

15:14 14:13 13:12 12:11

3:0

7:0

11:0

12 11 10

13:0
15:8

 

(e) Knowles [2,1,1,1]


6

9:8

11:8

15:0 14:0 13:0 12:0 11:0 10:0

 

(a) Brent-Kung

 

 

 

Sklansky

m(Logic Levels)

2:0

12:8

15 14 13 12 11 10

10

1:0
15:12

15:12 14:12

11

a 





Adder architectures offer area / power / delay tradeoffs.
Choose the best one for your application.
&'
& "

a$
(
&$
 
&
)

$*
+$ "

,$&#

a

Carry-Ripple

N-1

Carry-Skip n=4

N/4 + 5

1.25N

Carry-Inc. n=4

N/4 + 2

2N

Brent-Kung

(L-1, 0, 0)

2log2N 1

2N

Sklansky

(0, L-1, 0)

log2N

N/2 + 1

0.5 Nlog2N

Kogge-Stone

(0, 0, L-1)

log2N

N/2

Nlog2N



a 




Você também pode gostar