diff --git a/Fixed_Point_Unit.v b/Fixed_Point_Unit.v index c663f5d..4fc7c4c 100644 --- a/Fixed_Point_Unit.v +++ b/Fixed_Point_Unit.v @@ -245,9 +245,23 @@ module Multiplier output reg [15 : 0] product ); + reg [15:0] accumulator; + reg [8:0] Multiplier; + integer i; always @(*) + accumulator = 16'b0; + Multiplier = {operand_2, 1'b0}; begin - product <= operand_1 * operand_2; + for (i = 0; i < 8 ; i++) begin + if (Multiplier[1:0] == 2'b01) begin + accumulator = accumulator + (operand_1 << i); + end + if (Multiplier[1:0] == 2'b10) begin + accumulator = accumulator - (operand_1 << i); + end + Multiplier = Multiplier >> 1; + end + product = accumulator; end endmodule \ No newline at end of file