mirror of
https://github.com/aolofsson/oh.git
synced 2025-01-17 20:02:53 +08:00
Multi-type multiplier working
-only reference model implemented -Next, implement complete algorithm and output partial products
This commit is contained in:
parent
d6b6e1bd76
commit
d9897a1bec
@ -9,19 +9,24 @@ module oh_multiplier #(parameter DW = 16 //multiplier width
|
||||
)
|
||||
(
|
||||
input [DW-1:0] a, // a input
|
||||
input a_signed,//a operand is signed
|
||||
input [DW-1:0] b, // b input
|
||||
input cfg_signed,//1=signed operands, 0=unsigned
|
||||
input b_signed,//b oeprand is signed
|
||||
output [(2*DW+2)-1:0] pp1,// partial product output (carry save format)
|
||||
output [(2*DW+2)-1:0] pp2, // partial product output (carry save format)
|
||||
output [DW-1:0] product // output
|
||||
output [2*DW-1:0] product // output
|
||||
);
|
||||
|
||||
wire signed [2*DW+1:0] product_signed;
|
||||
|
||||
wire signed [DW-1:0] product_signed;
|
||||
wire signed [DW-1:0] product_unsigned;
|
||||
assign a_sext = a_signed & a[DW-1];
|
||||
assign b_sext = b_signed & b[DW-1];
|
||||
|
||||
|
||||
assign product[DW-1:0] = cfg_signed ? $unsigned(product_signed) :
|
||||
product_unsigned;
|
||||
assign product_signed[2*DW+1:0] = $signed({a_sext,a[DW-1:0]}) *
|
||||
$signed({b_sext,b[DW-1:0]});
|
||||
|
||||
assign product = product_signed[2*DW-1:0];
|
||||
|
||||
|
||||
endmodule // oh_multiplier
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user