Tartalomjegyzék:

A bináris -decimális mérkőzés játék: 10 lépés
A bináris -decimális mérkőzés játék: 10 lépés

Videó: A bináris -decimális mérkőzés játék: 10 lépés

Videó: A bináris -decimális mérkőzés játék: 10 lépés
Videó: 10 játékos, akinek klubot kellene váltania a télen | Esélylesők TOP10 | S05E12 | Unibet 2024, November
Anonim
Image
Image
Az óraosztó beállítása
Az óraosztó beállítása

Ez az utasítás megmutatja a bináris -decimális illesztési játék létrehozásához szükséges folyamatot és modulokat. 60 másodpercen belül a felhasználók a hét szegmenses kijelzőn tetszőleges számú véletlenszerűen előállított tizedes számot lefordítják és binárisra írják be a kapcsolók átkapcsolásával és a találgatás gomb megnyomásával. A befejezés után megjelenik a végső pontszám, majd újraindul a lejátszás.

A bináris és a gyors reflexek megértése előnyös ahhoz, hogy jól teljesítsen, de a reset gomb rendelkezésre áll arra az esetre, ha azonnal újra akarja próbálni.

1. lépés: Az óraosztó beállítása

Ennek az egész projektnek a gerincét a gizmo összes részének megfelelő szinkronizálása adja. Véges állapotú gépünk a belső órát használja, de a hét szegmenses kijelzőnek és az időzítőnek az óra módosított változatát kell használnia.

Ez az "új óra" abból származik, hogy elosztja a belső órát a kívánt időtartammal, hogy elérje az egyes komponensekhez szükséges bizonyos frekvenciát. Ezt a korábbi laboratóriumokban is megtették, és tapasztalatból tudjuk, hogy az időzítő "egy" számjegye 0,1 Hz -re van állítva, a "tízes" pedig 1 Hz

Bemenetek: ClkIn, osztó (32 bit)

Kimenetek: ClkOut

2. lépés: Véges állapotú gép (FSM) létrehozása

Véges állapotú gép (FSM) létrehozása
Véges állapotú gép (FSM) létrehozása
Véges állapotú gép (FSM) létrehozása
Véges állapotú gép (FSM) létrehozása
Véges állapotú gép (FSM) létrehozása
Véges állapotú gép (FSM) létrehozása

Véges állapotú gépünkben úgy döntöttünk, hogy öt állapotra (Start, Display, Check, Score és End) lesz szükség öt bemenettel (start, reset, guess, egyenlő, timeout). Az állapotgépünk egyetlen kimenete egy 3 bites szám, amely azt jelzi, hogy a felhasználó milyen állapotban van (000, 001, 011, 101, 100) az alábbi állapotokhoz képest.

Ne feledje, hogy egy véges állapotú gép valójában nem hajtja végre az alábbi funkciókat, hanem csak azt jelzi, hogy a program milyen állapotban van és mi. Hogy valójában mi történik, azt az alább ismertetett felső modul határozza meg.

Kezdő állapot (000)

A Start állapot az a hely, ahol a felhasználó elkezdi, amíg az indítási bemenet magas lesz, ez az az állapot is, amely a reset gomb megnyomásakor érhető el.

Játékállapot (001)

A játék állapota a játék kezdete, ahol a véletlen szám generálódik, és a felhasználó átkapcsolja a kapcsolókat, hogy bemenetet hozzon létre. Miután megnyomta a találgatás gombot, a játék az Ellenőrzési állapotba kerül.

Ellenőrzési állapot (011)

Ebben az állapotban használják az összehasonlítót, amely összehasonlítja a felhasználó által megadott értékeket és a véletlenszerűen generált számokat. Ha a benyújtás helyes, az egyenlő érték magas, és az MSZÁ a pontszámállapotba kerül; ha azonban a benyújtás helytelen, az FSM visszatér a megjelenítési állapotba, amíg a benyújtás helyes.

Ez az ellenőrzési állapot viszonylag gyorsan megtörténik a többihez képest, mivel csak addig történik, amíg lenyomják az ellenőrző gombot

