Obsah:
- Krok 1: Nastavení děliče hodin
- Krok 2: Vytvoření stroje s konečným stavem (FSM)
- Krok 3: Mapování zobrazení sedmi segmentů
- Krok 4: Vytvoření komparátoru
- Krok 5: Nastavení časovače
- Krok 6: Návrh generátoru pseudonáhodných čísel
- Krok 7: Vytvoření převaděče
- Krok 8: Dát vše dohromady v herním modulu
- Krok 9: Vyskytly se další problémy
- Krok 10: Zdrojové soubory a omezení
Video: Hra s binárním až desetinným zápasem: 10 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Tento návod ukáže postup a moduly potřebné k vytvoření naší hry Binary to Decimal Matching. Do 60 sekund uživatelé přeloží a zadají tolik náhodně generovaných desetinných čísel na sedmisegmentovém displeji do binárních souborů přepnutím přepínačů a odesláním tlačítka hádat. Po dokončení se zobrazí konečné skóre a poté se resetuje, aby se mohlo hrát znovu.
Pochopení binárních a rychlých reflexů je prospěšné pro dobrý výsledek, ale tlačítko reset je k dispozici pro případ, že byste to chtěli okamžitě zkusit znovu.
Krok 1: Nastavení děliče hodin
Páteř celého tohoto projektu pochází ze správné synchronizace všech částí tohoto gizmo. Náš konečný stavový stroj používá vnitřní hodiny, ale sedmisegmentový displej a časovač musí používat změněnou verzi hodin.
Tyto „nové hodiny“pocházejí z dělení vnitřních hodin požadovanou periodou k dosažení určité frekvence potřebné pro každou konkrétní součást. To bylo provedeno v předchozích laboratořích a ze zkušenosti víme, že časovač má číslici „něčí“nastavenou na 0,1 Hz a číslice „desítek“je 1 Hz
Vstupy: ClkIn, dělič (32 bitů)
Výstupy: ClkOut
Krok 2: Vytvoření stroje s konečným stavem (FSM)
V našem stroji konečných stavů jsme se rozhodli, že bude zapotřebí pět stavů (začátek, zobrazení, kontrola, skóre a konec) s pěti vstupy (start, reset, odhad, rovnost, časový limit). Jediným výstupem v našem stavovém počítači je 3bitové číslo, které představuje stav, ve kterém se uživatel nachází (000, 001, 011, 101, 100) s ohledem na níže uvedené stavy.
Pamatujte, že konečný stavový stroj ve skutečnosti nevytváří níže uvedené funkce, ale pouze říká, v jakém stavu je program a v čem. Co se skutečně stane, určuje horní modul vysvětlený níže.
Počáteční stav (000)
Počáteční stav je místo, kde uživatel začne, dokud není počáteční vstup vysoký. To je také stav, kterého bude dosaženo při každém stisknutí tlačítka reset.
Stav hry (001)
Stav hry je začátek hry, kde se vygeneruje náhodné číslo a uživatel přepne přepínače a vytvoří vstup. Jakmile je tlačítko hádání stisknuto, hra se přesune do stavu Check.
Zkontrolovat stav (011)
V tomto stavu se používá komparátor, který porovnává hodnoty vstupu uživatele a náhodně generované číslo. Pokud je podání správné, je stejná hodnota vysoká a FSM přejde do stavu skóre; pokud je však podání nesprávné, FSM se vrátí zpět do stavu zobrazení, dokud není odeslání správné.
Tento stav kontroly se ve srovnání s ostatními děje relativně rychle, protože k němu dochází pouze po dobu stisknutí tlačítka pro kontrolu
Stav skóre (101)
Protože je stejná hodnota vysoká, podání bylo správné. V tomto stavu se hodnota skóre zvýší o jednu a uživateli se vygeneruje nové číslo. Toto nové číslo nás přivádí zpět do počátečního stavu, kde uživatel znovu přepne přepínače.
Koncový stav (100)
Jakmile časový spínač 60 sekund vyprší, časový limit bude vysoký a uživatel dosáhne koncového stavu, kde se zobrazí konečné skóre. Poté bude stisknut resetovací vstup a FSM začne znovu ve výchozím stavu.
Vstupy: Clk, první, začátek, odhad, rovnost, časový limit
Výstup: stav (3 bit)
Krok 3: Mapování zobrazení sedmi segmentů
Zobrazení sedmi segmentů je klíčovou součástí celého projektu, protože první dvě číslice na obrazovce se používají jako výstup generátoru náhodných čísel, zatímco poslední dvě číslice jsou časovač. Ačkoli jsme v poslední laboratoři implementovali příklad tohoto, pokud jde o číslice na obrazovce, byl zobrazen hexadecimálně. K vyřešení tohoto problému jsme použili převodník a rozdělovač hodin, který je dále vysvětlen níže.
Displej zobrazuje všechny 0, dokud FSM nepřejde do stavu hry; v konečném stavu by však displej měl zobrazovat pouze skóre uživatele.
Protože používáme všechny čtyři číslice sedmisegmentového displeje, musíme každou anodu cyklovat dostatečně rychle při 300 Hz, abychom byli vnímáni jako vždy rozsvícení.
Vstupy: Clk, sedmisegmentový
Výstupy: katody (7 bitů), anody (4 bit)
Krok 4: Vytvoření komparátoru
Tento submodul se používá ve stavu kontroly z hlediska toho, jak porovnává 7bitový binární zadaný odhad se skutečnou desetinnou hodnotou.
Měli jsme příkaz if, který vyhodnotil jak vstupy, tak dva výstupy v závislosti na tom, zda byla stejná hodnota vysoká nebo nízká. Jakkoli je tento modul důležitý, je to zdaleka jeden z jednodušších programů navržených v tomto projektu.
Vstupy: přepínače (8 bitů), číslo (8 bitů)
Výstup: EQ
Krok 5: Nastavení časovače
Náš časovač jsou v podstatě dva různé čítače, které rostou různou rychlostí. Jeden čítač v hodnotě „něčí“(první sedmisegmentový displej) a jeden čítač pro hodnotu „deseti“(druhá číslice na sedmisegmentovém displeji). Každá číslice vychází ze stoupající hrany hodin a jakmile počítadlo dosáhne 60 sekund, časový limit bude vysoký a hra skončí a vrátí se do počátečního stavu.
Vstupy: Clk, stav (3 bit), start
Výstupy: Aktuální (8 bitů), časový limit
Krok 6: Návrh generátoru pseudonáhodných čísel
Další alternativní metodou pro generátor čísel specificky pro tento případ je mít opakující se čítač od 0-99 (v binárním), který vydává počítané číslo, když je vstup vysoký, protože by to odstranilo potřebu použití LFSR.
Číslo se mění každou stoupající hranou vnitřních hodin (10 nano sekund) a cykluje všemi 100 čísly za jednu mikrosekundu. Kdykoli chce uživatel z generátoru čísel nové číslo, vydá číslo, na kterém byl, Ačkoli tento proces není zcela náhodný, pravděpodobnost nalezení souvisejících výstupů z tohoto procesu je dostatečně nízká na to, aby byla pseudonáhodná.
Vstupy: Clk, changenum, stejné
Výstupy: číslo (8 bitů)
Krok 7: Vytvoření převaděče
Nezbytnou součástí je Převaděč, který jsme použili k zobrazení desetinných čísel na sedmisegmentovém displeji místo původního hexadecimálního. Přestože obě čísla vycházejí ze 7bitového binárního čísla, vytvořili jsme celý modul určený k převodu hexadecimálního na desítkové.
Pokud by například náš konečný výstup pro skóre byl 0010001 (sedmnáct), sedmisegmentový displej by zobrazoval hexadecimální hodnotu 11 namísto desetinného čísla 17.
Vstup: Numin (8 bitů)
Výstup: Numout (8 bitů)
Krok 8: Dát vše dohromady v herním modulu
U našich komponent jsme použili potřebné přepínače 0-6, které uživatel přepínal, přičemž tři tlačítka sloužila jako uživatelské vstupy pro spuštění, reset a hádání. Sedm segmentový displej a komponenty hodin jsou také komponenty, které jsme provedli z předchozích laboratoří, ale museli jsme je upravit, aby se vešly do tohoto projektu.
Tento projekt jsme rozdělili do šesti výše uvedených modulů, abychom celý gizmo rozdělili na mnoho pracovních částí, ale způsob jejich připojení je poměrně složitý a ukazuje jej připojený obrázek černé skříňky.
Během hry se rozsvítí 7 diod LED, které upozorní uživatele, který přepne na použití, a když hra skončí, naprogramovali jsme také blikání LED diod
Vstupy: přepínače (8 bitů), Clk, reset, start, hádání
Výstupy: katody (7 bitů), anody (4 bit), LED diody (7 bitů)
Krok 9: Vyskytly se další problémy
Přestože je v této hře použito pouze sedm přepínačů, kód jej má nastavený jako 8bitové číslo. Udělali jsme to, abychom měli pohodlnější komparátor, který by porovnal těchto 8 bitů s 8 bitovým číslem, které jsme vygenerovali z generátoru náhodných čísel.
Skóre nám také zpočátku trochu dělalo potíže, protože jsme ho nastavili na zvýšení o jeden bod, když byl FSM ve stavu skóre; místo toho se však stalo, že skóre stále rostlo, dokud byl stav zapnutý, což nám dávalo nepřiměřeně vysoké skóre, se kterým jsme se nemohli vypořádat. Opravili jsme to přidáním pulzního signálu, který byl synchronizován se stoupající hranou hodin, jak je vidět v kódu v kroku 8.
Nakonec ladění časovače zabralo hodně času, protože by při odpočítávání narušilo náš sedmisegmentový displej, takže jsme ho museli změnit z odpočítávání ze 60 na počítání z 0.
Krok 10: Zdrojové soubory a omezení
Pokud byste místo vytváření vlastních raději stahovali z našich zdrojových souborů, tady jsou. Součástí je také soubor omezení.
Doporučuje:
HRA DINO S POUŽITÍM LDR: 5 kroků
HRA DINO S POUŽITÍM LDR: Dinosaur Game, známá také jako T-Rex Game a Dino Runner, je integrovaná prohlížečová hra ve webovém prohlížeči Google Chrome. Hru vytvořil Sebastien Gabriel v roce 2014 a lze k ní přistupovat stisknutím mezerníku v režimu offline v prohlížeči Google Chrome
BBC Micro: bit and scratch - interaktivní volant a hra pro řidiče: 5 kroků (s obrázky)
BBC Micro: bit and Scratch - interaktivní volant a hra pro řízení: Jednou z mých úkolů v tomto týdnu je použít BBC Micro: bit k propojení s programem Scratch, který jsme napsali. Myslel jsem, že to byla ideální příležitost použít můj ThreadBoard k vytvoření vestavěného systému! Moje inspirace pro scratch p
Aruduino LED hra Rychlé klikání Hra pro dva hráče: 8 kroků
Aruduino LED Game Rychlé klikání Hra pro dva hráče: Tento projekt je inspirován @HassonAlkeim. Pokud jste ochotni se podrobně podívat, zde je odkaz, který můžete zkontrolovat https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Tato hra je vylepšenou verzí hry Alkeim's. Jedná se o
Dvoučipový frekvenční měřič s binárním odečtem: 16 kroků
Dvoučipový frekvenční měřič s binárním odečtem: pomocí dvanácti světelných diod. Prototyp má CD4040 jako čítač a CD4060 jako generátor časové základny. Vstupem signálu je hradlo s odporem - diodou. Zde použité CMOS integrované obvody umožňují napájení nástroje jakýmkoli napětím v rozsahu 5
Počítání a rovnátka v binárním souboru: 6 kroků
Počítání a porovnávání v binárním systému: Uveďte obecný popis instruktabletu, toto je můj druhý binární instruktáž. To jde do matematických rovnic zpracovaných binárně. část 1 ukazuje, jak počítat binárně rukama, zatímco část 2 vám ukazuje písemně. Jen na okraj