Está en la página 1de 20

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

Unidad 8
Diseo Basado en
Mquinas de Estado Finitas (F.S.M.)
Andres.Iborra@upct.es
Juan.Suardiaz@upct.es
Mayo 2003

TEMARIO

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

CONTENIDO
Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.).
8.1. Introduccin.
8.1.1. Concepto de estado.
8.1.2. Mquinas tipo Mealy y Moore.
8.1.3. Tablas y Diagramas de Estados.
8.2. Anlisis de mquinas de estados.
8.2.1. Estructura de una mquina de estados.
8.2.2. Lgica de salida.
8.2.3. Ecuaciones caractersticas.
8.3. Diseo de Mquinas de Estados.
8.3.1. Asignacin de estados.
8.3.2. Minimizacin de estados.
8.3.3. Ecuaciones de Transicin.
8.3.4. Ecuaciones de Excitacin.
8.4. Descripcin VHDL de mquinas de estados.
8.5. Ejemplo de aplicacin: Diseo del circuito de control de llenado
de un depsito de lquidos.

OBJETIVOS ESPECFICOS

Repasar los conceptos de estado y variable de estado.


Distinguir entre comportamientos tipo Mealy y Moore.
Conocer la estructura de diseo de una mquina de estados.
Ser capaz de deducir las ecuaciones caractersticas de un sistema secuencial.
Poder minimizar un diagrama de estados.
Ser capaz de obtener un diagrama de estados partiendo de unas especificaciones
dadas.
Poder afrontar con xito el diseo de una mquina de estados.
Aprender a modelar estos componentes en VHDL.

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

8.1 INTRODUCCIN
Concepto de estado.
En la unidad anterior se han definido los circuitos secuenciales como aquellos que
recuerdan lo que les ha sucedido en instantes de tiempo anteriores y son capaces de
alterar su comportamiento futuro en base a esta informacin.
Un contador es un claro ejemplo de este tipo de circuitos, ya
Q
que es capaz de recordar su valor actual (estado actual) a fin
CLK
de sumarle 1 para evolucionar al siguiente valor (estado). El
valor actual del contador se define como su estado actual, el
cual a su vez sirve para determinar cmo va evolucionar para llegar al estado
siguiente.
De forma general, se puede considerar que un circuito secuencial ha de memorizar una
serie de situaciones, de forma que su comportamiento puede considerarse como la
evolucin de una situacin a otra (o incluso a la misma). Cada una de estas situaciones
ser lo que se denominar un estado y el cambio de una situacin a otra ser lo que
se denominar transicin. Por ejemplo, si el contador actualmente presenta el valor
de cuenta 5, en la prxima activacin del reloj deber incrementarse para pasar al
estado 6. Este cambio del estado 5 al estado 6 es lo que se denomina transicin.
Como ya se ha comentado, el circuito secuencial ha de memorizar los posibles
estados. Para ello usar biestables, los cuales constituyen los elementos mnimos de
almacenamiento de informacin. Como un biestable puede codificar dos estados (1
0), para codificar un sistema secuencial que presente E estados, se deber usar un
nmero de biestables (B) tal que 2B E.
En consecuencia:
N Biestables = log2(N estados)
La forma en que se codifica cada posible situacin (estado) segn los posibles valores
que presenten los biestables es lo que se denomina asignacin de estados.
3

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

Mquinas de Mealy y Moore.


En una mquina de estados, cada estado siempre ser funcin del estado anterior y de
las entradas. Sin embargo, atendiendo a la forma en que se generan las salidas es
posible hablar de dos tipos diferentes de mquinas de estado finitas:
Mquina de Moore.

Mquina de Mealy

Estado Siguiente = F(Estado Actual, Entrada)


Salida = G(Estado Actual)

Estado Siguiente = F(Estado Actual, Entrada)


Salida = G(Estado Actual, Entrada)

Tablas y Diagramas de estado.


