Orodha ya maudhui:

Mchezo wa Reaction wa FPGA: Hatua 10
Mchezo wa Reaction wa FPGA: Hatua 10

Video: Mchezo wa Reaction wa FPGA: Hatua 10

Video: Mchezo wa Reaction wa FPGA: Hatua 10
Video: Pole vaulting can have the craziest outcomes 🤯 2024, Julai
Anonim
Mchezo wa Reaction wa FPGA
Mchezo wa Reaction wa FPGA

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
Vifaa
Vifaa
Vifaa
Vifaa
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

Mchoro wa kiwango cha juu Ubuni wa Sanduku Nyeusi
Mchoro wa kiwango cha juu Ubuni wa Sanduku Nyeusi
Mchoro wa kiwango cha juu Ubuni wa Sanduku Nyeusi
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

Kugawa CLK
Kugawa CLK
Kugawa CLK
Kugawa CLK
Kugawa CLK
Kugawa CLK

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 Block
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

Mashine ya Jimbo la Mwisho
Mashine ya Jimbo la Mwisho

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

Kudhibiti Uzuiaji wa Mchakato wa Kuonyesha na Kiwango
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

Kudhibiti kasi ya LED na Kiwango
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

Mkutano wa vifaa
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: