Talaan ng mga Nilalaman:
- Hakbang 1: Panimula
- Hakbang 2: Mga Kagamitan
- Hakbang 3: Disenyo ng Itaas na Antas ng Black Box
- Hakbang 4: CLKDivide
- Hakbang 5: Pag-shift ng Proseso ng Shift
- Hakbang 6: Finite State Machine
- Hakbang 7: Pagkontrol sa Block ng Proseso ng Display Sa Antas
- Hakbang 8: Pagkontrol sa Bilis ng LED Sa Antas
- Hakbang 9: Hardware Assembly
- Hakbang 10: Magsaya
Video: Laro ng Reaksyon ng FPGA: 10 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Ni Summer Rutherford at Regita Soetandar
Hakbang 1: Panimula
Para sa aming pangwakas na proyekto para sa CPE 133, nagdisenyo kami ng isang reaksyon na laro sa VHDL para sa isang board ng Basys3. Ang larong ito ay maaaring mas malapit na ihambing sa arcade game na "Stacker" kung saan kailangang i-drop ng player ang mga bloke sa tamang oras. Ang board ng Basys3 ay konektado sa isang breadboard, na mayroong mga alternating LED. Ang mga ilaw na LED na ito ay kahalili sa isang tukoy na dalas, depende sa antas. Ang larong ito ay gumagamit ng relo ng orasan at ang 4 na digit na 7 segment na pagpapakita, pati na rin ang isang may takdang makina ng estado. Kapag pinapagana ng manlalaro ang tamang switch habang ang gitnang LED ay nag-iilaw, ang player ay sususulong sa susunod na antas ng laro, pinapataas ang dalas ng mga alternating LED. Ginagawa nitong mas mahirap ang bawat sunod na antas kaysa sa dating antas. Kapag matagumpay na natalo ng manlalaro ang antas 7, ang pinakamataas na antas, isang mensahe ang ipapakita sa pagpapakita ng segment at lahat ng mga LED ay sabay na mag-flash on at mag-off.
Hakbang 2: Mga Kagamitan
Ang mga materyales na kakailanganin mo ay:
- Digilent Basys3 board na may micro USB cable
- Breadboard
- 5 LEDs
- 5 resistors (gumamit kami ng 220 ohm)
- 11 mga jumper wires
- Computer na may Vivado
Hakbang 3: Disenyo ng Itaas na Antas ng Black Box
Tulad ng nakikita mo, nagsisimula ang aming nangungunang antas ng diagram ng block sa pamamagitan ng pagkuha ng mga kinakailangang orasan mula sa aming submodule, ClkDivide. Ang mga orasan na ito ay mga pag-input sa iba't ibang mga bloke ng proseso. Mahalaga, kailangang kilalanin ng laro na kapag ang isang gumagamit ay tama na nakabukas ang switch, ang mga LED ay dapat magsimulang alternating mas mabilis at ang display ay kailangang umakyat sa isang antas. Ang diagram ng block ay maaaring magmukhang medyo mabaliw, ngunit iyon ay dahil maraming mga signal na itinatag sa isang tiyak na proseso at pagkatapos ang signal na iyon ay tumutukoy sa isa pang signal sa isa pang block ng proseso.
Sa huli, ang mga input lamang na kinukuha ng laro ay ang input na orasan sa Basys3 board na tumatakbo sa 100 Mhz, pitong switch sa board ng Basys3, at ang pindutang i-reset. Ang na-output ay ang anode para sa pitong segment na pagpapakita, ang pitong mga segment para sa display, at ang mga LED.
Hakbang 4: CLKDivide
Ang submodule ng divider ng orasan na ito ay lumikha ng isang mas mabagal na orasan depende sa halaga na na-map namin dito sa aming pangunahing file. Ginamit namin ang submodule na ito upang matukoy ang Clk400, PushClk, at newlck. Ang submodule na ito ay tumatagal ng isang orasan at isang 32 bit divider bilang mga input. Ang isang pinabagal na orasan ay na-output. Mayroong isang bloke ng proseso para sa divider at ang pinabagal na orasan. Sa proseso ay isang pansamantalang variable, na tinawag naming bilang, na bibilangin isa bawat oras na tumama ang isang tumataas na gilid ng naka-input na orasan. Kapag naabot na nito ang numero ng namamahagi, nagpalipat-lipat ang pinabagal na orasan at bilangin ang pag-reset sa zero.
Hakbang 5: Pag-shift ng Proseso ng Shift
Kinokontrol ng bloke ng proseso ng Shift ang kahaliling paggalaw at bilis ng mga LED. Sa listahan ng pagiging sensitibo ay ang mga signal ng newclk at Stop. Ang paghinto ay nagdudulot ng isang maikling pagkaantala kapag ang gumagamit ay pumasa sa antas. Kung ang paghinto ay hindi mataas, pagkatapos ay ang mga LED na kahalili bilang normal batay sa bilis ng newclk. Ang alternating pattern na ito ay kinokontrol ng dalawang variable: Subaybayan at bilangin. Tinutukoy ng bilang kung aling LED ang dapat na nasa, habang ang Track ay tumutukoy kung ang bilang ay dapat na bilangin pataas o pababa. May isa pang senyas, Pangwakas, na nalalapat lamang kapag ang Antas ay "111," na nagpapahiwatig na tinalo ng manlalaro ang laro. Ang panghuling kahalili sa pagitan ng 0 at 1 bawat gilid ng orasan upang i-on at i-off ang mga LED nang tuloy-tuloy. Ito ay isang visual na elemento lamang para sa huling pagpapakita.
Ang proseso ng paglilipat na ito ay ang perpektong lugar upang magsimula para sa proyektong ito. Kung makukuha mo ang iyong mga LED na alternating tama at pare-pareho, pagkatapos mula dito kailangan mo lamang idagdag sa pag-uugali kapag nag-level up!
Hakbang 6: Finite State Machine
Lumikha kami ng isang Finite State Machine upang idikta ang pag-uugali kapag ang input switch o reset button ay pinindot. Ang bawat estado ay isang "antas" at kung ang switch ay nakabukas sa maling oras o na-press ang press, ang antas ay babalik sa "000." Kung hindi man, kung ang switch ay wastong nakabukas pagkatapos ay ang antas ay gumagalaw hanggang sa maabot nito ang pangwakas na estado, ang "111" at ang pagtatapos ng display ay nangyayari. Ang FSM ay batay sa dalawang proseso ng mga bloke ng sync_proc at comb_proc. Ginagamit ng Sync_proc ang orasan na tinawag naming PushClk. Kinokontrol ng orasan na ito kung gaano kabilis ang susunod na estado ay nagiging kasalukuyang estado. Ang orasan na ito ay dapat na napakabilis; pumili kami ng isang bilis na halos dalawang beses na mas mabilis kaysa sa aming pinakamabilis na bilis ng LED.
Ipinatupad namin ang code na ito gamit ang isang FSM para sa mga antas; gayunpaman, pagkatapos ng proyektong ito napagtanto namin ang isang mas mahusay na paggamit ng isang FSM ay maaaring magkaroon ng isang bilang ng estado, isang estado ng pag-reset, o isang estado ng pananatili. Kung walang pinipilit, nasa estado ng pananatili. Kung ang pagpi-reset ay pinindot o ginulo ang player, ito ay nasa reset na estado. Kung tama ang pagpindot, ito ay nasa estado ng count up. Maraming iba pang mga paraan upang magamit din ang isang FSM sa larong ito!
Hakbang 7: Pagkontrol sa Block ng Proseso ng Display Sa Antas
Kinokontrol ng antas ang block ng proseso ng Display. Ang mga variable sa listahan ng pagiging sensitibo ay Antas, I-reset, at Clk400. Nagsisimula ang pagpapakita ng 7 segment sa pamamagitan ng pagpapakita ng '1' para sa unang antas. Nagbibilang ito hanggang 7 bawat oras na ang gumagamit ay pumasa sa isang antas upang ipakita sa gumagamit kung anong antas sila nasa. Kapag naipasa na ng gumagamit ang antas 7, ipinapakita nito ang "COOL" upang ipahiwatig na natalo ng manlalaro ang laro. Ang display na "COOL" ay tumatakbo sa isang 400 Hz na orasan na tinawag naming Clk400. Kung ang Reset ay pinindot, ang display ay babalik sa "1."
Hakbang 8: Pagkontrol sa Bilis ng LED Sa Antas
Sa wakas, kinokontrol ng Antas ang bilis ng mga LED. Ang antas ay ang tanging signal sa listahan ng pagiging sensitibo. Ang D1 ay ang senyas na pumupunta sa proseso ng Clock Divider upang makakuha ng newclk. Sa tuwing binabago ang Antas, o nagbabago ang estado, ang block ng proseso ay "Bilis." Tinutukoy ng prosesong ito ang halaga ng D1. Mayroong 8 tinukoy na mga halaga ng D1 na pinili namin batay sa kung gaano kabilis na nais naming tumakbo ang bawat antas. Nagiging maliit ang D1 sa bawat pagtaas ng antas ng oras upang mas mabilis na tumakbo ang newclk.
Hakbang 9: Hardware Assembly
Ikinonekta namin ang breadboard sa Basys3 sa isa sa mga konektor ng pmod. Anim sa mga port ng pmod ay ginamit upang mag-plug sa isang male to male connector, isa para sa ground at ang isa pa para sa 5 LEDs. Naglagay din kami ng isang risistor para sa bawat LED. Ang mga resistors na ito ay 220Ω at pinipigilan ang mga LED na maging maiikli at masunog. Bagaman ang bawat LED ay may ilang paglaban, ang paglaban ay hindi sapat upang hadlangan ang boltahe mula sa mapagkukunan.
Hakbang 10: Magsaya
Ang larong ito ay napakadaling upang i-play. Nagsisimula ang manlalaro sa dulong kanan na switch 1 ng board, V17. Dapat nilang i-flip ang switch nang mataas kapag nakabukas ang gitnang LED. Pagkatapos ay ilipat nila ang isang switch sa kaliwa at gawin ang parehong bagay! Kung ang manlalaro ay makarating sa dulo, magtatapos sila sa ikapitong switch, W14. Kung talunin nila ang laro makakakita sila ng isang talagang nakakatuwang pagpapakita ng pagtatapos!
Isang bagay na dapat tandaan ay kapag lumilikha ng larong ito ang bilis ay ganap na nasa iyo! Kung ang napili nating mga bilis ay masyadong mabagal, huwag mag-atubiling pabilisin ito at gawin itong mas mahirap! Wala ring itinakdang bilang ng mga antas. Kung nais mong gawin itong magkaroon ng mas maraming mga antas, may mga pagbabago na dapat gawin sa FSM at ang mga bloke ng proseso na tinutukoy ng Antas, ngunit ang mga ito ay napaka-simpleng pagbabago.
Pinili rin naming gumamit ng mga switch sa board bilang input ng gumagamit, ngunit posible rin ito na may isang pindutan sa board ng Basys3; aalisin ng pindutan ang pangangailangan na i-reset ang mga switch sa tuwing magsisimula ang gumagamit. Sa una ay gumamit kami ng isang pindutan, subalit naging sanhi ito ng mga pagkakamali sa pagtukoy sa antas dahil tatalon ito ng maraming antas kung ang dalawang tumataas na gilid ng PushClk ay na-hit kapag pinindot ang pindutan.
Nasa ibaba ang isang video na nagpapakita kung paano maglaro, dumaan sa unang 4 na antas, at sa huling pagtatapos ng display.
Ang pangunahing file para sa proyektong ito ay kasama sa ibaba.
Pinagmulan
Manwal ng sangguniang Basys3
Inspirasyon para sa proyekto - Arduino Stop It game
Inirerekumendang:
Tester ng Reaksyon: 13 Mga Hakbang
Reaction Tester: Ang mga taong dahan-dahang gumanti ay naghihirap sa lahat ng aspeto, paglalaro man o pagsusulit, lahat sila ay may dehado, kaya nais kong magdisenyo ng isang laro upang sanayin ang reaksyon. Ang mga sumusunod ay ang mga patakaran ng laro: pindutin muna ang pindutan ng pag-reset, maghintay para sa
Laro ng Reaksyon ng Arduino: 9 Mga Hakbang
Laro ng Reaksyon ng Arduino: Ginawa ko ang larong ito bilang takdang-aralin sa paaralan. Kailangan naming gumawa ng isang bagay na interactive sa isang arduino. Ito ang aking unang proyekto ng Arduino na nagawa ko, kaya't medyo mahirap, ngunit hindi imposible
Paano Mag-upload ng Mga Laro sa Arduboy at 500 Mga Laro sa Flash-cart: 8 Hakbang
Paano Mag-upload ng Mga Laro sa Arduboy at 500 Mga Laro sa Flash-cart: Gumawa ako ng ilang gawang-bahay na Arduboy na may memorya ng Serial Flash na maaaring mag-imbak ng max 500 na laro upang maglaro sa kalsada. Inaasahan kong ibahagi kung paano mag-load ng mga laro dito, kasama ang kung paano mag-imbak ng mga laro sa serial flash memory at lumikha ng iyong sariling pinagsama-samang package ng laro
Laro ng Mabilis na Reaksyon: Bersyon ng Distansya: 5 Mga Hakbang (na may Mga Larawan)
Laro ng Mabilis na Reaksyon: Bersyon ng Distansya: Kumusta. Ito ay isang Maituturo sa kung paano lumikha ng isang laro na sumusubok sa parehong oras ng iyong reaksyon at pakiramdam ng distansya. Ang proyektong ito ay batay sa isang lumang proyekto na ginawa ko na kinasasangkutan ng dalawang manlalaro na nakikipagkumpitensya upang makita kung sino ang may mas mabilis na oras ng reaksyon sa pamamagitan ng pag-click sa isang pindutan
Paano Suriin Kung Tumatakbo ang isang Laro sa Iyong Computer Bago ka Bumili ng Laro .: 4 Mga Hakbang
Paano Suriin Kung Tumatakbo ang Isang Laro sa Iyong Computer Bago ka Bumili ng Laro .: Kamakailan-lamang na nakuha ko ang Tawag ng Tanghalan 4 mula sa isang kaibigan (nang libre ay maaari kong idagdag) dahil hindi tatakbo sa kanyang computer. Sa gayon, ang kanyang computer ay medyo bago, at ikinagulat ako nito kung bakit hindi ito tatakbo. Kaya pagkatapos ng ilang oras na paghahanap ng internet, napag-alaman ko