Para describir el funcionamiento de un circuito secuencial se utilizan las denominadas
tablas de estados (o tablas de excitacin) y unos dibujos denominados diagramas de
estados.
Supongamos el caso de un circuito secuencial que se comporte como un contador de
tres bits, con una seal (Up) que controle si la cuenta se realiza de forma ascendente
(Up=1) o descendente (Up=0).
La tabla de estados consiste en una tabla en la que se muestra en funcin del estado
actual y las combinaciones posibles de las entradas, el prximo estado al que se
deber acudir.
Valor
Est. Actual Ent.
Est. Sig.
Cuenta Q2 Q1 Q0 U Q2* Q1* Q0*
0
1
2
3
4
5
6
7

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
4

1
0
0
0
0
0
0
1
0
1
1
1
1
1
1
0

1
0
0
1
0
1
1
0
1
0
0
1
0
1
1
0

1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

Un diagrama de estados es un dibujo que muestra cada estado de la


mquina y todas las posibles secuencias en las cuales un circuito
puede cambiar de un estado a otro. Los estados se representan con
crculos y las transiciones mediante flechas. Sobre las flechas se
suele usar una notacin del tipo In-1In-1I0/Sm-1Sm-2S 0 para sealar
los valores de las entradas (I n-1In-1I 0) que producen la salida
correspondiente (Sm-1Sm-2S 0).
I2I1

I2I1/S0
E
Notacin Mealy

En el caso de mquinas tipo Moore, en las que las salidas slo


dependen del estado es comn representar la salida dentro del
crculo que representa el estado y usar en las transiciones una
notacin del tipo: In-1In-1I0.

E
S
Notacin Moore

Diagrama de estados del contador Up/Down de tres bits:

U
Ei

E0
E7
1

E1

0
E6

E2

1
E5

1
E3

E4

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

8.2 ANLISIS DE MQUINAS DE ESTADO


Estructura de una mquina de estados.
De manera general, es posible considerar que una mquina de estados est formada
por los siguientes bloques funcionales:
1.- Memoria de estados.
Se trata de un conjunto de n flip-flops que almacenan el estado actual de la
mquina, y tiene 2n estados distintos.
Lo normal es hablar de mquinas de estados sncronas, es decir aqullas en las
que todos los flip-flops se encuentran conectados a una seal de reloj comn. Este
tipo de mquinas ser el que se aborda en la presente unidad.
2.- Lgica del estado siguiente.
Se trata de un bloque combinacional que, en funcin del estado y entradas
actuales, genera una funcin (F) que alimentar a las entradas de los biestables y
har que estos evolucionen hacia el estado siguiente.
3.- Lgica de salida.
Genera las funciones de salida del circuito secuencial.
Lgica de salida.
Anteriormente se ha comentado que la diferencia entre los dos posibles modelos de
mquinas de estado se encuentra en cmo son generadas las salidas.
Mquina de Mealy: S=G(Entradas, Estado Actual)

Entradas

LGICA
DE
ESTADO
SIGUIENTE
(F)

Estado
Actual
MEMORIA
DE ESTADO
Excitacin

RESET
CLK
6

LGICA
DE
SALIDA
(G)

Salidas

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

Mquina de Moore: S=G(Estado Actual)


Entradas

LGICA
DE
ESTADO
SIGUIENTE
(F)

Estado
Actual
MEMORIA
DE ESTADO

LGICA
DE
SALIDA
(G)

Salidas

Excitacin
RESET
CLK

En el diseo de circuitos de alta velocidad, con frecuencia es necesario asegurar que


las salidas de la mquina de estados se encuentren disponibles tan pronto como sea
posible y que no cambien durante cada periodo de reloj. Una forma de conseguir este
comportamiento es codificar el estado de forma que las mismas variables de estado
sirvan como salida, lo que conduce a mquinas tipo Moore.
En consecuencia, cuando se trabaja en diseos digitales de alta velocidad, las
mquinas de Moore presentan mejores resultados. Sin embargo, las mquinas tipo
Mealy suelen producir soluciones de menor rea al presentar menos estados que sus
equivalentes tipo Moore. En consecuencia, es tarea del diseador elegir la mejor
opcin, en funcin de las necesidades de su diseo.
Ecuacin caracterstica.
El comportamiento funcional de un biestable puede describirse formalmente mediante
una expresin booleana, denominada ecuacin caracterstica, que especifica el
siguiente estado del biestable (Q*) como una funcin de su estado actual (Q) y de las
entradas actuales.
Es importante resaltar que la ecuacin caracterstica no describe el comportamiento de
temporizacin detallado del dispositivo (activo por nivel, flanco), sino solamente la
respuesta funcional a las entradas de control.
7

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

