Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
En primer lugar, para esta tarea 5 se proponía realizar un diseño con temática libre en el que se
utilizara todo lo aprendido a lo largo de las diferentes sesiones de prácticas. En este caso, se ha
realizado un diseño de una versión del popular juego “Simon” pero sin que realice sonidos. El
juego trata de que se muestre un patrón de colores, el cual habrá que memorizar, para
posteriormente pulsar en la pantalla en los respectivos colores.
Dentro de este sencillo diseño, se utilizan los siguientes conocimientos de las diferentes
prácticas:
En este caso, se puede ver el diagrama de la secuencia de la combinación uno. Siendo esta
replicada para cada una de las combinaciones, ya que parten del mismo funcionamiento, pero
cada combinación con sus propias coordenadas objetivo marcadas por el patrón definido para
cada una.
Para ello, se explicará la distribución de las coordenadas de la pantalla y los patrones de cada
una de las secuencias:
Como se puede ver, las coordenadas de la pantalla vienen dadas en formato Hexadecimal,
pudiendo ser desde 0 hasta FFF. Lo cual en formato decimal sería desde 0 hasta 4095, quedando
de la siguiente manera:
Una vez mostrados las coordenadas y los distintos objetivos a pulsar, volviendo al diagrama de
bloques de la máquina de estados de las diferentes secuencias, cada vez que se acierte en las
coordenadas correspondientes al estado en el que se encuentre se avanzará al siguiente y se
activará uno de los LEDs por cada acierto, hasta completar el patrón y tener los 6 LEDs activados.
Una vez suceda esto, se realizará un tiempo de espera para que el usuario le de tiempo a poder
ver los LEDs encendidos y saber que ha completado la secuencia. Una vez finalizado dicho
tiempo de espera, se activará la señal de fin de secuencia para que se inicie la siguiente.
A continuación, se puede ver el código de la máquina de estados de las secuencias:
Dado que ya se ha realizado la explicación del funcionamiento general de la máquina de estados
antes, ahora se procederá a dar pequeños matices en relación al código de programación.
En primer lugar, se definen los estados para cada una de las secuencias. A continuación, se
define el contador para la espera que se realizará al finalizar la secuencia, el cual tiene de módulo
150 millones de cuentas para que la espera sea de 3 segundos (dado que el reloj de la placa es
de 50 MHz). En cuanto a la lógica del cambio de estado siguiente, en primer lugar, se recibe el
número de patrón a seguir por parte de la máquina de estado de las combinaciones, y en función
de su valor se irá al primer estado de la secuencia correspondiente. Dado que el diagrama de
bloques hacía referencia a la primera secuencia, se ha añadido el código correspondiente a dicha
secuencia. Ahí se puede ver como si el valor de coordenadas recibido por el convertidor ADC se
encuentra dentro de dichos rangos de valores, se habrá acertado el patrón y se procederá al
siguiente objetivo. Por último, la lógica de cambio de salidas se puede ver que es la misma que
la vista en el diagrama de bloques de secuencias visto anteriormente.
Por último, añadir una captura de una simulación realizada mediante TestBench de dicho
módulo, en el que se puede visualizar el funcionamiento de la máquina de estados al introducirle
las coordenadas manualmente mediante dicho TestBench (el módulo del contador en este caso
es de 4 cuentas):
En este caso, se puede ver el diagrama de la secuencia del patrón uno. Siendo esta replicada
para cada uno de los patrones, ya que parten del mismo funcionamiento, pero cada patrón con
sus propias coordenadas objetivo.
En primer lugar, se reciba el número de patrón que se va a seguir, en este caso el 0 hace
referencia al primer patrón. Por lo que se procederá a enviar los valores de a y b, y se habilitará
el funcionamiento del contador mediante el cual se establecerá el tiempo que se muestrea cada
uno de los objetivos del patrón. Las variables a y b, hacen referencia al número de columna y de
fila, respectivamente, que deberá de resaltarse en verde por parte del módulo de visualización
de la pantalla. Finalmente, una vez finalizado el patrón, se activará la señal fin_patron para
informar al módulo de las secuencias de que puede continuar con la secuencia y la búsqueda de
acertar las coordenadas por parte del usuario.
Además, añadir que para la habilitación del funcionamiento de este módulo (ENABLE) estará
vinculado con la variable ena_patron del módulo de la máquina de estado de secuencias. De
esta manera, únicamente funcionará el módulo cuando sea necesario el muestreo del patrón.
Estando siempre preparado en la etapa inicial para su correcto comienzo de etapas.
Por último, añadir una captura de una simulación realizada mediante TestBench de dicho
módulo (el módulo del contador en este caso es de 4 cuentas):
Visualización en pantalla
Para la visualización de la pantalla, la disposición de los colores y las dimensiones serán las
siguientes:
Se puede ver, que simplemente se asignan las entradas, salidas y wires correspondientes a cada
uno de los módulos tal y como se disponía en el esquema mostrado al comienzo.