fast cars

background image

Układy Cyfrowe

Specyfikacja funkcjonalna projektu

Piotr Romanowski, Cezary Sałbut

5 listopada 2008

1

background image

1

Cel projektu

Celem projektu jest implementacja gry zręcznościowej „Fast Cars” w ukła-
dzie programowalnym FPGA.

2

Opis gry

W grze „Fast Cars” gracz wciela się w rolę kierowcy uciekającego przed
pościgiem na ruchliwej autostradzie. Celem gry jest umiejętne prowadzenie
samochodu i bezpieczne wyprzedzanie innych samochodów cały czas jadąc
z dużą prędkością aby nie dać się złapać i dojechać do celu.

Rysunek 1: Przykładowy wygląd ekranu w trakcie gry

3

Mechanika gry

Akcja rozgrywa się na czteropasmowej autostradzie, na której nie ma żad-
nych zakrętów. Samochód kontrolowany przez gracza znajduje się przy lewej
krawędzi ekranu. Wrażenie jazdy w prawo jest osiągane dzięki przesuwaniu
linii przerywanych rozdzielających pasy ruchu. Z prawej strony ekranu wjeż-
dżają na drogę niekontrolowane przez gracza pojazdy – przeszkody, zderze-
nie z którymkolwiek z nich oznacza koniec gry. Aby unikać zderzeń, musimy
zmieniać pas po którym się poruszamy (przyciski UP, DOWN). Zmiana
pasa następuje skokowo, po jednokrotnym wciśnięciu przycisku. Gracz nie
ma możliwości poruszania się po ekranie w prawo lub w lewo.

Pojazdy – przeszkody poruszają się z różnymi (wybieranymi losowo)

2

background image

prędkościami

1

: V

1

, V

2

lub V

3

. Pojazd gracza ma prędkość V

0

. Zależności

między prędkościami obrazuje tabelka:

numer etapu

1

2

3

11

20

V

0

1

20

1

19

1

18

1

10

1
1

V

1

1

25

1

24

1

23

. . .

1

15

. . .

1
6

V

2

1

30

1

29

1

28

1

20

1

11

V

3

1

35

1

34

1

33

1

25

1

16

Tablica 1: Zależność prędkości obiektów od etapu gry (w pix/t

0

)

Parametr t

0

to kwant czasu, określony jako pewna liczba okresów zegara.

Każdy obiekt porusza się o jeden piksel w czasie określonym w tabelce,
uzyskujemy w ten sposób różne prędkości.

4

Algorytm modułu sterującego

Rysunek 2: Sieć ASM automatu game driver

1

Wartości liczbowe podane w tabeli są dobrane „na oko”. Prawdopodobnie zmienimy

je tak, by gra nie była zbyt łatwa ani zbyt trudna. Zasada obliczania będzie jednak taka
sama.

3

background image

Stany automatu:

[OFF] – moduł wyłączony dla sygnału start w stanie niskim
[LEVEL (change)] – zmiana poziomu gry, począwszy od pierwszego, ocze-
kuje na potwierdzenie gracza – sygnał UP lub DOWN sterowane za pomocą
przycisków interfejsu
[DRIVE] – faza właściwa gry, trwająca do momentu szczęśliwego ukończenia
etapu, porażki gracza lub wyłączenia gry
[RESULT] – prezentacja wyników gracza po zakończeniu gry wskutek wy-
padku

Sygnały wejściowe sterujące automatem:

Zewnętrzne:
START – pochodzi z przełącznika na płytce, w stanie wysokim uruchamia
układ, zmiana na stan niski bezwzględnie wyłącza układ
UP, DOWN – sygnały pochodzące z przycisków na płytce. Sterują one ru-
chem samochodu, oraz oznaczają gotowość gracza do dalszej gry przy zmia-
nie etapu/rozpoczęciu gry.

Wewnętrzne pochodzące z innych modułów, układów operacyjnych (pre-
dykaty):
FINISH – oznacza pomyślne ukończenie kolejnego etapu gry
CRASH – oznacza zderzenie samochodu gracza z innym pojazdem

Do momentu włączenia układu przez sygnał START gra jest wyłączona

[OFF].

