Resetting Ripple Carry Counter once it counts to 5

Viewed 13

I have a code like this

module tff (q, clk, reset);
  output reg q;
  input clk, reset;
  
  always @(posedge reset or negedge clk) begin
    if (reset) begin
      q <= 1'b0;
    end else if (clk) begin
      if (q == 5) begin
        q <= 1'b0;
      end 
    end else begin
      q <=  ~q;
    end
  end
endmodule

module ripple_counter(q, clk, reset);
  
  output [2:0] q;
  input clk, reset;
  
  tff tff0 (q[0], clk, reset);
  tff tff1 (q[1], q[0], reset);
  tff tff2 (q[2], q[1], reset);
  
  
endmodule

I would like the register "q" to count to 5 and then reset, but currently it is resetting at 7 instead.

0 Answers
Related