Rzut monetą

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