Kazalo:
- 1. korak: Uvod
- 2. korak: Materiali
- 3. korak: Zasnova črne škatle na diagramu najvišje ravni
- 4. korak: CLKDivide
- 5. korak: Prestavite procesni blok
- 6. korak: Stroj končnega stanja
- 7. korak: Nadzor bloka procesa zaslona z ravnjo
- 8. korak: Nadziranje hitrosti LED z ravnjo
- 9. korak: Sestavljanje strojne opreme
- 10. korak: Zabavajte se
Video: Reakcijska igra FPGA: 10 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Avtor: Summer Rutherford in Regita Soetandar
1. korak: Uvod
Za naš končni projekt za CPE 133 smo oblikovali reakcijsko igro v VHDL za ploščo Basys3. To igro lahko najbolj primerjamo z arkadno igro "Stacker", kjer mora igralec ob pravem času izpustiti bloke. Plošča Basys3 je povezana s ploščo, ki ima izmenične LED. Te LED luči se bodo menjavale pri določeni frekvenci, odvisno od stopnje. Ta igra uporablja delilnik ure in 4 -mestni 7 -segmentni zaslon ter končni avtomat. Ko igralec aktivira pravilno stikalo, ko zasveti srednja LED, bo igralec napredoval na naslednjo stopnjo igre in povečal frekvenco izmeničnih LED. Zaradi tega je vsaka naslednja stopnja težja od prejšnje. Ko predvajalnik uspešno premaga najvišjo stopnjo 7, se na segmentnem zaslonu prikaže sporočilo in vse LED -diode hkrati utripajo in vklapljajo.
2. korak: Materiali
Materiali, ki jih boste potrebovali, so:
- Plošča Digilent Basys3 s kablom mikro USB
- Ogledna plošča
- 5 LED
- 5 uporov (uporabili smo 220 ohmov)
- 11 mostičnih žic
- Računalnik z Vivadom
3. korak: Zasnova črne škatle na diagramu najvišje ravni
Kot lahko vidite, se naš blokovni diagram na najvišji ravni začne z pridobivanjem potrebnih ur iz našega podmodula ClkDivide. Te ure so vložki v različne procesne bloke. V bistvu se mora igra zavedati, da se morajo LED -diode, ko uporabnik pravilno vklopi stikalo, začeti menjati hitreje in prikaz se mora dvigniti za eno raven. Blokovni diagram je lahko videti nekoliko nor, vendar je to zato, ker je v določenem procesu vzpostavljenih veliko signalov, nato pa ta signal definira drug signal v drugem bloku procesa.
Na koncu je edini vhod, ki ga igra vnese, vhodna ura na plošči Basys3, ki deluje pri 100 Mhz, sedem stikal na plošči Basys3 in gumb za ponastavitev. Izhod je anoda za sedem segmentni zaslon, sedem segmentov za zaslon in LED.
4. korak: CLKDivide
Ta podmodul delilnika ure je ustvaril počasnejšo uro, odvisno od vrednosti, ki smo jo preslikali v naši glavni datoteki. Ta podmodul smo uporabili za določanje Clk400, PushClk in newlck. Ta podmodul za vhod uporablja uro in 32 -bitni delilnik. Pojavi se upočasnjena ura. Za delilnik in upočasnjeno uro obstaja procesni blok. V tem procesu je začasna spremenljivka, ki smo jo poimenovali count, ki šteje eno vsakič, ko pritisnemo naraščajoči rob vnesene ure. Ko doseže številko delitelja, se upočasnjena ura preklopi in štetje se ponastavi na nič.
5. korak: Prestavite procesni blok
Procesni blok Shift nadzoruje izmenično gibanje in hitrost LED. Na seznamu občutljivosti sta signala newclk in stop. Stop povzroči kratko zakasnitev, ko uporabnik preide raven. Če Stop ni visok, se LED diode zamenjajo kot običajno glede na hitrost newclk. Ta izmenični vzorec nadzirata dve spremenljivki: Sledenje in štetje. Count določa, katera LED mora biti prižgana, Track pa, ali naj šteje gor ali dol. Obstaja še en signal, Final, ki velja le, če je raven "111", kar kaže, da je igralec premagal igro. Končno se izmenjuje med 0 in 1 na vsakem robu ure, da neprekinjeno vklopi in izklopi LED. To je le vizualni element za končni prikaz.
Ta premik je idealen kraj za začetek tega projekta. Če lahko nastavite, da se vaše LED diode pravilno in dosledno izmenjujejo, morate od tu le dodati vedenje!
6. korak: Stroj končnega stanja
Ustvarili smo stroj za končno stanje, ki določa vedenje, ko pritisnete vhodno stikalo ali gumb za ponastavitev. Vsako stanje je "raven" in če se stikalo vklopi ob napačnem času ali pritisne ponastavitev, se raven vrne nazaj na "000". V nasprotnem primeru, če je stikalo pravilno vklopljeno, se raven premakne navzgor, dokler ne doseže končnega stanja, “111” in pojavi se zaključni prikaz. FSM temelji na dveh procesnih blokih sync_proc in comb_proc. Sync_proc uporablja uro, ki smo jo poimenovali PushClk. Ta ura nadzoruje, kako hitro naslednje stanje postane trenutno stanje. Ta ura bi morala biti precej hitra; izbrali smo hitrost, ki je bila približno dvakrat hitrejša od naše najhitrejše LED hitrosti.
To kodo smo uporabili s pomočjo FSM za ravni; vendar smo po tem projektu spoznali, da bi bila učinkovitejša uporaba FSM morda stanje štetja, stanje ponastavitve ali stanje mirovanja. Če nič ne pritisnete, je v stanju mirovanja. Če pritisnete reset ali je predvajalnik pokvarjen, je v ponastavljenem stanju. Če je pravilno pritisnjen, je v stanju štetja. Obstaja tudi veliko drugih načinov uporabe FSM tudi v tej igri!
7. korak: Nadzor bloka procesa zaslona z ravnjo
Raven nadzoruje procesni blok zaslona. Spremenljivke na seznamu občutljivosti so Level, Reset in Clk400. Prikaz 7 segmentov se začne s prikazom "1" za prvo stopnjo. Odšteje do 7 vsakič, ko uporabnik preide raven, da uporabniku pokaže, na kateri ravni je. Ko uporabnik preide stopnjo 7, se na zaslonu prikaže "COOL", kar pomeni, da je igralec premagal igro. Ta zaslon "COOL" deluje na taktu 400 Hz, ki smo ga poimenovali Clk400. Če pritisnete Ponastavi, se zaslon vrne na »1.«
8. korak: Nadziranje hitrosti LED z ravnjo
Nazadnje, Level nadzoruje hitrost LED. Raven je edini signal na seznamu občutljivosti. D1 je signal, ki gre v postopek delitelja ure, da pridobi nov kl. Vsakič, ko spremenite raven ali stanje, blok procesa »Hitrost«. Ta postopek določa vrednost D1. Obstaja 8 opredeljenih vrednosti D1, ki smo jih izbrali glede na to, kako hitro želimo, da se vsaka raven izvaja. D1 se vsakič zmanjšuje, tako da newclk teče hitreje.
9. korak: Sestavljanje strojne opreme
Ohišje smo povezali z Basys3 z enim od priključkov pmod. Šest vrat pmod je bilo uporabljenih za priključitev moškega na moški konektor, enega za ozemljitev, drugih pet pa za 5 LED. Za vsako LED smo postavili tudi upor. Ti upori so 220 Ω in preprečujejo kratek stik in izgorevanje LED. Čeprav ima vsaka LED določen upor, upor ni dovolj, da bi oviral napetost iz vira.
10. korak: Zabavajte se
To igro je zelo enostavno igrati. Igralec začne na skrajnem desnem stikalu 1 na deski, V17. Ko je prižgana srednja LED, morajo stikalo dvigniti visoko. Nato premaknejo eno stikalo v levo in storijo isto! Če bo igralec prišel do konca, bo končal na sedmem stikalu, W14. Če premagajo igro, si ogledajo res zabaven zaključni prikaz!
Pri ustvarjanju te igre je hitrost v celoti odvisna od vas! Če so hitrosti, ki smo jih izbrali, prepočasne, jih pospešite in naredite še večji izziv! Prav tako ni določenega števila ravni. Če želite, da ima še več ravni, je treba spremeniti FSM in bloke procesa, ki jih določi raven, vendar so to zelo preproste spremembe.
Za uporabniški vnos smo se odločili tudi za stikala na plošči, vendar je to mogoče tudi z gumbom na plošči Basys3; gumb odpravi potrebo po ponastavitvi stikal vsakič, ko uporabnik začne znova. Sprva smo uporabili gumb, vendar je to povzročilo napake pri določanju ravni, ker bi preskočilo več stopenj, če bi pritisnila dva naraščajoča roba PushClk, ko bi držal gumb.
Spodaj je videoposnetek, ki prikazuje, kako igrati, skozi prve 4 stopnje in prikaz končnega konca.
Glavna datoteka tega projekta je navedena spodaj.
Viri
Referenčni priročnik Basys3
Navdih za projekt - igra Arduino Stop It
Priporočena:
DINO IGRA Z UPORABO LDR: 5 korakov
DINO IGRA Z UPORABO LDR: Igra dinozaver, znana tudi kot igra T-Rex in Dino Runner, je vgrajena brskalniška igra v spletnem brskalniku Google Chrome. Igro je ustvaril Sebastien Gabriel leta 2014, do nje pa lahko dostopate tako, da pritisnete preslednico, ko niste povezani v brskalniku Google Chrome
BBC Micro: bit and Scratch - Interaktivni volan in igra vožnje: 5 korakov (s slikami)
BBC Micro: bit in Scratch - Interaktivni volanski obroč in igra vožnje: Ena od mojih nalog tega tedna je uporaba BBC Micro: bit za vmesnik s programom Scratch, ki smo ga napisali. Mislil sem, da je to odlična priložnost, da z mojo ThreadBoard ustvarim vgrajen sistem! Moj navdih za praske p
Smešna reakcijska igra Arduino: 3 koraki
Smešna reakcijska igra Arduino: Smešna reakcijska igra Arduino za vso družino;) Temelji na komunikaciji Bluetooth med platformami. Potrebujete le nekaj Arduino stvari, pametni telefon Android in škatlo za čevlje. Če tega nimate, trdno verjemite v to: ni nič takega
Reakcijska igra- projekt računalniškega inženiringa: 3 koraki
Reakcijska igra- projekt računalniškega inženiringa: Reakcijska igra je točno tisto, kar pove že ime, preizkuša hitrost reakcije. Morda se sprašujete, kakšne koristi bi lahko imel ta strežnik zunaj razvedrila. No, to lahko uporabite za posameznike na rehabilitaciji zaradi operacije ali nesreče. Njihova reakcija je
Igra Asteroid FPGA: 7 korakov (s slikami)
Igra Asteroid FPGA: Za naš končni projekt CPE 133 smo se odločili, da na naši FPGA ustvarimo igro asteroidov z dvema stikalnima tipkama in 7-segmentnim zaslonom. Igra deluje tako, da se asteroid pojavi v eni od treh naključno izbranih vrstic in prileti proti t