From 07fbfa801adcca48e5e9bc6344a43b89e2c5a603 Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Sun, 28 Dec 2008 04:42:06 -0500 Subject: [PATCH] holy shit my multiplier compiled the first time o__o --- Execute.v | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/Execute.v b/Execute.v index 5ba0a9a..e00e93d 100644 --- a/Execute.v +++ b/Execute.v @@ -19,3 +19,40 @@ module Execute( ); endmodule + +module Multiplier( + input clk, + input Nrst, /* XXX not used yet */ + + input start, + input [31:0] acc0, + input [31:0] in0, + input [31:0] in1, + + output reg done = 0, + output reg [31:0] result); + + reg [31:0] bitfield; + reg [31:0] multiplicand; + reg [31:0] acc; + + always @(posedge clk) + begin + if (start) begin + bitfield <= in0; + multiplicand <= in1; + acc <= acc0; + done <= 0; + end else begin + bitfield <= {2'b00, bitfield[31:2]}; + multiplicand <= {multiplicand[29:0], 2'b00}; + acc <= acc + + (bitfield[0] ? multiplicand : 0) + + (bitfield[1] ? {multiplicand[30:0], 1'b0} : 0); + if (bitfield == 0) begin + result <= acc; + done <= 1; + end + end + end +endmodule -- 2.39.2