Orodha ya maudhui:
- Hatua ya 1: Utangulizi
- Hatua ya 2: Vifaa
- Hatua ya 3: Mchoro wa kiwango cha juu Ubuni wa Sanduku Nyeusi
- Hatua ya 4: CLKDivide
- Hatua ya 5: Mchakato wa Shift Block
- Hatua ya 6: Mashine ya Jimbo la kumaliza
- Hatua ya 7: Kudhibiti Uzuiaji wa Mchakato wa Kuonyesha na Kiwango
- Hatua ya 8: Kudhibiti kasi ya LED na Kiwango
- Hatua ya 9: Mkutano wa vifaa
- Hatua ya 10: Furahiya
Video: Mchezo wa Reaction wa FPGA: Hatua 10
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:53
Na Summer Rutherford na Regita Soetandar
Hatua ya 1: Utangulizi
Kwa mradi wetu wa mwisho wa CPE 133, tulibuni mchezo wa majibu katika VHDL kwa bodi ya Basys3. Mchezo huu unaweza kulinganishwa sana na mchezo wa Arcade "Stacker" ambapo mchezaji anapaswa kuacha vizuizi kwa wakati unaofaa. Bodi ya Basys3 imeunganishwa na ubao wa mkate, ambao una taa za kubadilisha. Taa hizi za LED zitabadilika kwa masafa maalum, kulingana na kiwango. Mchezo huu hutumia msuluhishi wa saa na onyesho la sehemu 4 ya nambari 7, pamoja na mashine ya serikali inayokoma. Mchezaji anapowasha swichi sahihi wakati mwangaza wa katikati unawaka, mchezaji atasonga mbele kwenda ngazi inayofuata ya mchezo, na kuongeza mzunguko wa LED zinazobadilishana. Hii inafanya kila ngazi mfululizo kuwa ngumu kuliko ile ya awali. Wakati mchezaji amefanikiwa kupiga kiwango cha 7, kiwango cha juu zaidi, ujumbe utaonyeshwa kwenye onyesho la sehemu na LED zote zitawaka na kuzima wakati huo huo.
Hatua ya 2: Vifaa
Vifaa ambavyo utahitaji ni:
- Bodi ya Digilent Basys3 na kebo ndogo ya USB
- Bodi ya mkate
- 5 LEDs
- Vipinga 5 (tulitumia ohms 220)
- Waya 11 za kuruka
- Kompyuta na Vivado
Hatua ya 3: Mchoro wa kiwango cha juu Ubuni wa Sanduku Nyeusi
Kama unavyoona, mchoro wetu wa kiwango cha juu huanza kwa kupata saa zinazohitajika kutoka kwa submodule yetu, ClkDivide. Saa hizi ni pembejeo kwenye vitalu anuwai vya mchakato. Kwa kweli, mchezo lazima utambue kuwa wakati mtumiaji anawasha swichi kwa usahihi, taa za LED lazima zianze kubadilika haraka na onyesho linahitaji kwenda ngazi moja. Mchoro wa kizuizi unaweza kuonekana kuwa wazimu kidogo, lakini hiyo ni kwa sababu kuna ishara nyingi ambazo zimewekwa katika mchakato fulani na kisha ishara hiyo inafafanua ishara nyingine katika mchakato mwingine wa kuzuia.
Mwishowe, pembejeo pekee ambazo mchezo huchukua ni saa ya kuingiza kwenye bodi ya Basys3 inayoendesha 100 Mhz, swichi saba kwenye ubao wa Basys3, na kitufe cha kuweka upya. Kinachotolewa ni anode ya onyesho la sehemu saba, sehemu saba za onyesho, na LEDs.
Hatua ya 4: CLKDivide
Submodule hii ya mgawanyiko wa saa iliunda saa polepole kulingana na thamani tuliyoipangia kwenye faili yetu kuu. Tulitumia kijitabu hiki kubainisha Clk400, PushClk, na newlck. This submodule inachukua saa na mgawanyiko 32 kama pembejeo. Saa iliyopunguzwa hutolewa. Kuna kizuizi cha mchakato kwa msuluhishi na saa iliyopunguzwa. Katika mchakato huo ni kutofautisha kwa muda, ambayo tuliita hesabu, ambayo huhesabu moja kila wakati makali ya saa inayoingizwa yanapigwa. Mara tu itakapofikia nambari ya msuluhishi, saa iliyopunguzwa ilibadilishwa na kuhesabu upya hadi sifuri.
Hatua ya 5: Mchakato wa Shift Block
Mchakato wa Shift unadhibiti mwendo wa kubadilisha na kasi ya LED. Katika orodha ya unyeti ni ishara mpya na Stop. Acha husababisha ucheleweshaji mfupi wakati mtumiaji anapita kiwango. Ikiwa Stop sio juu, basi LED hubadilika kama kawaida kulingana na kasi ya newclk. Mfumo huu unaobadilishana unadhibitiwa na vigeuzi viwili: Fuatilia na hesabu. Hesabu huamua ni LED gani inapaswa kuwashwa, wakati Track huamua ikiwa hesabu inapaswa kuhesabu juu au chini. Kuna ishara nyingine, ya Mwisho, ambayo inatumika tu wakati Ngazi ni "111," inayoonyesha mchezaji amepiga mchezo. Mwisho hubadilisha kati ya 0 na 1 kila makali ya saa kuwasha na kuzima LEDs kila wakati. Hii ni sehemu tu ya onyesho la mwisho.
Mchakato huu wa kuhama ni mahali pazuri kuanza kwa mradi huu. Ikiwa unaweza kupata taa zako za LED zikibadilishana kwa usahihi na mfululizo, basi kutoka hapa lazima tu uongeze tabia wakati wa kusawazisha!
Hatua ya 6: Mashine ya Jimbo la kumaliza
Tuliunda Mashine ya Jimbo la Finite kuamuru tabia wakati kitufe cha kuingiza au kifungo cha kuweka upya kinabanwa. Kila jimbo ni "kiwango" na ikiwa swichi imewashwa kwa wakati usiofaa au kuweka upya imesisitizwa, kiwango kinarudi kwa "000." Vinginevyo, ikiwa swichi imewashwa kwa usahihi basi kiwango kinasonga hadi kufikia hali ya mwisho, "111" na onyesho la kumalizika hufanyika. FSM inategemea michakato miwili ya kuzuia sync_proc na comb_proc. Sync_proc inatumia saa tuliyoiita PushClk. Saa hii inadhibiti jinsi hali inayofuata inavyokuwa hali ya sasa. Saa hii inapaswa kuwa ya haraka sana; tulichagua kasi ambayo ilikuwa karibu mara mbili kwa kasi kuliko kasi yetu ya haraka zaidi ya LED.
Tulitekeleza nambari hii kwa kutumia FSM kwa viwango; Walakini, baada ya mradi huu tuligundua utumiaji mzuri wa FSM inaweza kuwa kuwa na hali ya kuhesabu, hali ya kuweka upya, au hali ya kukaa. Ikiwa hakuna kitu kinachoshinikizwa, iko katika hali ya kukaa. Ikiwa upya unasisitizwa au mchezaji amechanganyikiwa, iko katika hali ya kuweka upya. Ikiwa imesisitizwa kwa usahihi, iko katika hali ya kuhesabu. Kuna njia zingine nyingi za kutumia FSM katika mchezo huu pia!
Hatua ya 7: Kudhibiti Uzuiaji wa Mchakato wa Kuonyesha na Kiwango
Kiwango hudhibiti kizuizi cha mchakato wa Onyesha. Vigezo katika orodha ya unyeti ni Kiwango, Rudisha, na Clk400. Onyesho la sehemu 7 huanza kwa kuonyesha '1' kwa kiwango cha kwanza. Inahesabu hadi 7 kila wakati mtumiaji anapopita kiwango kuonyesha mtumiaji yuko katika kiwango gani. Mara tu mtumiaji anapopita kiwango cha 7, huonyesha "COOL" kuashiria kuwa mchezaji amepiga mchezo. Onyesho hili la "COOL" linaendesha saa 400 Hz ambayo tuliita Clk400. Ikiwa Rudisha imesisitizwa, onyesho linarudi kwa "1."
Hatua ya 8: Kudhibiti kasi ya LED na Kiwango
Mwishowe, Ngazi inadhibiti kasi ya LED. Kiwango ndio ishara pekee katika orodha ya unyeti. D1 ni ishara inayoingia kwenye mchakato wa Mgawanyiko wa Saa kupata newclk. Kila wakati Kiwango kinabadilishwa, au hali inabadilika, mchakato huzuia "Kasi." Utaratibu huu huamua thamani ya D1. Kuna maadili 8 yaliyofafanuliwa ya D1 ambayo tumechagua kulingana na jinsi tulivyotaka kila ngazi kukimbia haraka. D1 hupungua kila wakati kiwango cha kuongezeka ili newclk iende haraka.
Hatua ya 9: Mkutano wa vifaa
Tuliunganisha ubao wa mkate na Basys3 na moja ya viunganisho vya pmod. Bandari sita za pmod zilitumika kuziba kiunganishi cha kiume hadi kiume, moja kwa ardhi na nyingine tano kwa LED 5. Tuliweka pia kontena kwa kila LED. Vipingaji hivi ni 220Ω na vinazuia taa za LED kutoka kwa mzunguko mfupi na kuchomwa nje. Ingawa kila LED ina upinzani, upinzani hautoshi kuzuia voltage kutoka kwa chanzo.
Hatua ya 10: Furahiya
Mchezo huu ni rahisi sana kucheza. Mchezaji huanza kwenye swichi ya kulia ya 1 ya bodi, V17. Lazima wageuze swichi juu wakati LED ya kati imewashwa. Wao kisha hoja swichi moja kushoto na kufanya kitu kimoja! Ikiwa mchezaji atafika mwisho, wataishia kwenye swichi ya saba, W14. Ikiwa wanapiga mchezo wataona onyesho la kumaliza la kufurahisha!
Kitu cha kuzingatia ni kwamba wakati wa kuunda mchezo huu kasi ni juu yako kabisa! Ikiwa kasi tuliyochagua ni ndogo sana, jisikie huru kuiongeza na kuifanya iwe changamoto zaidi! Pia hakuna idadi iliyowekwa ya viwango. Ikiwa unataka kuifanya iwe na viwango zaidi, kuna marekebisho ambayo lazima yafanywe kwa FSM na vizuizi vya mchakato vilivyoamuliwa na Kiwango, lakini haya ni mabadiliko rahisi sana.
Tulichagua pia kutumia swichi kwenye ubao kama pembejeo ya mtumiaji, lakini hii pia inawezekana na kitufe kwenye ubao wa Basys3; kitufe kitaondoa hitaji la kuweka upya swichi kila wakati mtumiaji anapoanza tena. Hapo awali tulitumia kitufe, hata hivyo hii ilisababisha makosa katika kufafanua kiwango kwa sababu ingeshuka ngazi nyingi ikiwa kingo mbili zinazoinuka za PushClk ziligongwa wakati kifungo kilikuwa kimeshikiliwa chini.
Chini ni video inayoonyesha jinsi ya kucheza, kupitia viwango 4 vya kwanza, na onyesho la mwisho la kumaliza.
Faili kuu ya mradi huu imejumuishwa hapa chini.
Vyanzo
Mwongozo wa Basys3
Uvuvio wa mradi - Arduino Stop It mchezo
Ilipendekeza:
Kujifunga kwa Moja kwa Moja kwa Mchezo Mtendaji wa Mchezo wa Gofu wa 3: Hatua 12 (na Picha)
Kujifunga kwa Moja kwa Moja kwa Mchezo Mtendaji wa Mchezo wa Gofu wa 3: Hivi majuzi nilichapisha Inayoweza kufundishwa juu ya kujenga mchezo wa kufurahisha unaoweza kubeba na unaoweza kuchezwa ndani na nje. Inaitwa "Executive Par 3 Golf Game". Nilitengeneza kadi ya alama ya kuiga kurekodi kila alama ya wachezaji kwa "mashimo" 9. Kama ilivyo
Mchezo wa Kumbukumbu ya Mchezo wa Kutumia BBC MicroBit: Hatua 7
Mchezo wa Kumbukumbu ya Puzzle Kutumia MicroBit ya BBC: Ikiwa haujui ni MicroBit ya BBC ni nini, kimsingi ni kifaa kidogo ambacho unaweza kupanga kuwa na pembejeo na matokeo. Aina kama Arduino, lakini zaidi ya mwili. Kile nilichopenda sana juu ya MicroBit ni kwamba ina mbili zilizojengwa katika pembejeo b
Mchezo wa Mkasi wa Mkamba wa Arduino wa Mkononi Kutumia Mchezo wa 20x4 LCD Onyesha na I2C: Hatua 7
Mchezo wa Mkasi wa Mwamba wa Arduino wa Mkononi Kutumia Uonyesho wa LCD 20x4 na I2C: Halo kila mtu au labda niseme " Hello World! Huu ni mchezo wa Mikasi ya Mwamba wa Arduino wa Mkononi kwa kutumia onyesho la LCD la I2C 20x4. Mimi
Jinsi ya Kusanikisha Udhibiti wa AGS-001 Unaodhibitiwa Katika Mchezo wa Mapema wa Wavulana wa Mchezo (Hakuna LOCA!): Hatua 5 (na Picha)
Jinsi ya kusanikisha Mwangaza wa AGS-001 unaodhibitiwa Kwenye Mchezo wa Mapema wa Wavulana wa Mchezo (Hakuna LOCA!): Unatafuta kuangaza skrini ya zamani ya Game Boy Advance. Huwezi kupata vifaa hivi vipya vya backlit vya IPS popote, na vifaa vya zamani vya AGS-101 vimepungukiwa na bei ya juu. Mbali na hilo, unataka kuwa na uwezo wa kuona skrini ukiwa nje,
Mchezo wa Reaction wa Arduino: Hatua 9
Mchezo wa Reaction Arduino: Nilifanya mchezo huu kama mgawo wa shule. Ilibidi tufanye kitu kiingiliane na arduino. Huu ni mradi wangu wa kwanza wa Arduino ambao nimewahi kufanya, kwa hivyo ilikuwa ngumu sana, lakini haiwezekani