采用kogge-stone tree 实现的32位超前进位加法器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

采用kogge-stone tree 实现的32位超前进位加法器。

经过modelsim验证正确可用,在DC下综合成功

优点:速度快

缺点:运用了过多的寄存器,造成加法器面积较大

//文件名:add_4.v

//模块名:add_4

//

module add_32 (a,b,cin,s,co);

input [31:0] a,b;

input cin;

output [31:0] s;

output co;

reg [31:0] G1,P1,G2,P2,G3,P3,G4,P4,G5,P5;

reg [31:0] cout;

wire[31:0] s,G0,P0;

assign P0=a^b;

assign G0=a&b;

assign s=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

相关文档
最新文档