Prev Problem
Next Problem

64. Full Adder

Back To All Submissions
Previous Submission
Next Submission

Solving Approach

How do you plan to solve it?

  • First half adder adds a and b → produces s1 and carry c1.
  • Second half adder adds s1 and cin → final sum and carry c2.
  • Final carry-out is c1 OR c2.

 

Code

module half_adder (
    input  a, b,
    output sum, carry
);

    assign sum = a^b;
    assign carry = a & b;

    
endmodule

module full_adder_struct (
    input  a, b, cin,
    output sum, cout
);

    wire s1, c1, c2;

    half_adder HA1 (
        .a(a),
        .b(b),
        .sum(s1),
        .carry(c1)
    );


    half_adder HA2 (
        .a(s1),
        .b(cin),
        .sum(sum),
        .carry(c2)
    );


    assign cout = c1 | c2;

endmodule

 

Was this helpful?
Upvote
Downvote