Obsah:
- Krok 1: Prehľad
- Krok 2: Obrazový proces
- Krok 3: Skóre Handler
- Krok 4: Generovanie obrázku
- Krok 5: Hra Pong
- Krok 6: Ovládač VGA
Video: Hra Pong: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
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
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
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
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:
Hra Crack the Code, logická hra založená na Arduine: 4 kroky (s obrázkami)
Hra Crack the Code, logická škatuľka založená na Arduine: V tomto návode vám ukážem, ako si vytvoriť vlastnú crackovú hru, v ktorej pomocou otočného voliča uhádnete náhodne vygenerovaný kód do sejfu. Na prednej strane trezoru je 8 LED diód, ktoré vám informujú, koľko z
Aruduino LED hra Rýchle kliknutie Hra pre dvoch hráčov: 8 krokov
Aruduino LED hra Rýchle kliknutie Hra pre dvoch hráčov: Tento projekt je inšpirovaný @HassonAlkeim. Ak ste ochotní sa podrobne pozrieť, tu je odkaz, ktorý si môžete pozrieť https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Táto hra je vylepšenou verziou hry Alkeim's. Jedná sa o
Hra Colorduino Pong 8x8: 3 kroky
Hra 8x8 Colorduino Pong: V tomto návode vám ukážem, ako som postavil hru na pong pomocou modulu maticovej dosky 8 x 8 RGB LED. Tento modul sa nazýva Colorduino. Má vstavaný mikrokontrolér a rozhranie na pripojenie k iným doskám Colorduino. Má schopnosť
Matrix Pong hra 8x16 LED (2 pádla na verziu pre hráča): 3 kroky
Hra 8x16 LED Matrix Pong (2 pádla na hráča): Inšpiroval som sa mnohými variáciami klasickej hry Pong implementovanej na Arduine s využitím matice LED 8x8. V tomto návode vám ukážem, ako vytvoriť svoju obľúbenú verziu Pongu, ktorá má na každého hráča dve pádla - útočníka a brankára.
Automatická hra Ping Pong: 6 krokov
Automatická hra na ping pong: Toto je hra na ping pong využívajúca motory na spustenie pingpongových loptičiek, ktoré musíte odpáliť do dier. Jedna osoba musí odpaľovať loptičky a druhá odpaľovať loptičky. **** Všimnite si to a robia to dvaja žiaci šiesteho stupňa