Pontszámállapot (101)

Mivel az egyenlő érték magas, a benyújtás helyes volt. Ebben az állapotban a pontszám értéke eggyel nő, és a felhasználó új számot generál. Ez az új szám visszavezet minket a kiindulási állapotba, ahol a felhasználó ismét átkapcsolja a kapcsolókat.

Végállapot (100)

A 60 másodperces időzítő letelte után az időkorlát bemenete magas lesz, és a felhasználó eléri a végállapotot, ahol a végső pontszám megjelenik. Ekkor megnyomja a reset bemenetet, és az FSM újrakezdi a Start állapotot.

Bemenetek: Clk, rst, start, guess, egyenlő, timeout

Kimenet: állapot (3 bit)

3. lépés: A hét szegmenses megjelenítés leképezése

A hét szegmenses kijelző leképezése
A hét szegmenses kijelző leképezése
A hét szegmenses megjelenítés leképezése
A hét szegmenses megjelenítés leképezése
A hét szegmenses megjelenítés leképezése
A hét szegmenses megjelenítés leképezése

A Hét szegmenses kijelző a teljes projekt kulcsfontosságú része, mivel a képernyő első két számjegye a véletlenszám -generátor kimenete, míg az utolsó két számjegy az időzítő. Bár az elmúlt laboratóriumban példát is alkalmaztunk abból a szempontból, hogy számjegyek vannak a képernyőn, hexadecimális formában jelenítettük meg. A probléma megoldásához átalakítót és óraosztót használtunk, amelyeket az alábbiakban ismertetünk.

A kijelző mind a 0 -t mutatja, amíg az FSM játékállapotba nem lép; a végállapotban azonban a kijelzőn csak a felhasználó pontszámát kell megjeleníteni.

Mivel a hét szegmenses kijelző mind a négy számjegyét használjuk, 300 Hz -en kellő gyorsasággal kell végiglapoznunk minden anódot, hogy mindig világíthassunk.

Bemenetek: Clk, hét szegmens

Kimenetek: katódok (7 bit), anódok (4 bit)

4. lépés: Az összehasonlító létrehozása

Az összehasonlító létrehozása
Az összehasonlító létrehozása

Ez az almodul az Ellenőrzési állapotban használatos, mivel összehasonlítja a 7 bites binárisan bevitt találgatást a tényleges tizedes értékkel.

Volt egy if állításunk, amely mind a bemeneteket, mind a két kimenetet értékelte attól függően, hogy az azonos érték magas vagy alacsony. Bármennyire fontos is ez a modul, messze az egyik legegyszerűbb program a projektben.

Bemenetek: kapcsolók (8 bit), szám (8 bit)

Kimenet: EQ

5. lépés: Az időzítő beállítása

Időzítő beállítása
Időzítő beállítása
Időzítő beállítása
Időzítő beállítása

Az időzítőnk lényegében két különböző számláló, amelyek eltérő ütemben nőnek. Egy számláló a "saját" értékben (az első hét szegmenses kijelző) és egy számláló a "tíz" értékben (második számjegy a hét szegmenses kijelzőn). Minden számjegy az óra emelkedő szélén alapul, és amint a számláló eléri a 60 másodpercet, a time_out magas lesz, és a játék véget ér, és visszatér a kezdő állapotba.

Bemenetek: Clk, állapot (3 bit), start

Kimenetek: áram (8 bit), időtúllépés

6. lépés: Az ál -véletlenszám -generátor tervezése

Az ál -véletlenszám -generátor tervezése
Az ál -véletlenszám -generátor tervezése

Egy másik alternatív módszer a számgenerátor számára kifejezetten erre az esetre, ha van egy ismétlődő számlálója 0-99 között (bináris), amely a bemeneti számot adja ki, ha a bemenet magas, mivel ez kiküszöböli az LFSR használatát.

