Obsah:

Hra Pong: 6 kroků
Hra Pong: 6 kroků

Video: Hra Pong: 6 kroků

Video: Hra Pong: 6 kroků
Video: 6 Базовых элементов настольного тенниса #техника 2024, Červenec
Anonim
Pongová hra
Pongová hra

Materiály:

Deska FPGA Basys3

VGA kabel

Vivado

Účelem tohoto pokynu je vyvinout hru Pong, která se zobrazí na monitoru. Projekt bude používat VHDL k programování a pomocí Basys3 FPGA provede kód a přenese obraz pomocí rozhraní VGA. Tento tutoriál je určen lidem, kteří mají trochu předchozí znalosti VHDL. Výukový program bude rozdělen do 6 různých sekcí: Přehled, Proces, Skóre Handler, Generování obrázku, Pongová hra a VGA.

Krok 1: Přehled

Přehled
Přehled

Obrázek nahoře je celkový schematický návrh projektu

Cíl hry:

Hra se skládá z displeje s posuvným pádlem, které může ovládat uživatel, a pevné stěny, která funguje jako horní hranice. Když uživatel stiskne tlačítko start, což je tlačítko nahoru, míč začne odskakovat a odrazí se od zdi a pokusí se trefit pádlo. Pokud míč zasáhne pádlo, znovu se odrazí a pokračuje v odrazu, dokud nemine pádlo. Hra končí, když míč nezasáhne pádlo. Uživatel bude moci pomocí levého a pravého tlačítka určit pohyb pádla. Aby bylo možné hru resetovat, musí uživatel stisknout středové tlačítko. Čas běhu bude zaznamenán na 7segmentovém displeji. Existuje pět úrovní a každých deset sekund se úroveň zvyšuje, dokud nedosáhnete úrovně 5, kde zůstane, dokud uživatel neprohraje. Úrovně jsou určeny rychlostí míče; to znamená, že každých deset sekund se rychlost míče zvyšuje, čímž se zvyšuje obtížnost hry.

Architektura systému:

Níže uvedený diagram je základním celkovým blokovým diagramem nejvyšší úrovně pro systém. Systém má čtyři vstupy: Tlačítko R, Tlačítko L, Start a Reset a hodiny. Má horizontální a vertikální synchronizační výstupy, RBG (což odpovídá barvě pixelu v určitém místě) a Score (který funguje jako sběrnice pro 7segmentový displej). Tlačítko start bude použito jako start tlačítko a levé a pravé tlačítko bude použito k pohybu pádla v příslušných směrech. K záznamu skóre bude použit 7segmentový displej, což je počet sekund, které uživatel hraje, aniž by prohrál hru. Číslo se zobrazí jako desetinné číslo.

Circuit Architecture: Postavíme náš gizmo pomocí jednoho FSM, který obsahuje menší FSM, dílčí FSM bude řídit obtížnost hry, zatímco hlavní FSM bude řídit celkový tok hry. Náš gizmo bude také používat alespoň tři děliče hodin, jeden pro skóre (čas), jeden pro obnovovací frekvenci displeje a jeden, který je připojen k výstupu DeMux, abychom mohli ovládat, jak rychle hra bude postupovat s rostoucím množstvím obtížnosti. Hra se bude pohybovat mnohem rychleji, čím déle budete hrát. Budeme mít řídící vstup DeMux přítomný stav sub-FSM, abychom mohli řídit, jak rychle hra půjde, jak dlouho ji budete hrát. Budeme používat několik čítačů, jeden pro aktualizaci displeje a jeden pro počítání skóre, jak budete pokračovat ve hře. Tento projekt má dva hlavní moduly a řadu submodulů, které budou manipulovat se vstupními daty. Dva hlavní submoduly jsou ovladač VGA a modul logiky tlačítek. Ovladač VGA se bude skládat z programovatelné paměti, děliče hodin a logiky, která bude manipulovat s výstupem pro barvu. Modul logiky tlačítek bude také obsahovat dělič hodin a programovatelnou paměť a také převodník binárních na desetinných míst pro 7segmentový displej s příslušným děličem hodin.

Krok 2: Obrazový proces

V části Image Process projektu budeme určovat pohyb míče a pádla. Program má porty, které obsahují levé, pravé, horní a středové tlačítko, současný stav, hodiny, pozice X a Y míče, levý a pravý okraj pádla a selhání. Současný stav se používá k určení signálu povolení. Kód jde přes několik případů, kdy se míč může pohybovat, a má nastavené podmínky pro určení dráhy míče. Další procesní blok určuje směr pohybu pádla podle toho, jaké tlačítko uživatel stiskne. Kód pro tuto část projektu je připojen s podrobnými komentáři popisujícími jednotlivé sekce.

Krok 3: Skóre Handler

Skóre Handler
Skóre Handler

