Sadržaj:
- Korak 1: Pregled
- Korak 2: Materijali
- Korak 3: Kreiranje igre
- Korak 4: Prikaz rezultata
- Korak 5: Sastavite sve zajedno
- Korak 6: Buduće izmjene
- Korak 7: Zaključak
Video: FPGA Asteroid igra: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Za naš završni projekt CPE 133, odlučili smo stvoriti igru asteroida na našoj FPGA ploči koristeći dva prekidača i 7-segmentni zaslon. Igra funkcionira tako da se asteroid rađa u jednom od tri nasumično odabrana reda, te juri prema brodu s druge strane 7-segmentnog zaslona. Gornje i donje dugme mogu se koristiti za pomicanje vašeg broda s puta asteroida. U slučaju da to ne učini, na ekranu se na trenutak čita „BAnG“, a zatim brzo ponovo pokreće igru kako bi korisnik mogao pokušati ponovo. Slijedi kratak opis načina na koji je projekt napravljen tako da svaki korisnik može replicirati ili poboljšati naš dizajn.
Korak 1: Pregled
Projekt se u velikoj mjeri sastoji od Finite State Machines (FSM), koji koriste logiku za prijenos FPGA -a 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 pravilan položaj kada igrač pritisne gumb za gore ili dolje. FSM je potreban jer mora zapamtiti na kojoj je poziciji bio zadnji 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 modula koji će ga prikazati i pseudo-nasumično bira novi red koji će se pojaviti na sljedećem.
FSM za 7-segmentni dekoder prikaza korišten je ne samo za prikaz broda i stijene, već i za prikaz “BAnG” kada su položaj broda i položaj stijene isti.
Korak 2: Materijali
Materijali korišteni u projektu bili su:
- Razvojni odbor Basys3 iz kompanije Digilent, Inc.
- Vivado Design Suite
- sseg_dec.vhd (Ova datoteka nam je dostavljena na Polylearnu, a napisao ju je Bryan Mealy)
- Clk_div.vhd (Ova datoteka nam je dostavljena na Polylearnu, a napisao ju je Bryan Mealy)
- Tri konačne državne mašine (FSM)
Korak 3: Kreiranje igre
Modul igre kreiran je modeliranjem ponašanja za opisivanje stanja broda i stijena za njihove vlastite 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 stijena urađena su pomoću generatora pseudo slučajnih brojeva za prvu poziciju stijene. Da bismo to postigli, dali smo generatoru svoj 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 startna stanja broda. Dakle, tri vrijednosti odgovaraju položaju 3 (gore desno), tri odgovaraju položaju 7 (centar), a dvije položaju 11 (dolje desno).
Nakon što se dogodila nasumična 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 greškom otkrili 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 gornje ili donje dugme, brod će se kretati gore -dolje u položaje 0 i 11 koji odgovaraju dugmetu koje je pritisnuto.
Kako bi kretanje broda bilo dobro 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 što prvo provjeri jesu li dva jednaka, a zatim prikaže 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: Sastavite sve zajedno
Obuhvatili smo FSM broda i stijene u jedan veliki FSM koji smo povezali sa FSM ekrana. Ulazi za igru su tipke gore i dolje na BASYS3 ploči i sistemski sat. Izlazi su segmentni i anodni vektori sa sedam segmenata-prikaz.
Ovi 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 jednostavnim davanjem još 2 unosa dugmeta 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,5 puta svaki put kada promaši brod dok ne dobije pogodak, gdje bi se ponovo pokrenuo i ponovo postao spor. Ovo bi povećalo poteškoće u igri i učinilo je korisniku zabavnijom ako bi se implementiralo, a moglo bi se učiniti stvaranjem varijable za maksimalan broj sati slijedećeg stanja stijene, množeći tu varijablu sa 1,5 svaki put kada asteroid ne 't hit, i vraćanje na početnu vrijednost svaki put kad rock udari.
Korak 7: Zaključak
Ovaj projekt nam je pomogao da bolje razumijemo konačne mašine, satove i interaktivno prikazivanje na sedmosegmentnim ekranima.
Najveća stvar kod strojeva konačnih stanja je da je važno znati (zapamtiti) u kojem 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 izabrana 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 koncept je primijenjen za prikaz kretanja broda, stijene i poruke "BAnG".
Preporučuje se:
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 ove sedmice je da koristim BBC Micro: bit za povezivanje sa programom Scratch koji smo napisali. Mislio sam da je ovo savršena prilika da pomoću ThreadBoarda stvorim ugrađeni sistem! Moja inspiracija za grebanje p
Aruduino LED igra Brza igra za dva igrača: 8 koraka
Aruduino LED igra Brza igra za dva igrača: Ovaj projekat je inspirisan @HassonAlkeim. Ako ste voljni detaljno pogledati, evo linka koji možete provjeriti https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Ova igra je poboljšana verzija Alkeima. To je
FPGA reakcijska igra: 10 koraka
FPGA reakcijska igra: Do ljeta Rutherford i Regita Soetandar
Interaktivna igra Tic-Tac Toe igra kojom se upravlja pomoću Arduina: 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. U početku igru igraju dva igrača na komadu papira - stavljajući naizmjence simbole 'X' i 'O'. Naša ideja je bila ispitati ponašanje igrača