LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY keyboard IS PORT ( clk : IN STD_ULOGIC; --50Mhz Systemtakt reset : IN STD_ULOGIC; --Reset-Signal keyclock : IN STD_ULOGIC; --PS/2 Taktsignal keydata : IN STD_ULOGIC; --PS/2 Datensignal enable : IN STD_ULOGIC; --Switch Signal zum Umschalten zwischen dem Decoder und Encoder data_keyboard : INOUT STD_ULOGIC_VECTOR (7 DOWNTO 0); --8-Bit breites Datensignal, das die zuletzt losgelassene Taste der PS/2- --Tastatur repräsentiert done_pressing : INOUT STD_ULOGIC --gibt an ob die Tastaturtaste losgelassen wurde und die Datenübertragung beendet wurde ); END keyboard; ARCHITECTURE structure OF keyboard IS SIGNAL keyval : STD_ULOGIC_VECTOR (10 DOWNTO 0); --11-Bit breites Signal zur Aufnahme aller Daten des PS/2-Datensignals SIGNAL key_pressed : STD_ULOGIC_VECTOR (7 DOWNTO 0); --Temporäres Signal in dem der Hexwert einer Taster gespeichert wird SIGNAL sync_keyclock : STD_ULOGIC; --Synchronisiertes PS/2-Taktsignal SIGNAL sync_keydata : STD_ULOGIC; --Synchronisiertes PS/2-Datensignal BEGIN --------------------------------------------------------------- --Synchronisiert den PS/2-Takt und die PS/2-Daten miteinander-- --------------------------------------------------------------- sync: PROCESS (clk, keydata, keyclock) BEGIN IF clk'EVENT AND clk = '1' THEN sync_keyclock <= keyclock; sync_keydata <= keydata; END IF; END PROCESS;