+ if new_data = '1' then
+ case data is
+ when x"f0" =>
+ state_next <= SIGNORE_NEXT;
+ when x"e0" =>
+ state_next <= SREAD_NEXT;
+ when SC_BKSP =>
+ state_next <= SDEL;
+ when SC_ENTER =>
+ state_next <= SENTER;
+ when SC_KP_0 | SC_KP_1 | SC_KP_2 | SC_KP_3 |
+ SC_KP_4 | SC_KP_5 | SC_KP_6 | SC_KP_7 |
+ SC_KP_8 | SC_KP_9 | SC_KP_PLUS |
+ SC_KP_MINUS | SC_KP_MUL | SC_SPACE =>
+ state_next <= STAKE;
+ when others => state_next <= SIDLE;
+ end case;
+ end if;
+ when SIGNORE_NEXT =>
+ if new_data = '1' then
+ state_next <= SIDLE;
+ end if;
+ when SREAD_NEXT =>
+ if new_data = '1' then
+ case data is
+ when x"f0" =>
+ state_next <= SIGNORE_NEXT;
+ when SC_ENTER =>
+ state_next <= SENTER;
+ when SC_KP_DIV =>
+ state_next <= STAKE;
+ when others => state_next <= SIDLE;
+ end case;