Obsah:
- Krok 1: Prehľad
- Krok 2: Materiály
- Krok 3: Vytvorenie hry
- Krok 4: Zobrazenie výsledku
- Krok 5: Dajte to všetko dohromady
- Krok 6: Budúce úpravy
- Krok 7: Záver
Video: FPGA Asteroid Game: 7 Steps (with Pictures)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Pre náš konečný projekt CPE 133 sme sa rozhodli vytvoriť hru s asteroidmi na našom FPGA pomocou dvoch tlačidlových spínačov a 7-segmentového displeja. Hra funguje tak, že asteroid sa objaví v jednom z troch náhodne vybraných riadkov a vrhne sa smerom k lodi na druhej strane 7-segmentového displeja. Horné a dolné tlačidlo je možné použiť na presunutie lode mimo cestu asteroidu. Ak tak neurobíte, na displeji sa na chvíľu zobrazí „BAnG“a potom sa hra rýchlo reštartuje, aby to používateľ mohol skúsiť znova. Nasleduje stručný opis toho, ako bol projekt vytvorený, aby ktorýkoľvek používateľ mohol replikovať alebo vylepšiť náš dizajn.
Krok 1: Prehľad
Projekt do značnej miery pozostáva z konečných stavových strojov (FSM), ktoré používajú logiku na prenos FPGA medzi štátmi, ktoré ukladajú a zobrazujú rôzne hodnoty polohy lodí a skál. Dva hlavné moduly sú herné FSM pre rock a loď a binárny až 7-segmentový dekodér displeja FSM, ktoré sú integrované dohromady pomocou veľmi jednoduchého štruktúrneho modelu vo VHDL.
FSM boli vytvorené pre polohu lode, polohu skaly a pre 7-segmentový dekodér. Účelom FSM lode je, aby sa loď mohla presunúť do správnej polohy, keď hráč stlačí tlačidlo nahor alebo nadol. FSM je potrebný, pretože si musí pamätať, v ktorej polohe bol naposledy, aby sa mohol presunúť do správnej polohy.
Účelom FSM skaly je presunúť horninu do správnej polohy na základe toho, v ktorom rade sa nachádza a poslednej polohy v tomto rade. Okrem toho sleduje polohu modulu, ktorý ho bude zobrazovať, a pseudonáhodne vyberie nový riadok, v ktorom sa zobrazí ako ďalší.
FSM pre dekodér so 7 segmentovým displejom slúžil nielen na zobrazenie lode a skaly, ale aj na zobrazenie „BAnG“, ak sú poloha lode a poloha kameňa rovnaké.
Krok 2: Materiály
Na projekt boli použité tieto materiály:
- Vývojová rada Basys3 od spoločnosti Digilent, Inc.
- Suita Vivado Design Suite
- sseg_dec.vhd (Tento súbor nám bol poskytnutý na Polylearn a napísal ho Bryan Mealy)
- Clk_div.vhd (Tento súbor nám bol poskytnutý na Polylearn a napísal ho Bryan Mealy)
- Tri stroje s konečným stavom (FSM)
Krok 3: Vytvorenie hry
Herný modul bol vytvorený pomocou modelovania správania na opis stavov lode a skaly pre ich vlastné FSM. Výhodou tohto je, že je oveľa jednoduchšie modelovať obvod behaviorálne popisom toho, čo robí, než zisťovaním všetkých komponentov potrebných na návrh hardvéru.
Stavy hornín boli urobené pomocou generátora pseudonáhodných čísel pre prvú polohu horniny. Aby sme to dosiahli, dali sme generátoru vlastné hodiny, ktoré boli extrémne rýchle v porovnaní s rýchlosťou hry. Na každej stúpajúcej hrane sa zvýši trojbitové číslo a všetky jeho hodnoty zodpovedajú jednému z troch počiatočných stavov lode. Preto tri hodnoty zodpovedajú pozícii 3 (vpravo hore), tri zodpovedajú pozícii 7 (stred) a dve zodpovedajú pozícii 11 (vpravo dole).
Akonáhle dôjde k náhodnému generovaniu a asteroid dostane počiatočný stav, prúdi horizontálne smerom k lodi bez prerušenia.
0 ← 1 ← 2 ← 3
4 ← 5 ← 6 ← 7
11 ← 10 ← 9 ← 8
Hodiny použité v ďalšej logike stavu skaly riadia rýchlosť hry; Prostredníctvom pokusu a omylu sme zistili, že 9999999 je dobrá hodnota pre jeho maximálny počet.
Logika lode funguje tak, že sa inicializuje do strednej polohy (pozícia 4) na úplne ľavej strane. Ak stlačíte horné alebo dolné tlačidlo, loď sa presunie hore a dole do polohy 0 a 11 zodpovedajúcej stlačenému tlačidlu.
Aby bol pohyb lode pre používateľa dobrý, nerobili sme jeho pohyb asynchrónnym. Na zmenu stavu sme použili hodiny a použili sme maximálny počet 5555555.
Krok 4: Zobrazenie výsledku
Binárny až 7-segmentový dekodér preberá 4-bitové premenné polohy pre loď a asteroid a zobrazuje príslušný obrázok (buď loď a skala, alebo správa „BAnG“).
Dosiahne to tým, že najskôr skontroluje, či sú tieto dve hodnoty rovnaké, a potom zobrazí správu „BAnG“, ak kontrola vráti hodnotu True.
Ak sa to nevráti, dekodér zobrazí loď a skalu prepnutím medzi nimi na veľmi vysokej hodinovej frekvencii a oklamaním oka, aby ich videl tak, ako keby sa zobrazovali súčasne.
Krok 5: Dajte to všetko dohromady
Zahrnuli sme FSM lode a skaly do jedného veľkého FSM, ktorý sme zapojili do displeja FSM. Vstupmi do hry sú tlačidlo hore a dole na doske BASYS3 a systémové hodiny. Výstupmi sú segmentové a anódové vektory so siedmimi segmentovými displejmi.
Tieto vstupy a výstupy budú zobrazené v súbore obmedzení, kde sú mapované porty.
Krok 6: Budúce úpravy
V budúcnosti by bolo vylepšením pridanie ďalších funkcií pohybu lodí do projektu. To sa dá dosiahnuť jednoducho poskytnutím ďalších 2 tlačidlových vstupov a umožnením lodi zaujať polohy (stavy) iné ako 0, 4 a 8. Ďalšou možnou modifikáciou by mohlo byť ovládanie ďalšieho načasovania stavu asteroidu tak, aby sa štartovalo pomaly a aby sa zvýšila rýchlosť 1,5 -krát zakaždým, keď minie loď, kým nedostane zásah, kde sa reštartuje a opäť spomalí. To by zvýšilo obtiažnosť hry a urobilo by to pre používateľa väčšiu zábavu, keby bola implementovaná, a to by bolo možné dosiahnuť vytvorením premennej pre maximálny počet ďalších stavových hodín skaly, vynásobením tejto premennej číslom 1,5 zakaždým, keď asteroid neurobí Nedostanete úder a resetujete ho na pôvodnú hodnotu zakaždým, keď kameň zasiahne.
Krok 7: Záver
Tento projekt nám pomohol lepšie porozumieť automatom, hodinám a interaktívnemu zobrazovaniu na sedemsegmentových displejoch.
Najväčšia vec na strojoch s konečným stavom je, že je dôležité vedieť (zapamätať si), v akom stave sa práve nachádzate, aby ste sa mohli presunúť do ďalšieho požadovaného stavu. Je iróniou, že dobré rady do života; musíte vedieť, kde ste, aby ste vedeli, kam pôjdete.
Manipuláciou s rôznymi prípadmi hodín sme boli schopní náhodne generovať čísla, presunúť skalu na ďalšiu pozíciu a zvládnuť zobrazenie správy o lodi, skale a konci hry.
Dozvedeli sme sa, že nie je možné zobraziť viac ako jednu anódu súčasne. Modul, ktorý sme dostali, využil výhodu, že ľudské oko vidí rozdiel iba do určitej frekvencie. Bola teda zvolená vyššia frekvencia spínacích anód. Vidieť loď a skalu súčasne je vlastne narážka, pretože každá je zobrazená samostatne, ale veľmi rýchlo. Tento koncept bol použitý na zobrazenie pohybu lode, skaly a správy „BAnG“.
Odporúča:
Motion Reactive Surfboard LED Strips: 8 Steps (with Pictures)
Motion Reactive Surfboard LED Strips: Nedávno sme s priateľmi objavili surfovanie po rieke. Žijeme v Mníchove a máme šťastie, že máme tri surfovateľné riečne vlny, medzi ktoré patrí známe miesto na surfovanie Eisbach. Temnejšou stránkou surfovania po rieke je, že je dosť návyková, a preto si len málokedy nájdem čas na
Living Pixels - Imagine Technology has Life: 4 Steps (with Pictures)
Living Pixels - Imagine Technology has Life: Keď vidím, že produkty inteligentnej domácnosti sú v našich životoch bežnejšie, začal som premýšľať o vzťahu medzi ľuďmi a týmito výrobkami. Ak sa jedného dňa výrobky z inteligentnej domácnosti stanú nepostrádateľnou súčasťou života každého z nás, aké postoje by sme mali zaujať
Gyroscope Platform/ Camera Gimbal: 5 Steps (with Pictures)
Gyroscope Platform/ Camera Gimbal: Tento návod bol vytvorený ako splnenie projektovej požiadavky Makecourse na University of South Florida (www.makecourse.com)
The Memento Game: 7 Steps (with Pictures)
The Memento Game: Pravdepodobne poznáte tie hry, kde si hráč zapamätá postupnosť farieb a zvukov a musí si ich prehrať, však? Memento Game prináša ceny za extra zábavu! Akonáhle hráč dosiahne vopred stanovené skóre, vyhráva hru a pole sa otvorí, zobrazí sa
Balance Box Game - Arduino Powered: 4 Steps (with Pictures)
Balance Box Game - Arduino Powered: Balance box hra bola vytvorená pre výzvu, musí sa niesť v úrovni prekážky alebo na stanovenú vzdialenosť, aby ste výzvu vyhrali. Arduino sa používa na meranie uhla box a spustite alarm, akonáhle nastavíte uhol