Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Making a big multiplier from two smaller ones

Status
Not open for further replies.

elockpicker

Member level 4
Joined
Jul 25, 2008
Messages
74
Helped
2
Reputation
4
Reaction score
1
Trophy points
1,288
Activity points
1,813
Hi,

I'm supposed to design a 24*12 signed two's complement multiplier.
Furthermore I am supposed to do it using ONLY two 12*12 multipliers (both are signed two's complement multipliers.)
The problem is that the multiplication operation is signed.

In a rather simple approach I
-determined the sign of the output
-calculated the absolute value of both operands
-performed the multiplication using the absolute values
-changed the sign of the output according to the output sign (previously determined)

This solution requires adders which consume area and if no registers are introduced in the data path, they will introduce a considerable delay.

Is there any more elegant and efficient way of doing this (preferably not calculating the absolute value of anything) ?
 

Hi,

I think you can do something like this.

for
a[23:0] x b[11:0]

do
res1[23:0]= a[23:12] * b[11:0] // signed 12x12 multiplication
res2[23:0] = {0,a[11:1]} * b[11:0] //signed 12*12 multiplication

sum up res1 and res2
res3 = {res1,12'h000} + {res2,1'b0}

check lsb
if a[0] == 1'b1
final_result = res3 + b
else
final_result = res3

regards
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top