Sadržaj:

Igra binarno -decimalnog podudaranja: 10 koraka
Igra binarno -decimalnog podudaranja: 10 koraka

Video: Igra binarno -decimalnog podudaranja: 10 koraka

Video: Igra binarno -decimalnog podudaranja: 10 koraka
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Srpanj
Anonim
Image
Image
Postavljanje razdjelnika sata
Postavljanje razdjelnika sata

Ova instrukcija će prikazati proces i module potrebne za izradu naše igre Batch to Decimal Matching. U roku od 60 sekundi korisnici će prevesti i unijeti što više nasumično generiranih decimalnih brojeva na ekranu sa sedam segmenata u binarni oblik prebacivanjem prekidača i slanjem pomoću gumba za pogađanje. Nakon što se završi, prikazat će se konačni rezultat, a zatim će se ponovno postaviti na igru.

Razumijevanje binarnih i brzih refleksa korisno je za dobro funkcioniranje, ali gumb za resetiranje dostupan je u slučaju da želite odmah pokušati ponovo.

Korak 1: Postavljanje razdjelnika sata

Okosnica cijelog ovog projekta dolazi od ispravne sinkronizacije svih dijelova ovog gizma. Naš stroj s konačnim stanjem koristi unutarnji sat, ali sedmosegmentni zaslon i mjerač vremena moraju koristiti izmijenjenu verziju sata.

Ovaj "novi sat" dolazi od dijeljenja unutarnjeg sata na željeno razdoblje kako bi se postigla određena frekvencija potrebna za svaku određenu komponentu. To je učinjeno u prethodnim laboratorijima i iz iskustva znamo da mjerač vremena ima cifru "jedan" postavljenu na 0,1 Hz, a znamenka "desetke" 1 Hz

Ulazi: ClkIn, djelitelj (32 bita)

Izlazi: ClkOut

Korak 2: Stvaranje stroja konačnih stanja (FSM)

Stvaranje stroja konačnih stanja (FSM)
Stvaranje stroja konačnih stanja (FSM)
Stvaranje stroja konačnih stanja (FSM)
Stvaranje stroja konačnih stanja (FSM)
Stvaranje stroja konačnih stanja (FSM)
Stvaranje stroja konačnih stanja (FSM)

U našem Stroju konačnih stanja odlučili smo da će biti potrebno pet stanja (Start, Display, Check, Score i End) s pet ulaza (start, reset, pogađanje, jednako, timeout). Jedini izlaz na našem State Machineu je 3 -bitni broj koji predstavlja stanje u kojem se korisnik nalazi (000, 001, 011, 101, 100) s obzirom na donja stanja.

Upamtite da Stroj konačnih stanja zapravo ne preformira donje funkcije, već samo govori u kojem je stanju program i u kojem. Što se zapravo događa određuje gornji modul objašnjen u nastavku.

Početno stanje (000)

Početno stanje je mjesto u kojemu će korisnik početi sve dok početni ulaz ne bude visok, to je također stanje koje će biti dosegnuto svaki put kada se pritisne gumb za resetiranje.

Stanje igre (001)

Stanje igre početak je igre u kojoj se generira slučajni broj i korisnik prebacuje prekidače kako bi stvorio ulaz. Nakon što pritisnete gumb za pogađanje, igra se prebacuje u stanje provjere.

Stanje provjere (011)

U tom se stanju koristi usporednik koji će usporediti vrijednosti unosa korisnika i nasumično generiranog broja. Ako je podnošenje ispravno, jednaka vrijednost je visoka i FSM odlazi u Score State; međutim, ako je podnošenje netočno, FSM se vraća u stanje prikaza sve dok podnošenje nije točno.

Ovo stanje provjere događa se relativno brzo u usporedbi s ostalim, jer se događa samo dok se pritisne gumb za provjeru

Bodovno stanje (101)

Budući da je jednaka vrijednost visoka, podnesak je bio točan. U tom će se stanju rezultat povećati za jedan i generirat će se novi broj koji će korisnik unijeti. Ovaj novi broj vraća nas u stanje početka gdje će korisnik još jednom prebaciti prekidače.

Završno stanje (100)

Nakon što istekne mjerač vremena od 60 sekundi, unos vremenskog ograničenja bit će visok i korisnik će doći do krajnjeg stanja gdje je prikazan konačni rezultat. Ulaz za resetiranje tada će se pritisnuti i FSM će ponovno započeti u početnom stanju.

Ulazi: Clk, rst, start, pogađanje, jednako, timeout

Izlaz: stanje (3 bita)

Korak 3: Mapiranje prikaza sa sedam segmenata

Mapiranje prikaza sa sedam segmenata
Mapiranje prikaza sa sedam segmenata
Mapiranje prikaza sa sedam segmenata
Mapiranje prikaza sa sedam segmenata
Mapiranje prikaza sa sedam segmenata
Mapiranje prikaza sa sedam segmenata

Prikaz sa sedam segmenata ključni je dio cijelog projekta jer se prve dvije znamenke na ekranu koriste kao izlaz generatora slučajnih brojeva, dok su posljednje dvije znamenke mjerač vremena. Iako smo u posljednjem laboratoriju implementirali primjer toga u smislu da na zaslonu postoje znamenke, on je prikazan u heksadecimalnom obliku. Da bismo riješili ovaj problem, koristili smo pretvarač i razdjelnik sata koji je dalje objašnjen u nastavku.

Zaslon prikazuje sve 0 sve dok FSM ne uđe u stanje igre; međutim, u krajnjem stanju, zaslon bi trebao samo prikazivati rezultat korisnika.

Budući da koristimo sve četiri znamenke zaslona sa sedam segmenata, moramo kružiti kroz svaku anodu dovoljno brzo na 300 Hz da bismo je vidjeli kao uvijek upaljenu.

