0
0
Verilogprogramming~20 mins

JK flip-flop behavior in Verilog - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
JK Flip-Flop Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of JK Flip-Flop with J=1, K=0
Given the following Verilog code for a JK flip-flop, what is the output Q after the rising edge of the clock if J=1, K=0 and initial Q=0?
Verilog
module jk_ff(input clk, input J, input K, output reg Q);
  always @(posedge clk) begin
    case ({J,K})
      2'b00: Q <= Q;
      2'b01: Q <= 0;
      2'b10: Q <= 1;
      2'b11: Q <= ~Q;
    endcase
  end
endmodule
AQ = 1
BQ = 0
CQ remains undefined
DQ toggles to 1 then back to 0
Attempts:
2 left
💡 Hint
Remember that J=1 and K=0 sets the flip-flop output to 1 on the clock edge.
Predict Output
intermediate
2:00remaining
JK Flip-Flop Output with J=1, K=1
What will be the output Q after the rising edge of the clock if J=1, K=1 and initial Q=0 in the JK flip-flop below?
Verilog
module jk_ff(input clk, input J, input K, output reg Q);
  always @(posedge clk) begin
    case ({J,K})
      2'b00: Q <= Q;
      2'b01: Q <= 0;
      2'b10: Q <= 1;
      2'b11: Q <= ~Q;
    endcase
  end
endmodule
AQ toggles to 1
BQ = 1
CQ = 0
DQ toggles to 1 then back to 0
Attempts:
2 left
💡 Hint
When both J and K are 1, the JK flip-flop toggles the output.
🔧 Debug
advanced
2:00remaining
Identify the error in JK Flip-Flop code
What error will this Verilog JK flip-flop code produce when compiled?
Verilog
module jk_ff(input clk, input J, input K, output reg Q);
  always @(posedge clk) begin
    if (J == 1 && K == 1)
      Q = ~Q;
    else if (J == 1 && K == 0)
      Q = 1;
    else if (J == 0 && K == 1)
      Q = 0;
    else
      Q = Q;
  end
endmodule
ASyntax error: missing semicolon after Q = ~Q
BRuntime error: Q is not initialized
CNo error, code compiles and works correctly
DWarning: blocking assignments used in sequential always block
Attempts:
2 left
💡 Hint
Consider the difference between blocking (=) and non-blocking (<=) assignments in sequential logic.
🧠 Conceptual
advanced
1:30remaining
JK Flip-Flop Behavior on Inputs J=0, K=0
What is the behavior of a JK flip-flop when both inputs J and K are 0 at the rising edge of the clock?
AThe output Q resets to 0
BThe output Q holds its previous state
CThe output Q toggles
DThe output Q sets to 1
Attempts:
2 left
💡 Hint
Think about what happens when no input commands a change.
Predict Output
expert
3:00remaining
Final Q value after multiple clock cycles
Given the JK flip-flop module below and the input sequence on J and K over 4 clock cycles, what is the final value of Q? Initial Q=0. Clock cycles inputs: Cycle 1: J=1, K=0 Cycle 2: J=1, K=1 Cycle 3: J=0, K=1 Cycle 4: J=0, K=0
Verilog
module jk_ff(input clk, input J, input K, output reg Q);
  always @(posedge clk) begin
    case ({J,K})
      2'b00: Q <= Q;
      2'b01: Q <= 0;
      2'b10: Q <= 1;
      2'b11: Q <= ~Q;
    endcase
  end
endmodule
AQ toggled twice, final Q = 1
BQ = 1
CQ = 0
DQ toggled twice, final Q = 0
Attempts:
2 left
💡 Hint
Trace the output Q step-by-step through each clock cycle.