Obsah:
- Krok 1: Úvod
- Krok 2: Materiály
- Krok 3: Návrh nejvyšší úrovně diagramu černé skříňky
- Krok 4: CLKDivide
- Krok 5: Posuňte procesní blok
- Krok 6: Konečný stav stroje
- Krok 7: Ovládání bloku procesu zobrazení pomocí úrovně
- Krok 8: Ovládání rychlosti LED pomocí úrovně
- Krok 9: Montáž hardwaru
- Krok 10: Bavte se
Video: Reakční hra FPGA: 10 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Letní Rutherford a Regita Soetandar
Krok 1: Úvod
Pro náš konečný projekt pro CPE 133 jsme navrhli reakční hru ve VHDL pro desku Basys3. Tuto hru lze nejblíže přirovnat k arkádové hře „Stacker“, kde musí hráč ve správný čas shodit bloky. Deska Basys3 je připojena k breadboardu, který má střídavé LED diody. Tato LED světla se budou střídat na konkrétní frekvenci, v závislosti na úrovni. Tato hra využívá dělič hodin a 4místný 7segmentový displej a také automat s konečným stavem. Když hráč aktivuje správný spínač, když se rozsvítí prostřední LED, hráč postoupí na další úroveň hry a zvýší frekvenci střídání LED diod. Díky tomu je každá následující úroveň těžší než předchozí úroveň. Když hráč úspěšně porazí úroveň 7, nejvyšší úroveň, na segmentovém displeji se zobrazí zpráva a všechny LED diody současně blikají a zhasínají.
Krok 2: Materiály
Materiály, které budete potřebovat, jsou:
- Deska Digilent Basys3 s kabelem micro USB
- Prkénko
- 5 LED diod
- 5 odporů (použili jsme 220 ohmů)
- 11 propojovacích vodičů
- Počítač s Vivado
Krok 3: Návrh nejvyšší úrovně diagramu černé skříňky
Jak vidíte, náš blokový diagram nejvyšší úrovně začíná získáním požadovaných hodin z našeho submodulu ClkDivide. Tyto hodiny jsou vstupy do různých procesních bloků. V zásadě musí hra rozpoznat, že když uživatel správně zapne vypínač, LED diody se musí začít střídat rychleji a displej musí jít o úroveň výš. Blokový diagram může vypadat trochu šíleně, ale je to proto, že v určitém procesu je vytvořeno mnoho signálů a pak tento signál definuje další signál v jiném procesním bloku.
Nakonec jediné vstupy, které hra vyžaduje, jsou vstupní hodiny na desce Basys3, které běží na 100 Mhz, sedm přepínačů na desce Basys3 a tlačítko reset. Výstupem je anoda pro sedmisegmentový displej, sedm segmentů pro displej a diody LED.
Krok 4: CLKDivide
Tento submodul děliče hodin vytvořil pomalejší hodiny v závislosti na hodnotě, kterou jsme do něj namapovali v našem hlavním souboru. Tento submodul jsme použili k určení Clk400, PushClk a newlck. Tento submodul má jako vstupy hodiny a 32bitový dělič. Na výstupu jsou zpomalené hodiny. Pro dělič a zpomalené hodiny existuje procesní blok. V tomto procesu je dočasná proměnná, kterou jsme nazvali count, která počítá jednu vždy, když je zasažena stoupající hrana zadaných hodin. Jakmile dosáhne čísla dělitele, zpomalené hodiny se přepnou a počítání se vynuluje.
Krok 5: Posuňte procesní blok
Procesní blok Shift ovládá střídavý pohyb a rychlost LED diod. V seznamu citlivosti jsou signály newclk a Stop. Zastavení způsobí krátké zpoždění, když uživatel projde úrovní. Pokud stop není vysoký, LED diody se střídají jako obvykle na základě rychlosti newclk. Tento střídavý vzorec je řízen dvěma proměnnými: Track a count. Počet určuje, která kontrolka LED by měla svítit, zatímco Track určuje, zda má počet odpočítávat nahoru nebo dolů. Existuje další signál, Final, který platí pouze tehdy, když je úroveň „111“, což znamená, že hráč hru porazil. Finále se střídá mezi 0 a 1 na každé hraně hodin, aby se diody LED nepřetržitě zapínaly a vypínaly. Toto je jen vizuální prvek pro konečné zobrazení.
Tento proces směny je ideálním místem pro zahájení tohoto projektu. Pokud dokážete své LED diody střídat správně a důsledně, pak odtud stačí přidat chování při zvyšování úrovně!
Krok 6: Konečný stav stroje
Vytvořili jsme stroj s konečným stavem, který bude diktovat chování při stisknutí přepínače vstupu nebo tlačítka reset. Každý stav je „úroveň“a pokud je spínač zapnut ve špatný čas nebo je stisknut reset, úroveň se vrátí zpět na „000“. V opačném případě, pokud je spínač správně zapnutý, úroveň se pohybuje nahoru, dokud nedosáhne konečného stavu, „111“a zobrazí se koncové zobrazení. FSM je založen na dvou procesních blocích sync_proc a comb_proc. Sync_proc používá hodiny, které jsme nazvali PushClk. Tyto hodiny řídí, jak rychle se z dalšího stavu stane současný stav. Tyto hodiny by měly být docela rychlé; vybrali jsme rychlost, která byla asi dvakrát rychlejší než naše nejrychlejší rychlost LED.
Tento kód jsme implementovali pomocí FSM pro úrovně; po tomto projektu jsme si však uvědomili, že efektivnější využití FSM by mohlo mít stav počítání, stav resetování nebo stav setrvání. Pokud se nic netlačí, je to v pohotovostním stavu. Pokud je stisknuto resetování nebo je hráč zmatený, je ve stavu resetování. Pokud je správně stisknuto, je ve stavu odpočítávání. Existuje mnoho dalších způsobů, jak použít FSM i v této hře!
Krok 7: Ovládání bloku procesu zobrazení pomocí úrovně
Úroveň ovládá blok procesu zobrazení. Proměnné v seznamu citlivosti jsou Level, Reset a Clk400. 7segmentový displej začíná zobrazením „1“pro první úroveň. Počítá se do 7 pokaždé, když uživatel projde úrovní, aby uživateli ukázal, na jaké úrovni se nachází. Jakmile uživatel projde úrovní 7, zobrazí se „COOL“, což znamená, že hráč hru porazil. Tento displej „COOL“běží na frekvenci 400 Hz, kterou jsme nazvali Clk400. Pokud stisknete Reset, displej se vrátí na „1.“
Krok 8: Ovládání rychlosti LED pomocí úrovně
Nakonec úroveň řídí rychlost LED diod. Úroveň je jediným signálem v seznamu citlivosti. D1 je signál, který vstupuje do procesu děliče hodin, aby získal newclk. Pokaždé, když se změní úroveň nebo stav, procesní blok „Rychlost“. Tento proces určuje hodnotu D1. Existuje 8 definovaných hodnot D1, které jsme vybrali na základě toho, jak rychle jsme chtěli, aby každá úroveň běžela. D1 se zmenšuje při každém zvýšení úrovně, takže newclk běží rychleji.
Krok 9: Montáž hardwaru
Spojili jsme prkénko s Basys3 jedním z konektorů pmod. Šest portů pmod bylo použito k připojení konektoru muž k muži, jeden pro uzemnění a dalších pět pro 5 LED diod. Pro každou LED jsme také umístili odpor. Tyto odpory jsou 220Ω a zabraňují zkratu a spálení LED diod. Ačkoli každá LED má určitý odpor, odpor není dostatečný na to, aby bránil napětí ze zdroje.
Krok 10: Bavte se
Tato hra se velmi snadno hraje. Hráč začíná na krajním pravém přepínači 1 na desce, V17. Je -li střední LED dioda zapnutá, musí přepnout spínač vysoko. Poté přesunou jeden přepínač doleva a udělají totéž! Pokud se hráč dostane do konce, skončí na sedmém přepínači, W14. Pokud hru porazí, uvidí opravdu zábavný konec!
Je třeba poznamenat, že při vytváření této hry jsou rychlosti zcela na vás! Pokud jsou rychlosti, které jsme zvolili, příliš pomalé, klidně to zrychlete a udělejte to ještě náročnější! Rovněž není stanoven počet úrovní. Pokud chcete, aby to mělo ještě více úrovní, existují úpravy, které je třeba provést na FSM a procesních blocích určených úrovní, ale jedná se o velmi jednoduché změny.
Jako vstup uživatele jsme také zvolili použití přepínačů na desce, ale to je také možné pomocí tlačítka na desce Basys3; tlačítko odstraní nutnost resetovat přepínače pokaždé, když uživatel začne znovu. Zpočátku jsme používali tlačítko, ale to způsobilo chyby při definování úrovně, protože by přeskočilo více úrovní, pokud by byly při držení tlačítka zasaženy dvě stoupající hrany PushClk.
Níže je video, které ukazuje, jak hrát, procházející prvními 4 úrovněmi a závěrečným zobrazením.
Hlavní soubor pro tento projekt je uveden níže.
Prameny
Referenční příručka Basys3
Inspirace pro projekt - hra Arduino Stop It
Doporučuje:
Reakční hra s časovačem 555: 5 kroků
555 Timer Reaction Game: Target Audience Tato instruktáž je zaměřena na lidi, kteří se zajímají o obvody (s malým pozadím), kteří hledají jednoduchou hru, kterou můžete postavit jen s několika levnými součástmi. Úroveň obtížnosti To by bylo obtížné, kdyby
Zábavná reakční hra Arduino: 3 kroky
Zábavná hra s reakcí na Arduino: Zábavná hra s reakcí na Arduino pro celou rodinu;) Vychází z komunikace mezi platformami Bluetooth. Potřebujete jen nějaké věci z Arduina, smartphone s Androidem a krabici od bot. Pokud nic z toho nemáte, pevně tomu věřte: neexistuje nic, co
Reakční hra- Projekt počítačového inženýrství: 3 kroky
Reakční hra- Projekt počítačového inženýrství: Reakční hra je přesně to, co název napovídá, testuje vaši reakční rychlost. Možná se ptáte, jaké výhody by tento server mohl mít mimo zábavu, ale můžete ho použít pro jednotlivce v rehabilitaci po chirurgickém zákroku nebo nehodách. Jejich reakce jsou
Reakční hra Arduino: 9 kroků
Reakční hra Arduino: Tuto hru jsem vytvořil jako školní úkol. Museli jsme udělat něco interaktivního s arduino. Toto je můj první projekt Arduino, který jsem kdy vytvořil, takže to bylo docela obtížné, ale ne nemožné
Rychlá reakční hra: Vzdálená verze: 5 kroků (s obrázky)
Rychlá reakční hra: Vzdálená verze: Ahoj. Toto je návod, jak vytvořit hru, která prověří jak váš reakční čas, tak i pocit vzdálenosti. Tento projekt je založen na starém projektu, do kterého jsem zapojil dva hráče, kteří soutěžili o to, kdo rychleji zareagoval kliknutím na tlačítko