Only enumerated type should be used to encode an FSM.
signal sm_moore : std_logic_vector(3 downto 0);
state_moore_type is (state1, state2, state3); signal sm_moore : state_moore_type;