2.2.2 Implicit carry bits
The other implementation does not represent ci explicitly. This means we have to expand ci−1 as
C(xi−1,yi−1) + C(R(xi−1,yi−1)),ci−2).
Using this new representation, we can compute the following:
- c0 = C(x0,y0) = x0y0
- c1 = C(x1,y1) + C(R(x1,y1),c0) = x1y1 + (x1y1′ + x1′y1)(x0y0) = x1y1 + x1y1′x0y0 + x1′y1x0y0 = x1y1 + x1x0y0 + y1x0y0
- the optimization is made possible because
- c2 = C(x2,y2) + C(R(x2,y2),c1) = x2y2 + (x2 + y2)(x1y1 + x1x0y0 + y1x0y0) = …
Then, we can compute the sum values:
- s0 = R(x0,y0) = x0y0′ + x0′y0
- s1 = R(R(x1,y1),c0) = (x1y1′ + x1′y1)′(x0y0) + (x1y1′ + x1′y1)(x0y0)′ = (x1′ + y1)(x1 + y1′)x0y0 + (x1y1′ +
x1′y1)(x0′ + y0′) = (x1′y1′x0y0) + (x1y1x0y0) + (x1y1′x0′) + (x1′y1x0′) + (x1y1′y0′) + (x1′y1y0′)
You can see that the SOP (sum of products) representation can get ugly very quickly.