Está en la página 1de 14

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE QUERETARO


INGENERÍA ELECTRÓNICA

INSTITUTO TECNOLÓGICO DE QUERÉTARO

Práctica # 5

“Máquina de estados”

Diseño Digital con VHDL

Profesor: Víctor Juan Arce Farfán

Alumno:
 Jesús Alejandro Ramírez Tovar

Carrera:
Ingeniería Electrónica.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Introducción
En el presente trabajo abordaremos el tema de maquinas de estados, concretamente
máquina de Mealy, ya que el ejercicio hace referencia a una secuencia de contraseña,
si la contraseña es correcta el display marcara una “A” y si la contraseña es incorrecta
marcara “1”, adicional a esto en el display se deberá mostrar el estado en el que esta,
para poder visualizar cada una de las etapas, utilizaremos el reloj interno para dar un
tiempo de visualización y después vaya cambiando mostrando la salida mostrando las
etapas y el resultado final.
Marco teórico
Máquina de estados.
Un ‘estado’ es la condición de una cosa en un tiempo determinado. Algunos que
pueden realizar tareas y que utilizan estados como su núcleo son máquinas de estado.
También son conocidas como máquinas de estado finitas, lo que significa que sabemos
todos los posibles estados de ella. La clave para la máquina de estado es el concepto
del tiempo y la historia. El estado de la máquina es evaluado periódicamente. Cada vez
que es evaluada, un nuevo estado es elegido (el que podría ser el mismo estado
nuevamente) y el resultado es presentado.

Un diagrama de una máquina de estado genérica. El elemento de memoria contiene el


nuevo estado conocido como el estado variable. Cuando la máquina de estado cuenta
con los servicios, el estado variable es actualizado con el valor de la próxima etapa.
Acá la nueva etapa es una función de ambos; el estado actual y algunos inputs. La
nube de la lógica es un sistema que decide cual será el próximo estado, o la
próxima lógica de estado. 

Máquina de estado: Contado.

Un clásico ejemplo de una máquina de estado es un contador. Por ejemplo, un ‘for


loop’. Cada vez que la máquina cambia de estado, ya sea por la línea del reloj o por el
comportamiento de bucle, el estado de la memoria cambia a un nuevo estado
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

igualando el estado anterior más uno. El set finito de estados que puede tener es la
cantidad de números que puede contar.

Partes de la máquina de estado del contador:


 El estado actual es el valor que ha sido contado.
 El resultado es el estado actual.
 La próxima etapa lógica es lo que sea el estado actual + 1.
 No hay entradas. En un diagrama más avanzado, una entrada o una función de
reinicio del contador será establecido como entrada.

Máquina de estados Moore.

Edward Moore escribió un ensayo en 1956 (Gedanken-experiments on Sequential


Machines) y por lo tanto el estilo de la máquina lleva su nombre.  El dice que la salida
depende solo del estado, y el próximo estado es dependiente del estado actual (o
salida), y la entrada.

Máquina de estados Mealy.

George Mealy escribió un ensayo un año antes que Moore, titulado “A Method for
Synthesizing Sequential Circuits”, en el cual entra en profundidad acerca de crear
máquinas de estado desde funciones matemáticas, y describe esas salidas de
máquinas de estado en términos de sus entradas.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Para diagramar la máquina Mealy, la salida está hecha para depender de ambos: el
estado actual y la entrada. Aquí la nube de la lógica de la próxima etapa contiene la
lógica de salida también:

También puede ser dibujado separando la nube en la lógica del próximo estado o
lógica de salida.

Reloj VHDL

En los sistemas digitales el reloj es el elemento que marca el sincronismo entre


todos los elementos del circuito. Cada vez que hay un cambio, normalmente de 0 a
1, del reloj, los elementos de memoria, llamados biestables o flip-flops se cargan
con los nuevos datos calculados durante el periodo transcurrido entre el cambio
anterior y el actual.

