Prev Problem
Next Problem

74. Gated SR Latch

Back To All Submissions
Previous Submission
Next Submission

Solving Approach

How do you plan to solve it?

 

Code

module sr_latch_enable (
    input  EN,
    input  S,
    input  R,
    output Q,
    output Qn
);
    reg Q_reg;
    reg Qn_reg;

    always @(EN or S or R) begin
        if (EN) begin
            if (S && R) begin
                Q_reg  = 1'b0; // illegal -> reset
                Qn_reg = 1'b1;
            end else if (S && !R) begin
                Q_reg  = 1'b1; // set
                Qn_reg = 1'b0;
            end else if (!S && R) begin
                Q_reg  = 1'b0; // reset
                Qn_reg = 1'b1;
            end
        end
        else begin  
            Q_reg = Q;
            Qn_reg = Qn;
        end
    end

    assign Q  = Q_reg;
    assign Qn = Qn_reg;
	
endmodule

 

Was this helpful?
Upvote
Downvote