Está en la página 1de 21

Mquinas de estado con VHDL

Ing. Diego Barragn Guerrero


http://www.decom.fee.unicamp.br/~
diego/

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 Mealy.
Si la mquina depende solo
del estado actual, se
denomina mquina de Moore.

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 conectan 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 muestra a
continuacin.
Reset
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
Combinacio
nal.

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.

x=
a

D=
1

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

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.

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
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 que la salida
cambiar solo cuando la
seal de reloj cambie (salida
sncrona).

Ejemplo: generador de funciones.

0
1

1
0

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


Editorial Continental.

También podría gustarte