Está en la página 1de 21

Máquinas de estado con VHDL

Ing. Diego Barragán Guerrero


http://www.decom.fee.unicamp.br/~
diego/
Introducción
La sección combinacional,
tiene dos entradas: pr_state
(estado presente) y la señal
de entrada externa
(input).Además posee dos
salidas: nx_state (estado
siguiente) y salida externa.
La sección secuencial tiene
tres entradas: clock, reset y
nx_state y una salida:
pr_state.
Si la salida de la máquina
depende no solo del estado
presente sino también de la
entrada actual, se denomina
máquina de estado de Mealy.
Si la máquina depende solo
del estado actual, se
denomina máquina de Moore.
Estilo de diseño 1
Diseño de la sección inferior (secuencial)
Los FF están en la sección inferior, de tal forma que el reloj y
reset se conectan a ella.
Siendo la sección inferior secuencial, es necesario un Proceso,
en el cual se puede usar cualquier sentencia secuencial.
Una plantilla típica de diseño de la sección inferior se muestra a
continuación.
Reset
asíncrono
Registro
síncrono
Estilo de diseño 1
Diseño de la sección
superior
(Combinacional)
El código contiene dos
cosas:
a) Asignación a la salida;
b) Establecimiento de
estado siguiente.
Observar que no hay
asignación a señal hecha
en la transición de otra
señal, de modo que no se
infieren FF.
Estilo de diseño 1: Plantilla
Tipo enumerado:
contiene todos
los estados.

Sección
secuencial.

Sección
Combinacio
nal.
Ejemplo 1: contador BCD.
Un contador es un ejemplo de una máquina de Moore, ya que la
salida depende solo del estado presente.
Ejemplo 2: FSM simple.
Ejemplo 2: FSM simple.

D=
x= 1 D=
a 0
Estilo de diseño 2
En el primer estilo de diseño, solo el estado presente (estado_pr) es
almacenado.
En este caso, si se usa una máquina de Mealy (la salida depende de la
entrada actual), la salida cambia cuando la entrada cambia (salida
asíncrona).
En muchas aplicaciones, las señales deben ser síncronas, de modo que la
salida debe actualizarse solo cuando existe un pulso de reloj.
Para hacer una máquina de Mealy síncrona, la salida deber ser
almacenada también.

El estilo de diseño 2, usa una señal adicional para contener el


valor de la salida (en la sección superior), pero solo pasa este
valor a la salida cuando un evento de reloj ocurre (sección
Estilo de diseño 2: Plantilla
El estilo de diseño 2, usa una
señal adicional para contener el
valor de la salida (en la sección
superior), pero solo pasa este
valor a la salida cuando un
evento de reloj ocurre (sección
inferior).

La asignación
de la salida
solo se ejecuta
al pulso de
reloj.
Estilo de diseño 2: FSM simple.
Estilo de diseño 2: FSM simple.

Cuando una señal es almacenada, su valor permanece estático


entre dos flancos de reloj. Por lo tanto, si la entrada (a o b) cambia
durante este intervalo, el cambio no se observará por el circuito.
Ejemplo: Detector de secuencia.
El circuito tiene como entrada una cadena serial de bits y su
salida será 1 cuando la secuencia "111" ocurra. En caso de
solapamiento, esto es, una secuencia 0111110 suceda, la salida
debe mantenerse activa por tres ciclos consecutivos de reloj.
Ejemplo: Detector de secuencia.

Solapamie
nto, la
salida
sigue
siendo 1.
Ejemplo: Detector de secuencia (TB).
In: …
111…

Out: …
001…

Notar que la salida no depende de la entrada actual.


Todas las asignaciones a q son incondicionales (esto
es, no dependen de d). Por lo tanto, la salida es
automáticamente sincronizada.
Ejemplo: controlador de semáforo.

Se asume que la
frecuencia de reloj es
60Hz (tomada de la
misma fuente de poder).
Ejemplo: controlador de semáforo.
Ejemplo: controlador de semáforo.

Para visualizar la salida de forma óptima, se ha


modificado el valor de todas las contantes a 3,
excepto el valor de timeTest, que vale 1. Se
espera que el sistema cambie de estado cada tres
ciclos de reloj cuando está en modo de operación
regular, o cada ciclo de reloj si está en mode Test.
Ejemplo: generador de funciones.
Se diseñará dos máquinas
de estado, una que operará
exclusivamente en la
transición positiva del reloj y
otra que operará
exclusivamente en el flanco
negativo. Esto generará la
señal alternativa out 1 y
out2 . Estas señales serán
tratadas con la operación
and para obtener la señal
deseada.
Notar que el circuito no
posee entradas externas
(excepto la señal de reloj),
de modo que la salida
cambiará solo cuando la
señal de reloj cambie (salida
síncrona).
Ejemplo: generador de funciones.

0 1 1
1 0 1
Referencias:
Volnei A. Pedroni. 2004. Circuit Design with
VHDL. MIT Press, Cambridge, MA, USA.

Maxinez, D.G., Alcalá, J. 2003. VHDL: el arte


de programar sistemas digitales. Compañía
Editorial Continental.

También podría gustarte