Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Julio de 2014
Centro C.U.D.A.R.
+
Mquinas de Estado Finitas
Las mquinas de estado pueden ser:
SNCRONAS: Necesitan de la intervencin de un pulso de reloj. Si la entrada participa
tambin en la salida se denomina Mquina de estado de Mealy, y si no participa se
denomina de Moore.
ASNCRONAS: No necesitan de la intervencin de un pulso de reloj. Estos circuitos
evolucionan cuando cambian las entradas.
Una mquina de estado finita o FSM representa un sistema como un conjunto de
estados, transiciones entre estos estados, que dependen de las entradas,
conjuntamente con las salidas y las entradas asociadas.
De modo tal que una mquina de estado es una representacin, de un circuito
secuencial particular.
Cualquier circuito con memoria puede ser considerado como una FSM. An una
computadora puede ser considerada como una gran FSM.
El diseo de una FSM involucra lo siguiente:
Definicin de estados.
Definicin de transicin entre estados (dependientes de las entradas de la
mquina).
Optimizacin/minimizacin.
Definicin de trminos
Diagrama de estado: ilustra la forma y funcionamiento de la mquina de estado.
Usualmente se dibuja como un diagrama de burbujas y flechas.
Estado: un conjunto identificable y nico de valores medidos en diversos puntos de
un sistema digital.
Ramificacin: El cambio del estado presente al estado siguiente.
Estado siguiente: es el estado hacia el cual la mquina de estado realiza la siguiente
transicin, determinada por las entradas presentes cuando el dispositivo es
secuenciado por un clock.
Mquina de Moore: es una mquina de estado que determina sus salidas solamente
dependiendo de los estados presentes de la mquina.
Mquina de Mealy: es una mquina de estado que determina sus salidas
dependiendo de los estados presentes de la mquina y de las entradas.
Julio de 2014
Centro C.U.D.A.R.
Estado 1
Estado 2
Estado 3
Estado 4
Diagrama 1
En un diagrama correcto, todas las posibles transiciones sern visibles incluyendo
lazos realimentados en el mismo estado. En el diagrama 1 se puede deducir que si el
estado presente es el Estado 2, el estado previo es el Estado 1 o el Estado 2 y el
prximo estado debe ser 2, 3 o 4.
Mquina de Mealy: las salidas pueden ser determinadas por el estado presente
solamente, o por el estado presente y las entradas presentes, es decir las salidas se
producen dependiendo de cmo la mquina realiza una transicin de un estado a
otro.
Julio de 2014
Centro C.U.D.A.R.
MODELO DE MQUINAS
Diagrama de Flujo
Mquina de Moore
Entradas
Mquina de Mealy
Entradas
Lgica
combinacional
Para determinar
estado
Lgica
combinacional
Para determinar
estado
Estado presente
Banco de registro
Estado presente
Banco de registro
Lgica
combinacional
Para determinar la
salida basada en el
estado presente
Lgica
combinacional
Para determinar la
salida basada en el
estado presente y
las entradas
presentes
Salidas
Salidas
Julio de 2014
Centro C.U.D.A.R.
Julio de 2014
Centro C.U.D.A.R.
Estado 1
Condicin de salida
que resulta de estar
en un estado presente
en particular
a, b
q, r
Condicin de entrada
que debe existir con el
fin de que se ejecuten
esas transiciones desde
el Estado 1
i, j
Estado 2
x, y
Transicin
Condicin 1
Estado 1
Salida 1
Transicin
Condicin 2
Estado 2
Salida 2
Julio de 2014
Centro C.U.D.A.R.
Condicin de salida
que resulta de estar
en un estado presente
en particular
Estado 1
a, b
q,r
i, j
x,y
Condicin de entrada
que debe existir para
ejecutar estas
transiciones desde el
Estado 1
Estado 2
Transicin Condicin 1 /
Salida 1
Estado 2
Estado 1
Transicin Condicin 2 /
Salida 2
Julio de 2014
Centro C.U.D.A.R.
1
S0/0
0
S1 / 0
S2 / 1
Reset
0
Significado de los estados:
S0: No se encuentra ningn elemento de la secuencia.
S1: aparece un 1.
S2 Se detecta la secuencia 10.
0/0
1/0
1/0
S1
S0
Reset
0/1
Julio de 2014
Centro C.U.D.A.R.
Julio de 2014
Centro C.U.D.A.R.
Julio de 2014
Centro C.U.D.A.R.
Moore.
Mealy.
FSM Moore:
FSM Mealy:
10
Julio de 2014
Centro C.U.D.A.R.
Una FSM puede ser fcilmente descripta por medio del PROCESS.
Las herramientas de sntesis interpretan una la descripcin de unas FSM si
se siguen ciertas reglas:
- Las transiciones de estados deben ser descriptas en un PROCESS sensible
solamente a las seales de CLOCK y RESET asncrono.
- Las salidas descriptas como sentencias concurrentes fuera del PROCESS.
0
1
S0/ 0
S2/1
S1 / 0
1
0
11
Julio de 2014
Centro C.U.D.A.R.
0/0
1/0
1/0
S0
S1
reset
0/1
12
Julio de 2014
Centro C.U.D.A.R.
Reset
w=0
A z =0
w= 1
B z =0
w= 0
w= 1
w=0
C z = 1
w=1
Next state
Present
state w 0 w 1
=
=
A
A
B
B
A
C
C
A
C
Output
z
0
0
1
13
Julio de 2014
Centro C.U.D.A.R.
Cdigo VHDL
USE ieee.std_logic_1164.all;
ENTITY simple IS
PORT ( Clock, Resetn, w : IN STD_LOGIC ;
z: OUT STD_LOGIC ) ;
END simple;
ARCHITECTURE Behavior OF simple IS
TYPE State_type IS (A, B, C) ;
SIGNAL y: State_type;
BEGIN
PROCESS (Resetn, Clock)
BEGIN
IF Resetn = '0' THEN
y <= A;
ELSIF (Clock'EVENT AND Clock = '1') THEN
CASE y IS
WHEN A =>
IF w = '0' THEN
y <= A;
ELSE
y <= B;
END IF;
WHEN B =>
IF w = '0' THEN
y <= A;
ELSE
y <= C;
END IF;
WHEN C =>
IF w = '0' THEN
y <= A;
ELSE
y <= C;
END IF;
END CASE;
END IF;
END PROCESS;
z <= '1' WHEN y = C ELSE '0';
END Behavior;
14
Julio de 2014
Centro C.U.D.A.R.
Cdigo alternativo
ARCHITECTURE Behavior OF simple IS
TYPE State_type IS (A, B, C);
SIGNAL y_present, y_next: State_type;
BEGIN
PROCESS (w, y_present)
BEGIN
CASE y_present IS
WHEN A =>
IF w = '0' THEN
y_next <= A;
ELSE
y_next <= B;
END IF;
WHEN B =>
IF w = '0' THEN
y_next <= A;
ELSE
y_next <= C;
END IF;
WHEN C =>
IF w = '0' THEN
y_next <= A;
ELSE
y_next <= C;
END IF;
END CASE;
END PROCESS;
PROCESS (Clock, Resetn)
BEGIN
IF Resetn = '0' THEN
y_present <= A;
ELSIF (Clock'EVENT AND Clock = '1') THEN
y_present <= y_next;
END IF;
END PROCESS;
z <= '1' WHEN y_present = C ELSE '0';
END Behavior;
15
Julio de 2014
Centro C.U.D.A.R.
Res
w = 1 z = 0
w= 0 z = 0
w= 1 z = 1
B
w = 0 z = 0
Present
state
Next state
Output
w = 0
w = 1
w = 0
w = 1
16
Julio de 2014
Centro C.U.D.A.R.
Cdigo VHDL
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mealy IS
PORT (Clock, Resetn, w: IN STD_LOGIC;
z: OUT STD_LOGIC) ;
END mealy;
ARCHITECTURE Behavior OF mealy IS
TYPE State_type IS (A, B);
SIGNAL y: State_type;
BEGIN
PROCESS (Resetn, Clock)
BEGIN
IF Resetn = '0' THEN
y <= A;
ELSIF (Clock'EVENT AND Clock = '1') THEN
CASE y IS
WHEN A =>
IF w = '0' THEN y <= A;
ELSE y <= B;
END IF;
WHEN B =>
IF w = '0' THEN y <= A;
ELSE y <= B;
END IF;
END CASE;
END IF;
END PROCESS;
with y select
z <= w when B,
z <= 0 when others;
END Behavior;
17