Odczyt klawiatury

Zadanie: Układ ma odczytywać sygnały z dołączonej klawiatury (w trybie zdalnym - emulowanej klawiatury) PS/2 i wyświetlać na wyświetlaczu 7-segmentowym LED naciśnięte klawisze (należy wybrać dowolny wyświetlacz z 4 dostępnych). Ponieważ dostępny jest tylko wyświetlacz 7-segmentowy, rozpoznawać należy tylko następujące klawisze: 1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f. W przypadku wciśnięcia innego klawisza, wyświetlacz należy wygasić.

Uwaga: W trybie stacjonarnym należy podłączyć klawiaturę USB do gniazda USB HOST na płytce prototypowej NEXYS A7. Na płytce znajduje się mikrokontroler dokonujący konwersji komunikacji HID USB na protokół PS/2 – który wykorzystujemy w ćwiczeniu. W trybie zdalnym wykorzystujemy moduł przycisków i przełączników wirtualnych. Moduł ten pozwala także na emulację klawiatury PS/2 (Keyboard Mode w programie do obsługi „Virtual buttons”), więc nie ma potrzeby jej podłączania. Szczegółowy opis można znaleźć w instrukcji zdalnej realizacji zadań laboratoryjnych.

Przycisk BTNR (BTN3) (sygnał rst_i) to dodatkowy reset asynchroniczny (powinien wygasić wyświetlacz).

 

Sygnały „ps2_clk_i” oraz „ps2_data_i” to wejścia interfejsu klawiatury PS/2. Należy zrealizować wyłącznie odczyt z klawiatury (sygnały danych i zegara przychodzące z emulowanej klawiatury powinny mieć zdefiniowany kierunek in). Szczegółowe informacje o działaniu interfejsu PS/2 można znaleźć w poniższym linku:

Informacje dodatkowe - odczyt klawiatury

 

Należy pamiętać, że wejście „ps2_clk_i” nie może pełnić funkcji wejścia zegarowego i w związku z tym nie można podłączać tego wejścia do wejść zegarowych przerzutników. Wejście to należy próbkować tak jak wejście danych (pamiętając o wstępnej synchronizacji z lokalnym zegarem).

 

Należy wykonać symulację funkcjonalną oraz zweryfikować układ praktycznie poprzez zaprogramowanie płytki testowej.

 

Minimalne wymagania dotyczące symulacji i weryfikacji na płytce: wykonać symulację i weryfikację na płytce naciskania klawiszy tworzących numer indeksu studenta (lub jednego studenta z grupy) zaliczającego ćwiczenie. Dodatkowo weryfikacja na płytce powinna także zademonstrować wszystkie wykrywane cyfry i litery oraz reakcję na inny znak (wygaszenie). Na zakończenie weryfikacji wprowadzić dowolną cyfrę i pokazać działanie resetu asynchronicznego (rst_i). Częstotliwość zegara clk_i w symulacji – 100 MHz. Częstotliwość zegara ps2_clk_i w symulacji – 15 kHz.

 

Fragment głównego pliku projektowego VHDL z deklaracją sygnałów:

 

entity top is

    Port ( clk_i : in STD_LOGIC;

           rst_i : in STD_LOGIC;

           ps2_clk_i : in STD_LOGIC;

           ps2_data_i : in STD_LOGIC;

           led7_an_o : out STD_LOGIC_VECTOR (3 downto 0);

           led7_seg_o : out STD_LOGIC_VECTOR (7 downto 0));

end top;

 

Wyświetlacz LED
Rys.1 Opis podłączeń poszczególnych segmentów wyświetlacza. Przykład wyświetlenia cyfry '2'


Plik z ograniczeniami projektowymi dla płytki Nexys-A7 (układ FPGA xc7a100tcsg324-1):  iup8s.xdc 

 

Wersja pliku z ograniczeniami projektowymi przeznaczona dla trybu zdalnego (obsługa przycisków wirtualnych i emulacja klawiatury PS/2): iup8z.xdc