Pobierz
Transkrypt
Pobierz
Układy Cyfrowe Specyfikacja wstępna „Zebranie informacji dotyczących tematyki projektu oraz przedstawienie koncepcji realizacji projektu” Projekt: Realizacja: Emil Rosłanowski Adrian Staniec Michał Waśkiewicz 1. Informacje ogólne dotyczące gry Tetris: Krótki zarys historyczny Tetris – gra komputerowa stworzona przez Aleksieja Pażytnowa w 1985 roku w Związku Radzieckim. Oryginalna wersja powstała podczas pracy Pażytnowa w Moskiewskiej Akademii Nauk dla komputera Electronica 60. Gra posiada dużą ilość różnorodnych wariacji i implementacji. Do powstania programu zainspirowała Pażytnowa gra Pentomino. ● Reguły gry Gra rozgrywa się na prostokątnej planszy(początkowo pustej) zwanej tetrionem lub matriksem ułożonej krótszym bokiem w poziomie. Tetrion ma wymiary 20 wierszy na 10 kolumn. W trakcie gry, pośrodku górnej krawędzi planszy, pojawiają się pojedynczo klocki złożone z czterech małych kwadratów nazywanych też blokami. Klocki te (określane mianem tetramino) przemieszczają się (spadają) w kierunku dolnej krawędzi w miarę możliwości. Kiedy jedno tetramino opadnie na samo dno, zostaje unieruchomione a następne ukazuje się u góry planszy nowy element. Gra trwa aż do momentu w którym klocek nie będzie mógł pojawić się na planszy. Zadaniem gracza jest układanie – wykorzystując rotacje i przesuwając klocek w poziomie – tetramino na planszy tak, aby kwadraty składające się na nie utworzyły wiersz na całej szerokości prostokąta. W takiej sytuacji wiersz ten zostaje usunięty, a pozostałe klocki opadają w kierunku dna tworząc więcej przestrzeni dla następnych elementów.Możliwe jest jednoczesne usunięcie maksymalnie 4 wierszy – umożliwia to tetramino "I". Sytuacja taka nosi nazwę identyczną jak gra, czyli "tetris". ● 2. Proponowany sposób realizacji: 1. W grze dostępnych jest 7 odmian klocków (przedstawione obok), przy czym każdy z nich można obrócić, co tworzy 19 różnych figur. 2. W naszej realizacji będą trzymane w pamięci mapy pełnych 28 możliwości – 7 klocków x 4 obroty. 3. Plansza posiada standardowy rozmiar tj: 10x20. 4. Mapa statycznej części planszy (bez aktualnie opadającego klocka) przechowywana będzie w pamięci RAM. 5. Dane na temat aktualnie spadającego klocka (pozycja, rodzaj, obrót) przechowywane są w odpowiednich rejestrach. 6. W grze zostanie zaimplementowany prosty system punktacji – 10pkt za ułożenie jednej linii. 7. Każdemu klockowi zostanie przyporządkowany jeden, ściśle określony kolor. 8. Sterowanie grą odbywa się za pomocą pięciu przycisków: lewo, prawo, szybki dół, obrót, start/pauza. 9. Przycisk szybki dół powoduje przyspieszenie obniżania się klocka. 10. Gra wyświetlana będzie na monitorze VGA wraz z punktacją i kolejnym klockiem. 3. Opis funkcji poszczególnych elementów i sposób ich współdziałania: 3.1. Generator nowego klocka Generator nowego klocka zbudowany jest z licznika i rejestru zatrzaskowego. Licznik zlicza cykle zegara systemowego, natomiast rejestr jest zatrzaskiwany w chwili, kiedy zostanie naciśnięty dowolny z przycisków sterujących. Takie podejście do generowania nowego klocka zapewniło bardzo dużą losowość w tym elemencie. Na wyjściu modułu zawsze dostępny jest numer wylosowanego klocka. 3.2. Moduł kontrolera klawiatury Moduł ten odpowiedzialny jest za komunikację z klawiaturą. Moduł zaczyna swoją pracę w chwili gdy na linii start pojawi się stan wysoki. Sprawdza czy użytkownik wcisnął jakikolwiek przycisk i realizuje odpowiednią funkcję. Moduł odpowiedzialny jest również za sprawdzenie czy przy przesuwaniu klocka na boki nie następuje zderzenie ze ścianami a także czy możliwy jest dany obrót. Moduł korzysta z pamięci RAM, a także z rejestrów w których przechowywane są dane aktualnie spadającego klocka (pozycja X,Y; rodzaj klocka; obrót). Może również modyfikować te dane, zgodnie z wejściem z klawiatury. Po zakończeniu pracy, moduł wystawia sygnał stop. 3.3. Moduł kontrolera gry Moduł kontrolera gry odpowiedzialny jest za ogólne kierowanie grą, sprawdzanie, czy nie nastąpiło osadzenie aktualnego klocka, obliczanie punktów, kasowanie linii i wykrywanie ewentualnego końca gry. Moduł komunikuje się z pamięcią RAM, gdzie zaspisywana jest plansza oraz przechowywane są szablony klocków, rejestrami odpowiedzialnymi za dane o aktualnym klocku. Moduł uruchamiany jest stanem wysokim na linii start, a zakończenie swojej pracy sygnalizuje za pomocą linii stop. Poniżej przedstawiono wstępny algorytm pracy modułu: Wstaw nowy klocek na poczatek Losuj kolejny klocek Nie Sprawdz czy mozna opuscic element Tak Nie Zapisz do planszy Ostatnia linia pelna Tak Nie Sprawdz czy usunac wiersze Tak Usun wiersz Opusc klocek Koniec Gry Zwieksz liczbe punktow 3.4. Bloki pamięciowe Elementem z których będą korzystać wszystkie bloki i niejako scaleniem wszystkich tych elementów są moduły pamięciowe, tj. pamięć RAM w której przechowywana jest mapa planszy bez aktualnie opuszczanego klocka (każde pole reprezentowane jest przez jedną liczbę 3 bitową - 0 jako brak klocka i odpowiednie liczby jako numer klocka) a także siatki (4x4 pola) wszystkich klocków wraz z obrotami. Dodatkowo konieczne jest przechowywanie położenie środka aktualnego klocka, a także jego rodzaju i obrotu. W tym celu wykorzystano rejestry zatrzaskowe. 3.5. Blok kontrolera VGA Ze względu na to, że podczas wystawiania sygnałów na linie VGA konieczny jest ciągły dostęp do pamięci RAM, nie jest możliwe w tym czasie manipulowanie danymi. W związku z tym to właśnie moduł kontrolera VGA pełni rolę nadrzędną w systemie i to on wystawia sygnały startu zarówno dla kontrolera klawiatury jak i dla modułu kontrolera gry. Zapobiega się w ten sposób próbie jednoczesnego dostępu przez kilka modułów do wspólnych danych i jednocześnie umożliwia synchronizację wszystkich elemntów gry. Dodatkowo zapewniona jest możliwość sterowania szybkością gry (poprzez różną częstotliwość generowania sygnałów startu dla poszczególnych modułów). Kontroler VGA generuje na ekran oprócz głównej planszy programu także punktację oraz wizualizację kolejnego elementu. Aktualny stan Tetrionu, czyli planszy gry generowany jest na podstawie zawartości RAMu oraz rejestrów odpowiedzialnych za przechowywanie informacji o spadającym klocku. W bloku kontrolera VGA zaimplementowana będzie również funkcjonalność związana z obsługą nowej gry a także zakończeniem całej gry. Proponowany graf działań wygląda następująco: Tetris Generator Planszy Nie Start Tak Wlasciwa Gra Tak Zagraj Ponownie Nie Koniec 4. Możliwości rozbudowy Po usunięciu określonej ilości wierszy prędkość gry wzrasta utrudniając tym samym precyzyjne sterowanie kolejnymi tetramino. Punktacja jest obliczana w zależności od ilości linii usuniętych jednocześnie - większa ilość punktów za jednoczesne usunięcie kilku linii. 5. Bibliografia 5.1. „Projektowanie układów cyfrowych z wykorzystaniem języka VHDL” Zwoliński Mark 5.2. „Układy FPGA” Sterownik monitora VGA s.163 Majewski, Zbysiński 5.3. „Synteza układów cyfrowych” Łuba Tadeusz 5.4. Opis płytki testowej: http://www.zpt.tele.pw.edu.pl/~ptomasze/docs/univ.pdf 5.5. Wikipedia – informacje ogólne