A szám megváltoztatja a belső óra minden emelkedő élét (10 nano-másodperc), és egy mikroszekundum alatt végigmegy mind a 100 számon. Amikor a felhasználó új számot akar a számgenerátorból, akkor kiadja azt a számot, amelyen volt, Bár ez a folyamat nem teljesen véletlenszerű, a folyamathoz kapcsolódó kimenetek megtalálásának valószínűsége elég kicsi ahhoz, hogy ál-véletlenszerű legyen.

Bemenetek: Clk, changenum, egyenlő

Kimenetek: szám (8 bit)

7. lépés: Konverter létrehozása

Konverter létrehozása
Konverter létrehozása

Szükséges összetevő az Átalakító, amelyet az eredeti hexadecimális helyett tizedes számok megjelenítésére használtunk a hét szegmenses kijelzőn. Bár mindkét szám egy 7 bites bináris számra épül, létrehoztunk egy teljes modult, amely a hexadecimális tizedesre konvertálására lett kijelölve.

Például, ha a végső eredményünk a pontszámra 0010001 (tizenhét) volt, akkor a hét szegmenses kijelző a hexadecimális értéket 11 -nel jeleníti meg a 17 -es tizedes szám helyett.

Bemenet: Numin (8 bit)

Kimenet: Szám (8 bit)

8. lépés: Mindent összerakni a játékmodulban

Mindent összerakni a játékmodulban
Mindent összerakni a játékmodulban
Mindent összerakni a játékmodulban
Mindent összerakni a játékmodulban
Mindent összerakni a játékmodulban
Mindent összerakni a játékmodulban
Mindent összerakni a játékmodulban
Mindent összerakni a játékmodulban

Alkatrészeinkhez a szükséges kapcsolókat 0-6 használtuk, hogy a felhasználó válthasson, a három gombbal pedig az indítás, a visszaállítás és a találgatás felhasználói bemeneteiként kell eljárni. A hét szegmenses kijelző és óra alkatrészek szintén olyan elemek, amelyeket korábbi laboratóriumokból készítettünk, de módosítanunk kellett, hogy illeszkedjenek ehhez a projekthez.

Ezt a projektet a fent bemutatott hat modulra osztottuk, hogy a teljes gizmo -t sok működő részre bonthassuk, azonban a csatlakoztatásuk módja meglehetősen bonyolult, és a mellékelt fekete dobozról látható.

Amíg a játék zajlik, 7 LED világít, hogy értesítse a felhasználót, hogy melyik kapcsolót használja, és amikor a játék véget ér, a LED -eket is villogásra programoztuk

Bemenetek: kapcsolók (8 bit), Clk, reset, start, guess

Kimenetek: katódok (7 bit), anódok (4 bit), LED -ek (7 bit)

9. lépés: További problémák

Bár ebben a játékban csak hét kapcsolót használnak, a kód 8 bites számként van beállítva. Ezt azért tettük, hogy kényelmesebb komparátorunk legyen, amely összehasonlítja ezt a 8 bitet a véletlenszám -generátorból generált 8 bites számmal.

A pontszám eleinte némi gondot is okozott nekünk, mert azt állítottuk, hogy növeljük az egy pontot, amikor az MSZÁ pontszerű volt; helyette azonban az történt, hogy az állapot folyamatosan nőtt, amíg az állam működött, ésszerűtlenül magas pontszámot kaptunk, amellyel nem tudtunk megbirkózni. Ezt úgy javítottuk ki, hogy hozzáadtunk egy impulzus jelet, amely szinkronban volt az óra emelkedő élével, amint az a 8. lépésben látható kódban látható.

Végül az időzítőnek sok időbe telt a hibakeresés, mivel visszaszámláláskor torzítja a hét szegmenses kijelzőnket, így a 60 -as visszaszámlálásról 0 -ról felfelé kellett változtatnunk.

10. lépés: Forrásfájlok és korlátozások

Ha inkább saját forrás létrehozása helyett a forrásfájljainkból húz, akkor itt vannak. Ezenkívül a kényszerfájl is benne van.

Ajánlott: