Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-23 15:10
Do t'ju duhet:
1. Digilent Basys 3, FPGA Board (ose ndonjë FPGA tjetër,)
2. Një version relativisht i azhurnuar i Vivado, ose ndonjë mjedisi tjetër VHDL
3. Një kompjuter që mund të ekzekutojë programin e përmendur.
Hapi 1: Vetë Loja
Si bashkëvepron FSM me modulet.
Si të luani
Për të filluar, shtypni butonin e mesëm. Kjo do të bëjë që "99", që përfaqëson shëndetin e lojtarit dy, të shfaqet në ekranin me shtatë segmente. Pastaj, LED -të do të ndizen në mënyrë radhazi nga e djathta në të majtë. Kjo formon një shirit energjie. Pasi shiriti i energjisë të jetë mbushur, ai rivendoset. Objekti i lojtarit një është që ta ndërrojë çelësin kur shiriti është aq i lartë sa të jetë e mundur. Sa më shumë LED të ndizen, aq më shumë dëmtim i bën lojtari lojtarit dy. Pasi lojtari një të ndryshojë ndërrimin e tij, dëmi i shkaktuar zbritet nga shëndeti i lojtarit dy. Pastaj, kalon në radhën e lojtarit dy. Tani, numri i shfaqur përfaqëson shëndetin e lojtarit dhe shiriti i energjisë mbushet nga e majta në të djathtë. Pasi lojtari dy të bëjë lëvizjen e tyre, dëmi zbritet dhe i kthehet sërish radhes lojtarit. Kjo përsëritet derisa një lojtar arrin shëndetin 0. Videoja e këtij funksionimi është bashkangjitur.
Hapi 2: FSM
Kjo lojë është në thelb një makinë e madhe me gjendje të fundme, në të cilën ndodh një logjikë komplekse bazuar në gjendjen në të cilën ndodhet FSM.
Gjendja 1: Menu Gjendja e parë është ekrani i menysë, i cili është një nga gjendjet më të thjeshta. Ai përfshin ekranin me shtatë segmente që shfaq fjalën "PLAY" dhe butonin që shkakton fillimin e lojës. Butoni, BTN, na çon në gjendjen tjetër, e cila është radha e lojtarit.
Gjendja 2: Rradha e Lojtarit Një
Kthesa e lojtarit një aktivizon një sinjal që bën që ekrani me shtatë segment të shfaqë shëndetin e Lojtarit dy. Një sinjal tjetër ndizet për të aktivizuar një regjistër ndërrimi të importuar nga një modul tjetër që kemi krijuar (Pone.vhd). Ky regjistër zhvendosjeje ndriçon LED -in si një matës i fuqisë në rritje në lojërat e tjera, dhe pastaj do të rivendoset në 0 kur të arrijë sasinë maksimale të LED -ve që mund të ndizen. Përditësohet në skajin në rritje të orës të marrë nga barclock.vhd, i cili modifikohet nga një skedar laboratori i huazuar. Ne kishim që shiriti i lojtarit të fillonte nga e djathta dhe të mbushej deri në të majtë, sepse çelësi i lojtarit është gjithashtu në të majtë (për përvojën intuitive të përdoruesit). Pasi kaloni të kthehet, gjendja kalon te lojtari një zbritje dhe sasia e LED -ve aktive ruhet në një sinjal.
Gjendja 3: Zbritja e Lojtarit Një Sinjali me sasinë e LED -ve aktive përcakton sasinë e shëndetit që zbritet. Kjo bëhet duke pasur një regjistër tjetër ndërrimi (deductor1.vhd) që në vend që të rrisë LED -të, i zvogëlon ato. Kjo zvogëlohet në skajin në rritje të njërit prej moduleve të orës div që huazuam dhe modifikuam (downcounterclock.vhd). Pikërisht kur një LED është fikur, një pikë shëndetësore i hiqet shëndetit total të lojtarit dy. Nëse gjatë këtij procesi lojtari dy arrin shëndetin 0, ne ndalojmë dhe menjëherë kalojmë në gjendjen "Game over". Përndryshe, sapo vektori LED të arrijë "000000000000000000", kalojmë te radha e lojtarit dy.
Gjendja 4: Kthesa e Lojtarit Dy Kthesa e Lojtarit dy është saktësisht si radha e lojtarit një, përveç regjistrit të ndërrimit për të (Ptwo.bhd) shkon nga e majta në të djathtë, dhe çelësi është në anën e djathtë të tabelës. Një sinjal aktivizohet për të pasur ekranin e shëndetit të Player 1. Pasi kaloni 2 është aktiv, kjo kalon në kthesën e zbritjes së Lojtarit Dy.
Faza 5: Zbritja e Lojtarit Dy Ashtu si radha e lojtarit dy, zbritja e lojtarit dy vepron shumë si lojtari një zbritje. Dallimi kryesor është se regjistri i ndërrimit që kontrollon fikjen e LED -it shkon në drejtim të kundërt, i cili është një modifikim i lehtë për tu bërë pasi të keni zbritjen e lojtarit që punon siç duhet.
Faza 6: Loja mbaron Nëse në çdo moment secili lojtar arrin shëndetin zero, loja kalon në këtë gjendje. Asgjë shfaqje zbukuruese. Nëse shtypet një BTN, atëherë gjendja rivendoset në 99 dhe gjendja kthehet në meny, duke filluar në mënyrë efektive lojën nga e para.
Hapi 3: Modulet
Diagrami i Kutisë së Zezë për lojë
Downcounterclock (bazuar në modulin clk_div.vhd nga Bryan Mealy):
Kjo është ora që trajton kohën e zbritësve. Konstanta e emërtuar max_count është 3x më shumë se konstanta max_count e barclock. Kjo do t'i bëjë zbritësit 3x më të ngadaltë se shpejtësia e shiritit.
Barclock - (bazuar në modulin clk_div.vhd nga Bryan Mealy):
Kjo orë merret me kohën e matësve të fuqisë, të cilën e rritëm shpejt për t'i shtuar vështirësi lojës. Ky moment mund të rregullohet sipas dëshirës tuaj, duke rritur shpejtësinë duke e bërë numrin maksimal konstant një numër më të madh, ose duke e zvogëluar atë duke e bërë numrin maksimal një numër më të vogël. Sseg_dec - (Shkruar nga Bryan Mealy): Ky modul merr një numër 8 bitësh si hyrje, të cilin e deshifron, duke e shndërruar numrin në ekuivalentin e tij dhjetor dhe më pas del në ekranin e shtatë segmenteve. Që ky skedar të funksionojë, duhet të siguroheni që kufizimet tuaja përputhen me tonat.
Pone:
Ky është një regjistër ndërrimi që zhvendos copat në të majtë, duke shtuar një bit të nxehtë për ta bërë atë të duket se matësi i fuqisë po rritet. Kur të gjitha bitët janë të nxehtë, të gjitha bitet rivendosen në '0' dhe cikli fillon nga e para.
Ptwo:
Ky është një version i përmbysur i modulit P1.
Deductor1:
Ky është një kombinim i regjistrit të ndërrimit dhe një zbritës. Regjistri i ndërrimit shkon në drejtim të kundërt të regjistrit të ndërrimit të P1, duke treguar një zbritje. Kjo gjithashtu heq 1 nga shëndeti i Lojtarit 2 për çdo cikël të orës, kështu që me kombinimin e këtyre dy funksioneve, do të duket se shëndeti i kundërshtarit po zvogëlohet me 1 për çdo led të shiritit të shëndetit që bie.
Deductor2: Ky është një version i përmbysur i modulit Deductor1.
PlayDecoder (i huazuar dhe modifikuar në mënyrë të ngadaltë nga ekchen35649 i tij 133 i udhëzueshëm): Kjo përdoret në gjendjen e menysë për të shfaqur fjalën "PLAY" në dekoduesin e shtatë segmenteve.
Hapi 4: Testoni
Kjo lojë u frymëzua fillimisht nga një nga minigames nga Kirby. Shtë një lojë e thjeshtë me dy lojtarë që mund të luhet në një Bord Basys 3, ose ndonjë FPGA.
Hapi 1: Materialet e kërkuara
Do t'ju duhet: Digilent Basys 3, FPGA Board (ose ndonjë tjetër) Një version relativisht i azhurnuar i Vivado, ose ndonjë mjedis tjetër vhdl Një kompjuter që mund të ekzekutojë programin e përmendur A tru
Hapi 2: Vetë Loja
Si të luani
Për të filluar, shtypni butonin e mesëm. Kjo do të bëjë që "99", që përfaqëson shëndetin e lojtarit dy, të shfaqet në ekranin me shtatë segmente. Pastaj, LED -të do të ndizen në mënyrë radhazi nga e djathta në të majtë. Kjo formon një shirit energjie. Pasi të jetë mbushur shiriti i energjisë, ai rivendoset. Objekti i lojtarit një është që ta ndërrojë çelësin kur shiriti është aq i lartë sa të jetë e mundur. Sa më shumë LED të ndizen, aq më shumë dëmtim i bën lojtari lojtarit dy. Pasi lojtari një të ndryshojë ndërrimin e tij, dëmi i shkaktuar zbritet nga shëndeti i lojtarit dy. Pastaj, kalon në radhën e lojtarit dy. Tani, numri i shfaqur përfaqëson shëndetin e lojtarit dhe shiriti i energjisë mbushet nga e majta në të djathtë. Pasi lojtari dy të bëjë lëvizjen e tyre, dëmi zbritet dhe i kthehet sërish radhes lojtarit. Kjo përsëritet derisa një lojtar të arrijë shëndetin 0. Videoja e këtij funksionimi është bashkangjitur.
Për të luajtur lojën, ngarkojeni atë në një tabelë bazë dhe shtypni butonin e mesëm. Përpiquni ta rrokullisni çelësin me sa më shumë LED të jetë e mundur, dhe pastaj prisni dhe shikoni sesi bordi i zbret ato pikë nga shëndeti i kundërshtarit tuaj. Pastaj, ia kaloni mikut tuaj, dhe
Hapi 3: FSM
Kjo lojë është në thelb një makinë e madhe me gjendje të fundme, në të cilën ndodh një logjikë komplekse bazuar në gjendjen në të cilën ndodhet FSM.
(Diagrami i Shtetit)
Gjendja 1: Menyja
Gjendja e parë është ekrani i menysë, i cili është një nga gjendjet më të thjeshta. Ai përfshin ekranin me shtatë segmente që shfaq fjalën "PLAY" dhe butonin që shkakton fillimin e lojës. Butoni, BTN, na çon në gjendjen tjetër, e cila është radha e lojtarit.
Gjendja 2: Rradha e Lojtarit Një
Kthesa e lojtarit një aktivizon një sinjal që bën që ekrani me shtatë segment të shfaqë shëndetin e Lojtarit dy. Një sinjal tjetër ndizet për të aktivizuar një regjistër ndërrimi të importuar nga një modul tjetër që kemi krijuar (Pone.vhd). Ky regjistër zhvendosjeje ndriçon LED -in si një matës i fuqisë në rritje në lojërat e tjera, dhe pastaj do të rivendoset në 0 kur të arrijë sasinë maksimale të LED -ve që mund të ndizen. Përditësohet në skajin në rritje të orës të marrë nga barclock.vhd, i cili modifikohet nga një skedar laboratori i huazuar. Ne kishim që shiriti i lojtarit të fillonte nga e djathta dhe të mbushej deri në të majtë, sepse çelësi i lojtarit është gjithashtu në të majtë (për përvojën intuitive të përdoruesit). Pasi kaloni të kthehet, gjendja kalon te lojtari një zbritje dhe sasia e LED -ve aktive ruhet në një sinjal.
Gjendja 3: Zbritja e Lojtarit Një
Sinjali me sasinë e LED -së aktive përcakton sasinë e shëndetit që zbritet. Kjo bëhet duke pasur një regjistër tjetër ndërrimi (deductor1.vhd) që në vend që të rrisë LED -të, i zvogëlon ato. Kjo zvogëlohet në skajin në rritje të njërit prej moduleve të orës div që huazuam dhe modifikuam (downcounterclock.vhd). Pikërisht kur një LED është fikur, një pikë shëndetësore i hiqet shëndetit total të lojtarit dy. Nëse gjatë këtij procesi lojtari dy arrin shëndetin 0, ne ndalojmë dhe menjëherë kalojmë në gjendjen "Game over". Përndryshe, sapo vektori LED të arrijë "000000000000000000", kalojmë te radha e lojtarit dy.
Gjendja 4: Rradha e lojtarit Dy
Kthesa e lojtarit dy është saktësisht si radha e lojtarit një, përveç regjistrit të ndërrimit për të (Ptwo.bhd) shkon nga e majta në të djathtë, dhe çelësi është në anën e djathtë të tabelës. Një sinjal aktivizohet për të pasur ekranin e shëndetit të Player 1. Pasi kaloni 2 është aktiv, kjo kalon në kthesën e zbritjes së Lojtarit Dy.
Faza 5: Zbritja e Lojtarit Dy
Ashtu si radha e lojtarit dy, lojtari dy zbrit vepron shumë si lojtari një zbritje. Dallimi kryesor është se regjistri i ndërrimit që kontrollon fikjen e LED -it shkon në drejtim të kundërt, i cili është një modifikim i lehtë për t'u bërë pasi të keni zbritjen e lojtarit që punon siç duhet.
Faza 6: Loja përfundon Nëse në çdo moment secili lojtar arrin shëndetin zero, loja kalon në këtë gjendje. Asgjë shfaqje zbukuruese. Nëse shtypet një BTN, atëherë gjendja rivendoset në 99 dhe gjendja kthehet në meny, duke filluar në mënyrë efektive lojën nga e para.
Kuti e zeze
Hapi 4: Modulet
Downcounterclock (bazuar në modulin clk_div.vhd nga Bryan Mealy):
Kjo është ora që trajton kohën e zbritësve. Konstanta e emërtuar max_count është 3x më shumë se konstanta max_count e barclock. Kjo do t'i bëjë zbritësit 3x më të ngadaltë se shpejtësia e shiritit.
Barclock - (bazuar në modulin clk_div.vhd nga Bryan Mealy): Kjo orë trajton kohën e matësve të fuqisë, të cilat ne i rritëm shpejt për t'i shtuar vështirësi lojës. Ky moment mund të rregullohet sipas dëshirës tuaj, duke rritur shpejtësinë duke e bërë numrin maksimal konstant një numër më të madh, ose duke e zvogëluar atë duke e bërë numrin maksimal një numër më të vogël. Sseg_dec - (Shkruar nga Bryan Mealy): Ky modul merr një numër 8 bitësh si hyrje, të cilin e deshifron, duke e shndërruar numrin në ekuivalentin e tij dhjetor dhe më pas del në ekranin e shtatë segmenteve. Që kjo skedar të funksionojë, duhet të siguroheni që kufizimet tuaja përputhen me tonat.
Pone: Ky është një regjistër ndërrimi që zhvendos copat në të majtë, duke shtuar një grimcë të nxehtë për ta bërë atë të duket se matësi i fuqisë po rritet. Kur të gjitha bitët janë të nxehtë, të gjitha bitet rivendosen në '0' dhe cikli fillon nga e para.
Ptwo: Ky është një version i përmbysur i modulit P1.
Deductor1: Ky është një kombinim i një regjistri të ndërrimit dhe një zbritës. Regjistri i ndërrimit shkon në drejtim të kundërt të regjistrit të ndërrimit të P1, duke treguar një zbritje. Kjo gjithashtu heq 1 nga shëndeti i Lojtarit 2 për çdo cikël të orës, kështu që me kombinimin e këtyre dy funksioneve, do të duket se shëndeti i kundërshtarit po zvogëlohet me 1 për çdo led të shiritit të shëndetit që bie.
Deductor2: Ky është një version i përmbysur i modulit Deductor1.
PlayDecoder (huazuar dhe modifikuar pak nga ekchen35649 e tij 133 i udhëzueshëm):
Kjo përdoret në gjendjen e menysë për të shfaqur fjalën "PLAY" në dekoduesin me shtatë segmente.
Për të bërë: fotografi, video
Recommended:
Koha e shfaqjes Arduino në ekranin LED TM1637 duke përdorur RTC DS1307: 8 hapa
Koha e shfaqjes Arduino në ekranin LED TM1637 duke përdorur RTC DS1307: Në këtë tutorial do të mësojmë se si të shfaqim kohën duke përdorur modulin RTC DS1307 dhe ekranin LED TM1637 dhe Visuino. Shikoni videon
8051 Ndërfaqja me DS1307 RTC dhe Afishimi i Vojës Koha në LCD: 5 hapa
8051 Ndërlidhja me DS1307 RTC dhe Afishimi i Timestamp në LCD: Në këtë tutorial ne ju kemi shpjeguar se si mund të ndërlidhim mikrokontrolluesin 8051 me ds1307 RTC. Këtu po shfaqim kohën RTC në LCD duke përdorur simulimin proteus
Kontrolluesi i lojërave të bazuara në Arduino - Kontrolluesi i lojërave Arduino PS2 - Duke luajtur Tekken Me DIY Arduino Gamepad: 7 hapa
Kontrolluesi i lojërave të bazuara në Arduino | Kontrolluesi i lojërave Arduino PS2 | Luajtja e Tekken Me DIY Arduino Gamepad: Përshëndetje djema, të luani lojëra është gjithmonë argëtuese, por të luani me Kontrolluesin tuaj të personalizuar të lojës DIY është më argëtuese. Pra, ne do të bëjmë një Kontrollues të lojës duke përdorur arduino pro micro në këtë udhëzues
Dashuria është për lojtarët, Projekti Arduino i krijuar për beqarë: 5 hapa
Dashuria është për lojtarë, Projekti Arduino i krijuar për beqarë: Ky udhëzues ka të bëjë me projektin tim Arduino të quajtur " Dashuria është për lojtarët " i cili filloi si një mjet për qeshje dhe argëtim. Nuk është e përsosur ose asgjë, por funksionon
BOLSITA PARA MP3 Y PARLANTES / Çantë e vogël për lojtarët MP3 dhe folësit: 5 hapa
BOLSITA PARA MP3 Y PARLANTES / Çantë e vogël për lojtarët dhe folësit e MP3 -së: Për shembull, ju mund të përdorni udhëzime, por kjo do të thotë që ju do të lexoni një këngë të tillë paraprake për të dëgjuar një këngë. Ju po vlerësoni përvojën tuaj në video për vlogun tim: www.mercenario.org. Lapsa