16 BIT RIPPLE CARRY ADDER
module full_adder(
input A,
input B,
input Cin,
output S,
output Cout
);
assign S = A ^ B ^ Cin;
assign Cout = (A & B) | (B & Cin) | (A & Cin);
endmodule
module rca_16bit(
input wire [15:0] A, B, // 16-bit operands
input wire Cin, // carry-in
output wire [15:0] S, // 16-bit sum
output wire Cout // carry-out
);
wire [14:0] C;
full_adder FA0 (A[0], B[0], Cin, S[0], C[0]);
full_adder FA1 (A[1], B[1], C[0], S[1], C[1]);
full_adder FA2 (A[2], B[2], C[1], S[2], C[2]);
full_adder FA3 (A[3], B[3], C[2], S[3], C[3]);
full_adder FA4 (A[4], B[4], C[3], S[4], C[4]);
full_adder FA5 (A[5], B[5], C[4], S[5], C[5]);
full_adder FA6 (A[6], B[6], C[5], S[6], C[6]);
full_adder FA7 (A[7], B[7], C[6], S[7], C[7]);
full_adder FA8 (A[8], B[8], C[7], S[8], C[8]);
full_adder FA9 (A[9], B[9], C[8], S[9], C[9]);
full_adder FA10 (A[10], B[10], C[9], S[10], C[10]);
full_adder FA11 (A[11], B[11], C[10], S[11], C[11]);
full_adder FA12 (A[12], B[12], C[11], S[12], C[12]);
full_adder FA13 (A[13], B[13], C[12], S[13], C[13]);
full_adder FA14 (A[14], B[14], C[13], S[14], C[14]);
full_adder FA15 (A[15], B[15], C[14], S[15], Cout);
endmodule