BIESTABLE D

BIESTABLE T

D
0
1

T
0
1

Q*
0
1

Q* = D
Con Enable (EN):
Q* = EN D + EN Q

Q* = T Q + T Q

BIESTABLE S-R
S
0
0
1
1

Q*
Q

R
0
1
0
1

BIESTABLE J-K

Q*
Q
0
1
No Valido

J
0
0
1
1

Q* = S + R Q

K
0
1
0
1

Q*
Q
0
1
Q

Q* = J Q + K Q

En conclusin, si se desea analizar un circuito del que se conoce que implementa una
mquina de estados, conviene seguir los siguientes pasos bsicos:
1. Determinar las funciones del estado siguiente (F) y salida (G) en base a los
elementos constitutivos que forman el circuito y sus conexiones.
2. Utilizar las funciones F y G para construir una tabla de estado/salida que
especifique completamente el estado siguiente y la salida del circuito para toda
posible combinacin de estado siguiente y salida.
3. Dibujar un diagrama de estado que presente la informacin de los pasos
anteriores de forma grfica.

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

8.3 DISEO DE MQUINAS DE ESTADO.


El proceso de diseo de una mquina de estados finita, a partir de una especificacin o
descripcin en palabras puede resumirse en los siguientes pasos:
1. Construir una tabla de estado/salida que corresponde a la especificacin,
empleando nombres de mnemnicos para los estados. (Tambin es posible
comenzar con un diagrama de estados).
2. (Opcional) Minimizar el nmero de estados en la tabla de estado/salida o
diagrama de estados.
3. Elegir un conjunto de variables de estado y asignar combinaciones de estadovariable a los estados nombrados (proceso de asignacin de estados).
4. Crear la denominada tabla de transiciones. Esto es, sustituir las combinaciones
de estado-variable en la tabla de estado/salida para crear una tabla de
transicin/salida que muestre la siguiente combinacin variable-estado y salida
para cada combinacin de estado/entrada actual.
5. Elegir un tipo de flip-flop para la memoria de estado.
6. Construir una tabla de excitacin, que muestre los valores de excitacin
requeridos para obtener el siguiente estado deseado para cada combinacin de
estado/entradas.
7. Obtener las ecuaciones de excitacin a partir de la tabla de excitacin.
8. Obtener las ecuaciones de salida a partir de la tabla de transiciones.
9. Implementar de las ecuaciones en un circuito fsico.
Minimizacin de estados.
En ocasiones, la especificacin conduce a un diagrama de estados inicial que
presenta muchos estados. Bajo unas determinadas condiciones es posible
efectuar una reduccin de estados gracias a que ciertos caminos de la mquina
de estados pueden eliminarse porque su comportamiento en funcin de las
entradas y salidas se halla duplicado por algn otro camino equivalente.
De forma general, es posible decir que dos estados tendrn un comportamiento
equivalente (y por lo tanto podrn resumirse en uno slo) si para todas sus
combinaciones posibles de entradas, sus salidas son las mismas y evolucionan
hacia los mismos estados o hacia estados que tambin son equivalentes.
9

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

El algoritmo para reducir los estados podra resumirse en los siguientes pasos:
1. En primer lugar se agrupan los estados que presentan las mismas salidas
(caso de mquinas de Moore) o las mismas salidas en las transiciones
(caso de mquinas de Mealy). Estos determinarn un conjunto de estados
potencialmente equivalentes, ya que los estados no pueden ser
equivalentes si sus salidas difieren.
2. A continuacin se examinan las transiciones, a fin de comprobar que para
cada posible combinacin conducen al mismo estado (o a dos estados que
tambin son equivalentes). En caso de ocurrir esto, ambos estados son
equivalentes y pueden reemplazarse por un nuevo estado que englobe a
ambos. Entonces se cambian todas las transiciones de forma que se
actualicen todas las evoluciones hacia este nuevo estado y se repite el
proceso hasta que no puedan unirse ms estados.
Ejemplo de minimizacin:

