Kazalo:
- 1. korak: Pregled
- 2. korak: Materiali
- 3. korak: Ustvarjanje igre
- 4. korak: Prikaz rezultata
- 5. korak: Združite vse skupaj
- Korak 6: Prihodnje spremembe
- 7. korak: Zaključek
Video: Igra Asteroid FPGA: 7 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:08
Za naš zaključni projekt CPE 133 smo se odločili, da na naši FPGA ustvarimo igro asteroidov z dvema stikalnima tipkama in 7-segmentnim zaslonom. Igra deluje tako, da se asteroid pojavi v eni od treh naključno izbranih vrstic in prileti proti ladji na drugi strani 7-segmentnega zaslona. Zgornji in spodnji gumb lahko uporabite za premik vaše ladje s poti asteroida. Če tega ne storite, se na zaslonu za trenutek izpiše „BAnG“in nato hitro znova zažene igro, tako da lahko uporabnik poskusi znova. Sledi kratek opis, kako je bil projekt narejen, tako da lahko vsak uporabnik ponovi ali izboljša našo zasnovo.
1. korak: Pregled
Projekt v veliki meri sestavljajo Finite State Machines (FSM), ki uporabljajo logiko za prenos FPGA med državami, ki shranjujejo in prikazujejo različne vrednosti položajev ladij in kamnin. Dva glavna modula sta igro FSM za skalo in ladjo ter binarni do 7-segmentni dekodirnik zaslona FSM, ki sta integrirana skupaj z zelo preprostim strukturnim modelom v VHDL.
FSM so bili ustvarjeni za položaj ladje, položaj skale in za 7-segmentni dekoder. Namen ladijskega FSM je, da se ladja premakne v pravilen položaj, ko igralec pritisne gumb gor ali dol. FSM je potreben, ker se mora spomniti, v katerem položaju je bil nazadnje, da se premakne v pravilen položaj.
Namen FSM kamnine je premakniti skalo na pravilen položaj glede na to, v kateri vrsti je in zadnji položaj v tej vrsti. Poleg tega spremlja položaj modula, ki ga bo prikazal, in psevdo-naključno izbere novo vrstico, ki bo prikazana na naslednji.
FSM za 7-segmentni dekoder zaslona je bil uporabljen ne le za prikaz ladje in skale, ampak tudi za prikaz "BAnG", ko sta položaj ladje in skale enaka.
2. korak: Materiali
Materiali, uporabljeni pri projektu, so bili:
- Razvojni odbor Basys3 podjetja Digilent, Inc.
- Vivado Design Suite
- sseg_dec.vhd (Ta datoteka nam je bila posredovana na Polylearnu, napisal pa jo je Bryan Mealy)
- Clk_div.vhd (Ta datoteka nam je bila posredovana na Polylearnu, napisal pa jo je Bryan Mealy)
- Trije končni državni stroji (FSM)
3. korak: Ustvarjanje igre
Modul igre je bil ustvarjen z vedenjskim modeliranjem za opis stanja ladje in skale za njihove lastne FSM. Prednost tega je, da je vezje veliko lažje modelirati vedenjsko, tako da opišemo, kaj počne, namesto da bi ugotovili vse komponente, potrebne za oblikovanje strojne opreme.
Stanja kamnin so bila narejena z uporabo generatorja psevdo naključnih števil za prvo mesto kamnine. Da bi to dosegli, smo generatorju dali svojo uro, ki je bila glede na hitrost igre izjemno hitra. Na vsakem naraščajočem robu se poveča tribitno število in vse njegove vrednosti ustrezajo enemu od treh zagonskih stanj ladje. Zato tri vrednosti ustrezajo položaju 3 (zgoraj desno), tri ustrezajo položaju 7 (sredina), dve pa položaju 11 (spodaj desno).
Ko pride do naključne generacije in asteroid dobi začetno stanje, teče vodoravno proti ladji brez prekinitev.
0 ← 1 ← 2 ← 3
4 ← 5 ← 6 ← 7
11 ← 10 ← 9 ← 8
Ura, ki se uporablja za logiko naslednjega stanja skale, nadzoruje hitrost igre; S poskusi in napakami smo ugotovili, da je 9999999 dobra vrednost za njegovo največje število.
Logika ladje deluje tako, da se inicializira v srednji položaj (položaj 4) na skrajni levi strani. Če pritisnete zgornji ali spodnji gumb, se bo ladja pomikala navzgor in navzdol v položaj 0 in 11, ki ustreza pritisnjenemu gumbu.
Zaradi lažjega gibanja ladje uporabniku nismo omogočili asinhronega gibanja. Za spreminjanje stanja smo uporabili uro in uporabili največ 5555555.
4. korak: Prikaz rezultata
Binarni do 7-segmentni dekoder sprejme 4-bitne spremenljivke položaja ladje in asteroida ter prikaže ustrezno sliko (ladja in kamen ali sporočilo "BAnG").
To doseže tako, da najprej preveri, ali sta oba enaka, nato pa prikaže sporočilo “BAnG”, če preverjanje vrne res.
Če se ne vrne, bo dekodirnik prikazal ladjo in skalo tako, da med njimi preklaplja na zelo visoki taktni frekvenci in zavede oko, da ju vidi, kot da sta prikazani hkrati.
5. korak: Združite vse skupaj
Ladjevski in skalski FSM smo zajeli v en velik FSM, ki smo ga povezali z zaslonskim FSM. Vhoda v igro sta gumb gor in dol na plošči BASYS3 ter sistemska ura. Izhodi so segmentni in anodni vektorji sedmih segmentnih zaslonov.
Ti vhodi in izhodi bodo prikazani v datoteki omejitev, kjer so preslikani v vrata.
Korak 6: Prihodnje spremembe
V prihodnosti bi bila dodana več funkcionalnosti premikanja ladij projektu izboljšava. To je mogoče preprosto narediti tako, da vnesete še 2 vhoda gumbov in ladji omogočite, da zavzame položaje (stanja), ki niso 0, 4 in 8. Druga možna sprememba bi lahko bila nadzor naslednjega časa asteroida, tako da se počasi zažene in poveča hitrost za 1,5x vsakič, ko zgreši ladjo, dokler ne dobi zadetka, kjer bi se znova zagnal in spet postal počasen. To bi povečalo težavnost igre in bi bilo uporabniku bolj zabavno, če bi bila izvedena, in bi bilo mogoče to narediti z ustvarjanjem spremenljivke za največje število ure naslednjega stanja skale, pri čemer se ta spremenljivka pomnoži z 1,5 vsakič, ko asteroid ne 't hit, in ga ponastavite na začetno vrednost vsakič, ko rock zadene.
7. korak: Zaključek
Ta projekt nam je pomagal bolje razumeti končne avtomate, ure in interaktivno prikazovanje na sedemsegmentnih zaslonih.
Največja stvar pri strojih s končnim stanjem je, da je pomembno vedeti (zapomniti), v katerem stanju ste trenutno, da se premaknete v naslednje želeno stanje. Ironično, dober življenjski nasvet; vedeti morate, kje ste, da veste, kam greste.
Z manipulacijo različnih primerov ur smo lahko naključno ustvarili številke, premaknili skalo na naslednji položaj in upravljali prikaz ladje, skale in sporočila o koncu igre.
Izvedeli smo, da več anod ni mogoče prikazati hkrati. Modul, ki smo ga dobili, je izkoristil to, da človeško oko vidi razliko le do določene frekvence. Tako je bila izbrana višja frekvenca preklopnih anod. Ladja in skala, ki ju opazimo hkrati, je pravzaprav aluzija, saj se vsaka prikaže ločeno, vendar zelo hitro. Ta koncept je bil uporabljen za prikaz gibanja ladje, skale in sporočila "BAnG".
Priporočena:
BBC Micro: bit and Scratch - Interaktivni volan in igra vožnje: 5 korakov (s slikami)
BBC Micro: bit in Scratch - Interaktivni volanski obroč in igra vožnje: Ena od mojih nalog tega tedna je uporaba BBC Micro: bit za vmesnik s programom Scratch, ki smo ga napisali. Mislil sem, da je to odlična priložnost, da z mojo ThreadBoard ustvarim vgrajen sistem! Moj navdih za praske p
3D igra Labirint z uporabo Arduina: 8 korakov (s slikami)
3D igra Labirint z uporabo Arduina: Pozdravljeni prijatelji, zato bomo danes naredili igro labirinta z uporabo ARDUINO UNO. Ker je Arduino Uno najpogosteje uporabljena plošča, je zelo kul igrati z njo. V tem Instructable lahko naredite igro labirinta, ki jo nadzirate z igralnimi palicami. Ne pozabite
Pritisnite (Gumb); // Arduino LCD igra: 5 korakov (s slikami)
Pritisnite (Gumb); // Arduino LCD igra: Pred kratkim sem v skavtih delal na znački zasluge za oblikovanje igre. Za eno od zahtev sem to igro zgradil z uporabo Arduina, ki temelji na igri LED Rocker. Bistvo igre je doseči čim večjo količino točk. Na začetku t
Igra Arduino Wire: 7 korakov (s slikami)
Arduino Wire Game: Za ta projekt sem se skliceval na to spletno mesto in ga spremenil v nov projekt. Ta projekt se imenuje Wire Game, kjer boste vzeli kovinski ročaj in ga naredili skozi žico, ne da bi se dotaknili žice. Če se ročaj dotakne žice
Reakcijska igra FPGA: 10 korakov
Reakcijska igra FPGA: avtorja Summer Rutherford in Regita Soetandar