Digilent Nexys2: implementacja interfejsu klawiatury PS/2 w VHDL
W projekcie przedstawiamy obsługę portu szeregowego PS/2, który służy m.in. do komunikacji z klawiaturą. Projekt ten został stworzony w łatwy sposób na zestawie uruchomieniowym Nexys2 500K Kit firmy Digilent (patrz fotografia 1).
Fot. 1. Zestaw uruchomieniowy Nexys2 500K Kit
Klawiaturę należy podłączyć do gniazda PS/2. Do wyświetlania wciskanych klawiszy użyto kaskady wyświetlaczy 7-segmentowych. Wykorzystany sterownik tych wyświetlaczy umożliwia wyświetlenie jedynie liczb 0-9 oraz liter A-F. Wciśnięcie na klawiaturze innego klawisza niż 0-9 oraz A-F powoduje wygaszenie danego wyświetlacza. Na kaskadzie wyświetlane są ostatnie 4 wciśnięte klawisze. Ostatnio wciśnięty klawisz wyświetlany jest na skrajnie prawej pozycji kaskady (patrz rysunek 2).
Rys. 2. Peryferia funkcyjne projektu wraz z opisem
Komponenty projektu
Do obsługi klawiatury PS/2 w projekcie użyto wcześniej zaprojektowanych komponentów. Pierwszy z nich to dzielnik częstotliwości sygnału zegarowego przez stałą wartość N. Komponent ten pokazano na rysunku 3.
Rys. 3. Komponent dzielnika częstotliwości
Opis sygnałów:
rst – sygnał reset (niewykorzystywany w tym projekcie)
clk_in – wejściowy sygnał zegarowy
clk_out – wyjściowy, podzielony przez N sygnał zegarowy
Kolejny komponent to sterownik kaskady wyświetlaczy 7-segmentowych ze wspólną anodą. Sterownik ten przedstawiono na rysunku 4.
Rys. 4. Komponent sterownika kaskady wyświetlaczy
Opis sygnałów:
clk_i – wejściowy sygnał zegarowy
rst_i – sygnał reset, który resetuje kaskadę wyświetlaczy
digit_i – szyna danych złożona z 32 bitów, każdy bit określa stan konkretnego segmentu kaskady wyświetlaczy
led7_seg_o – szyna danych złożona z 8 bitów, określa stan jednej cyfry w kaskadzie
led7_an_o – szyna danych złożona z 4 bitów, aktualnie wyświetlana cyfra jest określana poziomem niskim