
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:48

Anyagok:
Basys3 FPGA kártya
VGA kábel
Vivado
Ennek az utasításnak a célja egy pong játék kifejlesztése, amely megjelenik a monitoron. A projekt VHDL programozást végez, és Basys3 FPGA -t használ a kód végrehajtásához, és a képet VGA interfészen keresztül továbbítja. Ez az oktatóanyag azoknak szól, akik rendelkeznek egy kis előzetes ismerettel a VHDL -ről. Az oktatóanyag 6 különböző részre lesz osztva: Áttekintés, Folyamat, Pontszámkezelő, Képgenerálás, Pongjáték és VGA.
1. lépés: Áttekintés

A fenti kép a projekt általános vázlatos kialakítása
A játék célja:
A játék egy kijelzőből áll, a felhasználó által vezérelhető csúszó lapáttal, és egy rögzített falból, amely felső határként működik. Amikor a felhasználó megnyomja a start gombot, amely a fel gomb, a labda felpattan, majd leugrik a falról, és megpróbálja eltalálni a lapátot. Ha a labda a lapáthoz üt, ismét felpattan, és addig ugrál, amíg ki nem hagyja a lapátot. A játéknak akkor van vége, amikor a labda nem találja el a lapátot. A felhasználó a bal és jobb nyomógombokkal meghatározhatja a lapát mozgását. A játék visszaállításához a felhasználónak meg kell nyomnia a középső gombot. A futás idejét egy 7 szegmenses kijelző rögzíti. Öt szint van, és tíz másodpercenként a szint emelkedik, amíg el nem éri az 5 -ös szintet, és ott marad, amíg a felhasználó veszít. A szinteket a labda sebessége határozza meg; ez azt jelenti, hogy tíz másodpercenként növekszik a labda sebessége, ezáltal növelve a játék nehézségét.
Rendszer Felépítés:
Az alábbi diagram a rendszer alapvető felső szintű blokkdiagramja. A rendszer négy bemenettel rendelkezik: R gomb, L gomb, Start és Reset, valamint egy óra. Vízszintes és függőleges szinkron kimenetekkel, RBG-vel (amely a pixel színére utal egy adott helyen) és Score-val (amely buszként működik a 7 szegmenses kijelzőhöz). A fel gombot használjuk kezdőként gombot, és a bal és jobb nyomógombok a lapát megfelelő irányú mozgatására szolgálnak. A 7 szegmenses kijelzővel rögzíthetjük a pontszámot, vagyis azt a másodpercet, amelyet a felhasználó játszott anélkül, hogy elvesztette volna a játékot. A szám tizedes számként jelenik meg.
Áramkör-architektúra: A gizmo-t egyetlen FSM-ből építjük fel, amely kisebb FSM-et tartalmaz, az al-FSM pedig a játék nehézségeit fogja irányítani, míg a fő FSM a játék teljes folyását. A mi gizmónk legalább három óraosztót is használ, egyet a pontszámhoz (idő), egyet a kijelző frissítési gyakoriságához, egyet pedig a DeMux kimenetéhez csatlakoztatva, hogy ellenőrizni tudjuk a játék sebességét egyre nagyobb nehézségekkel fog haladni. A játék sokkal gyorsabban fog haladni, minél tovább játszol. Rendelkezünk a DeMux vezérlő bemenetével az sub-FSM jelen állapotában, hogy tudjuk szabályozni, hogy milyen gyorsan megy a játék, és mennyi ideig játszod. Néhány számlálót fogunk használni, az egyiket a kijelző frissítésére, a másikat pedig a pontszámok összeszámlálására játék közben. Ez a projekt két fő modulból és egy sor almodulból áll, amelyek manipulálják a bemeneti adatokat. A két fő almodul a VGA illesztőprogram, valamint a gomb logikai modul. A VGA illesztőprogram programozható memóriából, óraosztóból és logikából fog állni, amely manipulálja a kimenetet a szín érdekében. A gombok logikai modulja egy óraosztóból és egy programozható memóriából, valamint egy bináris-tizedes átalakítóból áll a 7 szegmenses kijelzőhöz és a megfelelő óraosztóhoz.
2. lépés: Képfeldolgozás
A projekt Képfeldolgozás szakaszában meghatározzuk a labda és a lapát mozgását. A programnak vannak portjai, amelyek tartalmazzák a bal, jobb, felső és középső nyomógombokat, a jelenlegi állapotot, egy órát, a labda X és Y pozícióját, a lapát bal és jobb szélét és egy hibát. A jelenlegi állapot az engedélyező jel meghatározására szolgál. A kód áttekinti azokat a több esetet, amikor a labda mozoghat, és feltételeket szabott a labda útjának meghatározásához. A következő folyamatblokk határozza meg a lapát mozgásának irányát, attól függően, hogy melyik gombot nyomja meg a felhasználó. A projekt ezen részének kódját mellékeljük részletes megjegyzésekkel, amelyek leírják az egyes szakaszok tevékenységét.
3. lépés: Pontszámkezelő

Ez a rész olyan fájlokból áll, amelyek a pontszám másodpercekben történő megjelenítésére vonatkoznak a Basys3 Board 7 szegmenses kijelzőjén. Tartalmaz egy óraosztót, amely a másodpercek számolására szolgál, a pontszámláló megszámolja a felhasználó által játszott másodperceket, a szegmens vezetője veszi a pontszámot, és anódokká és katódokká alakítja át, hogy megjelenjen a képernyőn, és meghatározza a pozíciót is. a szám megjelenik, és végül a szegmenskezelő átalakítja a bináris számjegyeket tizedesjegyekké, hogy megjelenjenek a képernyőn. A pontszámkezelő összerakja az összes darabot, és feltérképezi a jeleket. Mind az öt fájl kódja az alábbiakban található.
Óraosztó:
Az óraosztó Clk (óra), CEN (engedélyezés) és Div (osztó) bemenetekkel és Clk_out kimenettel rendelkezik. Ha az engedélyező jelzés be van kapcsolva, akkor az óra a növekvő élre számít.
Pontszámláló
A pontszámoló Clk (Óra) és RST (Reset) bemenetekkel, valamint Clk_Out és Q kimenetekkel rendelkezik, amelyek lényegében a pontszám kimeneteként működnek.
Szegmens meghajtó
A szegmens meghajtó D1, D10, D100, D1000 és Óra bemenettel rendelkezik. A "D" utáni számok a tizedesjegyre utalnak a 7 szegmenses kijelzőn. A kimenetek az anódok és a számjegyek. Az óra megszámolja és hozzárendeli a számokat és pozícióját. Például egy "9" jelenik meg az egy helyen, a "0" pedig ezer, száz és tíz helyen. Amikor átvált "10" -re, a szám most "1" lesz a tízes helyen, és "0" lesz ezer, száz és egy helyen.
Szegmenskezelő
A szegmenskezelő bemenete számjegy, kimenete pedig katód. Lényegében ez a bináris szám a katód kijelzőn, hogy tizedes számokat adjon ki a képernyőn.
Pontszámkezelő
A Pontszámkezelő az előző négy entitásból áll, és mindent összerak, és leképezi a jeleket. Ezenkívül engedélyezi és letiltja a számlálót a jelenlegi állapot alapján.
4. lépés: Képgenerálás
A képgenerálás négy összetevőből áll: Animáció, Fail Counter, Refresh Image és Start Counter. Ezek a fájlok bemutatják, hogyan lehet képeket létrehozni a kijelzőn.
Élénkség
Az animációs fájl Clk (órajel), CEN (számolás engedélyezése), RST (visszaállítási jel), B_X (labda X helyzet), B_Y (labda Y helyzet), P_L (bal lapát helyzet) és P_R bemeneteket tartalmaz (jobb lapát helyzet). A kimenetek WA (az a cím, amelyre a színt írjuk) és WD (a szín, amelyet a megadott címre írnak). A fájl Play_Counter számlálóval rendelkezik, amelyet a MUX vezérlő bemeneteként fog használni, egy kódolóval, amely a megfelelő színeket a megfelelő helyen tudja kiadni, és végül egy multiplexerrel, amely a lapát helyzete alapján a megfelelő színt jeleníti meg, és labda.
Kép frissítése
A Kép frissítése fájl a kép frissítésére szolgál a labda és a lapát helyzetének változásakor. A fájl tartalmazza az Animation, Start Counter és Fail Counter fájlok összetevőit. Térképezi az egyes komponensek jeleit, és állapotlogika segítségével határozza meg a jeleket és a kimeneti címeket.
Indítsa el a számlálót
A Startszámláló Clk, RS és CEN bemeneteket, valamint WA és WD kimeneteket használ. Számláló és konverzió segítségével határozza meg a MUX vezérlő bemenetét. A Multiplexer ezután a bemenet segítségével határozza meg a helyes színcímeket, és elküldi ezeket az adatokat a VGA illesztőprogramnak. Ez a "Pong" megjelenítésére szolgál, amikor a felhasználó elindítja a játékot.
Sikertelen számláló
A sikertelen számláló a "Game Over" megjelenítésére szolgál, amikor a felhasználó elveszíti a játékot. Clk, RST és CEN jelekkel rendelkezik. Számlálót és konverziós képletet használ a MUX vezérlő bemenetének meghatározásához. A Multiplexer ezután a bemenet segítségével határozza meg a helyes színcímeket, és elküldi ezeket az adatokat a VGA illesztőprogramnak.
5. lépés: Pong játék

