Studenci: Tomasz Biały, Grzegorz Chmielewski, Michał Stasiuk, Prowadzący: dr inż. Paweł Tomaszewicz Projekt z UCYF Specyfikacja II (realizacja projektu w CAD) Temat: Sprzętowa realizacja gry Arkanoid 1. Informacje ogólne, stan gry na II etap projektu: 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 4. Pamięci ROM dla paletki i piłeczki 5. Pomocniczy moduł dzielnika zegara. 6. Pakiet stałych i komponentów 2. Moduł kontrolera VGA: v ga reset clk_f ster[1..0] hsy nc v sy nc rgb[2..0] inst Reset reset modułu Clk_f zegar systemowy Ster[1..0] - sterowanie Hsync impuls synchronizacji poziomej Vsync impuls synchronizacji pionowej Rgb[2..0] - sygnały kolorów przekazyane do VGA Moduł kontrolera VGA wyświetla na ekranie monitora plansze z obramowaniem, piłeczkę, paletkę, punkty, nr planszy oraz liczbę życ. W projekcie wybrano rozdzielczość obrazu 640x480. Częstotliwośc odświerzania: 60 Hz. 1/6
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 clock_pal reset ster[1..0] restart ster_pom[1..0] rusz ruszaj przesuniecie[31..0] inst2 Clock_pal zegar paletki (zdzielnikowany zegar systemowy) Reset reset modułu Ster[1..0] sygnały sterujące Restart sygnał restartu ster_pom[1..0] pomocniczy sygnał sterowania Rusz sygnał pozwalający piłce poruszac się leżąc na paletce (sytuacja na początku gry lub po restarcie) Ruszaj sygnał zwalniający piłkę z paletki Przesunięcie współrzędna położenia (pozioma) lewego krańca paletki 2/6
Illustration 2: Symulacja działania modułu paletki 4. Moduł obsługi piłeczki modul_pileczki clock_pil reset rusz ruszaj ster_pom[1..0] przesuniecie[31..0] restart wart_poz[31..0] wart_pion[31..0] f laga kierunek_pion kierunek_poz inst1 Clock_pil zegar piłeczki (zdzielnikowany zegar systemowy) Reset reset modułu Rusz - sygnał pozwalający piłce poruszac się leżąc na paletce (sytuacja na początku gry lub po restarcie) Ruszaj - sygnał zwalniający piłkę z paletki Restart sygnał restartu wart_poz[31..0] współrzędna pozioma piłki wart_pion[31..0] współrzędna pionowa piłki Flaga sygnał mówiący o tym czy dany klocek został zbity, czy nie; w dalszej wersji wykorzystany zostanie RAM do przechowywania informacji o stanie całej planszy. 3/6
ster_pom[1..0] sygnał pomocniczy sterowania kierunek_pion zwrot wektora poruszania się piłki w pionie (0 dół, 1 - góra) Przesunięcie współrzędna położenia (pozioma) lewego krańca paletki kierunek_poz zwrot wektora poruszania się piłki w poziomie (1 lewo, 0 - prawo) Illustration 3: Symulacja modułu piłeczki Illustration 4: Symulacja modułu piłeczki c.d 5. Moduł dzielnika zegara dzielnik Param eter Value Type g 2 Signed Integer h 3 Signed Integer clock setup wy nik inst3 4/6
Clock zegar systemowy Setup sygnał startowy Wynik zegar po zdzielnikowaniu 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 Wysokość - wysokość piłki 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 odpowiadające konkretnym kolorom w rejestrze kolorów. 7. Moduł ROM paletki rom_paletka wy sokosc[4..0] data[0..299] inst5 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. 5/6
8. Podsumowanie W obecnej wersji projektu udało nam się uruchomić wszystkie opisane moduły, a więc moduł kontrolera VGA, moduł obsługi paletki, piłeczki, wykorzystując przy tym pomocnicze moduły dzielnika zegara oraz pamięci ROM dla paletki i piłeczki. W obecnej wersji projekt wygląda następująco: wyświetlana jest plansza gry wraz z paletką (z możliwością poruszania nią), po ekranie, po zwolnieniu z paletki, porusza się piłeczka, która ma możliwość zbicia jednego klocka. 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 6/6