Po włączeniu gry automat przechodzi do stanu zmiany etapu gry [LE-

VEL], gdzie oczekuje na oznakę gotowości gracza poprzez wciśnięcie jednego
ze sterujących samochodem przycisków (UP lub DOWN). W tym stanie
znajduje się też automat po udanym ukończeniu jednego z etapów i przed
rozpoczęciem kolejnego. Etap jest zaliczony, jeśli przez stały, z góry okre-
ślony czas gracz nie zderzy się z innym samochodem. Wszystkie etapy będą
miały taką samą długość.

Po otrzymaniu oznaki gotowości gracza, rozpoczyna się właściwa gra

[DRIVE], podczas której gracz steruje samochodem i unika zderzenia z in-
nymi pojazdami. Układ wychodzi z tego stanu na skutek wyłączenia gry
(sygnał ’start’ w stanie niskim) lub po wypadku i porażce gracza (sygnali-
zowanej przez sygnał predykatowy CAR CRASH) przechodzi do stanu wy-
świetlenia jego wyniku, bądź też po udanym zakończeniu etapu automat
przechodzi do stanu zmiany poziomu gry. Do tego stanu automat prze-
chodzi również po wyświetleniu wyniku gracza i gracz może rozpocząć grę
ponownie od pierwszego etapu.

4

background image

5

Moduły

Moduł sterujący (game driver)

Moduł ten jest automatem stanów, został opisany w punkcie

4

Moduł obliczeniowy (processing unit)

Ten moduł odpowiada za wszelkie obliczenia związane z procesem jazdy.

Przechowuje informacje o wszystkich obiektach, ich pozycjach i prędko-
ściach. Odpowiada za ich przemieszczanie, a także sprawdza czy nastąpiło
zderzenie.

Sygnały wejściowe UP i DOWN pochodzą od gracza, dzięki nim prowa-

dzony pojazd zmienia pas po którym jedzie.

CAR VECTOR określa jakie nowe pojazdy pojawią się na ekranie. Sy-

tuację na pasie ruchu determinują 2 bity:
00: brak nowego pojazdu na pasie
01: nowy pojazd o prędkości V1
10: nowy pojazd o prędkości V2
11: nowy pojazd o prędkości V3

Dwa bity dla każdego pasa dają w sumie 8–bitowy wektor określający

pojawianie się nowych pojazdów.

Sygnały NEW GAME i NEXT LEVEL pochodzą od modułu sterują-

cego. Powodują odpowiednio przejście układu do stanu początkowego (roz-
poczęcie nowej gry) i przejście do następnego etapu (zwiększenie prędkości
samochodów, usunięcie wszystkich obiektów z pola gry).

CAR CRASH przyjmuje wartość 1 gdy nastąpi zderzenie, czyli koniec

gry.

LEVEL FINISH jest generowany po upłynięciu stałego czasu od po-

czątku etapu. Oznacza pomyślne jego ukończenie i przejście na następny
poziom.

5

background image

NEXT WAV REQ (next wave request) to żądanie wygenerowania nowej

„fali” pojazdów przez układ losujący. Sygnał ten jest wysyłany co stały, z
góry określony czas, więc nowe samochody pojawiają się na ekranie zawsze
z taką samą częstoliwością.

OBJ POSITION określa pozycje wszystkich samochodów – przeszkód

(wstępnie 10 7-bitowych liczb, wartość ta zależy od rozdzielczości ekranu
i maksymalnej liczby pojazdów na ekranie.)

Moduł losowości (randomizing unit)

Zadaniem modułu jest generowanie losowego układu pojawiających się w

zasięgu gracza obcych samochodów. Działanie modułu jest w dużej mierze
oparte na generatorach liczb pseudolosowych dla układów cyfrowych. W tej
roli używany będzie liniowy rejestr ze sprzężeniem zwrotnym, tzw. LFSR
(Linear Feedback Shift Register).

Jest to rejestr przesuwny, którego bi-

