Connecting multipliers to increase operation bit width

digital-logic

I successfully created a 2 bit digital multiplier. Can I use that 2 bit multiplier to create a 4 bit multiplier and then use that to create an 8 bit multiplier and so on? What I basically mean to ask is, is there a prototype functional block/cell for multipliers, whose repetition while following a certain pattern can help me increase its operation width. Like a one bit full adder cell when cascaded 64 times can help me create a 64 bit adder. Is something similar possible using multipliers or should I directly dive headfirst into the gate level of design?

Best Answer

Yes there is functional block that can be used to create any N*N multiplier, it's called an array multiplier cell and it looks like this:

enter image description here

A non-optimised NN multiplier will use NN array multiplier cells.A circuit that uses these cells to make a 4*4 multiplier can be seen below

enter image description here

where m and p are the numbers being multiplied together and p is the result.

For a detailed explanation of how this circuit works you can search for "array multiplier" on google, there should be lots of information on it, but the basic idea is that at every stage of multiplication we will either be adding zero or m (the multiplicand).What decides if we add m or zero at stage n is the value of n th bit of q, so we use the nth bit of q and an AND gate to multiplex between m and zero at every stage.