Professional Documents
Culture Documents
parameter n=12;
parameter m=6;
parameter s=n/m;
input [n-1:0] a,b;
input rst,clk;
output reg [2*n-2:0] c;
reg [2*n-1:0] pp [0:n-1];
reg [2*n-1:0] reg_pp [0:n*m-1];
reg [2*n-1:0] sum [0:m-1];
reg [2*n-1:0] reg_sum [0:m-1];
reg [2*n-1:0] tmp2,tmp3;
integer i,j,k;
always @ (*)
for (i=0; i<n; i=i+1)
if (b[i]) begin
if (i==n-1) begin tmp3=(~a)+1; tmp2=tmp3<<n-1; tmp2[2*n-1]=tmp2[2*n-2];
reg_pp[i*m]=tmp2;/*{tmp2[2*n-2],tmp2};*/ /*end else
begin tmp3={n{a[n-1]}}; tmp2={tmp3,a}; reg_pp[i*m]=tmp2<<i; end end
else reg_pp[i*m]=0;
if (i) tmp=reg_sum[i];
else tmp=0;
for (j=0; j<s; j=j+1)
tmp=tmp+reg_pp[(i*s+j)*m+i];
sum[i]=tmp;
end
always @ (*)
c=sum[m-1];
reg_sum[i]<=0;
endmodule
*/
module mul(a,b,rst,clk,c);
parameter n=12;
parameter m=6;
parameter s=n/m;
input [n-1:0] a,b;
input rst,clk;
output reg [2*n-2:0] c;
reg [2*n-1:0] pp [0:n-1];
reg [2*n-1:0] reg_pp [0:n*m-1];
reg [2*n-1:0] sum [0:m-1];
reg [2*n-1:0] reg_sum [0:m-1];
reg [2*n-1:0] tmp2,tmp3;
integer i,j,k;
always @ (*)
for (i=0; i<n; i=i+1)
if (b[i]) begin
if (i==n-1) begin tmp3=(~a)+1; tmp2=tmp3<<n-1; tmp2[2*n-1]=tmp2[2*n-2];
reg_pp[i*m]=tmp2;/*{tmp2[2*n-2],tmp2};*/ end else
always @ (sum[m-1])
begin
c=sum[m-1];
end
endmodule