Adders: Cmos Vlsi Design Cmos Vlsi Design
Adders: Cmos Vlsi Design Cmos Vlsi Design
Adders
Arithmetic unit
– Bit sliced data path – adder, multiplier, shifter,
comparator, etc.
Memory
– RAM, ROM, buffers, shift registers
Control
– Finite state machine (PLA, random logic)
– Counters
Interconnect
– Switches, arbiters, bus
A = O( n ), T = O(1)
– Parallel structure
€
– f is non-associative (r.s.n)
€ » serial structure
A = O( n ), T = O( n )
– f is associative (r.s.a)
» serial
A = or
O(single-tree structure
n ), T = O(log n)
€
17: Adders CMOS VLSI Design 4th Ed. 13
Recursive Function Evaluation
( am −1,...,a0 . a−1,...,am −n )
m-bit integer n-m bit fraction
A = an −12 n −1 + ...+ a1 2 + a0 = ∑ ai 2 i
i=0
– Range: [0, 2 n −1]
– Range −2 n −1, 2 n −1 −1
[ ]
€
17: Adders CMOS VLSI Design 4th Ed. 19
Binary Number Systems
– Complement: −A = 2 n − A = A +1, where A = ( an −1,an −2 ,...,a0 )
– Sign: an-1
– Properties:
€ asymmetric range, compatible with
unsigned numbers in many arithmetic operations.
(same treatment of positive and negative
numbers)
One’s (1’s) complement: similar to 2’s complement
n −2
– Value:
A = −a 2 n −1 −1 + ∑ a 2 i
n −1 ( ) i
i=0
n −1 n −1
– Range: [ (
−2 −1), 2 −1]
€
17: Adders CMOS VLSI Design 4th Ed. 20
Binary Number Systems
– Complement: −A = 2 n − A −1 = A
– Sign: an-1
– Properties: double representation of zero,
symmetric
€ range, modulo (2n-1) number system.
Sign-magnitude: alternative representation of signed
numbers n −2
– Value: A = (−1) ⋅ ∑ ai 2 i
a n−1
i=0
n −1 n −1
– Range: [ (
−2 −1), 2 −1]
gi = bi+1 ⊕bi , bn = 0;
i = 0,...,n −1 (n.)
R = ∑ ri 2 i = (C,S ) = C + S = A + R′
i=0
No carry propagation in S = R + T
ai ∈ {0,1,…,mi −1}
n −1
Range : M = ∏ mi , anywhere in Z
i=0
ai = Amod mi = A m i , A = mi ⋅ qi + ai
A + B mi = A mi + B mi = ai + bi m
mi i
A⋅ B m i = A m i ⋅ B m i = ai ⋅ bi m
mi i
−ai m = mi − ai m
i i
( m1,m0 ) = ( 3,2), M = 6
5 6 = A = ( a1,a0 ) = ( 5 3, 5 2 ) = (2,1)
4 + 5 6 = (1,0) + (2,1) = ( 1+ 2 3 , 0 +1 2 ) = (0,1) = 3 6
4⋅ 5 6 = (1,0)⋅ (2,1) = ( 1⋅ 2 3 , 0⋅1 2 ) = (2,0) = 2 6
s = a ⊕b (sum)
c out = ab (carry - out)
€ €
€
17: Adders CMOS VLSI Design 4th Ed. 44
1-Bit Adders
g = ab (generate) c 0 = ab
p = a ⊕b (propagate) c1 = a + b
s = a ⊕b ⊕c in = p ⊕c in €
€
c out = ab + ac in + bc in = ab + ( a ⊕b)c in
= g + pc in = pg + pc in = pa + pc in
= c in c 0 + c in c1
A A
B B
A
B S B
C C C
A B B
S
A C C C A
MAJ
B Cout
Cout
C B
B B C A
A B B
A A
Cout
B C B C
A
B C B C
S Cout
A
B C B C
A
B C B C
S Cout
B
A
S_l S_h
C_l
C_h C_h
B_l
B_h B_h
A_h A_l
( sk −1,…,s0 ) = ∑ s j 2 = ∑ ai
j
j =0 i=0
A = 7 ∑⎣m2 −k ⎦ ≈ 7( m − log m)
k =1
€ €
2c i+1 + si = ai + bi + c i
i = 0,1,…,n −1
€c 0 = c in , c out = c n (r.m.a)
€
17: Adders CMOS VLSI Design 4th Ed. 57
Carry Propagate Adders
N-bit adder called CPA
– Each sum bit depends on all previous carries
– How do we compute all these carries quickly?
AN...1 BN...1
Cout Cin Cout Cin
00000 11111 carries
Cout Cin
+ 1111 1111 A4...1
+0000 +0000 B4...1
SN...1 1111 0000 S4...1
A = 7n , T = 2n , AT = 14n 2
A4 B4 A3 B3 A2 B2 A1 B1
Cout Cin
C3 C2 C1
S4 S3 S2 S1
A4 B4 A3 B3 A2 B2 A1 B1
Cout Cin
C3 C2 C1
S4 S3 S2 S1
Base case
Gi:i Gi Ai Bi G0:0 G0 Cin
Pi:i Pi Ai Bi P0:0 P0 0
Sum:
Si Pi Gi 1:0
1: Bitwise PG logic
G4 P4 G3 P3 G2 P2 G1 P1 G0 P0
2: Group PG logic
C3 C2 C1 C0
3: Sum logic
C4
Cout S4 S3 S2 S1
G4 P4 G3 P3 G2 P2 G1 P1 G0 P0
C3 C2 C1 C0
C4
Cout S4 S3 S2 S1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Delay
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
Gi:k Gi:k
Gi:j Gi:j
Pi:k Pi:k Gi:j Gi:j
Gk-1:j Gk-1:j
Pi:j Pi:j
Pi:j
Pk-1:j
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
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
0 0 0
+ + +
Cout C12 C8 C4
1 1 1 Cin
+ + + +
1
1
0
0
S16:13 S12:9 S8:5 S4:1
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
13:11 9:7
signals
6:4
14:11 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 9 8 7 6 5 4 3 2 1 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
+ + + + Cin
Gi:k
Pi:k Gi:j
i:k k-1:l l-1:m m-1:j
Gk-1:l
Pk-1:l
Gl-1:m
Pl-1:m
Gm-1:j
i:j
Pi:j
Pm-1:j
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
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
Performance measures:
– A• : graph size (number of black nodes)
– T• : graph depth (number of black nodes on
critical path)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 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
15:8 7:0
11: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
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
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 1:0
15:12 14:11 13:10 12:9 11:8 10:7 9:6 8:5 7:4 6:3 5:2 4:1 3:0 2:0
15:8 14:7 13:6 12:5 11:4 10:3 9:2 8:1 7:0 6:0 5:0 4: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
0 ≤ k ≤ n − 2⎡log n⎤+ 2
3 (7)
Brent-Kung
f (Fanout)
Sklansky 2 (6)
3 (9)
1 (5)
2 (5)
1 (3)
0 (2) 0 (4)
0 (1)
1 (2)
2 (4)
Kogge-Stone
3 (8)
t (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 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
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 1:0
15:12 14:11 13:10 12:9 11:8 10:7 9:6 8:5 7:4 6:3 5:2 4:1 3:0 2:0
15:8 14:7 13:6 12:5 11:4 10:3 9:2 8:1 7:0 6:0 5:0 4: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
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 9 8 7 6 5 4 3 2 1 0
15:14 13:12 11:10 9:8 7:6 5:4 3:2 1:0
Kung
Ladner- 15:8 13:0 11:0 9:0
15:0 14:0 13:0 12:0 11:010:0 9:0 8:0 7:0 6:0 5:0 4:0 3:0 2:0 1:0 0:0 Fischer 3 (7)
Ladner-
Fischer 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
f (Fanout)
Sklansky 2 (6) (a) Brent-Kung
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
3 (9)
1 (5)
2 (5) 15:14 13:12 11:10 9:8 7:6 5:4 3:2 1:0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 (1) Carlson 15:8 7:0
New
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 1:0
Knowles
(1,1,1)
15:12 14:11 13:10 12:9 11:8 10:7 9:6 8:5 7:4 6:3 5:2 4:1 3:0 2:0 [4,2,1,1] 11:0
Kogge-
3 (8)
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 1:0 Stone 15:12 13:10 11:8 9:6 7:4 5:2 3:0
15:12 14:11 13:10 12:9 11:8 10:7 9:6 8:5 7:4 6:3 5:2 4:1 3:0 2:0
15:8 13:6 11:4 9:2 7:0 5:0
15:8 14:7 13:6 12:5 11:4 10:3 9:2 8:1 7:0 6:0 5:0 4:0
t (Wire Tracks)
15:0 14:0 13:0 12: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:0 14:013: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
Synthesized Adders