题解 | #4bit超前进位加法器电路#
4bit超前进位加法器电路
http://www.nowcoder.com/practice/4d5b6dc4bb2848039da2ee40f9738363
`timescale 1ns/1ns
module lca_4(
input [3:0] A_in ,
input [3:0] B_in ,
input C_1 ,
output wire CO ,
output wire [3:0] S
);
wire [2:0] c2;
assign c2[0]=(A_in[0]&B_in[0])|(B_in[0]&C_1)|(A_in[0]&C_1);
assign c2[1]=(A_in[1]&B_in[1])|(B_in[1]&c2[0])|(A_in[1]&c2[0]);
assign c2[2]=(A_in[2]&B_in[2])|(B_in[2]&c2[1])|(A_in[2]&c2[1]);
assign S[3:1]=(A_in[3:1])^(B_in[3:1])^(c2[2:0]);
assign S[0]=(A_in[0])^(B_in[0])^(C_1);
assign CO=(A_in[3]&B_in[3])|(B_in[3]&c2[2])|(A_in[3]&c2[2]);
endmodule
module lca_4(
input [3:0] A_in ,
input [3:0] B_in ,
input C_1 ,
output wire CO ,
output wire [3:0] S
);
wire [2:0] c2;
assign c2[0]=(A_in[0]&B_in[0])|(B_in[0]&C_1)|(A_in[0]&C_1);
assign c2[1]=(A_in[1]&B_in[1])|(B_in[1]&c2[0])|(A_in[1]&c2[0]);
assign c2[2]=(A_in[2]&B_in[2])|(B_in[2]&c2[1])|(A_in[2]&c2[1]);
assign S[3:1]=(A_in[3:1])^(B_in[3:1])^(c2[2:0]);
assign S[0]=(A_in[0])^(B_in[0])^(C_1);
assign CO=(A_in[3]&B_in[3])|(B_in[3]&c2[2])|(A_in[3]&c2[2]);
endmodule