Sadržaj:
- Korak 1: Uvod
- Korak 2: Materijali
- Korak 3: Dijagram najviše razine Dizajn crne kutije
- Korak 4: CLKDivide
- Korak 5: Promijenite blok procesa
- Korak 6: Stroj konačnih stanja
- Korak 7: Upravljanje procesnim blokom zaslona s razinom
- Korak 8: Kontrola LED brzine s razinom
- Korak 9: Sklapanje hardvera
- Korak 10: Zabavite se
Video: FPGA reakcijska igra: 10 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
By Summer Rutherford i Regita Soetandar
Korak 1: Uvod
Za naš završni projekt za CPE 133, osmislili smo reakcijsku igru u VHDL -u za Basys3 ploču. Ova se igra može najbliže usporediti s arkadnom igrom "Stacker" u kojoj igrač mora ispustiti blokove u pravo vrijeme. Ploča Basys3 spojena je na matičnu ploču koja ima naizmjenične LED diode. Ova LED svjetla izmjenjivat će se na određenoj frekvenciji, ovisno o razini. Ova igra koristi razdjelnik sata i četveroznamenkasti 7 -segmentni zaslon, kao i konačni stroj za stanje. Kad igrač aktivira ispravan prekidač dok svijetli srednja LED dioda, igrač će preći na sljedeću razinu igre, povećavajući frekvenciju izmjeničnih LED dioda. To svaku sljedeću razinu čini težom od prethodne. Kad igrač uspješno pobijedi najvišu razinu 7, na segmentnom zaslonu prikazat će se poruka, a sve LED diode istovremeno će treptati uključeno i isključeno.
Korak 2: Materijali
Materijali koji će vam trebati su:
- Digilent Basys3 ploča s mikro USB kabelom
- Oglasna ploča
- 5 LED dioda
- 5 otpornika (koristili smo 220 ohma)
- 11 kratkospojnih žica
- Računalo s Vivadom
Korak 3: Dijagram najviše razine Dizajn crne kutije
Kao što vidite, naš blok dijagram na najvišoj razini počinje dobivanjem potrebnih satova iz našeg podmodula, ClkDivide. Ovi satovi su ulazi u različite procesne blokove. U biti, igra mora prepoznati da kada korisnik ispravno uključi prekidač, LED diode se moraju početi mijenjati brže i prikaz mora ići na jednu razinu više. Blok dijagram bi mogao izgledati pomalo ludo, ali to je zato što postoji mnogo signala koji se uspostavljaju u određenom procesu, a zatim taj signal definira drugi signal u drugom procesnom bloku.
Na kraju, jedini ulazi koje igra uzima su ulazni sat na ploči Basys3 koja radi na 100 Mhz, sedam prekidača na ploči Basys3 i tipka za resetiranje. Izlazi anoda za sedmo segmentni zaslon, sedam segmenata za zaslon i LED diode.
Korak 4: CLKDivide
Ovaj podmodul razdjelnika sata stvorio je sporiji sat ovisno o vrijednosti koju smo mu preslikali u glavnoj datoteci. Koristili smo ovaj podmodul za određivanje Clk400, PushClk i newlck. Ovaj podmodul uzima sat i 32 -bitni razdjelnik kao ulaze. Izlazi usporeni sat. Postoji blok procesa za razdjelnik i usporeni sat. U tom je procesu privremena varijabla, koju smo nazvali count, koja odbrojava jednu svaki put kad se udari u rastući rub unesenog sata. Kad dosegne broj djelitelja, usporeni sat se prebacio i broj se vraća na nulu.
Korak 5: Promijenite blok procesa
Blok procesa Shift kontrolira naizmjenično kretanje i brzinu LED dioda. Na popisu osjetljivosti nalaze se signali newclk i Stop. Zaustavljanje uzrokuje kratko kašnjenje kada korisnik prijeđe razinu. Ako Stop nije visok, tada se LED diode izmjenjuju kao i obično ovisno o brzini novog klika. Ovaj izmjenični uzorak kontroliraju dvije varijable: Track and count. Brojanje određuje koja LED dioda treba biti uključena, dok Track određuje treba li odbrojavanje odbrojavati prema gore ili prema dolje. Postoji još jedan signal, Final, koji se primjenjuje samo kada je razina “111”, što znači da je igrač pobijedio igru. Konačno se izmjenjuje između 0 i 1 na svakom rubu sata kako bi se LED diode neprestano uključivale i isključivale. Ovo je samo vizualni element za konačni prikaz.
Ovaj proces smjene savršeno je mjesto za početak ovog projekta. Ako možete ispravno i dosljedno izmjenjivati svoje LED diode, odavde morate samo dodati ponašanje pri izravnavanju!
Korak 6: Stroj konačnih stanja
Stvorili smo stroj konačnih stanja kako bismo odredili ponašanje pri pritisku ulaznog prekidača ili tipke za resetiranje. Svako stanje je "razina" i ako se prekidač uključi u pogrešno vrijeme ili se pritisne reset, razina se vraća na "000". U suprotnom slučaju, ako je prekidač ispravno uključen, razina se pomiče prema gore dok ne dosegne konačno stanje, “111” i pojavi se završni prikaz. FSM se temelji na dva procesna bloka sync_proc i comb_proc. Sync_proc koristi sat koji smo nazvali PushClk. Ovaj sat kontrolira koliko brzo sljedeće stanje postaje trenutno stanje. Ovaj bi sat trebao biti prilično brz; odabrali smo brzinu koja je bila oko dva puta veća od naše najbrže LED brzine.
Ovaj smo kôd implementirali pomoću FSM -a za razine; međutim, nakon ovog projekta shvatili smo da bi učinkovitija uporaba FSM-a mogla biti stanje odbrojavanja, stanje resetiranja ili stanje mirovanja. Ako se ništa ne pritiska, ono je u stanju mirovanja. Ako se pritisne reset ili je igrač pokvaren, on je u resetiranom stanju. Ako se pravilno pritisne, u stanju je odbrojavanja. Postoje i mnogi drugi načini korištenja FSM -a i u ovoj igri!
Korak 7: Upravljanje procesnim blokom zaslona s razinom
Razina kontrolira blok procesa prikaza. Varijable na popisu osjetljivosti su Level, Reset i Clk400. Zaslon od 7 segmenata počinje prikazivanjem "1" za prvu razinu. Odbrojava se do 7 svaki put kada korisnik prijeđe razinu kako bi korisniku pokazao na kojoj je razini. Nakon što je korisnik prošao razinu 7, prikazuje se "COOL" kako bi označio da je igrač pobijedio igru. Ovaj "COOL" zaslon radi na taktu od 400 Hz koji smo nazvali Clk400. Ako pritisnete Reset, zaslon se vraća na "1."
Korak 8: Kontrola LED brzine s razinom
Konačno, razina kontrolira brzinu LED dioda. Razina je jedini signal na popisu osjetljivosti. D1 je signal koji ulazi u proces razdjelnika sata kako bi se dobio novi klip. Svaki put kad se promijeni razina ili stanje, blok procesa "Brzina". Ovaj proces određuje vrijednost D1. Postoji 8 definiranih vrijednosti D1 koje smo odabrali ovisno o tome koliko brzo želimo da se svaka razina izvodi. D1 se smanjuje svakim povećanjem razine, tako da newclk radi brže.
Korak 9: Sklapanje hardvera
Spojili smo ploču s Basys3 jednim od pmod konektora. Šest pmod priključaka korišteno je za uključivanje muškog u muški konektor, jedan za uzemljenje, a ostalih pet za 5 LED dioda. Također smo za svaku LED postavili otpornik. Ovi otpornici su 220Ω i sprječavaju kratki spoj i pregorijevanje LED dioda. Iako svaka LED dioda ima neki otpor, otpor nije dovoljan da ometa napon iz izvora.
Korak 10: Zabavite se
Ova igra je vrlo laka za igranje. Igrač počinje na krajnjem desnom prekidaču 1 ploče, V17. Moraju okrenuti prekidač visoko kad je uključena srednja LED dioda. Zatim pomaknu jedan prekidač ulijevo i učine isto! Ako igrač dođe do kraja, završit će na sedmom prekidaču, W14. Ako pobijede igru, mogu vidjeti zaista zabavan završetak!
Treba napomenuti da pri stvaranju ove igre brzine u potpunosti ovise o vama! Ako su brzine koje smo odabrali presporo, ubrzajte ih i učinite još izazovnijima! Također nema postavljenog broja razina. Ako želite da ima još više razina, potrebno je izmijeniti FSM i blokove procesa određene razinom, ali to su vrlo jednostavne promjene.
Također smo odlučili koristiti prekidače na ploči kao korisnički unos, ali to je moguće i pomoću gumba na ploči Basys3; gumb će ukloniti potrebu za resetiranjem prekidača svaki put kada korisnik počne iznova. U početku smo koristili gumb, no to je uzrokovalo pogreške u definiranju razine jer bi preskočilo više razina ako bi se pritisnula dva rastuća ruba PushClka dok se gumb držao pritisnut.
Ispod je videozapis koji pokazuje kako igrati, prolazi kroz prve 4 razine i prikazuje konačni završetak.
Glavna datoteka za ovaj projekt nalazi se u nastavku.
Izvori
Referentni priručnik Basys3
Inspiracija za projekt - Arduino Stop It igra
Preporučeni:
Smiješna Arduino reakcijska igra: 3 koraka
Smiješna Arduino reakcijska igra: Smiješna Arduino reakcijska igra za cijelu obitelj;) Temeljeno na cross -platform Bluetooth komunikaciji. Trebate samo neke Arduino stvari, Android pametni telefon i kutiju za cipele. Ako nemate ništa od ovoga, čvrsto vjerujte u to: ne postoji ništa što
Reakcijska igra- Projekt računalnog inženjeringa: 3 koraka
Reakcijska igra- Projekt računalnog inženjeringa: Reakcijska igra je upravo ono što naziv kaže, testira vašu brzinu reakcije. Možda se pitate koje bi prednosti ovaj poslužitelj mogao imati izvan zabave, pa to možete koristiti za osobe na rehabilitaciji od operacije ili nesreće. Njihova reakcija je
Arduino reakcijska igra: 9 koraka
Arduino Reaction Game: Napravio sam ovu igru kao školski zadatak. Morali smo napraviti nešto interaktivno s arduinom. Ovo je moj prvi Arduino projekt koji sam ikada napravio, tako da je bilo prilično teško, ali nije nemoguće
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
FPGA Asteroid igra: 7 koraka (sa slikama)
FPGA Asteroid Game: 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 se kreće prema t