logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Gra Pong zrealizowana z użyciem układu FPGA

Kubald 03 Wrz 2012 18:03 3564 0
REKLAMA
MediaMarkt Black Week
  • Gra Pong zrealizowana z użyciem układu FPGA

    Pong jest grą komputerową porównywaną do tenisa. Jest także najprawdopodobniej pierwszą grą stworzoną na komputery przez Atari w 1972 r. W grze dwóch graczy używa paletek do odbicia ruchomej piłki na pole przeciwnika. Wygrana następuje po zdobyciu przez jednego z graczy 9 punktów.

    Do stworzenia elektronicznej wersji Ponga użyto płytki Nexys2 z układem FPGA, z kodem napisanym w VHDL. Wyjście grafiki, o rozdzielczości 640x480 pikseli, zrealizowano wykorzystując sprzętowy port VGA na płytce. Dla każdego gracza zostały użyte inne kolory paletek i punktów (gracz 1: czerwony, gracz 2: niebieski). Kontrola paletek odbywa się za pomocą 4 pinów wejściowych płytki (ruch góra/dół).

    Gra Pong zrealizowana z użyciem układu FPGA

    Położenie paletki, piłki i innych elementów jest zdefiniowane przez ich początek. Punkt go określający umieszczony jest w górnym, lewym roku każdego obiektu. Punkt stanowi odniesienie dla fizyki gry i dla wyświetlania na ekranie. Wszystkie obiekty zdefiniowane są przez taki właśnie punkt oraz ich rozmiar, np. paletka ma rozmiar 15x70 px a piłka – 15x15 px. Położenie linii środkowej i punktacji jest stałe. Paletki nie mogą poruszać się w poziomie, lecz jedynie równolegle do umownej osi OY. Piłka porusza się zarówno w kierunku osi OX jak i OY. Ruch piłki jest losowy (28 wektorów przesunięcia). Kierunek, kąt i szybkość ruchu są ustalane przez grę.

    Gra Pong zrealizowana z użyciem układu FPGA

    Port VGA w wersji podstawowej wykorzystuje pięć wyprowadzeń, 3 z nich używane są do opisywania koloru (R, G bądź B) a dwa pozostałe do synchronizacji pionowej i poziomej obrazu (H-Synch, V-Synch). Kolory w przypadku płytki Nexys2 opisywane są 8 bitami – 3 dla czerwieni, i po 2 dla zieleni i koloru niebieskiego. Synchronizacja pozioma jest używana do określania końca każdej pojedynczej linii obrazu, a pionowa – do określania końca całej ramki obrazu. Na poniższych obrazach można zobaczyć, w jaki sposób przeprowadzana jest synchronizacja i jakie są czasy poszczególnych impulsów synchronizacyjnych w przypadku rozdzielczości 640x480 px.

    Gra Pong zrealizowana z użyciem układu FPGA

    Gra Pong zrealizowana z użyciem układu FPGA

    Gra Pong zrealizowana z użyciem układu FPGA

    Gra Pong zrealizowana z użyciem układu FPGA

    Realizacja całości układu w strukturze FPGA:

    Gra Pong zrealizowana z użyciem układu FPGA

    Elementem kodu układu FPGA sterującym portem VGA jest gotowy komponent, który posiada 4 wejścia, pięć wyjść i 2 dodatkowe wyjścia równoległe (10-bitowe wektory). Komponent jest „napędzany” sygnałem zegarowym o częstotliwości 25 MHz. Komponent korzysta z wyjść równoległych do podawania aktualnej pozycji piksela. Kod komponentu podany jest poniżej.

    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    W strukturze FPGA zaimplementowano też dzielnik sygnału zegarowego 2:1, jako że używany jest zegar systemowy o częstości 50 MHz.

    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    Główny program jest także realizowany przez komponent pracujący z zegarem 25 MHz. Komponent obsługuje także wejścia przycisków.

    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    Za grafikę odpowiedzialny jest osobny proces, który określa kolor aktualnie wyświetlanego piksela, zawiera informacje o rozmiarach obiektów i położeniu obiektów ruchomych (zrealizowane jako wewnętrzny sygnał w architekturze modułu, który może być zmieniany podczas gry).

    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    Fizyka gry odpowiada za ruch obiektów, tablicę wyników i przetwarzanie sygnałów wejściowych. Wektor ruchu piłki jest generowany w osobnej procedurze.

    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    Kompletny kod VHDL jest następujący:

    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    Na stronie projektu dostępne są dodatkowe pliki dla projektu.

    Fajne? Ranking DIY
    O autorze
    Kubald
    Poziom 15  
    Offline 
    Specjalizuje się w: spektroskopia exafs/xanes, uc, it
    Kubald napisał 188 postów o ocenie 112. Mieszka w mieście Kraków. Jest z nami od 2004 roku.
  • REKLAMA
    MediaMarkt Black Week
REKLAMA