Ulazi: Clk, sedamsegment

Izlazi: katode (7 bita), anode (4 bita)

Korak 4: Izrada komparatora

Izrada komparatora
Izrada komparatora

Ovaj podmodul se koristi u Check State -u u smislu usporedbe 7 -bitnog binarno unesenog nagađanja sa stvarnom decimalnom vrijednošću.

Imali smo if naredbu koja je procjenjivala i ulaze i dva izlaza ovisno o tome je li jednaka vrijednost visoka ili niska. Koliko god ovaj modul bio važan, on je daleko jedan od jednostavnijih programa za projektiranje u ovom projektu.

Ulazi: prekidači (8 bita), broj (8 bita)

Izlaz: EQ

Korak 5: Postavljanje mjerača vremena

Postavljanje mjerača vremena
Postavljanje mjerača vremena
Postavljanje mjerača vremena
Postavljanje mjerača vremena

Naš mjerač vremena su u biti dva različita brojača koji se povećavaju različitim tempom. Jedan brojač u vrijednosti "jedan", (prvih sedam segmenata) i jedan brojač za vrijednost "desetke" (druga znamenka na zaslonu sa sedam segmenata). Svaka znamenka temelji se na rastućem rubu sata, a nakon što brojač dosegne 60 sekundi, time_out će biti visok, a igra će se završiti i vratiti u početno stanje.

Ulazi: Clk, stanje (3 bita), početak

Izlazi: struja (8 bita), vremensko ograničenje

Korak 6: Projektiranje generatora pseudo slučajnih brojeva

Projektiranje generatora pseudo slučajnih brojeva
Projektiranje generatora pseudo slučajnih brojeva

Druga alternativna metoda za generator brojeva posebno za ovaj slučaj je imati ponavljajući brojač od 0-99 (u binarnom obliku) koji emitira prebrojani broj kada je ulaz visok, jer bi to uklonilo potrebu za korištenjem LFSR-a.

Broj se mijenja svaki rastući rub unutarnjeg sata (10 nano-sekundi) i kruži kroz svih 100 brojeva u jednoj mikrosekundi. Kad god korisnik želi novi broj iz generatora brojeva, on prikazuje broj na kojem je bio, Iako ovaj proces nije sasvim slučajan, vjerojatnost pronalaska povezanih rezultata iz ovog procesa dovoljno je niska da bude pseudo-slučajna.

Ulazi: Clk, changenum, jednaki

Izlazi: broj (8 bita)

Korak 7: Izrada pretvarača

Izrada pretvarača
Izrada pretvarača

Potrebna komponenta je pretvarač, koji smo koristili za prikaz decimalnih brojeva na zaslonu sa sedam segmenata umjesto izvornog heksadecimalnog broja. Iako se oba broja temelje na 7 -bitnom binarnom broju, stvorili smo cijeli modul namijenjen pretvaranju heksadecimalnog u decimalni.

Na primjer, ako je naš konačni rezultat za rezultat bio 0010001 (sedamnaest), zaslon sa sedam segmenata pokazivao bi heksadecimalnu vrijednost 11, umjesto decimalnog broja 17.

Ulaz: Numin (8 bita)

Izlaz: Numout (8 bita)

Korak 8: Spajanje svega u modul igre

Spajanje svega u modul igre
Spajanje svega u modul igre
Spajanje svega u modul igre
Spajanje svega u modul igre
Spajanje svega u modul igre
Spajanje svega u modul igre
Spajanje svega u modul igre
Spajanje svega u modul igre

Za naše komponente koristili smo potrebne prekidače 0-6 za prebacivanje korisnika, s tri gumba koji su djelovali kao korisnički ulazi za pokretanje, poništavanje i pogađanje. Komponente zaslona sa sedam segmenata i sata također su komponente koje smo radili iz prethodnih laboratorija, ali smo ih morali promijeniti kako bi odgovarali ovom projektu.

Ovaj smo projekt podijelili na šest prikazanih modula kako bismo cijeli gizmo podijelili na mnoge radne dijelove, no način na koji su spojeni prilično je zamršen i prikazan je na priloženoj slici crne kutije.

Dok se igra, 7 LED dioda svijetli kako bi obavijestilo korisnika koji se prebacuje na upotrebu, a kada igra završi, programirali smo i LED diode da trepere

Ulazi: prekidači (8 bita), Clk, reset, start, pogađanje

Izlazi: katode (7 bita), anode (4 bita), LED diode (7 bita)

Korak 9: Dodatni problemi

Iako se u ovoj igri koristi samo sedam prekidača, kôd je postavljen kao 8 -bitni broj. To smo učinili kako bismo imali prikladniji usporednik koji bi usporedio ovih 8 bita s 8 bitnim brojem koji smo generirali iz generatora slučajnih brojeva.

Bodovi su nam također u početku zadavali male probleme jer smo postavili povećanje jednog boda kada je FSM bio u bodovnom stanju; međutim, umjesto toga dogodilo se to da se rezultat neprestano povećavao sve dok je stanje u državi, dajući nam nerazumno visok rezultat s kojim se nismo mogli nositi. To smo popravili dodavanjem impulsnog signala koji je sinkroniziran s rastućim rubom sata, kao što se vidi u kodu u koraku 8.

Konačno, mjeraču vremena trebalo je puno vremena za ispravljanje pogrešaka jer bi iskrivio naš sedmosegmentni zaslon pri odbrojavanju, pa smo ga morali promijeniti s odbrojavanja sa 60 na odbrojavanje od 0.

Korak 10: Izvorne datoteke i ograničenja

Ako biste radije povukli iz naših izvornih datoteka umjesto da stvarate vlastite, evo ih. Također, uključena je i datoteka ograničenja.

Preporučeni: