Как указано в другом решении, имя вашего модуля не может начинаться с цифры.
Я добавляю этот ответ только для того, чтобы обрисовать одну вещь в вашем примере (даже если это не ответ на ваш вопрос),В вашем коде у вас есть:
always @ (posedge clock, negedge reset)
if(reset == 0) state <= S0; //Initialize to state S0
else case(state)
S0: if(clock) state <= S1; else state <= S0;
Эта инструкция всегда @ будет выполняться в двух случаях: - когда ваши часы повышаются - ИЛИ когда ваш сброс упадет
Первый тест reset==0
,затем перейдите в оператор else
.Исходя из того, что было сказано ранее, оператор else
будет выполняться ТОЛЬКО при повышении часов (потому что вы знаете, что reset! = 0).Итог: нет необходимости проверять if (clock)
.Вы можете сделать следующее:
always @ (posedge clock, negedge reset)
if(reset == 0) state <= S0; //Initialize to state S0
else case(state)
S0: state <= S1; else state <= S0;
...
Операторы else state <= S0
также не нужны, это то, что произойдет по умолчанию (ваш регистр не изменит значения, если вы явно не измените его).Но если это поможет вам прояснить ситуацию, это тоже не повредит ...
Надеюсь, это поможет!