blob: 8d740dab39237bdd76b3630569e4fd10d4776efd [file] [log] [blame]
module fpmult (input logic [31:0] a, b,
output logic [31:0] m);
logic [7:0] expa, expb, exp;
logic [23:0] manta, mantb;
logic [22:0] fract;
logic [47:0] result;
assign {expa, manta} = {a[30:23], 1'b1, a[22:0]};
assign {expb, mantb} = {b[30:23], 1'b1, b[22:0]};
assign m = {1'b0, exp, fract};
assign result = manta * mantb;
assign fract = result[47] ?
result[46:24] :
result[45:23];
assign exp = result[47] ?
(expa + expb - 126) :
(expa + expb - 127);
endmodule // fpmult