题解 | #全加器#
全加器
http://www.nowcoder.com/practice/d04c046febb74e72949baee9aa99d958
`timescale 1ns/1ns
module add_half(
input A ,
input B ,
output wire S ,
output wire C
);
assign S = A ^ B;
assign C = A & B;
endmodule
/***************************************************************/
module add_full(
input A ,
input B ,
input Ci ,
output wire S ,
output wire Co
);
wire S0,C0,C1;
add_half h0(
.A(A),
.B(B),
.S(S0),
.C(C0)
);
add_half h1(
.A(S0),
.B(Ci),
.S(S),
.C(C1)
);
assign Co = C0 | C1;
endmodule
module add_half(
input A ,
input B ,
output wire S ,
output wire C
);
assign S = A ^ B;
assign C = A & B;
endmodule
/***************************************************************/
module add_full(
input A ,
input B ,
input Ci ,
output wire S ,
output wire Co
);
wire S0,C0,C1;
add_half h0(
.A(A),
.B(B),
.S(S0),
.C(C0)
);
add_half h1(
.A(S0),
.B(Ci),
.S(S),
.C(C1)
);
assign Co = C0 | C1;
endmodule