A projekt ezen része tartalmazza a Pong Master, a Finite State Machine (FSM), az Timer és a Start Debounce fájlokat.
Időzítő
Az időzítő kimenetei a Clk (Óra) és a PS (Jelenlegi állapot) bemenetek, valamint az Időzítő és a Clk_out. Az időzítővel körülbelül öt másodpercenként lehet megváltoztatni a játék sebességét.
Flow FSM
A Flow FSM Clk, Fail, Timer, Bttn_S (Start gomb) és Buttn_RST (Reset gomb) bemenettel rendelkezik, és Pres_S (Present State Output) kimenettel rendelkezik. Az FSM az időzítő segítségével frissíti a jelenlegi állapotot a következő állapotra, és folyamatosan frissíti a következő állapotot, amíg a játék el nem éri az 5. szintet, ahol a játék befejezéséig marad.
Indítsa el a Debounce -t
A Start Debounce a labda kezdő visszapattanása. S_in és Clk bemenettel rendelkezik, és S_out kimenettel.
Ez a fájl az összes korábbi összetevőt használja, és úgy teszi, hogy minden összetevő azonnali legyen. Ez a mesterfájl, amely összegyűjti az összes korábbi összetevőt, amelyet együtt építettünk.
6. lépés: VGA illesztőprogram

A VGA (Visual Graphics Array) illesztőprogram egy szoftver, amely parancsok vagy adatok fogadására szolgál, és amelyeket a kijelzőre küld. A sofőrt professzorunk adta nekünk. Az illesztőprogram és a VGA -kábel segítségével csatlakoztassa a Basys3 kártyát a monitorhoz.
Most készen kell állnia arra, hogy saját Pongjátékot készítsen a VHDL segítségével!
Ajánlott:
Puha játék Bluetooth kocka és Android játék fejlesztése az MIT App Inventor segítségével: 22 lépés (képekkel)

Puha játék Bluetooth kocka és Android játék fejlesztése az MIT App Inventor segítségével: A kockajátéknak különböző módszerei vannak 1) Hagyományos játék fa vagy sárgaréz kockákkal. 2) Játssz mobilon vagy PC -n a mobil vagy a PC által véletlenszerűen létrehozott kockával. fizikailag játszani a kockával, és mozgatni az érmét a mobilon vagy a számítógépen
Simon játék - szórakoztató játék!: 5 lépés

Simon Game - Szórakoztató játék !: Referencia: IttHosszú hétvége után valóban keményen kell próbálnia elvégezni az összes feladatot és munkát, amelyekért Ön felelős. Itt az ideje, hogy edzjük az agyunkat, nem? Az unalmas és értelmetlen játékok mellett van egy Simon Game nevű játék
Minion Cubecraft játék (zseblámpa játék): 4 lépés

Minion Cubecraft játék (A zseblámpa játéka): Régóta fáklyát akartam készíteni, hogy sötétben is használhassam, de az ötlet, hogy csak egy hengeres alakú tárgy legyen, csak be-ki kapcsolóval, ellenállt, hogy ne csináljam. Túl mainstream volt. Aztán egy napon a bátyám hozott egy kis NYÁK -ot
8x8 Colorduino Pong játék: 3 lépés

8x8 Colorduino Pong játék: Ebben az utasításban megmutatom, hogyan építettem fel egy pongjátékot egy 8 x 8 RGB LED mátrix táblamodul használatával. Ezt a modult Colorduino -nak hívják. Beépített mikrokontrollerrel és interfészkel rendelkezik, amely más Colorduino lapokhoz csatlakoztatható. Megvan a képessége
A játék megvásárlása előtt ellenőrizheti, hogy fut -e egy játék a számítógépén .: 4 lépés

Hogyan lehet ellenőrizni, hogy a játék fut -e a számítógépen, mielőtt megvásárolná a játékot.: Nemrégiben beszereztem egy barátomtól a Call of Duty 4 -et (lehet, hogy ingyen), mert nem fut a számítógépén. Nos, a számítógépe meglehetősen új, és megdöbbentett, miért nem fut. Így pár órányi internetes keresés után találtam rá