Taula de continguts:
- Pas 1: Configuració del divisor de rellotge
- Pas 2: creació d'una màquina d'estats finits (FSM)
- Pas 3: mapatge de la pantalla de set segments
- Pas 4: creació del comparador
- Pas 5: Configuració d'un temporitzador
- Pas 6: Dissenyar el generador de números aleatoris
- Pas 7: crear un convertidor
- Pas 8: ajuntar-ho tot al mòdul de joc
- Pas 9: S'han trobat problemes addicionals
- Pas 10: fitxers font i restriccions
Vídeo: El joc binari a decimal: 10 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
Aquesta instrucció mostrarà el procés i els mòduls necessaris per crear el nostre joc binari a decimal. En un termini de 60 segons, els usuaris traduiran i introduiran en binari tants nombres decimals generats aleatòriament a la pantalla de set segments canviant els commutadors i enviant-los amb un botó d’endevinalla. Un cop completat, es mostrarà una puntuació final i es restablirà per tornar a jugar.
Comprendre els reflexos binaris i ràpids és beneficiós per fer-ho bé, però es proporciona el botó de reinici en cas que es vulgui tornar a provar a l’instant.
Pas 1: Configuració del divisor de rellotge
La columna vertebral de tot aquest projecte prové de la sincronització correcta de totes les parts d’aquest aparell. La nostra màquina d’estats finits utilitza el rellotge intern, però la pantalla i el temporitzador de set segments han d’utilitzar una versió modificada del rellotge.
Aquest "nou rellotge" ve de dividir el rellotge intern per un període desitjat per aconseguir una freqüència determinada necessària per a cada component específic. Això s'ha fet en laboratoris anteriors i, per experiència, sabem que el temporitzador té el dígit "propi" establert a 0,1 Hz, i el dígit de "desenes" és d'1 Hz
Entrades: ClkIn, divisor (32 bits)
Sortides: ClkOut
Pas 2: creació d'una màquina d'estats finits (FSM)
A la nostra màquina d'estats finits, vam decidir que cinc estats (Inici, Visualització, Comprovació, Puntuació i Final) serien necessaris amb cinc entrades (inici, restabliment, endevinació, igual, temps d'espera). L’única sortida de la nostra màquina d’estats és un número de 3 bits que representa en quin estat es troba l’usuari (000, 001, 011, 101, 100) respecte als estats següents.
Recordeu que una màquina d'estats finits no realitza les funcions següents, sinó que només indica en quin estat es troba el programa i en què. El que passa realment està determinat pel mòdul superior que s'explica a continuació.
Estat d'inici (000)
L’estat d’inici és on l’usuari començarà fins que l’entrada inicial serà alta, aquest també és l’estat al qual s’arribarà cada vegada que es prem el botó de reinici.
Estat del joc (001)
L'estat del joc és el començament del joc, on es genera el número aleatori i l'usuari commuta els commutadors per crear una entrada. Un cop premut el botó d’endevinar, el joc es mou a l’estat de comprovació.
Comprova l'estat (011)
En aquest estat s’utilitza el comparador, que compararà els valors de l’entrada de l’usuari i el nombre generat aleatòriament. Si l'enviament és correcte, el valor igual és elevat i el FSM passa a l'estat de puntuació; tanmateix, si l'enviament és incorrecte, el FSM torna a l'estat de visualització fins que l'enviament sigui correcte.
Aquest estat de comprovació es produeix relativament ràpidament en comparació amb els altres, ja que només passa mentre es prem el botó de comprovació
Estat de la puntuació (101)
Com que el valor igual és alt, l'enviament va ser correcte. En aquest estat, el valor de la puntuació augmentarà un i es generarà un nou número perquè l'usuari pugui introduir-lo. Aquest nou número ens torna a l'estat d'inici, on l'usuari tornarà a canviar els commutadors.
Estat final (100)
Un cop hagi passat el temporitzador de 60 segons, l'entrada de temps d'espera serà elevada i l'usuari arriba a l'estat final on es mostra la puntuació final. A continuació, es prem l’entrada de restabliment i el FSM torna a començar a l’estat d’inici.
Entrades: Clk, rst, start, guess, equal, timeout
Sortida: estat (3 bits)
Pas 3: mapatge de la pantalla de set segments
La pantalla de set segments és una part clau de tot el projecte, ja que els dos primers dígits de la pantalla s’utilitzen com a sortida del generador de números aleatoris, mentre que els dos darrers dígits són el temporitzador. Tot i que hem implementat un exemple d'això a l'últim laboratori en termes de tenir dígits a la pantalla, es va mostrar en hexadecimal. Per solucionar aquest problema, hem utilitzat un convertidor i un divisor de rellotge que s’explica a continuació.
La pantalla mostra tots els 0 fins que el FSM entri a l'estat del joc; no obstant això, a l'estat final, la pantalla només ha de mostrar la puntuació de l'usuari.
Com que fem servir els quatre dígits de la pantalla de set segments, hem de recórrer cada ànode prou ràpidament a 300 Hz per tal de ser percebuts com sempre il·luminats.
Entrades: Clk, sevensegment
Sortides: càtodes (7 bits), ànodes (4 bits)
Pas 4: creació del comparador
Aquest submòdul s'utilitza a l'estat de comprovació en termes de com es compara la conjectura introduïda binària de 7 bits amb el valor decimal real.
Teníem una sentència if que avaluava les entrades i les dues sortides en funció de si el valor igual era alt o baix. Per molt important que sigui aquest mòdul, és amb diferència un dels programes més senzills de dissenyar en aquest projecte.
Entrades: commutadors (8 bits), nombre (8 bits)
Sortida: EQ
Pas 5: Configuració d'un temporitzador
El nostre temporitzador és essencialment dos comptadors diferents que augmenten a ritmes diferents. Un comptador del valor "propi" (la primera pantalla de set segments) i un comptador per al valor de "deu" (segon dígit a la pantalla de set segments). Cada dígit es basa en la vora ascendent del rellotge i, un cop el comptador arriba als 60 segons, el time_out serà elevat i el joc finalitzarà i tornarà a l'estat inicial.
Entrades: Clk, estat (3 bits), inici
Sortides: actual (8 bits), temps d'espera
Pas 6: Dissenyar el generador de números aleatoris
Un altre mètode alternatiu per a un generador de números específicament per a aquest cas és tenir un comptador de repetició de 0 a 99 (en binari) que emeti el nombre comptat quan l'entrada és alta, ja que això eliminaria la necessitat d'utilitzar un LFSR.
El nombre canvia cada vora ascendent del rellotge intern (10 nanosegons) i passa pels 100 números en un microsegon. Sempre que l'usuari vol un número nou del generador de números, emet el número en què estava, Tot i que aquest procés no és del tot aleatori, la probabilitat de trobar resultats relacionats amb aquest procés és prou baixa com per ser pseudo-aleatòria.
Entrades: Clk, changenum, igual
Sortides: nombre (8 bits)
Pas 7: crear un convertidor
Un component necessari és el convertidor, que hem utilitzat per mostrar números decimals a la pantalla de set segments en lloc de l'hexadecimal original. Tot i que els dos números es basen en un número binari de 7 bits, hem creat un mòdul complet designat per convertir hexadecimal en decimal.
Per exemple, si el resultat final de la puntuació fos 0010001 (disset), la pantalla de set segments mostraria el valor hexadecimal d'11, en lloc del nombre decimal de 17.
Entrada: Numin (8 bits)
Sortida: Numout (8 bits)
Pas 8: ajuntar-ho tot al mòdul de joc
Per als nostres components, hem utilitzat els commutadors necessaris 0-6 per canviar l’usuari, amb els tres botons que actuen com a entrades de l’usuari per iniciar, restablir i endevinar. Els components de visualització i rellotge de set segments també són components que hem fet en laboratoris anteriors, però que hem hagut de modificar per adaptar-nos a aquest projecte.
Hem dividit aquest projecte en els sis mòduls que es mostren més amunt per desglossar tot l’aparell en moltes parts de treball, però, la forma en què estan connectats és força intricada i es mostra a la imatge del quadre negre adjunt.
Mentre el joc està succeint, s’encenen 7 LED per notificar a l’usuari quins canvia d’utilitzar i, quan finalitza el joc, també hem programat els LED per parpellejar
Entrades: commutadors (8 bits), Clk, reset, start, guess
Sortides: càtodes (7 bits), ànodes (4 bits), LEDs (7 bits)
Pas 9: S'han trobat problemes addicionals
Tot i que només s’utilitzen set commutadors en aquest joc, el codi el defineix com a número de 8 bits. Ho vam fer per tal de tenir un comparador més convenient que comparés aquests 8 bits amb el nombre de 8 bits que vam generar a partir del generador de números aleatoris.
La puntuació també ens va donar una mica de problemes al principi, ja que vam establir que augmentés un punt quan el FSM estigués en estat de puntuació; Tanmateix, el que va passar va ser que la puntuació va continuar augmentant mentre l'estat funcionava, cosa que ens va donar una puntuació excessivament alta que no podríem fer front. Ho hem solucionat afegint un senyal de pols sincronitzat amb la vora ascendent del rellotge, tal com es veu al codi del pas 8.
Finalment, el temporitzador va trigar molt de temps a depurar-se, ja que distorsionaria la pantalla de set segments quan comptava, de manera que vam haver de canviar-la de comptar enrere de 60 a comptar de 0.
Pas 10: fitxers font i restriccions
Si preferiu extreure'n els fitxers font en lloc de crear-ne els vostres, aquí els teniu. També s’inclou el fitxer de restriccions.
Recomanat:
CPE 133 Projecte Final Decimal a Binari: 5 passos
CPE 133 Projecte final Decimal a Binary: els números binaris són una de les primeres coses que em vénen al cap quan es pensa en lògica digital. Tanmateix, els números binaris poden ser un concepte difícil per a aquells que hi són nous.Aquest projecte ajudarà a aquells que siguin nous i experimentats amb nombres binaris
Joc Simon: Joc divertit: 5 passos
Simon Game - Fun Game !: Referència: després d'un llarg cap de setmana, us heu d'esforçar completament per realitzar totes les tasques i treballs dels quals esteu responsables. És hora que ens entrenem el cervell, oi? A més d’aquests jocs avorrits i sense sentit, hi ha un joc anomenat Simon Game
Joc LED Aruduino Fent clic ràpid Joc de dos jugadors: 8 passos
Joc LED Aruduino Fent clic ràpid Joc de dos jugadors: aquest projecte està inspirat en @HassonAlkeim. Si esteu disposat a aprofundir aquí hi ha un enllaç que podeu consultar https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Aquest joc és una versió millorada d’Alkeim. És un
Joc binari: 9 passos (amb imatges)
Joc binari: és un joc que he creat als circuits de Tinkercad per aprendre nombres binaris. https://www.tinkercad.com/things/erDquXcpyW8 Si voleu seguir junt amb aquesta guia i crear el vostre propi fitxers i el codi es pot trobar al meu github a https://github.com/kee
Joc de commutador binari: 6 passos
Joc de commutador binari: inspirat en el joc Hex de Ben Heck. Aquest és un joc binari que he fet per ensenyar als meus amics sobre el binari. Al final, jugo amb això a classe per mantenir-me despert. Converteix els valors aleatoris (0-255) o hexadecimals (0-ff) a la pantalla a binaris, i després nosaltres