Lect18 Datapath
Lect18 Datapath
Datapath
Functional
Units
Outline
Comparators
Shifters
Multi-input Adders
Multipliers
A7
A6
A5
A4
A3 allones
A2
A1
A0
B[3]
A[3]
B[2]
A[2] A=B
B[1]
A[1]
B[0]
A[0]
A2 Z
A=B
B1
A1
B0
A0
Rotate Right
Logical Right
Arithmetic Right
Rotate Left
Logical/Arithmetic Left
s3 s2 s1 s0
Y3
Y2
Z6
Y1
Z5
Y0
Z4 Z3 Z2 Z1 Z0
+
1000
+
10101
+
10111
C4 S4 C3 S3 C2 S2 C1 S1
XN...1 YN...1 ZN...1
n-bit CSA
CN...1 SN...1
Product: P y j 2 j xi 2i xi y j 2i j
j 0 i 0 i 0 j 0
y5 y4 y3 y2 y1 y0 multiplicand
x5 x4 x3 x2 x1 x0 multiplier
x0y5 x0y4 x0y3 x0y2 x0y1 x0y0
x1y5 x1y4 x1y3 x1y2 x1y1 x1y0
x2y5 x2y4 x2y3 x2y2 x2y1 x2y0 partial
x3y5 x3y4 x3y3 x3y2 x3y1 x3y0 products
x4y5 x4y4 x4y3 x4y2 x4y1 x4y0
x5y5 x5y4 x5y3 x5y2 x5y1 x5y0
p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0 product
partial products
multiplier x
x15
x0
x1
CSA
Array
x2
x3
CPA
p7 p6 p5 p4 p3 p2 p1 p0
A B
Sin A Cin critical path A B
A B
B Sin
= Cout Cin = Cout Cin
Cout Cin
Sout
Cout Sout Sout
Sout
x0
p0
x1
p1
x2
p2
x3
p3
p7 p6 p5 p4
multiplier x
s s s s
s s PP3
s
PP4
PP5
PP6
PP7 x15
0 x16
PP8
0 x17
s s s PP0
1 s s PP1
1 s s PP2
1 s s PP3
1 s s PP4
1 s s PP5
1 s s PP6
s s PP7
s PP8