Diagrama de estados original

Diagrama de estados minimizado


(E0 E2)

10

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

Asignacin de estados.
El nmero de puertas que se necesitarn para implementar una mquina de
estados se halla fuertemente relacionado con la manera en que se produce la
codificacin de sus estados.
a) Metodologa de asignacin heurstica.
Una estrategia heurstica habitual para la asignacin de estados es aquella
que trata de minimizar el nmero de bits que han de cambiar a lo largo de las
transiciones.
Consideremos una mquina de estados que presenta 5 estados (S0S4) y
se duda entre cualquiera de las siguientes codificacin de estados:

Estado
S0
S1
S2
S3
S4

Asignacin 1
Q2 Q1 Q0
0
0
0
1
0
1
1
1
1
0
1
0
0
1
1

Estado
S0
S1
S2
S3
S4

Asignacin 2
Q2 Q1 Q0
0
0
0
0
0
1
0
1
0
0
1
1
1
1
1

En este caso, se analizaran todas las transiciones que presenta la mquina


de estados y calcularamos para cada una de ellas el nmero de bits que han
de cambiar de un estado al siguiente. Supongamos que la mquina de
estado disponible presenta las transiciones resumidas en la tabla adjunta:

Transicin
S0 -> S1
S0 -> S2
S1 -> S3
S2 -> S3
S3 -> S4
S4 -> S1

11

Bits que cambian


Asignacin 1 Asignacin 2
2
1
3
1
3
1
2
1
1
1
2
2
13 bits
7 bits

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

En consecuencia, la asignacin 2 es la ptima ya que minimiza el nmero de


bits que cambiarn a lo largo de la evolucin de los estados.
El principal problema de este mtodo es que hay que efectuar todas las
combinaciones posibles y analizar cada una de ellas. Lo habitual es que los
entornos de desarrollo presenten herramientas que realicen esta asignacin
de forma automtica.
Otro aspecto importante en la asignacin de estados es la codificacin de los
estados iniciales. Conviene elegir una que sea posible implementar
fcilmente en la inicializacin de los biestables. La ms habitual suele ser
todo a 0 (RESET) o todo a 1 (SET).
b) Codificacin One-hot.
Este tipo de codificacin suele presentar buenos resultados cuando se
realizan diseos que deben trabajar a elevadas frecuencias de reloj.
La idea fundamental consiste en realizar una asignacin que en vez de usar
N bits para codificar 2N estados, se usen tantos bits como estados presenta el
diseo.
De esta forma, una mquina con S estados, estar implementada usando S
flip-flops y no el log 2(S). Adems cada estado tendr una asignacin en la
que un nico bit tendr el valor de 1 y el resto 0.
As, una mquina de estados que presentara 4 posibles estados de
funcionamiento presentara la siguiente codificacin:
Asignacin Tradicional
(2 flip-flops)
Estado
Q2 Q1
S0
0
0
S1
0
1
S2
1
0
S3
1
1

Asignacin One hot


Estado Q3 Q2 Q1
S0
0
0
0
S1
0
0
1
S2
0
1
0
S3
1
0
0

Q0
1
0
0
0

La ventaja de la codificacin One-hot radica en el hecho de conseguir


simplificar la lgica de generacin del estado siguiente y de las salidas,
conduciendo a diseos que pueden trabajar a una frecuencia de funcionamiento
superior.
12

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

Ecuaciones de transicin.
Permiten obtener la lgica combinacional de salida.

UP

CLK

Est. Actual
Est. Siguiente
Salidas
Q1
Q0
Up
Q1*
Q0*
S1
S0
0
0
0
1
1
0
0
0
0
0
1
0
1
0
0
0
1
0
0
0
0
1
1
0
1
1
1
0
0
1
1
0
0
0
1
1
0
2
1
0
1
1
1
1
0
1
1
0
1
0
1
1
3
1
1
1
0
0
1
1
Se minimizara por Karnaugh S1 = Q1 y S0 = Q0 (Mquina de Moore)

