Tartalomjegyzék:
- 1. lépés: Áttekintés
- 2. lépés: Anyagok
- 3. lépés: A játék elkészítése
- 4. lépés: Az eredmény megjelenítése
- 5. lépés: Összerakni
- 6. lépés: Jövőbeli módosítások
- 7. lépés: Következtetés
Videó: FPGA aszteroida játék: 7 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
A CPE 133 végső projektünk során úgy döntöttünk, hogy két nyomógombos kapcsoló és a 7 szegmenses kijelző segítségével létrehozunk egy kisbolygójátékot az FPGA-n. A játék úgy működik, hogy egy aszteroida ívik a három véletlenszerűen kiválasztott sor egyikében, és a 7 szegmenses kijelző túloldalán a hajó felé sántikál. A felső és alsó gombok segítségével elmozdíthatja hajóját az aszteroida útjából. Ha ezt elmulasztja, a kijelzőn egy pillanatra a „BAnG” felirat olvasható, majd gyorsan újraindítja a játékot, hogy a felhasználó újra megpróbálhassa. Az alábbiakban röviden ismertetjük a projekt elkészítését, hogy bármely felhasználó megismételhesse vagy javíthassa a tervezésünket.
1. lépés: Áttekintés
A projekt nagyrészt véges állapotú gépekből (FSM) áll, amelyek logikát használva továbbítják az FPGA -t a hajó- és sziklaállások különböző értékeit tároló és megjelenítő állapotok között. A két fő modul a játék FSM-ek a rock és a hajó számára, valamint a bináris és 7 szegmenses kijelző dekódoló FSM, amelyeket egy nagyon egyszerű szerkezeti modell segítségével integrálnak a VHDL-ben.
Az FSM-eket a hajó helyzetére, a kőzet helyzetére és a 7 szegmenses dekódolóra hozták létre. A hajó FSM célja, hogy a hajó a megfelelő pozícióba tudjon mozogni, amikor a játékos megnyom egy fel vagy le gombot. Az FSM -re azért van szükség, mert emlékeznie kell arra, hogy melyik pozícióban volt utoljára, hogy a megfelelő pozícióba léphessen.
A szikla FSM célja, hogy a kőzetet a megfelelő pozícióba mozgassa, attól függően, hogy melyik sorban van, és az utolsó pozícióban. Ezenkívül nyomon követi az azt megjelenítő modul pozícióját, és ál-véletlenszerűen kiválaszt egy új sort, amelyen a következő jelenik meg.
A 7 szegmenses kijelző-dekódoló FSM-jét nemcsak a hajó és a kőzet megjelenítésére, hanem a „BAnG” kijelzésére is használták, ha a hajó helyzete és a kőzet helyzete megegyezik.
2. lépés: Anyagok
A projektben felhasznált anyagok a következők voltak:
- Basys3 Development Board, Digilent, Inc.
- Vivado Design lakosztály
- sseg_dec.vhd (Ezt a fájlt a Polylearn -en kaptuk, és Bryan Mealy írta)
- Clk_div.vhd (Ezt a fájlt a Polylearn -en kaptuk, és Bryan Mealy írta)
- Három véges állapotú gép (FSM)
3. lépés: A játék elkészítése
A játékmodult viselkedésmodellezéssel hozták létre, hogy leírják a hajó és a kőzet állapotát saját FSM -jük számára. Ennek az az előnye, hogy sokkal egyszerűbb viselkedési modellezni az áramkört azzal, hogy leírja, mit csinál, ahelyett, hogy kitalálná a hardver tervezéséhez szükséges összes összetevőt.
A kőzetállapotokat pszeudo -véletlenszám -generátorral végeztük a kőzet első helyzetéhez. Ennek érdekében a generátornak saját órát adtunk, amely rendkívül gyors volt a játék sebességéhez képest. Minden emelkedő élen egy három bites szám növekszik, és minden értéke megfelel a hajó három indítási állapotának egyikének. Ezért három érték felel meg a 3. pozíciónak (jobb felső sarokban), három a 7. pozíciónak (középen), kettő pedig a 11. pozíciónak (jobb alsó).
Miután a véletlenszerű generáció megtörtént, és az aszteroida kezdeti állapotot kapott, vízszintesen áramlik a hajó felé megszakítás nélkül.
0 ← 1 ← 2 ← 3
4 ← 5 ← 6 ← 7
11 ← 10 ← 9 ← 8
A rock következő állapotlogikájához használt óra szabályozza a játék sebességét; próba és hiba útján azt találtuk, hogy a 9999999 jó érték a maximális számához képest.
A hajó logikája úgy működik, hogy inicializál a középső helyzetbe (4. pozíció) a bal szélső oldalon. Ha megnyomja a felső gombot vagy az alsó gombot, a hajó felfelé és lefelé mozog a megnyomott gombnak megfelelő 0 és 11 pozícióba.
Annak érdekében, hogy a hajó mozgása jól érezze magát a felhasználó számára, nem tettük aszinkron mozgását. Állapotváltozáshoz órát használtunk, és maximum 5555555 -öt.
4. lépés: Az eredmény megjelenítése
A bináris és 7 szegmenses dekóder felveszi a hajó és az aszteroida 4 bites helyzetváltozóit, és megjeleníti a megfelelő képet (akár a hajó és a kőzet, akár a „BAnG” üzenet).
Ezt úgy éri el, hogy először ellenőrzi, hogy a kettő egyenlő -e, majd megjeleníti a „BAnG” üzenetet, ha az ellenőrzés igaz.
Ha nem igaz, akkor a dekódoló a hajót és a kőzetet úgy jeleníti meg, hogy nagyon magas órajel -frekvenciával vált közöttük, és becsapja a szemét, hogy úgy lássa őket, mintha egyszerre jelenítenék meg őket.
5. lépés: Összerakni
A hajó és a szikla FSM -ét egy nagy FSM -be fogtuk, amelyet a kijelző FSM -hez kötöttünk. A játék bemenetei a BASYS3 táblán lévő fel és le gomb, valamint a rendszeróra. A kimenetek a szegmens- és anódvektorok hét szegmens-kijelzője.
Ezek a bemenetek és kimenetek a kényszerfájlban láthatók, ahol port -leképezésre kerülnek.
6. lépés: Jövőbeli módosítások
A jövőben javulást jelentene, ha több hajómozgatási funkciót adna a projekthez. Ez egyszerűen úgy érhető el, ha további 2 gombbemenetet ad meg, és lehetővé teszi a hajó számára, hogy 0, 4 és 8 -tól eltérő pozíciókat (állapotokat) vegyen fel. 1,5 -ször minden alkalommal, amikor nem találja el a hajót, amíg el nem éri az ütést, ahol újraindul és újra lassú lesz. Ez növelné a játék nehézségét, és szórakoztatóbbá tenné a felhasználó számára, ha megvalósítanák, és megtehető úgy, hogy létrehozunk egy változót a szikla következő állapotórájának maximális számához, és megszorozzuk ezt a változót 1,5 -tel minden alkalommal, amikor az aszteroida nem nem üt, és minden alkalommal, amikor a rock üt, visszaállítja az eredeti értékére.
7. lépés: Következtetés
Ez a projekt segített nekünk jobban megérteni a véges állapotú gépeket, órákat és a hét szegmenses kijelzőn való interaktív megjelenítést.
A véges állapotú gépekben a legnagyobb dolog az, hogy fontos tudni (emlékezni), hogy éppen milyen állapotban van, hogy a következő kívánt állapotba léphessen. Ironikus módon jó élettanács; tudnia kell, hol van, hogy tudja, merre tart.
Az órák különböző példányainak manipulálásával véletlenszerűen tudtunk számokat generálni, a sziklát a következő pozícióba helyezni, és kezelni a hajó, a szikla és a játékvégi üzenet megjelenítését.
Megtanultuk, hogy egynél több anód nem jeleníthető meg egyszerre. A rendelkezésünkre bocsátott modul kihasználta, hogy az emberi szem csak bizonyos gyakoriságig látja a különbséget. Tehát az anódok kapcsolási gyakoriságát választották. Az egy időben látható hajó és szikla valójában utalás, mivel mindegyiket külön, de nagyon gyorsan jelenítik meg. Ezt a koncepciót alkalmazták a hajó, a szikla és a „BAnG” üzenet mozgásának megjelenítésére.
Ajánlott:
DIY 37 LED Arduino rulett játék: 3 lépés (képekkel)
DIY 37 Leds Arduino Roulette Játék: A rulett egy kaszinójáték, amelyet a francia szóról neveztek el, jelentése kis kerék
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
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á