Tartalomjegyzék:
Videó: Két játékos versenyképes időmérő játéka: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Szükséged lesz:
1. Digilent Basys 3, FPGA kártya (vagy bármely más FPGA,)
2. A Vivado vagy más VHDL környezet viszonylag naprakész változata
3. Az említett programot futtató számítógép.
1. lépés: A játék maga
Hogyan működik az MSZK a modulokkal.
Hogyan kell játszani
A kezdéshez nyomja meg a középső gombot. Ez azt eredményezi, hogy a „99”, amely a második játékos egészségi állapotát jelzi, megjelenik a hét szegmenses kijelzőn. Ezután a LED -ek egymás után felvillannak jobbról balra. Ez egy teljesítménysávot képez. Miután megtelt a tápellátás, visszaáll. Az első játékos célja, hogy elfordítsa a kapcsolót, amikor a léc a lehető legmagasabb. Minél több LED világít, annál nagyobb kárt okoz az egyik játékos a második játékosnak. Miután az első játékos elfordította a kapcsolót, az okozott sebzést levonják a második játékos egészségéből. Ezután a második játékos sorára kapcsol. Most a megjelenített szám a játékos egészségét jelzi, és a tápellátás balról jobbra telik. Amint a második játékos megmozdul, a kárt levonják, és ismét visszatér az első játékosra. Ez addig ismétlődik, amíg az egyik játékos eléri a 0 életerőt. A működésről készült videó csatolva van.
2. lépés: FSM
Ez a játék lényegében egy nagy véges állapotú gép, amelynek összetett logikája az FSM állapotának megfelelően történik.
1. állapot: menü Az első állapot a menü képernyő, amely az egyik egyszerűbb állapot. Ez magában foglalja a hét szegmenses kijelzőt, amelyen megjelenik a „PLAY” szó, és a gombot, amely a játék elindítását eredményezi. A gomb, a BTN a következő állapotba vezet minket, ami a játékos köre.
2. állapot: Az első játékos köre
Az első játékos köre aktivál egy jelet, amely miatt a hét szegmenses kijelzőn megjelenik a második játékos egészsége. Egy másik jel bekapcsol, hogy aktiválja a másik általunk létrehozott modulból (Pone.vhd) importált váltásregisztert. Ez a váltásregiszter felgyújtja a LED -ek fényét, mint a növekvő teljesítménymérő más játékokban, majd visszaáll nullára, amikor eléri a meggyújtható LED -ek maximális mennyiségét. Frissül az óra emelkedő szélén, amelyet a barclock.vhd -ből szerzett, amelyet egy kölcsönzött laboratóriumi fájlból módosítanak. Volt, hogy az első játékos üteme jobbról indul, és balra töltődik fel, mert a játékos kapcsolója is a bal oldalon található (az intuitív felhasználói élmény érdekében). A kapcsoló megfordítása után az állapot a játékos egy levonására lép, és az aktív LED -ek menti a jelet.
3. állapot: az egyik játékos levonása Az aktív LED -ek jelzése határozza meg az egészség levonásának mértékét. Ez úgy történik, hogy van egy másik műszakregiszter (dedukt1.vhd), amely ahelyett, hogy növelné a LED -eket, csökkenti azokat. Ez csökken az egyik kölcsönzött és módosított óra div modul emelkedő szélén (downcounterclock.vhd). Amint egy LED kialszik, egy egészségi pont levonásra kerül a második játékos egészségi állapotából. Ha a folyamat során a kettes játékos eléri a 0 életerőt, akkor leállunk, és azonnal a „Game over” állapotba lépünk. Ellenkező esetben, amint a LED -vektor eléri a „0000000000000000” értéket, továbblépünk a második játékos sorára.
4. állapot: A második játékos köre A második játékos köre pontosan olyan, mint az első játékosé, kivéve, hogy a műszakregiszter (Ptwo.bhd) balról jobbra halad, és a kapcsoló a tábla jobb oldalán található. Egy jel aktiválódik, hogy megjelenjen az 1. játékos egészségi állapota. Amint a 2. kapcsoló aktív, ez a második játékos levonási körére lép.
5. szakasz: A második játékos levonása Akárcsak a második játékos köre, a második játékos levonása is hasonlít az első játékos levonásához. A fő különbség az, hogy a LED kikapcsolását szabályozó váltásregiszter az ellenkező irányba megy, amelyet könnyű módosítani, ha a játékos levonása megfelelően működik.
6. szakasz: A játék vége Ha a játékos bármely pontján eléri a nulla életerőt, a játék ebbe az állapotba kapcsol. Semmi divatos kijelző nem jelenik meg. Ha megnyomja a BTN egyet, akkor az állapot 99 -re áll vissza, és az állapot visszatér a menübe, és gyakorlatilag elölről kezdi a játékot.
3. lépés: Modulok
Fekete doboz diagram a játékhoz
Downcounterclock (Bryan Mealy clk_div.vhd modulja alapján):
Ez az óra kezeli a levonók időzítését. A max_count nevű konstans 3 -szor több, mint a barclock max_count állandója. Így a levonók 3x lassabbak lesznek, mint a rúd sebessége.
Barclock - (Bryan Mealy clk_div.vhd modulja alapján):
Ez az óra kezeli a teljesítménymérők időzítését, amelyet gyorsan növeltünk, hogy megnehezítsük a játékot. Ez az időzítés tetszés szerint beállítható, növelve a sebességet azáltal, hogy a max_count konstansot nagyobb számmal növeljük, vagy csökkentjük a max_count kisebb számmal. Sseg_dec - (Írta: Bryan Mealy): Ez a modul egy 8 bites számot vesz bemenetként, amelyet dekódol, átalakítja a számot tizedes megfelelőjévé, majd kimenetet ad a hét szegmenses kijelzőnek. Ahhoz, hogy ez a fájl működjön, meg kell győződnie arról, hogy korlátai megfelelnek a miénknek.
Játékos:
Ez egy műszakregiszter, amely balra tolja a biteket, és hozzáad egy forró bitet, hogy úgy tűnjön, mintha a teljesítménymérő nőne. Amikor az összes bit forró, minden bit visszaáll 0 -ra, és a ciklus elölről kezdődik.
Ptwo:
Ez a P1 modul fordított változata.
Deduktor 1:
Ez egy műszakregiszter és egy kivonó kombinációja. A műszakregiszter a P1 műszakregiszterével ellentétes irányba megy, levonást jelezve. Ez is kivon 1 -et a 2. játékos egészségi állapotából minden órajel ciklusban, tehát e két funkció kombinációjával úgy fog kinézni, hogy az ellenfél egészsége 1 -gyel csökken minden lecsökkenő állapotjelző minden ledje után.
Deductor2: Ez a Deductor1 modul fordított változata.
PlayDecoder (kölcsönözve és röviden módosítva az ekchen35649 -ből, 133 utasításból): Ez a menüállapotban a „PLAY” szó megjelenítésére szolgál a hét szegmenses dekódolón.
4. lépés: Teszt
Ezt a játékot eredetileg a Kirby egyik minijáték ihlette. Ez egy egyszerű kétjátékos játék, amelyet Basys 3 táblán vagy bármely FPGA-n lehet játszani.
1. lépés: Szükséges anyagok
Szüksége lesz rá: Digilent Basys 3, FPGA Board (vagy bármely más) A Vivado viszonylag naprakész változata, vagy más vhdl környezet. Számítógép, amely képes futtatni az említett programot A agy
2. lépés: A játék maga
Hogyan kell játszani
A kezdéshez nyomja meg a középső gombot. Ez azt eredményezi, hogy a „99”, amely a második játékos egészségi állapotát jelzi, megjelenik a hét szegmenses kijelzőn. Ezután a LED -ek egymás után felvillannak jobbról balra. Ez egy teljesítménysávot képez. Miután megtelt a tápellátás, visszaáll. Az első játékos célja, hogy elfordítsa a kapcsolót, amikor a léc a lehető legmagasabb. Minél több LED világít, annál nagyobb kárt okoz az egyik játékos a második játékosnak. Miután az első játékos elfordította a kapcsolót, az okozott sebzést levonják a második játékos egészségéből. Ezután a második játékos sorára kapcsol. Most a megjelenített szám a játékos egészségét jelzi, és a tápellátás balról jobbra telik. Amint a második játékos megmozdul, a kárt levonják, és ismét visszatér az első játékosra. Ez addig ismétlődik, amíg az egyik játékos eléri a 0 életerőt. A működésről készült videó csatolva van.
A játék lejátszásához töltse fel egy alaplapra, és nyomja meg a középső gombot. Próbálja meg fordítani a kapcsolót a lehető legtöbb aktív LED -el, majd várjon, és nézze, ahogy a tábla levonja ezeket a pontokat az ellenfél egészségi állapotából. Ezután adja át barátjának, és
3. lépés: FSM
Ez a játék lényegében egy nagy véges állapotú gép, amelynek összetett logikája az FSM állapotának megfelelően történik.
(Állami diagram)
1. állapot: menü
Az első állapot a menü képernyő, amely az egyik egyszerűbb állapot. Ez magában foglalja a hét szegmenses kijelzőt, amelyen megjelenik a „PLAY” szó, és a gombot, amely a játék elindítását eredményezi. A gomb, a BTN a következő állapotba vezet minket, ami a játékos köre.
2. állapot: Az első játékos köre
Az első játékos köre aktivál egy jelet, amely miatt a hét szegmenses kijelzőn megjelenik a második játékos egészsége. Egy másik jel bekapcsol, hogy aktiválja a másik általunk létrehozott modulból (Pone.vhd) importált váltásregisztert. Ez a váltásregiszter felgyújtja a LED -ek fényét, mint a növekvő teljesítménymérő más játékokban, majd visszaáll nullára, amikor eléri a meggyújtható LED -ek maximális mennyiségét. Frissül a barclock.vhd -ből beszerzett óra emelkedő szélén, amelyet egy kölcsönkért laboratóriumi fájlból módosítanak. Volt, hogy az első játékos üteme jobbról indul, és balra töltődik fel, mert a játékos kapcsolója is a bal oldalon található (az intuitív felhasználói élmény érdekében). A kapcsoló megfordítása után az állapot a játékos egy levonására lép, és az aktív LED -ek menti a jelet.
3. állapot: Az egyik játékos levonása
Az aktív LED -ek jelzése határozza meg a levonandó egészség mennyiségét. Ez úgy történik, hogy van egy másik műszakregiszter (dedukt1.vhd), amely ahelyett, hogy növelné a LED -eket, csökkenti azokat. Ez csökken az egyik kölcsönzött és módosított óra div modul emelkedő szélén (downcounterclock.vhd). Amint egy LED kialszik, egy egészségi pont levonásra kerül a második játékos egészségi állapotából. Ha a folyamat során a kettes játékos eléri a 0 életerőt, akkor leállunk, és azonnal a „Game over” állapotba lépünk. Ellenkező esetben, amint a LED -vektor eléri a „0000000000000000” értéket, továbblépünk a második játékos sorára.
4. állapot: A második játékos köre
A második játékos köre pontosan olyan, mint az első játékosé, kivéve, hogy a műszakregiszter (Ptwo.bhd) balról jobbra halad, és a kapcsoló a tábla jobb oldalán található. Egy jel aktiválódik, hogy megjelenjen az 1. játékos egészségi állapota. Amint a 2. kapcsoló aktív, ez a második játékos levonási körére lép.
5. szakasz: A második játékos levonása
Akárcsak a második játékos köre, a második játékos levonása is hasonlóan jár az első játékos levonásához. A fő különbség az, hogy a LED kikapcsolását szabályozó váltásregiszter az ellenkező irányba megy, amelyet könnyű módosítani, miután a játékos levonása megfelelően működik.
6. szakasz: A játék vége Ha a játékos bármely pontján eléri a nulla életerőt, akkor a játék ebbe az állapotba kapcsol. Semmi divatos kijelző nem jelenik meg. Ha megnyomja a BTN egyet, akkor az állapot 99 -re áll vissza, és az állapot visszatér a menübe, és gyakorlatilag újrakezdi a játékot.
Fekete doboz
4. lépés: Modulok
Downcounterclock (Bryan Mealy clk_div.vhd modulja alapján):
Ez az óra kezeli a levonók időzítését. A max_count nevű konstans háromszor több, mint a barclock max_count állandója. Így a levonók 3x lassabbak lesznek, mint a rúd sebessége.
Barclock - (Bryan Mealy clk_div.vhd modulja alapján): Ez az óra kezeli a teljesítménymérők időzítését, amelyet gyorsan növeltünk, hogy megnehezítsük a játékot. Ez az időzítés tetszés szerint beállítható, növelve a sebességet azáltal, hogy a max_count konstansot nagyobb számmal növeljük, vagy csökkentjük a max_count kisebb számmal. Sseg_dec - (Írta: Bryan Mealy): Ez a modul egy 8 bites számot vesz bemenetként, amelyet dekódol, átalakítja a számot tizedes megfelelőjévé, majd kimenetet ad a hét szegmenses kijelzőnek. Ahhoz, hogy ez a fájl működjön, meg kell győződnie arról, hogy korlátai megfelelnek a miénknek.
Pone: Ez egy műszakregiszter, amely balra tolja a biteket, és hozzáad egy forró bitet, hogy úgy tűnjön, mintha a teljesítménymérő nőne. Amikor az összes bit forró, minden bit visszaáll 0 -ra, és a ciklus elölről kezdődik.
Ptwo: Ez a P1 modul fordított változata.
Deductor1: Ez egy műszakregiszter és egy kivonó kombinációja. A műszakregiszter a P1 műszakregiszterével ellentétes irányba megy, levonást jelezve. Ez is kivon 1 -et a 2. játékos egészségi állapotából minden órajel ciklusban, tehát e két funkció kombinációjával úgy fog kinézni, hogy az ellenfél egészsége 1 -gyel csökken minden lecsökkenő állapotjelző minden ledje után.
Deductor2: Ez a Deductor1 modul fordított változata.
PlayDecoder (kölcsönözve és kissé módosítva az ekchen35649 -ből, a 133 utasításból):
Ez a menüállapotban a „PLAY” szó megjelenítésére szolgál a hét szegmenses dekódolón.
Teendők: képek, videó
Ajánlott:
Két játékos egyetlen LED szalagjáték pontozótáblával: 10 lépés
Két játékos egyetlen LED szalagjáték pontozótáblával: Először is imádkozzunk az istenhez a világ minden népeért, Isten csak ebben az időben tud segíteni és békét adni nekünk. Mindannyian zárva vagyunk, és nincs hova mennünk. Nincs több tennivalóm, ezért kezdje el a python online tanulmányozását, és nem tudok gondolkodni
Versenyképes hangjelző rendszer: 5 lépés
Versenyképes zümmögőrendszer: Az ebben a projektben tervezett versenyképes zümmögőrendszer hasonlóan működik, mint a Regionális és Országos Tudományos Tálversenyeken használt zümmerező rendszerek. Ezt a projektet az inspirálta, hogy részt vettem középiskolám tudományos tálcsapatában három
CÉLGYAKORLAT: A BÉKA JÁTÉKA: 6 lépés (képekkel)
CÉLGYAKORLAT: A BÉKA JÁTÉKA: Szia! Ma egy tipikus spanyol játékot fogunk játszani: A béka játéka egy céljáték, ahol érméket kell dobni egy dobozba, és át kell húzni a borítón lévő lyukakon. Minden győztes érme pontokat ad. Különleges hol
Reakciós időmérő (vizuális, audio és érintéses): 9 lépés (képekkel)
Reakcióidő -mérő (vizuális, hangos és érintéses): A reakcióidő az az idő, amelyre az embernek szüksége van ahhoz, hogy azonosítsa az ingert és reagáljon. Például egy sportoló hangreakciós ideje a fegyverlövés (ami elindítja a versenyt) és a verseny kezdete között eltelt idő. Reactio
Microdot - Csuklóóra LED minta időmérő: 7 lépés (képekkel)
Microdot - Wrist Watch LED Pattern Timepiece: Újabb RGB Sunset Productions produkció! Ez a projekt egy áramköri kártya a minidot órám karóra méretű verziójának elkészítéséhez: https: //www.instructables.com/id/EEGLXQCSKIEP2876EE/ néhány mással hordozható eszközökre jobban alkalmazható funkciók. A