Доброго всем дня!
Подскажите пожалуйста по state machine. Есть машина состояний:
Код
reg [1:0] out;
reg [1:0] state;
// Declare states
parameter
S0 = 0,
S1 = 1,
S2 = 2;
// Output depends only on the state
always @ (state)
begin
case (state)
S0:
out = 2'b01;
S1:
out = 2'b10;
S2:
out = 2'b11;
default:
out = 2'b00;
endcase
end
// Determine the next state
always @ (posedge CLK)
begin
if (RESET)
state <= S0;
else
case (state)
S0:
state <= S1;
S1:
state <= S3;
S3:
state <= S3;
endcase
end
Как правильно написать на verilog, если мне необходимо чтобы состояние S0 сменилось на S1 через 20 периодов тактовой частоты? Насколько мне известно, описывается счетчик и 21 значение счетчика "приравнивается" (не совсем корректное слово) к состоянию S1. Как правильно это написать?