module adder25(A,B,S,Cout);
//Port in declarations
input [24:0]A;
input [24:0]B;
//Port out declarations
output [24:0]S;
output Cout;
//Local signal declarations
wire [24:0] g,p;
wire [24:0] c;
wire [5:0] g_stage1, p_stage1, c_stage2;
wire [1:0] g_stage2, p_stage2, c_stage3;
//Preprocessing
assign g = A&B;
assign p = A^B;
//Processing
clb clb_1(g[3:0],p[3:0],c_stage2[0],g_stage1[0],p_stage1[0],c[3:0]);
clb clb_2(g[7:4],p[7:4],c_stage2[1],g_stage1[1],p_stage1[1],c[7:4]);
clb clb_3(g[11:8],p[11:8],c_stage2[2],g_stage1[2],p_stage1[2],c[11:8]);
clb clb_4(g[15:12],p[15:12],c_stage2[3],g_stage1[3],p_stage1[3],c[15:12]);
clb clb_5(g[19:16],p[19:16],c_stage2[4],g_stage1[4],p_stage1[4],c[19:16]);
clb clb_6(g[23:20],p[23:20],c_stage2[5],g_stage1[5],p_stage1[5],c[23:20]);
clb clb_7(g_stage1[3:0],p_stage1[3:0],
c_stage3[0],g_stage2[0],p_stage2[0],c_stage2[3:0]);
clb3 clb3({g[24],g_stage1[5:4]},{p[24],p_stage1[5:4]},c_stage3[1],g_stage2[1],p_stage2[1],{c[24],c_stage2[5:4]});
clb2 clb2_2(g_stage2,p_stage2,1'b0,Cout,,c_stage3);
//Postprocessing
assign S = p^c;
endmodule
25位全加器(任意位全加器)
于 2021-12-28 13:21:38 首次发布