Taula de continguts:

El joc binari a decimal: 10 passos
El joc binari a decimal: 10 passos

Vídeo: El joc binari a decimal: 10 passos

Vídeo: El joc binari a decimal: 10 passos
Vídeo: Convertir un número de binario a decimal / Sistemas de numeración 6 de 13 2024, Juliol
Anonim
Image
Image
Configuració del divisor de rellotge
Configuració del divisor de rellotge

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)

Creació d'una màquina d'estats finits (FSM)
Creació d'una màquina d'estats finits (FSM)
Creació d'una màquina d'estats finits (FSM)
Creació d'una màquina d'estats finits (FSM)
Creació d'una màquina d'estats finits (FSM)
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

Assignació de la pantalla de set segments
Assignació de la pantalla de set segments
Assignació de la pantalla de set segments
Assignació de la pantalla de set segments
Assignació de la pantalla de set segments
Assignació 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

Creació del comparador
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

Configuració d’un temporitzador
Configuració d’un temporitzador
Configuració d’un temporitzador
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

Disseny del generador de números aleatoris
Disseny del 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

Creació d’un convertidor
Creació d’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

Posar-ho tot al mòdul de joc
Posar-ho tot al mòdul de joc
Posar-ho tot al mòdul de joc
Posar-ho tot al mòdul de joc
Posar-ho tot al mòdul de joc
Posar-ho tot al mòdul de joc
Posar-ho tot al mòdul de joc
Posar-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: