Sadržaj:
- Korak 1: Pregled
- Korak 2: Materijali
- Korak 3: Stvaranje igre
- Korak 4: Prikaz rezultata
- Korak 5: Sve spojite
- Korak 6: Buduće izmjene
- Korak 7: Zaključak
Video: FPGA Asteroid igra: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Za naš završni projekt CPE 133, odlučili smo stvoriti igru asteroida na našem FPGA-u koristeći dva prekidača i 7-segmentni zaslon. Igra funkcionira tako da se asteroid mrijesti u jednom od tri nasumično odabrana reda, te juri prema brodu s druge strane 7-segmentnog zaslona. Gornji gumb i donji gumb mogu se koristiti za pomicanje vašeg broda s puta asteroida. U slučaju da to ne učini, na zaslonu se na trenutak čita ‘BAnG’, a zatim brzo ponovno pokreće igru kako bi korisnik mogao pokušati ponovno. Slijedi kratak opis načina na koji je projekt napravljen tako da svaki korisnik može ponoviti ili poboljšati naš dizajn.
Korak 1: Pregled
Projekt se u velikoj mjeri sastoji od konačnih državnih strojeva (FSM), koji koriste logiku za prijenos FPGA -e između država koje pohranjuju i prikazuju različite vrijednosti položaja brodova i stijena. Dva glavna modula su FSM-ovi za igre za stijene i brodove te binarni do 7-segmentni dekoder za prikaz FSM, koji su integrirani zajedno pomoću vrlo jednostavnog strukturnog modela u VHDL-u.
FSM-ovi su stvoreni za položaj broda, položaj stijene i za 7-segmentni dekoder. Svrha brodskog FSM -a je da se brod može pomaknuti u ispravan položaj kada igrač pritisne gumb za gore ili dolje. FSM je potreban jer se mora sjetiti u kojem je položaju zadnji bio kako bi se premjestio na ispravan položaj.
Svrha FSM -a stijene je pomicanje stijene na ispravan položaj ovisno o tome u kojem se redu nalazi i posljednjoj poziciji u tom redu. Osim toga, prati položaj za modul koji će ga prikazati i pseudo-slučajno odabire novi redak koji će se pojaviti na sljedećem.
FSM za 7-segmentni dekoder zaslona korišten je ne samo za prikaz broda i stijene, već i za prikaz "BAnG" kada su položaj broda i stijene isti.
Korak 2: Materijali
Materijali korišteni u projektu bili su:
- Razvojna ploča Basys3 iz tvrtke Digilent, Inc.
- Vivado Design Suite
- sseg_dec.vhd (Ova nam je datoteka poslana na Polylearnu, a napisao ju je Bryan Mealy)
- Clk_div.vhd (Ova nam je datoteka poslana na Polylearnu, a napisao ju je Bryan Mealy)
- Tri stroja konačnih stanja (FSM)
Korak 3: Stvaranje igre
Modul igre kreiran je modeliranjem ponašanja za opisivanje stanja broda i stijena za vlastite odgovarajuće FSM -ove. Prednost ovoga je što je daleko lakše modelirati krug ponašanja opisujući ono što radi, a ne utvrđivanjem svih komponenti potrebnih za projektiranje hardvera.
Stanja stijene su rađena pomoću generatora pseudo slučajnih brojeva za prvu poziciju stijene. Da bismo to postigli, dali smo generatoru vlastiti sat koji je bio izuzetno brz u odnosu na brzinu igre. Na svakom rastućem rubu povećava se trobitni broj, a sve njegove vrijednosti odgovaraju jednom od tri početna stanja broda. Stoga tri vrijednosti odgovaraju položaju 3 (gore desno), tri položaju 7 (središte), a dvije položaju 11 (dolje desno).
Nakon što se dogodila slučajna generacija i asteroid je dobio početno stanje, teče vodoravno prema brodu bez prekida.
0 ← 1 ← 2 ← 3
4 ← 5 ← 6 ← 7
11 ← 10 ← 9 ← 8
Sat koji se koristi za sljedeću logiku stanja stijene kontrolira brzinu igre; pokušajem i pogreškom ustanovili smo da je 9999999 dobra vrijednost za svoj maksimalni broj.
Brodska logika funkcionira inicijalizacijom u središnji položaj (položaj 4) s krajnje lijeve strane. Ako se pritisne gornji ili donji gumb, brod će se pomicati gore -dolje u položaje 0 i 11 koji odgovaraju gumbu koji je pritisnut.
Kako bi se kretanje broda dobro osjećalo za korisnika, njegovo kretanje nismo učinili asinhronim. Koristili smo sat za promjene stanja i maksimalno 5555555.
Korak 4: Prikaz rezultata
Binarni do 7-segmentni dekoder prihvaća 4-bitne varijable položaja za brod i asteroid i prikazuje odgovarajuću sliku (ili brod i stijena ili poruka "BAnG").
To postiže tako da prvo provjeri jesu li dva jednaka, a zatim prikazuje poruku “BAnG” ako provjera vraća vrijednost true.
Ako se ne vrati istina, dekoder će prikazati brod i stijenu prebacivanjem između njih na vrlo visokoj frekvenciji takta i zavaravši oko da ih vidi kao da se prikazuju u isto vrijeme.
Korak 5: Sve spojite
Obuhvatili smo FSM broda i stijene u jedan veliki FSM koji smo priključili na FSM zaslona. Ulazi za igru su tipka gore i dolje na ploči BASYS3 i sistemski sat. Izlazi su segmentni i anodni vektori sa sedam segmenata-prikaz.
Ti ulazi i izlazi će se vidjeti u datoteci ograničenja gdje su mapirani portovi.
Korak 6: Buduće izmjene
U budućnosti bi dodavanje više funkcionalnosti kretanja broda projektu bilo poboljšanje. To se može postići jednostavno davanjem još 2 ulaza tipkama i dopuštanjem brodu da zauzme položaje (stanja) različita od 0, 4 i 8. Druga moguća izmjena mogla bi biti kontrola vremena sljedećeg stanja asteroida tako da se polako pokreće i poveća brzinu za 1,5x svaki put kada propusti brod dok ne dobije pogodak, gdje bi se ponovno pokrenuo i opet postao spor. To bi povećalo poteškoće igre i učinilo je korisniku zabavnijom ako bi se implementiralo, a moglo bi se učiniti stvaranjem varijable za maksimalan broj sati sljedećeg stanja stijene, pomnoživši tu varijablu s 1,5 svaki put kad asteroid ne 't hit, i vraćanje na početnu vrijednost svaki put kad rock udari.
Korak 7: Zaključak
Ovaj nam je projekt pomogao da bolje razumijemo strojeve konačnih stanja, satove i interaktivno prikazivanje na sedmosegmentnim zaslonima.
Najveća stvar kod strojeva konačnih stanja je da je važno znati (zapamtiti) u kakvom se stanju trenutno nalazite kako biste prešli na sljedeće željeno stanje. Ironično, dobar životni savjet; morate znati gdje se nalazite da biste znali kamo idete.
Manipuliranjem različitim primjercima satova uspjeli smo nasumično generirati brojeve, pomaknuti stijenu na sljedeću poziciju i upravljati prikazivanjem broda, stijene i poruke o kraju igre.
Saznali smo da se više od jedne anode ne može prikazati istovremeno. Modul koji smo dobili iskoristio je prednost toga što ljudsko oko može vidjeti razliku samo do određene frekvencije. Tako je odabrana veća učestalost uključivanja anoda. Brod i stijena koji se vide u isto vrijeme zapravo je aluzija jer se svaki prikazuje zasebno, ali vrlo brzo. Taj je koncept primijenjen za prikaz kretanja broda, stijene i poruke "BAnG".
Preporučeni:
DIY 37 Leds Arduino Roulette igra: 3 koraka (sa slikama)
DIY 37 Leds Arduino Roulette igra: Roulette je casino igra nazvana po francuskoj riječi koja znači mali kotačić
BBC Micro: bit i ogrebotina - interaktivni upravljač i igra vožnje: 5 koraka (sa slikama)
BBC Micro: bit and Scratch - Interaktivni upravljač i igra vožnje: Jedan od mojih zadataka ovog tjedna je korištenje BBC Micro: bit za povezivanje s programom Scratch koji smo napisali. Mislio sam da je ovo savršena prilika da pomoću svog ThreadBoarda stvorim ugrađeni sustav! Moja inspiracija za ispočetka p
3D igra labirint pomoću Arduina: 8 koraka (sa slikama)
3D igra Maze koristeći Arduino: Pozdrav prijatelji, pa ćemo danas napraviti igru labirinta koristeći ARDUINO UNO. Kako je Arduino Uno ploča koja se najčešće koristi, vrlo je lijepo s njom raditi igre. U ovom Instructableu možete napraviti igru labirinta kojom se upravlja pomoću joysticka. Ne zaboravite
FPGA reakcijska igra: 10 koraka
FPGA reakcijska igra: Do ljeta Rutherford i Regita Soetandar
Interaktivna igra Tic-Tac Toe igra s Arduinom: 6 koraka
Interaktivna igra Tic-Tac Toe nogom kontrolirana s Arduinom: Cilj projekta Physical Tic-Tac-Toe je premjestiti dobro poznatu igru u fizičko područje. Izvorno, igru igraju dva igrača na komadu papira - stavljajući simbole "X" i "O" naizmjence. Naša ideja je bila ispitati ponašanje igrača