Obsah:
- Krok 1: Úvod
- Krok 2: Materiály
- Krok 3: Dizajn čiernej skrinky diagramu najvyššej úrovne
- Krok 4: CLKDivide
- Krok 5: Posuňte blok procesu
- Krok 6: Konečný automat
- Krok 7: Ovládanie bloku procesu zobrazovania pomocou úrovne
- Krok 8: Ovládanie rýchlosti LED pomocou úrovne
- Krok 9: Zostava hardvéru
- Krok 10: Bavte sa
Video: Reakčná hra FPGA: 10 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Od Summer Rutherforda a Regity Soetandarovej
Krok 1: Úvod
Pre náš konečný projekt pre CPE 133 sme navrhli reakčnú hru vo VHDL pre dosku Basys3. Túto hru je možné najbližšie porovnať s arkádovou hrou „Stacker“, kde musí hráč odhodiť bloky v správnom čase. Doska Basys3 je spojená s doskou, ktorá má striedavé diódy LED. Tieto LED svetlá sa budú striedať na konkrétnej frekvencii, v závislosti od úrovne. Táto hra používa rozdeľovač hodín a 4 -miestny 7 -segmentový displej, ako aj automat s konečným stavom. Keď hráč aktivuje správny spínač, keď sa rozsvieti stredná dióda LED, hráč postúpi na ďalšiu úroveň hry a zvýši frekvenciu striedania diód LED. To robí každú nasledujúcu úroveň ťažšou ako predchádzajúca úroveň. Keď prehrávač úspešne porazí úroveň 7, najvyššiu úroveň, na segmentovom displeji sa zobrazí správa a súčasne začnú blikať všetky LED diódy.
Krok 2: Materiály
Materiály, ktoré budete potrebovať, sú:
- Doska Digilent Basys3 s káblom micro USB
- Breadboard
- 5 LED diód
- 5 odporov (použili sme 220 ohmov)
- 11 prepojovacích káblov
- Počítač s Vivado
Krok 3: Dizajn čiernej skrinky diagramu najvyššej úrovne
Ako vidíte, náš blokový diagram najvyššej úrovne začína získaním požadovaných hodín z nášho submodulu ClkDivide. Tieto hodiny sú vstupmi do rôznych procesných blokov. V zásade musí hra rozpoznať, že keď používateľ správne zapne vypínač, LED diódy sa musia začať striedať rýchlejšie a displej musí ísť o úroveň vyššie. Blokový diagram môže vyzerať trochu bláznivo, ale je to kvôli tomu, že v určitom procese je vytvorených veľa signálov, a potom tento signál definuje ďalší signál v inom bloku procesu.
Nakoniec jediné vstupy, ktoré hra vyžaduje, sú vstupné hodiny na doske Basys3 s frekvenciou 100 Mhz, sedem prepínačov na doske Basys3 a tlačidlo reset. Na výstupe je anóda pre sedemsegmentový displej, sedem segmentov pre displej a diódy LED.
Krok 4: CLKDivide
Tento submodul rozdeľovača hodín vytvoril pomalšie hodiny v závislosti od hodnoty, ktorú sme naň namapovali v našom hlavnom súbore. Tento submodul sme použili na určenie Clk400, PushClk a newlck. Tento submodul používa ako vstup hodiny a 32 -bitový delič. Na výstupe budú spomalené hodiny. Existuje oddeľovač a spomalené hodiny, procesný blok. V tomto procese je dočasná premenná, ktorú sme nazvali počítať, ktorá počíta jednu pri každom náraze na stúpajúcu hranu zadaných hodín. Akonáhle dosiahne číslo deliteľa, spomalené hodiny sa prepnú a počítanie sa vynuluje.
Krok 5: Posuňte blok procesu
Blok procesu Shift riadi striedavý pohyb a rýchlosť LED diód. V zozname citlivosti sú signály newclk a Stop. Zastavenie spôsobí krátke oneskorenie, keď používateľ prejde úrovňou. Ak stop nie je vysoký, diódy LED sa striedajú ako obvykle na základe rýchlosti newclk. Tento striedajúci sa vzor je riadený dvoma premennými: stopa a počet. Počet určuje, ktorá dióda LED by mala svietiť, zatiaľ čo funkcia Track určuje, či sa má počet odpočítavať nahor alebo nadol. Existuje ďalší signál, konečný, ktorý platí iba vtedy, ak je úroveň „111“, čo znamená, že hráč hru porazil. Vo finále sa strieda 0 až 1 na každom okraji hodín, aby sa diódy LED nepretržite zapínali a vypínali. Toto je len vizuálny prvok pre konečné zobrazenie.
Tento proces zmeny je ideálnym miestom pre štart pre tento projekt. Ak dokážete svoje LED diódy striedať správne a dôsledne, potom odtiaľ stačí pridať správanie pri zvyšovaní úrovne!
Krok 6: Konečný automat
Vytvorili sme počítač s konečným stavom, ktorý bude diktovať správanie pri stlačení spínača vstupu alebo tlačidla reset. Každý stav je „úrovňou“a ak je spínač zapnutý v nesprávnom čase alebo je stlačený reset, úroveň sa vráti späť na „000“. V opačnom prípade, ak je spínač správne zapnutý, úroveň sa pohybuje nahor, kým sa nedostane do konečného stavu „111“a zobrazí sa koncové zobrazenie. FSM je založený na dvoch procesných blokoch sync_proc a comb_proc. Sync_proc používa hodiny, ktoré sme nazvali PushClk. Tieto hodiny riadia, ako rýchlo sa nasledujúci stav zmení na súčasný stav. Tieto hodiny by mali byť dosť rýchle; vybrali sme rýchlosť, ktorá bola asi dvakrát vyššia ako naša najrýchlejšia rýchlosť LED.
Tento kód sme implementovali pomocou FSM pre úrovne; Po tomto projekte sme si však uvedomili, že efektívnejším využitím FSM môže byť stav odpočítavania, resetovanie alebo zastavenie. Ak sa nič netlačí, je to v zdržiavacom stave. Ak stlačíte reset alebo sa prehrávač pokazí, je v stave resetovania. Ak je správne stlačený, je v stave odpočítavania. Existuje mnoho ďalších spôsobov, ako použiť FSM aj v tejto hre!
Krok 7: Ovládanie bloku procesu zobrazovania pomocou úrovne
Úroveň ovláda blok procesu zobrazenia. Premenné v zozname citlivosti sú Level, Reset a Clk400. 7 -segmentový displej začína zobrazením „1“pre prvú úroveň. Počíta sa do 7 vždy, keď používateľ prejde úrovňou, aby mu ukázal, na akej úrovni sa nachádza. Akonáhle používateľ prejde úrovňou 7, zobrazí sa „COOL“, čo znamená, že hráč hru porazil. Tento displej „COOL“beží na frekvencii 400 Hz, ktorú sme nazvali Clk400. Ak stlačíte Reset, displej sa vráti na „1.“
Krok 8: Ovládanie rýchlosti LED pomocou úrovne
Nakoniec úroveň ovláda rýchlosť LED diód. Úroveň je jediným signálom v zozname citlivosti. D1 je signál, ktorý vstupuje do procesu oddeľovača hodín, aby získal newclk. Zakaždým, keď sa zmení úroveň alebo stav, procesný blok „Rýchlosť“. Tento proces určuje hodnotu D1. Existuje 8 definovaných hodnôt D1, ktoré sme vybrali na základe toho, ako rýchlo sme chceli, aby každá úroveň bežala. D1 sa zmenšuje vždy, keď sa zvyšuje úroveň, takže newclk beží rýchlejšie.
Krok 9: Zostava hardvéru
Nepájivú dosku sme prepojili s Basys3 jedným z konektorov pmod. Šesť z portov pmod bolo použitých na zapojenie konektora z mužského do mužského konektora, jeden pre uzemnenie a ďalších päť pre 5 LED diód. Pre každú LED sme tiež umiestnili odpor. Tieto odpory sú 220Ω a zabraňujú skratu a spáleniu LED diód. Aj keď každá LED dióda má určitý odpor, odpor nepostačuje na to, aby prekážal napätiu zo zdroja.
Krok 10: Bavte sa
Táto hra sa veľmi ľahko hrá. Hráč začína úplne vpravo na spínači 1 dosky, V17. Keď svieti stredná dióda LED, musia prepnúť prepínač vysoko. Potom posunú jeden prepínač doľava a urobia to isté! Ak sa hráč dostane do konca, skončí na siedmom prepínači, W14. Ak hru porazia, uvidia skutočne zábavnú koncovú obrazovku!
Treba poznamenať, že pri vytváraní tejto hry sú rýchlosti úplne na vás! Ak sú rýchlosti, ktoré sme zvolili, príliš nízke, pokojne ich zrýchlite a urobte ešte náročnejšími! Rovnako nie je stanovený počet úrovní. Ak chcete, aby to malo ešte viac úrovní, existujú zmeny, ktoré je potrebné vykonať v FSM a procesných blokoch určených úrovňou, ale sú to veľmi jednoduché zmeny.
Ako vstup užívateľa sme sa tiež rozhodli použiť prepínače na doske, ale je to možné aj pomocou tlačidla na doske Basys3; tlačidlo eliminuje potrebu resetovať prepínače vždy, keď používateľ začína odznova. Pôvodne sme používali tlačidlo, ale to spôsobovalo chyby pri definovaní úrovne, pretože by to preskočilo niekoľko úrovní, keby boli pri držaní tlačidla zasiahnuté dve stúpajúce hrany PushClk.
Nasleduje video, ktoré ukazuje, ako hrať, prechádza prvými 4 úrovňami a zobrazuje konečný koniec.
Hlavný súbor pre tento projekt je uvedený nižšie.
Zdroje
Referenčný manuál Basys3
Inšpirácia pre projekt - hra Arduino Stop It
Odporúča:
Reakčná hra s časovačom 555: 5 krokov
555 Timer Reaction Game: Target AudienceTento návod je zameraný na ľudí, ktorí sa zaujímajú o obvody (s malým pozadím), ktorí hľadajú jednoduchú hru, ktorú môžete zostaviť len s niekoľkými lacnými komponentmi. Úroveň obtiažnosti To by bolo ťažké, keby
Zábavná reakčná hra Arduino: 3 kroky
Zábavná hra s reakciou na Arduino: Zábavná hra s reakciou na Arduino pre celú rodinu;) Vychádza z komunikácie medzi platformami Bluetooth. Potrebujete iba veci Arduino, smartphone so systémom Android a krabicu od topánok. Ak nič z toho nemáte, pevne tomu verte: neexistuje nič, čo
Reakčná hra Arduino: 9 krokov
Reakčná hra Arduino: Túto hru som vytvoril ako školskú úlohu. Museli sme urobiť niečo interaktívne s arduinom. Toto je môj prvý projekt Arduino, ktorý som kedy urobil, takže to bolo dosť ťažké, ale nie nemožné
Rýchla reakčná hra: Verzia na diaľku: 5 krokov (s obrázkami)
Rýchla reakčná hra: Vzdialená verzia: Ahoj. Toto je návod, ako vytvoriť hru, ktorá testuje váš reakčný čas a pocit vzdialenosti. Tento projekt je založený na starom projekte, do ktorého som zapojil dvoch hráčov a súťažili o to, kto rýchlejšie zareaguje kliknutím na tlačidlo
Fischertechnik LED reakčná hra: 7 krokov
Fischertechnik LED Reaction Time Game: Ako vytvoriť fischertechnik LED REACTION TIME GAME Žijem s rôznymi vzdelávacími manipulátormi. (Navštívte www.weirdrichard.com). Ľahko zostaviteľnou aplikáciou je LED REAKCIA ČASOVÁ HRA. Robotický ovládač (v tomto prípade