Obsah:

Hra Pong: 6 krokov
Hra Pong: 6 krokov

Video: Hra Pong: 6 krokov

Video: Hra Pong: 6 krokov
Video: 6 Базовых элементов настольного тенниса #техника 2024, November
Anonim
Hra na tenis
Hra na tenis

Materiály:

Doska FPGA Basys3

VGA kábel

Vivado

Účelom tohto pokynu je vyvinúť hru Pong, ktorá sa bude zobrazovať na monitore. Projekt bude používať VHDL na programovanie a pomocou Basys3 FPGA vykoná kód a prenesie obraz pomocou rozhrania VGA. Tento tutoriál je určený pre ľudí, ktorí majú trochu predchádzajúce znalosti o VHDL. Tutoriál bude rozdelený do 6 rôznych sekcií: Prehľad, Proces, Skóre Handler, Generovanie obrazu, Pongová hra a VGA.

Krok 1: Prehľad

Prehľad
Prehľad

Obrázok vyššie predstavuje celkový schematický návrh projektu

Cieľ hry:

Hra sa skladá z displeja s posuvným pádlom, ktoré môže ovládať používateľ, a pevnej steny, ktorá slúži ako horná hranica. Keď používateľ stlačí tlačidlo štart, čo je tlačidlo hore, lopta sa začne odrážať a odrazí sa od steny a pokúsi sa trafiť pádlo. Ak loptička narazí na lopatku, znova sa odrazí a pokračuje v odskakovaní, kým neminie pádlo. Hra končí, keď loptička netrafí pádlo. Užívateľ bude môcť pomocou ľavého a pravého tlačidla určiť pohyb pádla. Ak chcete hru resetovať, musí používateľ stlačiť stredné tlačidlo. Čas behu bude zaznamenaný na 7 -segmentovom displeji. Existuje päť úrovní a každých desať sekúnd sa úroveň zvyšuje, až kým nedosiahnete úroveň 5, kde zostane, kým používateľ neprehrá. Úrovne sú určené rýchlosťou lopty; to znamená, že každých desať sekúnd sa rýchlosť lopty zvyšuje, čím sa zvyšuje náročnosť hry.

Architektúra systému:

Nasledujúci diagram je základným celkovým blokovým diagramom najvyššej úrovne pre systém. Systém má štyri vstupy: tlačidlo R, tlačidlo L, štart a reset a hodiny. Má horizontálne a vertikálne synchronizačné výstupy, RBG (čo sa týka farby pixelu na určitom mieste) a Score (ktoré funguje ako zbernica pre 7-segmentový displej). Na začiatku bude použité tlačidlo hore tlačidlo a ľavé a pravé tlačidlo sa použijú na pohyb pádla v príslušných smeroch. Na zaznamenanie skóre sa použije 7-segmentový displej, čo je počet sekúnd, počas ktorých používateľ hrá bez toho, aby hru prehral. Číslo sa zobrazí ako desatinné číslo.

Architektúra obvodu: Náš gizmo budeme stavať pomocou jedného FSM, ktorý obsahuje menší FSM, sub-FSM bude ovládať obtiažnosť hry, zatiaľ čo hlavný FSM bude ovládať celkový tok hry. Náš gizmo bude tiež používať najmenej tri rozdeľovače hodín, jeden na skóre (čas), jeden na obnovovaciu frekvenciu displeja a jeden, ktorý je napojený na výstup DeMux, aby sme mohli ovládať, ako rýchlo hra prebieha. bude pokračovať so zvyšujúcim sa množstvom ťažkostí. Hra sa bude pohybovať oveľa rýchlejšie, čím dlhšie budete hrať. Budeme mať riadiaci vstup DeMuxu prítomný stav sub-FSM, aby sme mohli ovládať, ako rýchlo hra pôjde, ako dlho ju budete hrať. Ako budete pokračovať v hre, použijeme niekoľko počítadiel, jedno na obnovenie displeja a jedno na spočítanie skóre. Tento projekt má dva hlavné moduly a množstvo submodulov, ktoré budú manipulovať so vstupnými údajmi. Dva hlavné submoduly sú ovládač VGA a modul logiky tlačidiel. Ovládač VGA bude pozostávať z programovateľnej pamäte, rozdeľovača hodín a logiky, ktorá bude manipulovať s výstupom pre farbu. Modul logiky tlačidiel bude tiež pozostávať z hodinového deliča a programovateľnej pamäte, ako aj z prevodníka binárnej na desatinnej hodnoty pre 7-segmentový displej s príslušným deličom hodín.

Krok 2: Obrazový proces

V sekcii Image Process projektu budeme určovať pohyb loptičky a pádla. Program má porty, ktoré obsahujú ľavé, pravé, horné a stredné tlačidlo, súčasný stav, hodiny, polohy X a Y lopty, ľavý a pravý okraj pádla a poruchu. Súčasný stav sa používa na určenie signálu aktivácie. Kód prechádza niekoľkými prípadmi, ktorými sa loptička môže pohybovať, a má stanovené podmienky na určenie dráhy lopty. Ďalší blok procesu určuje smer pohybu pádla podľa toho, aké tlačidlo používateľ stlačí. Kód pre túto časť projektu je priložený s podrobnými komentármi, ktoré popisujú, čo jednotlivé sekcie robia.

Krok 3: Skóre Handler

Skóre Handler
Skóre Handler