tem wejściowym jest liniowa funkcja poprzedniego stanu (XOR lub XNOR).
Sekwencja wartości otrzymywanych z tego rejestru jest jednoznacznie okre-
ślona przez obecny stan. Ponieważ rejestr ten może przyjąć skończoną liczbę
różnych wartości, jego wartości powtarzają się cyklicznie. N-bitowy LFSR
może mieć maksymalnie cykl o długości 2n -1. Jeden pomijany w sekwen-
cji stan LFSR to wektor składający się z samych 0 lub 1, w zależności od
użytej funkcji. Z punktu widzenia grywalności nieodpowiednim stanem jest
zawartość rejestru równa ’1111’ , co oznaczałoby samochód na każdym pa-
sie. Dlatego też wykorzystany będzie LFSR 4-bitowy z funkcją sprzężenia
zwrotnego realizowaną przez bramkę XNOR, na której wejścia podane będą
wartości dwóch trzeciego i czwartego(MSB) bitu rejestru. W takiej konfigu-
racji, LFSR będzie generował sekwencję o maksymalnej długości (16 – 1 =
15) z pominięciem stanu ’1111’.

Moduł wizualizacji i obsługi
pamięci RAM (graphics unit)

Na postawie danych z OBJ POSITION generuje pojedyncze klatki ob-

razu i zapisuje je w pamięci RAM. Zapewnia wysłanie do przetwornika VGA

6

background image

odpowiednich linii w kolejności, która w efekcie utworzy pełen obraz chwi-
lowego stanu gry. Pamięć RAM będzie częścią opisywanego modułu.

6

Wstępne założenia realizacji

Wizualizacja gry na ekranie:
W celu wyświetlania przebiegu gry na ekranie korzystamy z przetwornika
VGA. Uzyskujemy w ten sposób rozdzielczość 640x480. Jednakże główne
pole gry – 4 pasy autostrady po której poruszają się samochody nie bę-
dzie zajmowała całego ekranu. Istotnym jest, aby gracz widział możliwie
długi odcinek drogi przed swoim samochodem, a zatem ustawiając pasy au-
tostrady horyzontalnie na ekranie, suma szerokości pasów będzie zajmowała
okoły połowy wysokości. W celu uproszczenia wizualizacji dzielimy obraz
na „makropiksele” – kwadraty o boku równym 8 pikseli. Efektywna roz-
dzielczość wynosi wtedy 80x60 makropikseli.

Pamięć RAM
W układzie wykorzystywana jest pamięć RAM, w której zapisywany jest ob-
raz, jaki powinien znaleźć się na ekranie. Jednakże w celu optymalizacji nie
jest dokonywany zapis wartości wszystkich pikseli na ekranie. Cały obraz
stworzony jest w rzeczywistości z maksymalnie 8 róznych linii, tj. pobocza
, linii ciągłej, linii przerywanej, wolnego odcinka pasa ruchu, oraz czterech
odrębnych pasów wraz z poruszającymi się po nich samochodami. Dlatego
też,w pamięci przechowywane będą wartości wyłącznie 8 wierszy pikseli.

Literatura

[1] Łuba T., Zbierzchowski B.: Komputerowe projektowanie układów cy-

frowych. WKŁ, Warszawa 2000.

[2] Gra zręcznościowa Speed Chase. Dostępna online:

http://poszkole.

pl/gry.php?co2=play&idm=1664

[3] Tomaszewicz P.: wykład nr 11 przedmiotu PRUS – Projektowanie pro-

gramowalnych układów scalonych Dostępny online:

http://wwwzpt.

tele.pw.edu.pl/PRUS/prus_w11.pdf

[4]

http://www.xilinx.com/support/documentation/application_
notes/xapp052.pdf

[5] Projekty z przedmiotu UCYF z lat ubiegłych

http://tomaszewicz.zpt.tele.pw.edu.pl/node/110

7


Document Outline


Wyszukiwarka

Podobne podstrony:
U2 Fast Cars
Naród fast foodów - fragmenty, Zdrowie
dpf doctor diagnostic tool for diesel cars function list
AC31 07KP53 fast Modbus interface EN
CARS autyzm
Rewolucja Na Talerzu s02e01 Fast Food 14 10 2010
KAPA SYBR FAST ABI Prism TDS id Nieznany
fast food
EW Naleśniki a`la fast food
KALORYCZNOŚĆ Fast foodów
FAST FOOD
Narko Fast Blue B Salt
Cars
Gazowy grzejnik wody Fast 11
mcsa mcse windows xp professional fast pass (sybex 2004) iw4jpllyzpvahqmr7hy6z7rh6vwriey7gmpsmxy IW4
Fast Howard Niezwykla kolacja
call first vs call fast, Medycyna, Medycyna ratunkowa
fast ethernet wprowadzenie (2)

więcej podobnych podstron