Cuenta

Ecuaciones de excitacin.
Generan la lgica combinacional del siguiente estado. Suponiendo biestables T:
Est. Actual
Est. Siguiente
Excitacin
Q1
Q0
Up
Q1*
Q0*
T1
T0
0
0
0
1
1
1
1
0
0
0
1
0
1
0
1
0
1
0
0
0
0
1
1
0
1
1
1
0
1
1
1
0
0
0
1
1
1
2
1
0
1
1
1
0
1
1
1
0
1
0
0
1
3
1
1
1
0
0
1
1
Minimizando por Karnaugh se obtendra: T0 = 1
T1 = QoUp + Qo Up = Qo xnor Up.
Cuenta

13

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

8.4 DESCRIPCIN VHDL DE MQUINAS DE ESTADOS.


VHDL permite realizar descripciones logartmicas a alto nivel de mquinas de estado.
De esta forma, el diseador se evita tareas como generar la tabla de transicin de
estados, o la obtencin de las ecuaciones de excitacin, basadas en el tipo de
biestable seleccionado.
Una mquina de estados se puede describir en VHDL de varias formas.
1. En primer lugar, en la seccin de declaraciones de la arquitectura, se define un
tipo enumerado en el que se asignan identificadores a cada estado. Suele ser
recomendable utilizar identificadores ilustrativos para los estados. La herramienta
de sntesis ser la encargada de codificar estos estados.
Aqu tambin suele ser
-- Esto se colocara en la zona de declaraciones de la arquitectura.
TYPE TipoEstados IS (Esperar, E1, E2, E3);
SIGNAL tEstadoActual, tEstadoSiguiente: TipoEstados;
2. En lo que se refiere a la descripcin funcional de la mquina de estados, tanto
para las mquinas de Moore como para las de Mealy conviene separar la parte
secuencial de la combinacional, de manera que las asignaciones de salida se
efecten con sentencias de asignacin concurrente; la asignacin del siguiente
estado con un proceso y una sentencia case y finalmente modelar los biestables
usados en otro proceso separado.
En conclusin, dentro de la arquitectura que describe la mquina de estados
conviene que aparezcan tres zonas claramente diferenciadas:
c)
a)
b)

a) Una zona dedicada a un proceso, el cual modela la lgica combinacional


encargada de la generacin del estado siguiente.
b) Una zona dedicada a un proceso que modela la lgica secuencial
encargada de implementar la memoria de estado.
c) Una zona concurrente en la que se modela la lgica combinacional
encargada de implementar las ecuaciones de salida.
14

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

Ejemplo de descripcin VHDL de una


Mquina de estados:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MaquinaEstados IS
PORT ( sEntrada1, sEntrada2, sEntrada3: IN
std_logic; --Seales de entrada.
CLK: IN std_logic;
--Seal de reloj.
(No olvidar)
sResetL: IN std_logic; --Seal de inicializacin
sSalida1, sSalida2: OUT std_logic);
--Salidas
END MaquinaEstados;
ARCHITECTURE MaquinaEstadosArch OF
MaquinaEstados IS
--Declaracin del tipo asociado a los estados.
TYPE TipoEstados IS (EInicio, EDetect1, EAbort,
EDetect2, EFin);
--Seales auxiliares para la codificacin del
--estado actual y siguiente.
SIGNAL tEstadoActual, tEstadoSiguiente: TipoEstados;
BEGIN
-- Proceso dedicado a la lgica de estado:
LOGICA_ESTADO: PROCESS(tEstadoActual, sEntrada1,
sEntrada2, sEntrada3)
BEGIN
CASE (tEstadoActual) IS
WHEN EInicio =>
IF (sEntrada1 = 1) THEN tEstadoSiguiente <= EAbort;
ELSIF (sEntrada2 = 0 AND sEntrada3 = 1) THEN
tEstadoSiguiente <= EDetect2;
ELSE tEstadoSiguiente <= EInicio;
END IF;
WHEN EDetect1 =>
IF (sEntrada1 = 1) THEN tEstadoSiguiente <= EFin;
ELSE tEstadoSiguiente <= EDetect1;
END IF;
WHEN EAbort =>

