this is my code for 16 - bit multiplier with booth algorithm .what is the problem ??
module booth (prod , busy , mc , mp ,clk );
output [15:0] prod ;
input [7:0] mc , mp ;
input clk ;
reg [7:0] A , Q , M ;
reg Q_1 ;
integer i ;
always @(posedge clk)
begin
A <= 8'b0;
M <= mc;
Q <= mp ;
Q_1<=1'b0;
for ( i = 0 ; i < 8 ; i= i+1)
begin
if(Q[0] == 0 && Q_1 == 1)
A <= A+~M+1;
Q_1 <= Q[0];
Q <= Q >>> 1;
A <= A >>>1 ;
if(Q[0] == 1 && Q_1 == 0)
A <= A+M;
Q_1 <= Q[0];
Q <= Q >>> 1;
A <= A >>>1 ;
if(Q[0] == Q_1 )
Q_1 <= Q[0];
Q <= Q >>> 1;
A <= A >>>1 ;
end
end
assign prod = {A , Q};
endmodule