25 lines
413 B
Systemverilog
25 lines
413 B
Systemverilog
`include "defines.svh"
|
|
|
|
module mul_signed(
|
|
input logic CLK,
|
|
input logic [31:0] A,
|
|
input logic [31:0] B,
|
|
output logic [63:0] P
|
|
);
|
|
|
|
logic [31:0] rA;
|
|
logic [31:0] rB;
|
|
logic [63:0] M[4:0];
|
|
|
|
always_ff @(posedge CLK) begin
|
|
rA <= A;
|
|
rB <= B;
|
|
M[0] <= $signed(rA) * $signed(rB);
|
|
for (integer i = 0; i < 4; i = i + 1)
|
|
M[i+1] <= M[i];
|
|
end
|
|
|
|
assign P = M[4];
|
|
|
|
endmodule
|