Tato část se skládá ze souborů, které se týkají zobrazení skóre v sekundách na 7segmentovém displeji na desce Basys3. Obsahuje dělič hodin, který slouží k počítání sekund, počítadlo skóre počítá sekundy, které uživatel hraje, ovladač segmentu vezme skóre a převede jej na anody a katody, které se mají zobrazit na obrazovce, a také určuje polohu, kterou číslo se zobrazí a nakonec obsluha segmentu převede binární číslice na desetinné číslice, které se mají zobrazit na obrazovce. Obsluha skóre dává dohromady všechny figurky a mapuje signály. Níže je přiložen kód pro všech pět souborů.

Dělič hodin:

Dělič hodin má vstupy Clk (hodiny), CEN (povolení vstupu) a Div (dělič) a výstup Clk_out. Pokud je aktivační signál zapnutý, hodiny budou počítat se stoupající hranou.

Score Counter

Čítač skóre má vstupy Clk (Clock) a RST (Reset) a výstupy Clk_Out a Q, které v podstatě fungují jako výstup skóre.

Segmentový ovladač

Segmentový ovladač má vstupy D1, D10, D100, D1000 a Clock. Čísla za „D“se týkají desetinného místa na 7segmentovém displeji. Výstupy jsou anody a číslice. Hodiny počítají a přiřazují čísla a jejich polohu. Například „9“se zobrazí na místě jedniček s „0“s na tisících, stovkách a desítkách. Když přepne na „10“, číslo bude mít nyní „1“na místě desítek a „0“s na místě tisíců, stovek a jednotek.

Obsluha segmentu

Obsluha segmentu má jako vstup číslici a jako výstup katody. Je to v podstatě binární čísla na katodovém displeji pro výstup desetinných čísel na obrazovce.

Skóre Handler

Obslužný program skóre se skládá z předchozích čtyř entit, spojuje je a mapuje signály. Také umožňuje a zakazuje čítač na základě aktuálního stavu.

Krok 4: Generování obrázku

Generování obrazu se skládá ze čtyř komponent: Animace, Počítadlo poruch, Obnovit obrázek a Počítadlo. Tyto soubory popisují, jak generovat obrázky na monitoru displeje.

Animace

Animační soubor má vstupy Clk (hodinový signál), CEN (povolený počet), RST (resetovací signál), B_X (poloha X míče), B_Y (poloha Y míče), P_L (poloha levého pádla) a P_R (poloha pravého pádla). Výstupy jsou WA (adresa, na kterou píšeme barvu), a WD (barva, která se zapisuje na určenou adresu). Soubor má Play_Counter, což je čítač, který bude použit jako řídicí vstup pro MUX, kodér, který dokáže vyvést správné barvy na správná místa, a nakonec multiplexer, který zobrazí správnou barvu na základě polohy pádla a míč.

Obnovit obrázek

Soubor Obnovit obrázek slouží k aktualizaci obrázku při změně polohy míče a pádla. Soubor obsahuje součásti ze souborů Animace, Počítadlo počitadel a Počítadlo poruch. Mapuje signály z každé komponenty a pomocí stavové logiky určuje signály a výstupní adresy.

Spusťte počítadlo

Počítadlo startů používá vstupy Clk, RS a CEN a výstupy WA a WD. Pomocí čítače a převodu určuje řídicí vstup pro MUX. Multiplexer poté použije vstup k určení správných barevných adres a odešle tato data do ovladače VGA. Slouží k zobrazení „Pong“, když uživatel spustí hru.

Počítadlo poruch

Čítač selhání se používá k zobrazení „Game Over“, když uživatel prohraje hru. Má signál Clk, RST a CEN. K určení řídicího vstupu pro MUX používá čítač a převodní vzorec. Multiplexer poté použije vstup k určení správných barevných adres a odešle tato data do ovladače VGA.

Krok 5: Hra Pong

Pongová hra
Pongová hra

Tato část projektu obsahuje soubory Pong Master, Finite State Machine (FSM), Timer a Start Debounce.

Časovač

Časovač má vstupy Clk (hodiny) a PS (současný stav) a Timer a Clk_out jako výstupy. Časovač slouží ke změně rychlosti hry přibližně každých pět sekund.

Flow FSM

Flow FSM má vstupy Clk, Fail, Timer, Bttn_S (tlačítko Start) a Buttn_RST (tlačítko Reset) a výstup Pres_S (výstup současného stavu). FSM pomocí časovače aktualizuje současný stav na další stav a aktualizuje další stav, dokud hra nedosáhne úrovně 5, kde zůstane, dokud hra neskončí.

Spusťte Debounce

Start Debounce je počáteční odraz míče. Má vstupy S_in a Clk a výstup S_out.

Pong MasterTento soubor používá všechny předchozí komponenty a dělá to tak, že všechny komponenty jsou okamžité. Je to hlavní soubor, který spojuje všechny předchozí komponenty, které jsme společně vytvořili.

Krok 6: Ovladač VGA

Ovladač VGA (Visual Graphics Array) je software používaný k přijímání příkazů nebo dat odesílaných na obrazovku. Řidiče nám dal náš profesor. Pomocí ovladače a kabelu VGA připojte desku Basys3 k monitoru.

Nyní byste měli být připraveni vytvořit si vlastní hru Pong pomocí VHDL!

Doporučuje: