Tartalomjegyzék:

Aknakereső: 5 lépés (képekkel)
Aknakereső: 5 lépés (képekkel)

Videó: Aknakereső: 5 lépés (képekkel)

Videó: Aknakereső: 5 lépés (képekkel)
Videó: 5 lépés, ami Pikkelysömör esetén sokat segíthet 2024, Július
Anonim
Aknakutató hajó
Aknakutató hajó

A CPE 133 végső projektünkhöz Chase és én úgy döntöttünk, hogy létrehozunk egy „Aknakereső” játékot, amely a Basys-3 tábláról és a VHDL kódból származó gombokat és kapcsolókat használja. A játék jobb neve nagyon is az „orosz rulett” lehet, mi azonban családbarátabb névvel akartunk menni. A játék során a felhasználó megnyomja a Basys tábla középső gombját, és véletlenszerűen hozzárendeli a 16 kapcsoló egyikét, hogy „aktív” legyen egy bombával. Ezután két játékos felváltva tekeri fel a kapcsolókat, egyenként, amíg az egyik játékos el nem fordítja a kapcsolót a „bombával”. Amikor ez megtörténik, a hét szegmenses kijelző figyelmezteti a játékosokat, hogy az adott játékos éppen elvesztette a játékot.

1. lépés: Áttekintés

A projekt számos VHDL modult használt fel, amelyeket ebben a negyedévben használtunk. Négybites számlálót használtunk az óra szélével együtt, hogy szimuláljunk egy véletlenszerű négybites számot az egyik kapcsoló aktiválásához. Egy állapotdiagramot is használtak annak érdekében, hogy különböző szavakat vigyenek ki a hét szegmenses kijelzőre, kezdve a „PLAY” -től, amikor a játékosok a játék közepén vannak, és a „LOSE” -ig, amikor az egyik játékos elfordította az aktív kapcsolót.

2. lépés: Anyagok

  • Basys3 Development Board, Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Ezt a fájlt a Polylearn webhelyről kaptuk, és Bryan Mealy írta)
  • 4 bites számláló, T papucsból
  • Egy FSM

3. lépés: A játék elkészítése

A játék elkészítése
A játék elkészítése
A játék elkészítése
A játék elkészítése

A játék elkészítésének első lépése az volt, hogy megrajzoltunk egy kapcsolási rajzot az összes használni kívánt összetevővel. A rendszer bemenetei az 1. gomb, a 16 kapcsoló és az óra voltak. A kimenetek a hét szegmenses kijelző és az anódok voltak. A kapcsolási rajz elkészítése után minden forráshoz egyedi forrásfájlokat írtunk a Vivado -ban, és a fő forrásfájl alatt porttérképek segítségével állítottuk össze őket.

A játék alapja a 16 kapcsoló egyikének véletlenszerű hozzárendelése egy bombával, és a játékosok nem tudják, melyik kapcsoló aktív, amíg az aktív kapcsolót fel nem kapcsolják. Véletlen és ál-véletlen számgenerátorokat vizsgáltunk online, de végül úgy döntöttünk, hogy a 4 bites számláló használata és a megfelelő kapcsoló aktívnak való hozzárendelése kellően véletlenszerű ahhoz, amit kerestünk. A korábbi projektben létrehozott 4 bites számlálónkat újrahasznosíthattuk, hogy ezzel a feladattal dolgozhassunk. A számlálót 0-15 közötti véletlen szám létrehozására használtuk; majd a main1 komponensben a véletlen szám tizedes megfelelőjét hozzárendeltük a megfelelő kapcsolóhoz a táblán. Amint a sematikus ábrán látható, mind a main1 komponens X kimenete („aktív bomba”), mind a kapcsolók, amelyeket a játékosok bekapcsolnak, az FSM1 -re lépnek. Az állapotgép egy bites Z értéket ad ki, amelyet a BC_DEC1 olvas. Az általunk használt véges állapotú gépnek két különböző állapota van: az A állapotban a hét szegmenses kijelző „PLAY” kimenetet ad ki, és a gép ebben az állapotban marad, amíg fel nem ismeri, hogy az aktivált kapcsoló el van fordítva. Amint ez megtörténik, az FSM a B állapotba kerül, ahol a „LOSE” értéket adja ki a hét szegmenses kijelzőre, és ebben az állapotban marad, amíg mind a 16 kapcsoló „0” -ra nem áll. Ha ez a feltétel teljesül, az FSM ismét az A állapotba kerül, és várja, hogy a játékosok újabb játékot kezdjenek. A fenti FSM megértését segítő Moore -diagram látható.

4. lépés: Jövőbeli módosítások

Néhány módosítás, amelyet a játékunkon fontolgattunk, többek között további bombák hozzáadása a mezőhöz (esetleg egyről háromra növelve), pontszámláló és több forduló hozzáadása. Végül ezekkel a fejlesztésekkel döntöttünk, mivel azt tapasztaltuk, hogy egy hosszabb, hosszabb játékot általában feszültebb és a végén szórakoztatóbb, mint egy játékot, amely általában három vagy négy váltás után fejeződött be.

5. lépés: Következtetés

Nagyon örültünk a projekt végeredményének; nemcsak azért, mert a játék végső verzióját szórakoztató volt játszani, hanem azért is, mert a projekt létrehozása és programozása megkövetelte, hogy a legtöbbet használjuk, ha nem mindazt, amit ebben a negyedévben tanultunk. Használtuk a papucsokat, számlálókat, FSM -eket, az órát, a felhasználói adatokat a tábláról és a kimenetet a hét szegmenses kijelzőre.

Azt is megtudhattuk, hogy néhány szintaktikai hiba hogyan tudja teljesen megtörni a programot (még akkor is, ha más programozási nyelveken, például a Pythonon vagy a Java -n jónak minősülnének), és hogy csak többszöri szimuláció és többszöri iteráció után, amikor a kódot feltöltötték és tesztelték a tábla, végre ki tudja dolgozni az összes hibát a kódjából.

Ajánlott: