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