15

IF (sEntrada2 = 1) THEN tEstadoSiguiente <= Edetect2;


ELSE tEstadoSiguiente <= EDetect1;
END IF;
WHEN EDetect2 =>
IF (sEntrada2 = 1) THEN tEstadoSiguiente <= EFin;
ELSE tEstadoSiguiente <= EAbort;
END IF;
WHEN EFin =>
IF (sEntrada1 = 0 and sEntrada2 = 0 and sEntrada3 =
0) THEN tEstadoSiguiente <= EInicio;
ELSE tEstadoSiguiente <= EFin;
END IF;
END CASE;
END PROCESS LOGICA_ESTADO;
-- Proceso dedicado a la Memoria de Estado
MEM_ESTADO: PROCESS(CLK, sResetL,
tEstadoSiguiente)
BEGIN
--Inicializacin con RESET_L
IF (sResetL =0) THEN tEstadoSiguiente<=Einicio;
ELSIF(rising_edge(CLK)) THEN tEstadoActual <=
tEstadoSiguiente;
END IF;
END PROCESS MEM_ESTADO;
--Zona concurrente dedicada a modelar la
--lgica de salida.
--Si salidas = f(est actual, entradas)=> Mquina. MEALY
--Si salidas = f(est actual)=> Mquina. MOORE
sSalida1 <= 1 WHEN tEstadoActual = EInicio ELSE
1 WHEN tEstadoActual = EDetect1 ELSE
0;
sSalida2 <= 1 WHEN tEstadoActual = EAbort ELSE
1 WHEN tEstadoActual = EFin ELSE
0;
END MaquinaEstadosArch;

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

Ej1: Describa en VHDL el diagrama de estados de la figura adjunta:


RESET

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MaquinaEstados IS
PORT ( sEntrada: IN std_logic; --Seal de entrada.
CLK: IN std_logic;
--Seal de reloj.
sResetH: IN std_logic; --Seal de inicializacin
sSalida: OUT std_logic); --Salida
END MaquinaEstados;
ARCHITECTURE MaquinaEstadosArch OF
MaquinaEstados IS
--Declaracin del tipo asociado a los estados.
TYPE TipoEstados IS (E0, E1, E2, E3, E4);
--Seales auxiliares para la codificacin del
--estado actual y siguiente.
SIGNAL tEstadoActual, tEstadoSiguiente: TipoEstados;
BEGIN
-- Proceso dedicado a la lgica de estado:
LOGICA_ESTADO: PROCESS(tEstadoActual, sEntrada)
BEGIN
CASE (tEstadoActual) IS
WHEN E0 =>
IF (sEntrada = 1) THEN tEstadoSiguiente <= E1;
ELSE tEstadoSiguiente <= E4;
END IF;
WHEN E1 =>
IF (sEntrada = 1) THEN tEstadoSiguiente <= E2;
ELSE tEstadoSiguiente <= E4;
END IF;

16

WHEN E2 =>
IF (sEntrada = 1) THEN tEstadoSiguiente <= E3;
ELSE tEstadoSiguiente <= E4;
END IF;
WHEN E3 => tEstadoSiguiente <= E3;
WHEN E4 =>
IF (sEntrada = 1) THEN tEstadoSiguiente <= E1;
ELSE tEstadoSiguiente <= E4;
END IF;
END CASE;
END PROCESS LOGICA_ESTADO;
-- Proceso dedicado a la Memoria de Estado
MEM_ESTADO: PROCESS(CLK, sResetH,
tEstadoSiguiente)
BEGIN
--Inicializacin con RESET_H
IF (sResetH =1) THEN tEstadoSiguiente<=E0;
ELSIF(rising_edge(CLK)) THEN tEstadoActual <=
tEstadoSiguiente;
END IF;
END PROCESS MEM_ESTADO;
--Zona concurrente dedicada a modelar la
--lgica de salida.
sSalida <= 1 WHEN (tEstadoActual = E2 and
sEntrada = 1) ELSE
0;
-- sSalida = f(Estado, entrada) => Mquina de Mealy.
END MaquinaEstadosArch;

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

