Projekt z UCYF Temat: Sprzętowa realizacja gry Arkanoid
Transkrypt
Projekt z UCYF Temat: Sprzętowa realizacja gry Arkanoid
Prowadzący: dr inż. Paweł Tomaszewicz Studenci: Tomasz Biały, Grzegorz Chmielewski, Michał Stasiuk, Projekt z UCYF Dokumentacja końcowa Temat: Sprzętowa realizacja gry Arkanoid 1. Informacje ogólne: Gra składa się z następujących modułów: 1. Nadrzędny moduł kontrolera VGA. 2. Moduł kontrolera paletki. 3. Moduł kontrolera ruchu piłeczki i wykrywania kolizji z klockami. 4. Pamięć ROM dla paletki. 5. Pamięć ROM dla piłeczki. 6. Pomocniczy moduł dzielnika zegara. 7. Pakiet stałych i komponentów. UWAGA: Na schematach modułów: niebieskie linie- porty typu in, fioletowe – porty typu out, ziolone – porty typu inout. 2. Moduł kontrolera VGA: v ga reset hsy nc clk_f v sy nc ster[1..0] rgb[2..0] inst Wejście: Wyjście: Reset – reset modułu Hsync – impuls synchronizacji poziomej Clk_f – zegar systemowy Vsync – impuls synchronizacji pionowej Ster[1..0] - sterowanie Rgb[2..0] - sygnały kolorów przekazyane do 1/5 VGA Moduł kontrolera VGA wyświetla na ekranie monitora plansze z obramowaniem, licznik 3 żyć w postaci 3 piłeczek, paletkę (czytajac z ROM – u paletki), piłeczkę (czytając z ROM – u piłeczki). W projekcie wybrano rozdzielczość obrazu 640x480. Częstotliwośc odświerzania: 60 Hz. Jednostka taktowana jest zegarem oscylatora kwarcowego równym 25.175 MHz. Do napisania tego modułu wykorzystaliśmy sterownik VGA opisany w [1] na str. 163 oraz korzystaliśmy ze strony internetowej [6]. Illustration 1: Symulacja sterownika VGA 3. Moduł obsługi paletki modul_paletki nast_plansza ster_pom[1..0] koniec_gry rusz clock_pal reset ruszaj przesuniecie[31..0] ster[1..0] restart inst Wejścia: nast_plansza – sygnał – flaga informujący o zmianie planszy Wyjścia: ster_pom[1..0] – pomocniczy sygnał sterowania 2/5 koniec_gry – sygnał – flaga informujący o zakończeniu gry Rusz – sygnał pozwalający piłce poruszac się leżąc na paletce (sytuacja na początku gry lub po restarcie) Clock_pal – zegar paletki (zdzielnikowany zegar systemowy)Reset – reset modułu Ruszaj – sygnał zwalniający piłkę z paletki Reset – reset modułu Przesuniecie – współrzędna położenia (pozioma) lewego krańca paletki Ster[1..0] – sygnały sterujące Restart – sygnał restartu 4. Moduł obsługi piłeczki i wykrywania kolizji z klockami modul_pileczki clock_pil nast_plansza reset licz_zy c[1..0] rusz koniec_gry ruszaj ster_pom[1..0] przesuniecie[31..0] restart wart_poz[31..0] wart_pion[31..0] wiersz0[7..0] wiersz1[7..0] wiersz2[7..0] wiersz3[7..0] wiersz4[7..0] wiersz5[7..0] wiersz6[7..0] wiersz7[7..0] wiersz8[7..0] kierunek_pion kierunek_poz inst Wejścia Wyjścia Clock_pil – zegar piłeczki (zdzielnikowany zegar systemowy) nast_plansza – sygnał – flaga informujący o zmnianie planszy Reset – reset modułu licz_zyc[1..0] – licznik żyć Rusz - sygnał pozwalający piłce poruszac się koniec_gry – sygnał – flaga informujący o leżąc na paletce (sytuacja na początku gry lub zakończeniu gry po restarcie) Ruszaj - sygnał zwalniający piłkę z paletki Restart – sygnał restartu ster_pom[1..0] – sygnał pomocniczy sterowania wart_poz[31..0] – współrzędna pozioma piłki Przesunięcie[31..0] – współrzędna położenia wart_pion[31..0] – współrzędna pionowa piłki 3/5 (pozioma) lewego krańca paletki Wierszi[7..0], gdzie i należy do <0;8> - rejestry informjące o stanie planszy; każdy rejestr to wiersz klocków (0 – wiersz na górze planszy, 8 – wiersz na dole planszy), 1 w rejestrze oznacza, że klocek nie został zbity, 0 – klocek zbito. kierunek_pion – zwrot wektora poruszania się piłki w pionie (0 – dół, 1 - góra) kierunek_poz – zwrot wektora poruszania się piłki w poziomie (1 – lewo, 0 - prawo) W tym module działa zaimplementowany jest też automat gry. 5. Moduł dzielnika zegara Param e te r V alue Type g 2 Signed Integer h 3 Signed Integer dzielnik clock wy nik setup inst3 Wejścia Wyjścia Clock – zegar systemowy Wynik – zegar po zdzielnikowaniu Setup – sygnał startowy Dzielnik zegara wykorzystywany jest do zmniejszenia zegara systemowego odpowiednio do potrzeb taktowania poruszania się piłki (50 000 razy mniejszy = 503,5 Hz) lub paletki (30 000 razy mniejszy = 839,2 Hz). . 6. Moduł ROM piłki rom_pilka wy sokosc[3..0] data[0..29] inst4 Wejścia Wysokość - wysokość piłki Wyjścia Data – opis każdego piksela w linii (każdy piksel opisują 3 bity) Pamięć ROM piłki służy do nadania piłce okrągłych kształtów. Przechowuje ona sekwencje bitów 4/5 odpowiadające konkretnym kolorom w rejestrze kolorów. 7. Moduł ROM paletki rom_paletka wy sokosc[4..0] data[0..299] inst5 Wejścia Wyjścia Wyokość – wysokość paletki Data - opis każdego piksela w linii (każdy piksel opisują 3 bity) Pamięć ROM paletki służy do „wymodelowania” kształtów paletki. Przechowuje ona sekwencje bitów odpowiadające konkretnym kolorom w rejestrze kolorów. Pisząc pamięci ROM nie korzystaliśmy z MegaWizarda, lecz pisaliśmy je samodzielnie korzystając z pozycji [1], s. 168. 8. Podsumowanie W ostatecznj wersji projektu udało nam się uruchomić wszystkie opisane moduły, a więc moduł kontrolera VGA, moduł obsługi paletki, piłeczki i detekcji kolizji pilki z klockami, wykorzystując przy tym pomocnicze moduły dzielnika zegara oraz pamięci ROM dla paletki i piłeczki. Projekt wygląda następująco: wyświetlane są plansza i jej obramowanie, licznik żyć, paletka i piłeczka. Zwolnienie piłeczki z paletki nastepuje po jednoczesnym naciśnięciu przycisków sterowania, następnie tymi przyciskami steruje się paletką. Stworzyliśmy 5 różnych plansz. Nie wykorzystaliśmy pamięci RAM, jak to było opisane w specyfikacji wstępnej, zastosowaliśmy zamiast tego układ 9 niezależnych rejestrów. Projekt zajmuje 2136 komórek logicznych. Kompilacja trwa ok. 1 min 40 sec. 9. Bibliografia [1] „Projektowanie układów cyfrowych z wykorzystaniem języka VHDL” Zwoliński Mark [2] „Układy FPGA w przykładach” Sterownik monitora VGA s.163 Majewski, Zbysiński [3] „Synteza układów cyfrowych” Łuba Tadeusz [4] „VHDL język opisu i projektowania układów cyfrowych” Włodzimierz Wrona [5] „Rapid Prototyping of Digital Systems” James O. Hamblen, Michael D. Furman [6] http://www.tinyvga.com/vga-timing/640x480@60Hz 5/5