Podemos describir por tanto el reloj del sistema como su corazón, donde cada
palpitación hace fluir las señales desde unos biestables hasta su destino, que será
otro biestable. El tiempo que tarde la señal en llegar de su origen a su destino entre
dos pulsaciones de este corazón eléctrico, lo denominamos el camino crítico del
circuito, y es la velocidad máxima a la que puede latir el reloj, ya que si fuera más
rápido las señales no serían estables a las entradas de los flips-flops y el circuito
comenzaría a dar resultados erroneos.
Cada FPGA necesita tener conectada a alguno de sus pines de entrada una señal
de reloj. El reloj desde ese pin se propagará a través de líneas internas a los
recursos de la FPGA utilizados para implementar el diseño.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Esta entrada vendrá habitualmente de un componente externo llamado oscilador,


que genera una señal cuadrada de una frecuencia fija, por ejemplo, 100Mhz o
250Mhz. En muchísimas ocasiones a partir de un reloj de esa frecuencia
deberemos generar uno o varios relojes a otras frecuencias. Y es en este punto
donde comienzan las dudas y los errores.

Divisor de frecuencia

El divisor de frecuencia es un componente simple, cuyo objetivo es reducir la


frecuencia de entrada. Éste se implementa con ayuda del factor de escalamiento y un
contador. Primeramente, el factor de escalamiento es la relación entre la frecuencia de
entrada y la frecuencia de salida deseada:
fentrada
Escala=
fdeseada

Desarrollo

Como se mencionaba en la introducción es una máquina de mealy la cual depende no


solo del pulso de reloj si no también del valor de entrada que se le asigne, en este caso
tenemos 7 estados, 6 estados serán los bits que ocuparemos para la contraseña y 1 un
estado será para mostrar el resultado, uno de los aditamentos a esta práctica es el
reset para volver a intentar introducir la contraseña. Para darle el tiempo al display de
que vaya mostrando el resultado daremos un tiempo de un 1 segundo, esto se lograra
con ayuda del reloj interno, como se quiere una frecuencia de 1Hz y el reloj interno de
la FPGA es de 50MHz se necesita de un contador que realiza la cuenta de 0 hasta 50
Millones.
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

La lógica de programación es la siguiente:

Se asigna una contraseña, en este caso 100111 cada que se vaya avanzando en cada
uno de los estados se leerá la salida observando si es parte de la contraseña, si no es
parte de la contraseña, regresara al primer estado indicando que la contraseña es
errónea cambiando el resultado a “1”, si por el contrario todo es correcto la salida se
mostrara con una “A”. Si se desea volver a introducir la contraseña se deberá de activar
y desactivar el reset el cual será indicado con la letra “r”. Cada estado aparecerá solo 1
segundo.

Pin planner:

Resultados
Mientras la contraseña sea correcta seguirá avanzando hasta llegar a la letra A
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Si se baja el switch para reset regresara al primer estado y mostrara la r en el display.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Si se llega a equivocar el usuario, regresara al primer estado.


TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA
TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE QUERETARO
INGENERÍA ELECTRÓNICA

Conclusión

Uno de los inconvenientes que se tuvo fue que cuando trate de implementar una flag
mostraba que siempre era error, no importada cuanto tiempo le daba para que
analizara el estado del botón, siempre daba error, esto se soluciono con mejor
mandarlo al estado 1.

Referencias bibliográficas

[1] P. (2019, 18 junio). Máquinas de estado. Recuperado 27 de agosto de 2021, de


https://cursos.mcielectronics.cl/2019/06/18/maquinas-de-estado/

[2]C, J. (2020, 20 febrero). Divisor de frecuencia con... Recuperado 27 de marzo de 2021, de


https://www.estadofinito.com/divisor-frecuencia-vhdl/

[3]V. (2019b, febrero 19). Dividir el reloj en una FPGA. Recuperado 27 de marzo de 2021, de
https://vhdl.es/dividir-reloj-en-fpga/

También podría gustarte