8.5 EJEMPLO DE APLICACIN: DISEO DEL CIRCUITO DE CONTROL


DE LLENADO DE UN DEPSITO DE LQUIDOS.
Un tanque de agua abierto por la parte superior dispone de tres sensores de deteccin
de llenado (A, B, C) que determinan 4 posibles niveles de llenado (VACIO, NORMAL,
LLENO, ALARMA). El nivel del tanque se controla mediante dos vlvulas (E, entrada y
S, salida).
Se pide disear un circuito de control que opere de la siguiente forma:
En condiciones de llenado normal, las vlvulas E y S se encuentran abiertas.
Si el lquido llega al nivel de vaco, se cierra la vlvula de salida y se mantiene
abierta la de entrada.
Si el lquido llega al nivel de lleno, se cierra la vlvula de entrada y se mantiene
abierta la de salida.
Si por cualquier circunstancia, por ejemplo lluvia, se llegara al nivel de alarma, se
deber cerrar la vlvula de entrada y abrir la de salida. Esta situacin se
mantendr hasta que el tanque llegue al estado de vacio.
Datos adicionales:
El funcionamiento de los sensores digitales y las vlvulas E y S se encuentra
resumido en las tablas adjuntas:
E
Sensores de deteccin
A
B C Significado
0
0
0
VACIO
0
0
1
NORMAL
0
1
0
NO VLIDO
0
1
1
LLENO
1
0
0
NO VLIDO
1
0
1
NO VLIDO
1
1
0
NO VLIDO
1
1
1
ALARMA

Vlvulas E y S:
1 Abierta
0 Cerrada

A
B

17

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

Desde el punto de vista de nuestro diseo, es posible considerarlo como una caja
negra que presentar el siguiente aspecto:
Entradas: Tres entradas asociadas para cada uno de los sensores de deteccin
de nivel ms una seal de reloj (CLK) y otra de inicializacin (ResetH),
asociadas a la parte secuencial.
Salidas: Dos (E y S), encargadas de controlar las vlvulas de llenado y vaciado.
A
B
C
CLK

MQUINA
DE
ESTADOS

ResetH
a) Diseo de Mquina de estados tipo MOORE:

ABC
E
ES
Equivalentes

18

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

ELSIF (sA = 0 and sB=1 and sC = 1) THEN


tEstadoSiguiente <= LLENO;
END IF;
WHEN LLENO =>
ELSIF (sA = 0 and sB=0 and sC = 1) THEN
tEstadoSiguiente <= NORMAL;
ELSIF (sA = 0 and sB=1 and sC = 1) THEN
tEstadoSiguiente <= LLENO;
ELSIF (sA = 1 and sB=1 and sC = 1) THEN
tEstadoSiguiente <= ALARMA;
END IF;
WHEN ALARMA =>
IF (sA = 0 and sB=0 and sC = 0) THEN tEstadoSiguiente
<= VACIO;
ELSE tEstadoSiguiente <= ALARMA;
END IF;
END CASE;
END PROCESS LOGICA_ESTADO;

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MaquinaEstadosMoore IS
PORT ( sA, sB, sC: IN std_logic; --Seal de entrada.
CLK: IN std_logic;
--Seal de reloj.
sResetH: IN std_logic; --Seal de inicializacin
sE, sS: OUT std_logic); --Salida
END MaquinaEstadosMoore;
ARCHITECTURE MaquinaEstadosMooreArch OF
MaquinaEstadosMoore IS
--Declaracin del tipo asociado a los estados.
TYPE TipoEstados IS (VACIO, NORMAL, LLENO,
ALARMA);
--Seales auxiliares para la codificacin del
--estado actual y siguiente.
SIGNAL tEstadoActual, tEstadoSiguiente: TipoEstados;
BEGIN
-- Proceso dedicado a la lgica de estado:
LOGICA_ESTADO: PROCESS(tEstadoActual, sEntrada)
BEGIN
CASE (tEstadoActual) IS
WHEN VACIO =>
IF (sA = 0 and sB=0 and sC = 0) THEN tEstadoSiguiente
<= VACIO;
ELSIF (sA = 0 and sB=0 and sC = 1) THEN
tEstadoSiguiente <= NORMAL;
ELSIF (sA = 0 and sB=1 and sC = 1) THEN
tEstadoSiguiente <= LLENO;
ELSIF (sA = 1 and sB=1 and sC = 1) THEN
tEstadoSiguiente <= ALARMA;
END IF;
WHEN NORMAL =>
IF (sA = 0 and sB=0 and sC = 0) THEN tEstadoSiguiente
<= VACIO;
ELSIF (sA = 0 and sB=0 and sC = 1) THEN
tEstadoSiguiente <= NORMAL;

