//typedef enum {ZERO,UN,DEUX} state_t; module concret(clk,i); input clk; reg p; reg q; input i; reg[1:0] state; initial begin p = 0; q = 0; state[1:0] = 0; end always @(posedge clk) begin case(state) 0 : if(i == 1) begin state[1:0] = 1; p = 0; q = 1; end else begin state[1:0] = 2; p = 1; q = 0; end 1 : if(i == 1) begin state[1:0] = 1; p = 0; q = 1; end else begin state[1:0] = 3; p = 1; q = 1; end 2 : if(i == 1) begin state[1:0] = 2; p = 1; q = 0; end else begin state[1:0] = 3; p = 1; q = 1; end 3 : if(i == 1) begin state[1:0] = 2; p = 1; q = 0; end else begin state[1:0] = 3; p = 1; q = 1; end endcase end endmodule