Táto časť obsahuje súbory, ktoré sa týkajú zobrazenia skóre v sekundách na 7 -segmentovom displeji na doske Basys3. Obsahuje delič hodín, ktorý slúži na počítanie sekúnd, počítadlo skóre počíta sekundy, ktoré používateľ hrá, vodič segmentu odoberie skóre a prevádza ho na anódy a katódy, ktoré sa majú zobraziť na obrazovke, a tiež určuje polohu, v ktorej sa číslo sa zobrazí a nakoniec obsluha segmentu konvertuje binárne číslice na desatinné číslice, ktoré sa majú zobraziť na obrazovke. Obsluha skóre dáva dohromady všetky figúrky a mapuje signály. Kód pre všetkých päť súborov je priložený nižšie.

Oddeľovač hodín:

Oddeľovač hodín má vstupy Clk (hodiny), CEN (zapnutie) a Div (rozdeľovač) a výstup Clk_out. Ak je aktivačný signál zapnutý, hodiny budú počítať so stúpajúcou hranou.

Počítadlo skóre

Počítadlo skóre má vstupy Clk (hodiny) a RST (reset) a výstupy Clk_Out a Q, ktoré v podstate slúžia ako výstup skóre.

Segmentový ovládač

Segmentový ovládač má vstupy D1, D10, D100, D1000 a hodiny. Čísla za „D“sa vzťahujú na desatinné miesto na 7 -segmentovom displeji. Výstupmi sú anódy a číslice. Hodiny počítajú a priraďujú čísla a ich polohu. Napríklad „9“sa zobrazí na mieste s jedničkou a „0“v mieste tisícov, stoviek a desiatok. Keď sa prepne na „10“, číslo bude mať teraz „1“na mieste desiatok a „0“s na mieste tisícov, stoviek a jednotiek.

Obsluha segmentu

Obslužný nástroj segmentu má ako vstup číslicu a ako výstup katódy. V podstate ide o binárne čísla, ktoré na katódovom displeji prinášajú na obrazovku desatinné čísla.

Skóre Handler

Obslužný program skóre pozostáva z predchádzajúcich štyroch entít a dáva všetko dohromady a mapuje signály. Tiež povoľuje a zakazuje počítadlo na základe súčasného stavu.

Krok 4: Generovanie obrázku

Generovanie obrazu pozostáva zo štyroch komponentov: Animácia, Počítadlo zlyhaní, Obnoviť obrázok a Počítadlo. Tieto súbory popisujú, ako generovať obrázky na monitore displeja.

Animácia

Animačný súbor má vstupy Clk (hodinový signál), CEN (povolený počet), RST (resetovací signál), B_X (poloha X loptičky), B_Y (poloha Y loptičky), P_L (poloha ľavého pádla) a P_R (poloha pravého pádla). Výstupmi sú WA (adresa, na ktorú píšeme farbu) a WD (farba zapísaná na určenú adresu). Súbor má počítadlo Play_Counter, čo je počítadlo, ktoré sa použije ako riadiaci vstup pre MUX, kodér, ktorý môže na správnych miestach vysielať správne farby, a nakoniec multiplexor, ktorý zobrazuje správnu farbu podľa polohy pádla a lopta.

Obnoviť obrázok

Súbor Obnoviť obrázok sa používa na aktualizáciu obrazu pri zmene polohy lopty a lopatky. Súbor obsahuje komponenty zo súborov Animácia, Spustiť počítadlo a Počítadlo zlyhaní. Mapuje signály z každého komponentu a pomocou stavovej logiky určuje signály a výstupné adresy.

Spustiť počítadlo

Počítadlo štartov používa vstupy Clk, RS a CEN a výstupy WA a WD. Na určenie riadiaceho vstupu pre MUX používa počítadlo a konverziu. Multiplexor potom použije vstup na určenie správnych farebných adries a odošle tieto údaje do ovládača VGA. Toto sa používa na zobrazenie „Pongu“, keď používateľ začne hru.

Počítadlo zlyhaní

Počítadlo zlyhaní sa používa na zobrazenie „Game Over“, keď používateľ prehrá hru. Má signál Clk, RST a CEN. Na určenie riadiaceho vstupu pre MUX používa počítadlo a prevodný vzorec. Multiplexor potom použije vstup na určenie správnych farebných adries a odošle tieto údaje do ovládača VGA.

Krok 5: Hra Pong

Hra na tenis
Hra na tenis

Táto časť projektu obsahuje súbory Pong Master, Finite State Machine (FSM), Timer a Start Debounce.

Časovač

Časovač má vstupy Clk (hodiny) a PS (súčasný stav) a Timer a Clk_out ako výstupy. Časovač slúži na zmenu rýchlosti hry zhruba každých päť sekúnd.

Flow FSM

Flow FSM má vstupy Clk, Fail, Timer, Bttn_S (tlačidlo Štart) a Buttn_RST (tlačidlo Reset) a výstup Pres_S (výstup súčasného stavu). FSM používa časovač na aktualizáciu súčasného stavu na nasledujúci stav a aktualizuje ďalší stav, kým hra nedosiahne úroveň 5, kde zostane, kým sa hra neskončí.

Spustite Debounce

Start Debounce je počiatočný odraz lopty. Má vstupy S_in a Clk a výstup S_out.

Pong MasterTento súbor používa všetky predchádzajúce komponenty a robí ho tak, aby všetky komponenty boli okamžité. Je to hlavný súbor, ktorý dáva dohromady všetky predchádzajúce komponenty, ktoré sme spoločne vytvorili.

Krok 6: Ovládač VGA

Ovládač VGA (Visual Graphics Array) je softvér, ktorý používa na prijímanie príkazov alebo údajov odosielaných na obrazovku. Vodiča nám dal náš profesor. Na pripojenie dosky Basys3 k monitoru použite ovládač a kábel VGA.

Teraz by ste mali byť pripravení vytvoriť si vlastnú hru Pong pomocou VHDL!

Odporúča: