module multiply_add_64x64 | |
#( | |
parameter BITS=64 | |
) ( | |
`ifdef USE_POWER_PINS | |
inout VPWR, | |
inout VGND, | |
`endif | |
input clk, | |
input [BITS-1:0] a, | |
input [BITS-1:0] b, | |
input [BITS*2-1:0] c, | |
output [BITS*2-1:0] o | |
); | |
reg [BITS*2-1:0] o_tmp[2:0]; | |
always @(posedge clk) begin | |
o_tmp[2] = o_tmp[1]; | |
o_tmp[1] = o_tmp[0]; | |
o_tmp[0] = (a * b) + c; | |
end | |
assign o = o_tmp[2]; | |
endmodule |