`timescale 1ns / 1ps
//
// 超前进位加法器,并行加法计算
//
module add_ahead(a,b,sum,cin,cout);
input [3:0] a,b;
//4位加法
input cin;
output [3:0] sum;
output cout;
wire c1,c2,c3;
//各级进位输出
wire [3:0] g,p;
assign g=a&b;
assign p=a|b;
assign sum=g^p^{c3,c2,c1,cin};
assign {cout,c3,c2,c1}=g|(p&{c3,c2,c1,cin});
endmodule
简要原理(转载):
串行进位加法器需要一级一级的进位,进位延迟很大。先行进位加法器(也叫超前进位加法器)可以有效的减少进位延迟。
设二进制加法器的第i位输入为Xi, Yi, 输出为Si, 进位输入为C