Prev Problem
Next Problem

69. Binary Subtractor

Back To All Submissions
Previous Submission
Next Submission

Solving Approach

How do you plan to solve it?

 

Code

module full_adder(
    input a, b, cin,
    output sum, cout
);
    assign sum = a ^ b ^ cin;
    assign cout = (a & b) | (b & cin) | (a & cin);
endmodule  

module adder4(
    input [3:0] x, y,
    input cin,
    output [3:0] sum,
    output cout
);
    wire c1, c2, c3;
    full_adder u0(x[0], y[0], cin, sum[0], c1);
    full_adder u1(x[1], y[1], c1, sum[1], c2);
    full_adder u2(x[2], y[2], c2, sum[2], c3);
    full_adder u3(x[3], y[3], c3, sum[3], cout);
endmodule

module sub4_2c(
    input [3:0] a, b,
    output [3:0] diff,
    output bout
);
    wire [3:0] nb = ~b;
    wire cout;
    adder4 u5 (a, nb, 1'b1, diff, cout);
    assign bout = ~cout;
endmodule

 

Was this helpful?
Upvote
Downvote