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
Combinacional.
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=1
x=a D=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
inferior).
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.

Solapamiento,
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