Escolar Documentos
Profissional Documentos
Cultura Documentos
|
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
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
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
p d A
p AO pV?
a
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
"
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: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
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
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
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
9:8
8:7
7:6
6:5
5:4
4:3
3:2
2:1
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
9:8
8:7
7:6
6:5
5:4
4:3
3:2
2:1
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
9:8
8:7
7:6
6:5
5:4
4:3
3:2
2:1
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
1:0
3:0
7:0
11:0
12 11 10
13:0
15:8
9:8
11:8
(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