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;
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