Partial Products
The intermediate terms generated during binary multiplication.
Problem
What are partial products and why do they matter?
How it works
Multiplying A × B works the same in binary as long multiplication in decimal. Each bit of B is ANDed with every bit of A, producing a row of partial products shifted by the bit position.
For example, 1011 × 1101:
Each row is a partial product: the multiplicand ANDed with one multiplier bit, shifted left. An n×n multiplication produces n partial products that must be summed to get the final 2n-bit product.
The 3:2 counter (used in Wallace Trees) is just a full adder repurposed: it takes 3 partial product bits at the same column position and reduces them to 2 output bits (sum + carry into the next column). This is why FAs appear everywhere in multiplier reduction.
For example, 1011 × 1101:
1011 (A) × 1101 (B) ────── 1011 (B[0]=1 → A«0) 0000 (B[1]=0 → skip) 1011 (B[2]=1 → A«2) 1011 (B[3]=1 → A«3)Each row is a partial product: the multiplicand ANDed with one multiplier bit, shifted left. An n×n multiplication produces n partial products that must be summed to get the final 2n-bit product.
The 3:2 counter (used in Wallace Trees) is just a full adder repurposed: it takes 3 partial product bits at the same column position and reduces them to 2 output bits (sum + carry into the next column). This is why FAs appear everywhere in multiplier reduction.
Key insightAll multiplier architectures solve the same problem: how to sum n partial products efficiently. The choice is sequential (one at a time), array (row by row), or tree (all at once).