19

-- Proceso dedicado a la Memoria de Estado


MEM_ESTADO: PROCESS(CLK, sResetH, tEstadoSiguiente)
BEGIN
--Inicializacin con RESET_H
IF (sResetH =1) THEN tEstadoSiguiente<=E0;
ELSIF(rising_edge(CLK)) THEN tEstadoActual <=
tEstadoSiguiente;
END IF;
END PROCESS MEM_ESTADO;
--Zona concurrente dedicada a modelar la
--lgica de salida.
sS <= 0 WHEN (tEstadoActual = VACIO)
ELSE 1;
sE <= 1 WHEN (tEstadoActual = NORMAL or
tEstadoActual = VACIO)
ELSE 0;
-- sSalida = f(Estado) => Mquina de M OORE.
END MaquinaEstadosMooreArch;

Diseo de Sistemas Electrnicos-DB4

Unidad 8. Diseo Basado en Mquinas de Estado Finitas (F.S.M.)

b) Diseo de Mquina de estados tipo MEALY:


ABC/ES
Equivalentes

Diagrama Mealy simplificado

Diagrama Mealy original

WHEN ALARMA =>


IF (sA = 0 and sB=0 and sC = 0) THEN tEstadoSiguiente
<= NO_ALARMA;
ELSE tEstadoSiguiente <= ALARMA;
END IF;
END CASE;
END PROCESS LOGICA_ESTADO;

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MaquinaEstadosMealy IS
PORT ( sA, sB, sC: IN std_logic; --Seal de entrada.
CLK: IN std_logic;
--Seal de reloj.
sResetH: IN std_logic; --Seal de inicializacin
sE, sS: OUT std_logic); --Salida
END MaquinaEstadosM ealy;

-- Proceso dedicado a la Memoria de Estado


MEM_ESTADO: PROCESS(CLK, sResetH, tEstadoSiguiente)
BEGIN
--Inicializacin con RESET_H
IF (sResetH =1) THEN tEstadoSiguiente<=E0;
ELSIF(rising_edge(CLK)) THEN tEstadoActual <=
tEstadoSiguiente;
END IF;
END PROCESS MEM_ESTADO;

ARCHITECTURE MaquinaEstadosM ealyArch OF


MaquinaEstadosMealy IS
--Declaracin del tipo asociado a los estados.
TYPE TipoEstados IS (NO_ALARMA, ALARMA);
--Seales auxiliares para la codificacin del
--estado actual y siguiente.
SIGNAL tEstadoActual, tEstadoSiguiente: TipoEstados;
BEGIN
-- Proceso dedicado a la lgica de estado:
LOGICA_ESTADO: PROCESS(tEstadoActual, sEntrada)
BEGIN
CASE (tEstadoActual) IS
WHEN NO_ALARMA =>
IF (sA = 1 and sB=1 and sC = 1) THEN tEstadoSiguiente
<= ALARMA;
ELSE tEstadoSiguiente <= NO_ALARMA;
END IF;

20

--Zona concurrente dedicada a modelar la


--lgica de salida.
sS <= 1 WHEN (sC = 1)
ELSE 0;
sE <= 1 WHEN (tEstadoActual = NO_ALARMA and sA = 0 and
sB = 0)
ELSE 0;
-- sSalida = f(Estado, Entradas) => Mquina de M EALY.
END MaquinaEstadosM ealyArch;

También podría gustarte