经modlesim验证正确,并可以用dc综合!
module cla32 (a,b,cin,sum,co);
input [31:0] a,b;
input cin;
output [31:0] sum;
output co;
reg [31:0] G1,P1,G2,P2,G3,P3,G4,P4,G5,P5;
reg [31:0] cout;
wire[31:0] sum,G0,P0;
assign P0=a^b;
assign G0=a&b;
assign sum=P0^{cout[31:0],cin};
assign co=cout[31];
always @(P0 or G0 or P1 or G1 or P2 or G2 or P3 or G3 or P4 or G4 or P5 or G5 )
begin
P1[31:1]=P0[31:1]&P0[30:0];
G1[31:1]=G0[31:1]|P0[31:1]&G0[30:0];
G1[0]=G0[0];
P1[0]=P0[0];
P2[31:2]=P1[31:2]&P1[29:0];
G2[31:2]=G1[31:2]|P1[31:2]&G1[29:0];
G2[1:0]=G1[1:0];
P2[1:0]=P1[1:0];
P3[31:4]=P2[31:4]&P2[27:0];
G3[31:4]=G2[31:4]|P2[31:4]&G2[27:0];
G3[3:0]=G2[3:0];
P3[3:0]=P2[3:0];
P4[31:8]=P3[31:8]&P3[23:0];
G4[31:8]=G3[31:8]|P3[31:8]&G3[23:0];
G4[7:0]=G3[7:0];
P4[7:0]=P3[7:0];
P5[31:16]=P4[31:16]&P4[15:0];
G5[31:16]=G4[31:16]|P4[31:16]&G4[15:0];
G5[15:0]=G4[15:0];
P5[15:0]=P4[15:0];
cout=G5|P5&cin;
end
endmodule
猜您喜欢
推荐内容
开源项目推荐 更多
热门活动
热门器件
用户搜过
随便看看
热门下载
热门文章
评论