Следующее из вашего кода является ошибкой
Вы переместили символ "=>" в агрегат, который содержит только другие:
when others => next_state <= (others <= 'x');
The следующее также является ошибкой, так как это неправильный тип для вашего примера
Если здесь уместно использовать совокупное присвоение (это не так), стрелка должна указывать в противоположном направлении (=>), как показано ниже. Также обратите внимание, что элементы в одинарных кавычках чувствительны к регистру и что все буквы std_ulogic / std_logi c имеют верхний регистр и, следовательно, это должен быть 'X' (также показан).
when others => next_state <= (others => 'X');
Вы должны сделайте это, чтобы исправить ваш код
Так как next_state имеет тип, state_values, вместо него должно быть:
when others => next_state <= st0;
Кроме того, часть вашего другого кода выглядит смешно, или вы используете некоторые языки альтернативные символы («00»). Вместо этого я бы рекомендовал использовать «00», если ваша клавиатура имеет символ «:
case data_in is
when "00" => next_state <= st1;
»