Sadržaj:

Minolovac: 5 koraka (sa slikama)
Minolovac: 5 koraka (sa slikama)

Video: Minolovac: 5 koraka (sa slikama)

Video: Minolovac: 5 koraka (sa slikama)
Video: Как штукатурить откосы на окнах СВОИМИ РУКАМИ 2024, Juli
Anonim
Minolovac
Minolovac

Za naš završni projekt CPE 133, Chase i ja smo odlučili stvoriti igru "Minolovac" koja je koristila gumb i prebacivanje unosa s Basys-3 ploče, kao i VHDL koda. Bolji naziv za igru mogao bi biti "Ruski rulet", međutim htjeli smo ići s porodičnijim imenom. Igra uključuje korisnika da pritisne srednje dugme na Basys ploči kako bi nasumično dodijelio jedan od 16 prekidača "aktivnim" bombom. Dva igrača zatim naizmjence podižu prekidače, jedan po jedan, sve dok jedan od igrača ne okrene prekidač s „bombom“. Kada se to dogodi, ekran sa sedam segmenata upozorava igrače da je taj igrač upravo izgubio igru.

Korak 1: Pregled

U projektu su korišteni mnogi VHDL moduli koje smo koristili tokom ovog kvartala. Četverobitni brojač je korišten zajedno sa ivicom takta kako bi se simulirao slučajni četverobitni broj za aktiviranje jednog od prekidača. Dijagram stanja je također korišten za ispis različitih riječi na zaslon sa sedam segmenata, u rasponu od 'PLAY' kada su igrači usred svoje igre, do 'LOSE' kada je jedan od igrača okrenuo aktivni prekidač.

Korak 2: Materijali

  • Razvojni odbor Basys3 iz kompanije Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Ova datoteka nam je dostavljena na Polylearnu, a napisao ju je Bryan Mealy)
  • 4 -bitni brojač od T japanki
  • FSM

Korak 3: Kreiranje igre

Pravljenje igre
Pravljenje igre
Pravljenje igre
Pravljenje igre

Prvi korak prema izradi ove igre bio je crtanje dijagrama sa svim komponentama koje ćemo koristiti. Ulazi za ovaj sistem bili su dugme 1, 16 prekidača i sat. Izlazi su bili zaslon sa sedam segmenata i anode. Nakon crtanja sheme kola, napisali smo pojedinačne izvorne datoteke za svaku komponentu u Vivadu i sastavili ih koristeći karte portova ispod glavne izvorne datoteke.

Cijela osnova igre vrti se oko nasumičnog dodjeljivanja jednog od 16 prekidača da bude aktivan s bombom, a za igrače da ne znaju koji je prekidač aktivan dok se taj aktivni prekidač ne uključi. Na internetu smo istražili generatore slučajnih i pseudoslučajnih brojeva, ali smo na kraju odlučili da je korištenje 4-bitnog brojača i dodjeljivanje odgovarajućeg prekidača aktivnim dovoljno nasumično za ono što smo tražili. Uspjeli smo prenamijeniti naš 4-bitni brojač koji smo stvorili u prethodnom projektu kako bismo mogli raditi za ovaj zadatak. Koristili smo brojač za stvaranje slučajnog broja između 0-15; tada smo u komponenti main1 dodijelili decimalni ekvivalent slučajnog broja odgovarajućem prekidaču na ploči. Kao što se vidi na shemi, i izlaz X ("aktivna bomba") iz komponente main1 i prekidači koje igrači uključuju idu na FSM1. Mašina stanja emituje jednobitnu Z vrednost koju zatim čita BC_DEC1. Mašina konačnih stanja koju smo koristili ima dva različita stanja: u stanju A, zaslon sa sedam segmenata daje 'PLAY' i mašina ostaje u tom stanju sve dok ne prepozna da je aktivirani prekidač okrenut. Kada se to dogodi, FSM prelazi u stanje B gdje emitira 'LOSE' na sedmosegmentni prikaz i ostaje u tom stanju sve dok se svih 16 prekidača ne prebaci na '0'. Kada je taj uvjet ispunjen, FSM ponovo ide u stanje A i čeka igrače da započnu novu igru. Mooreov dijagram koji pomaže u razumijevanju ovog FSM -a prikazan je gore.

Korak 4: Buduće izmjene

Nekoliko izmjena koje smo razmatrali o tome da uvedemo u našu igru uključuju dodavanje više bombi u polje (moguće povećanje s jedne na tri), dodavanje brojača rezultata i više rundi. Na kraju smo se odlučili protiv ovih poboljšanja, jer smo otkrili da je igranje duže, produžene igre obično bilo napetije i na kraju zabavnije od igre koja se obično završavala nakon tri ili četiri preokreta.

Korak 5: Zaključak

Bili smo jako zadovoljni konačnim rezultatom ovog projekta; ne samo zato što je konačnu verziju igre bilo zabavno igrati, već i zato što je kreiranje i programiranje projekta zahtijevalo da iskoristimo najviše, ako ne i sve ono što smo naučili u ovom kvartalu. Koristili smo japanke, brojače, FSM -ove, sat, korisnički unos sa ploče i izlaz na sedmosegmentni displej.

Također smo saznali kako bi nekoliko sintaksnih grešaka moglo potpuno slomiti program (čak i ako bi se u drugim programskim jezicima, poput Pythona ili Jave, smatrale u redu) i to tek nakon više simulacija i višestrukih iteracija koda koje su učitane i testirane na board, hoćete li konačno moći riješiti sve greške u svom kodu.

Preporučuje se: