Sei sulla pagina 1di 20

Mquinas de estado con VHDL

Ing. Diego Barragn Guerrero http://www.matpic.com

Introduccin
La seccin

combinacional, tiene dos entradas: pr_state (estado presente) y la seal de entrada externa (input).Adems posee dos salidas: nx_state (estado siguiente) y salida externa. La seccin secuencial tiene tres entradas: clock, reset y nx_state y una salida: pr_state. Si la salida de la mquina depende no solo del estado presente sino tambin de la entrada actual, se denomina mquina de estado de

Estilo de diseo 1
Diseo de la seccin inferior (secuencial) Los FF estn en la seccin inferior, de tal forma que el reloj

y reset se conecta a ella. Siendo la seccin inferior secuencial, es necesario un Proceso, en el cual se puede usar cualquier sentencia secuencial. Una plantilla tpica de diseo de la seccin inferior se Reset muestra a continuacin.
asncrono Registro sncrono

Estilo de diseo 1
Diseo de la seccin

superior (Combinacional) El cdigo contiene dos cosas:


a) Asignacin a la salida; b) Establecimiento de estado

siguiente.
Observar que no hay

asignacin a seal hecha en la transicin de otra seal, de modo que no se infieren FF.

Estilo de diseo 1: Plantilla


Tipo enumerado: contiene todos los estados.

Seccin secuencial.

Seccin Combinacion al.

Ejemplo 1: contador BCD.


Un contador es un ejemplo de una mquina 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 diseo 2
En el primer estilo de diseo, solo el estado presente

(estado_pr) es almacenado. En este caso, si se usa una mquina de Mealy (la salida depende de la entrada actual), la salida cambia cuando la entrada cambia (salida asncrona). En muchas aplicaciones, las seales deben ser sncronas, de modo que la salida debe actualizarse solo cuando existe un pulso de reloj. Para hacer una mquina de Mealy sncrona, la salida deber ser almacenada tambin.

El estilo de diseo 2, usa una seal adicional para contener el valor de la salida (en la seccin superior), pero solo pasa este valor a la salida cuando un evento de reloj ocurre (seccin inferior).

Estilo de diseo 2: Plantilla


El estilo de diseo 2, usa una seal adicional para contener el valor de la salida (en la seccin superior), pero solo pasa este valor a la salida cuando un evento de reloj ocurre (seccin inferior).

La asignacin de la salida solo se ejecuta al pulso de reloj.

Estilo de diseo 2: FSM simple.

Estilo de diseo 2: FSM simple.

Cuando una seal es almacenada, su valor permanece

esttico 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.

Solapamien to, 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 automticamente sincronizada.

Ejemplo: controlador de semforo.

Se asume que la frecuencia de reloj es 60Hz (tomada de la misma fuente de poder).

Ejemplo: controlador de semforo.

Ejemplo: controlador de semforo.

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 operacin regular, o cada ciclo de reloj si est en mode Test.

Ejemplo: generador de funciones.


Se disear dos

mquinas de estado, una que operar exclusivamente en la transicin positiva del reloj y otra que operar exclusivamente en el flanco negativo. Esto generar la seal alternativa out 1 y out2 . Estas seales sern tratadas con la operacin and para obtener la seal deseada. Notar que el circuito no posee entradas externas (excepto la seal de reloj), de modo

Ejemplo: generador de funciones.

0 1

1 0

1 1