Creating higher bit multipliers from low bit.

Sep 02, 2005 2 Replies

Hello all Is there any algortihm by which i can combine 8 bit multipliers using adders and shifters to get 16 or 32 bit multipliers. In unsigned i think the solution is direct but what in the signed mode how can i achive this. Sumesh V S



first, for unsigned, use the same technique you use for multiplication by hand. Each 8 bit multiplier represents a digit multiplier where your digits are each 8 bits (each digit can take on 256 different values). Every digit needs to multiply every other digit to form partial products. You add those partial products together after weighting them with the combined digit weights of the inputs. For a 16x16 multiply using 8 bit multipliers: a= a[1]*256+a[0], b= b[1]*256+b[0]

a*b = a[1]*b[1]*256*256 + (a[1]*b[0] + a[0]*b[1])*256 + a[0]*b[0]

For signed multiplication, it is similar, except you use signed multipliers only for the left-most digit of each multiplicand, and unsigned for the remaining digits, in that case, you'll need a signed by unsigned multiply for those mulitplications where only one of the digits is the left most . You can use a signed multiplier for unsigned multilplication with a reduced number of bits: tie the most significant bit '0' and treat the rest as an unsigned value.

--Ray Andraka, P.E. President, the Andraka Consulting Group, Inc. 401/884-7930 Fax 401/884-7950 email ray@andraka.com http://www.andraka.com "They that give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." -Benjamin Franklin, 1759

I can't fault that explanation, really!

Just to say that the Xilinx apps note on the use of the hard embedded multipliers in Spartan 3

formatting link
has a great diagram on p.5 that perfectly illustrates this decomposition of a wide signed multiplication into narrower signed and unsigned products.

Richard.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required