Układ
realizujący grę „rzut monetą” jest już zrealizowany i dostępny do pobrania: moneta.vhd
Układ działa w taki sposób, że po naciśnięciu przycisku BTNC bardzo
szybko (z częstotliwością zegara 100 MHz) przełącza diody świecące LD0-15
pomiędzy dwoma stanami: ORZEŁ (wszystkie diody się świecą) i RESZKA
(żadna dioda się nie świeci). Po zwolnieniu przycisku przełączanie zatrzymuje
się i wyświetla się wylosowany stan.
Wejścia układu:
- clk_i
- na to wejście będzie podawany zegar o częstotliwości 100 MHz,
- btn_i - przycisk BTNC na płytce prototypowej (środkowy), jest
to przycisk uruchamiania gry.
Wyjścia układu:
- led_o - diody świecące LD0-15 – sygnał wyniku losowania.
Należy zweryfikować układ praktycznie poprzez zaprogramowanie płytki testowej,
a następnie poprawić zaobserwowane błędy.
Minimalne wymagania dotyczące zaliczenia zadania:
Należy wykonać test polegający na wielokrotnym naciskaniu przycisku BTNC, aż do momentu wystąpienia błędu. Typowo wystarczy kilkanaście naciśnięć (czasami może być potrzebne kilkadziesiąt). Należy poprawić błąd w kodzie dodając brakujący układ. W kodzie jest zaznaczone miejsce gdzie można wprowadzać zmiany (jest to obszar pomiędzy komentarzami):
-- Początek obszaru modyfikacji kodu
-- Koniec obszaru modyfikacji kodu
Nie wolno zmieniać nic poza tym obszarem.
Działający
poprawnie układ zademonstrować prowadzącemu laboratorium. Wyjaśnić prowadzącemu
przyczynę błędów w oryginalnym kodzie i omówić zastosowany sposób rozwiązania
problemu.
Poprawiony kod wysłać na e-nauczanie.
Fragment głównego pliku projektowego VHDL z deklaracją sygnałów:
entity moneta is
Port ( clk_i : in STD_LOGIC;
btn_i : in STD_LOGIC;
led_o : out STD_LOGIC_VECTOR (15 downto 0));
end moneta;
Plik z ograniczeniami
projektowymi dla płytki Basys 3 (układ FPGA xc7a35tcpg236-1): iup7.xdc