typedef enum {UN,DEUX,TROIS,QUATRE,CINQ,SIX,SEPT,HUIT,NEUF,DIX} state_t; module concret(clk); input clk; reg p; reg q; input i,j; state_t reg state; initial begin p = 1; q = 1; state = UN; end always @(posedge clk) begin case(state) UN : if(j == 1) begin state = QUATRE; p = 0; q = 1; end else if(i == 1) begin state = SIX; p = 1; q = 0; end else begin state = DEUX; p = 1; q = 1; end DEUX: begin state = TROIS; p = 1; q = 0; end TROIS: begin state = QUATRE; p = 0; q = 1; end QUATRE: begin state = CINQ; p = 1; q = 0; end CINQ: begin state = CINQ; p = 1; q = 0; end SIX: if (j == 0) begin state = SEPT; p = 1; q = 1; end else begin state = TROIS; p = 1; q = 0; end SEPT: begin state = HUIT; p = 0; q = 1; end HUIT: begin state = NEUF; p = 1; q = 1; end NEUF: begin state = DIX; p = 0; q = 0; end DIX: begin state = DIX; p = 0; q = 0; end endcase end endmodule