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

/*Write your code here*/
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 full_adder_4(
    input [3:0] a, b,
    input cin,
    output [3:0] sum, 
    output cout
);
    wire [2:0] carry;
    full_adder f1(a[0], b[0], cin, sum[0], carry[0]);
    full_adder f2(a[1], b[1], carry[0], sum[1], carry[1]);
    full_adder f3(a[2], b[2], carry[1], sum[2], carry[2]);
    full_adder f4(a[3], b[3], carry[2], sum[3], cout);
endmodule

module sub4_2c(
    input [3:0] a, b,
    output [3:0] diff,
    output bout
);
    wire [3:0] b_inv;
    wire cout, cin;
    assign b_inv = ~b;
    assign cin  = 1;
    full_adder_4 fa(a, b_inv, cin, diff, cout);
    assign bout = ~cout;
    
endmodule

 

Was this helpful?
Upvote
Downvote