module fsm3 (input clk, reset, c, output reg [3:0] salida); reg [1:0] status; // estado // bloque secuencial always @(posedge clk or negedge reset) if (!reset) status <= 0; else case (status) 0: if (c) status <= 1; 1: status <= 2; 2: if (c) status <= 1; endcase // bloque combinacional always @(status) case (status) 0: salida <= 3'b010; 1: salida <= 3'b100; 2: salida <= 3'b111; default: salida <= 3'bxxx; endcase endmodule // fsm3