Prev Problem
Next Problem

71. Arithmetic Logic Unit

Back To All Submissions
Previous Submission
Next Submission

Solving Approach

How do you plan to solve it?

 

Code

/*Write your code here*/
module alu4(
    input [3:0] a,b,
    input [2:0] op,
    output reg [3:0]y,
    output reg cf
);
    parameter ADD=3'b000;
    parameter SUB=3'b001;
    parameter AND=3'b010;
    parameter OR=3'b011;
    parameter XOR=3'b100;

    wire [4:0] add5={1'b0,a}+{1'b0,b};
    wire [4:0] sub5={1'b0,a}+{1'b0,~b}+5'b1;

    always @* begin 
        y=4'b0000;
        cf=1'b0;
        case(op) 
            ADD: begin 
                y=add5[3:0];
                cf=add5[4];
            end
            SUB: begin 
                y=sub5[3:0];
                cf=~sub5[4];
            end
            AND: y=a&b;
            OR: y=a|b;
            XOR: y=a^b;
            default: begin 
                y=4'b0000;
                cf=1'b0;
            end
        endcase
    end


endmodule

 

Was this helpful?
Upvote
Downvote