We can design a multiply circuit based on binary multiplication:
1 0 1 1 multiplicant x 1 0 0 1 multiplier ----------------------- |
Multiply the multiplicant by the 1st bit of the multiplier:
1 0 1 1 multiplicant x 1 0 0 1 multiplier ----------------------- 1 0 1 1 (= 1 AND (1 0 1 1)) |
This multiplication can be accomplished using a series of AND gates !!!
Multiply the multiplicant by the 2nd bit of the multiplier:
1 0 1 1 multiplicant x 1 0 0 1 multiplier ----------------------- 1 0 1 1 0 0 0 0 (= 0 AND (1 0 1 1)) |
This multiplication can be accomplished using (another series of) AND gates !!!
Then add the results together using a series of full adders:
1 0 1 1 multiplicant x 1 0 0 1 multiplier ----------------------- 1 0 1 1 + 0 0 0 0 0 ----------------------- (C) 0 1 0 1 1 (C = possible carry) |
Note that we do not need to add the last trailing 0 ! (We can omit them)
Then multiply the multiplicant by the 3rd bit of the multiplier:
1 0 1 1 multiplicant x 1 0 0 1 multiplier ----------------------- 1 0 1 1 + 0 0 0 0 0 ----------------------- (C) 0 1 0 1 1 0 0 0 0 (= 0 AND (1 0 1 1)) |
This multiplication can be accomplished using a 3rd series of AND gates
Then add the previous sum and the new result together:
1 0 1 1 multiplicant x 1 0 0 1 multiplier ----------------------- 1 0 1 1 + 0 0 0 0 ----------------------- (C) 0 1 0 1 1 + 0 0 0 0 0 0 ----------------------- (C) 0 0 1 0 1 1 (C = possible carry) And so on !! |
Note that we do not need to add the 2 trailing 0's in the new result !
The input bin numbers are b3b2b1b0 and a3a2a1a0 and the output is ( m7m6..m1m0):
Multiply the multiplicant (a3a2a1a0) by the 1st bit (b0) of the multiplier:
Multiply the multiplicant (a3a2a1a0) by the 2nd bit (b1) of the multiplier:
Add the result together (note: we need to use an additional 0 bit):
Multiply the multiplicant (a3a2a1a0) by the 3rd bit (b2) of the multiplier:
Add the result together (note: the carry output of the last addition is the 4th bit input):
Multiply the multiplicant (a3a2a1a0) by the 4th bit (b3) of the multiplier:
Add the result together (note: the carry output of the last addition is the 4th bit input):
|