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, Studeni
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 obiteljskim imenom. Igra uključuje korisnika da pritisne srednji gumb 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 pritisne prekidač s 'bombom'. Kada se to dogodi, zaslon 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 tijekom ovog tromjesečja. Četverobitni brojač korišten je zajedno s rubom sata kako bi se simulirao slučajni četverobitni broj za aktiviranje jednog od prekidača. Dijagram stanja također je korišten za izlaz 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 pritisnuo aktivni prekidač.

Korak 2: Materijali

  • Razvojna ploča Basys3 iz tvrtke Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Ova nam je datoteka poslana na Polylearn, a napisao ju je Bryan Mealy)
  • 4 -bitni brojač od T japanki
  • FSM

Korak 3: Stvaranje igre

Stvaranje igre
Stvaranje igre
Stvaranje igre
Stvaranje igre

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

Cijela se osnova igre vrti oko nasumičnog dodjeljivanja jednog od 16 prekidača da bude aktivan s bombom, te da igrači ne znaju koji je prekidač aktivan sve 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. Stroj stanja emitira jednobitnu Z vrijednost koju zatim čita BC_DEC1. Stroj konačnih stanja koji smo koristili ima dva različita stanja: u stanju A, zaslon sa sedam segmenata daje 'PLAY' i stroj ostaje u tom stanju sve dok ne prepozna da je aktivirani prekidač okrenut. Kad se to dogodi, FSM prelazi u stanje B gdje emitira 'LOSE' na sedmosegmentni zaslon i ostaje u tom stanju sve dok se svih 16 sklopki ne prebaci na '0'. Kad je taj uvjet ispunjen, FSM ponovno 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 o kojima smo razmišljali o našoj igri uključuje dodavanje više bombi na 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 zabavno od igre koja je tipično završila nakon tri ili četiri prebacivanja.

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 stvaranje i programiranje projekta zahtijevalo od nas da iskoristimo većinu, ako ne i sve ono što smo naučili u ovom kvartalu. Koristili smo japanke, brojače, FSM -ove, sat, korisnički unos s ploče i izlaz na sedmosegmentni zaslon.

Također smo saznali kako bi neke sintaksne pogreške mogle potpuno slomiti program (čak i ako bi se smatrale u redu u drugim programskim jezicima kao što su Python ili Java) 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 uspjeti riješiti sve greške u svom kodu.

Preporučeni: