Vous êtes sur la page 1sur 23

ITC

DGEST

SES

SEP

DISEO DIGITAL CON VHDL Profesor: David Flores Hernndez


Unidad 2 Mquinas de estados finitos

Alumno: Snchez Medina Gustavo

Ingeniera en electrnica Quinto semestre

H.H. Cuautla Mor. 26 de octubre de 2012

2.1 Modelo de Mealy y Modelo de Moore


Las mquinas de Mealy y Moore son circuitos sncronos. En un circuito sncrono ideal, cada cambio en los diferentes niveles lgicos es simultneo. Estas transiciones se realizan despus de un cambio de nivel de una seal llamada reloj. Idealmente la entrada a cada elemento de almacenamiento alcanza su valor final antes de que la siguiente seal de reloj ocurra, por lo tanto el comportamiento de un circuito se puede predecir exactamente. Se requiere se cierto retardo para cada operacin lgica, por lo que existe una mxima rapidez en el que cada sistema sncrono puede responder. El anlisis de un diagrama de tiempos puede darnos esta rapidez. Una mquina de Mealy es una mquina de estados finita, donde las salidas en instantes anteriores estn expresadas por un conjunto de variables de estado, de manera que las salidas actuales dependen tanto de las entradas como de las variables de estado las cuales son guardadas en dispositivos de memoria. Esto significa que en el diagrama de estados se incluye una seal de salida para cada arista de transicin. Por ejemplo, en la trayectoria de un estado 1 a un estado 2, si la entrada es cero la salida puede ser uno, y se debe poner sobre la arista la etiqueta 0/1. En el modelo de Mealy Una mquina de Mealy es una tupla de 6 (S, S0, , , T, G), que consiste de: Un conjunto finito de estados ( S ) Un estado inicial S0 el cual es un elemento de (S) Un conjunto finito llamado alfabeto de entrada ( ) Un conjunto finito llamado alfabeto de salida ( ) Una funcin de transicin (T : S S) Una funcin de salida (G : S )

En contraste, la salida de una mquina de estado finito Moore (mquina de Moore), depende solo del estado actual y no depende de la entrada actual. El modelo consiste en dos bloques de lgica combinacional mas un bloque de memoria o La lgica de estado siguiente que defina la manera de generar las variables de estado a partir de las entradas. o La lgica de salida que define la manera en que se obtienen las salidas del circuito a partir de las variables de estado Una mquina de Moore se define como una tupla (secuencia finita) de 5{S, , , T, G} que consiste de: Un conjunto finito de estados (S) Un conjunto finito llamado alfabeto de entrada () Un conjunto finito llamado alfabeto de salida () Una funcin de transicin que dirige a cada estado y a una entrada al siguiente estado. Una funcin de salida que dirige a cada estado al alfabeto de salida.

El nmero de estados en una mquina de Moore es mayor o igual al nmero de estados a su correspondiente mquina de Mealy.

2.2 Representacin de los modelos de Mealy y Moore en diagramas de estado y diagrama ASM

Representacin en diagramas de estado Para describir el funcionamiento de un circuito secuencial se utilizan las denominadas tablas de estados (o tablas de excitacin) y dibujos denominados diagramas de estados. Los fabricantes de los circuitos integrados usan una tabla de funcionamiento para describir la operacin de un circuito de una manera compacta, dicha tabla de funcionamiento no es otra cosa que una tabla de verdad como la usada para circuitos combinacionales, en la cual se ha introducido la informacin del tiempo que en el caso de circuitos secuenciales se vuelve esencial. Enseguida se ilustrar el uso de esta tabla para describir de manera compacta el funcionamiento del FF-SR (Flip-Flop S-R).

En donde se ha utilizado la siguiente notacin: tn = instante en el cual se aplican las entradas. tn+1 = instante despus que el circuito responde. Qo = salida Q en el instante tn Q+ = salida en el instante tn+1

Diagrama de estado clsico La misma informacin especificada por la tabla de funcionamiento puede ser representada de varias maneras diferentes, por ejemplo, el siguiente diagrama es una alternativa grfica que tiene la particularidad de enfatizar el nmero y nombre de los estados del circuito, por ello se le llama diagrama de estado o de estado clsico. As, para el FF-SR se tiene el siguiente diagrama:

Obsrvese que el diagrama de estado clsico incluye informacin separada de la siguiente manera: - Nombres simblicos dados a los estados (opcional) - Nombres y valores que las variables de estado toman en cada estado. - Nombres y valores de las variables de entrada - Transiciones posibles de un estado a otro y condiciones (sobre las variables de entrada) para producir dicha transicin. - En algunas variantes de diagrama de estado se incluye tambin informacin sobre las variables de salida que no se muestran en el ejemplo, dado que para el FF-SR la variable de estado Q coincide con la variable de salida.

En el diagrama de estados se 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 para sealar los valores de las entradas que producen la salida correspondiente .

La mquina Moore se distingue por ser una mquina en la cual dentro de cada crculo adems de especificarse el estado de la mquina se especifican la salida o las salidas que se producen en dicho estado. Las salidas no son necesariamente iguales al estado de la mquina.

A continuacin se muestra un diagrama tipo Moore.

La mquina Mealy se distingue por ser una mquina en la cual si la mquina est en cierto estado, entonces al aplicarle cierta entrada transicionar a otro estado produciendo cierta salida como consecuencia de la transicin. La notacin utilizada en los vrtices tiene una forma como 1/0, en donde la primera palabra binaria (1) nos indica la entrada dada a la mquina y la segunda palabra binaria (0) nos indica la salida producida al llevarse a cabo la transicin de un estado al siguiente. A continuacin se muestra un diagrama tipo Mealy

Supongamos el caso de un circuito secuencial que se comporte como un contador de tres bits, con una seal que controle si la cuenta se realiza de forma ascendente o descendente. Las tablas de estados consisten en unas tablas en la que se muestra en funcin del estado actual y las combinaciones posibles de las entradas, el prximo estado al que deber acudir.

Tabla de excitacin La informacin que guarda el diagrama de estado clsico se puede representar en forma de tabla colocando todas las transiciones posibles de un estado a otro como variables independientes de la tabla y las entradas como variables dependientes, es decir, se genera un rengln de la tabla por cada transicin y anotando los valores necesarios de las entradas para producir dicha transicin. As, para el ejemplo del FF-SR se obtiene:

Tabla de Estado o Tabla Caracterstica Esta es otra manera de organizar en forma de tabla el comportamiento del circuito secuencial, Se trata bsicamente de la misma tabla de funcionamiento ya descrita, salvo que ahora no se introduce ninguna variable de manera que el estado presente (Q0) se trata como si fuera otra entrada. Para el ejemplo del FF-SR tendremos:

Representacin en diagramas ASM Una herramienta alternativa para la representacin, anlisis y diseo de circuitos secuenciales son los Diagramas de Flujo de Estado, tambin conocidos como diagramas ASM (Algorithmic State Machine), los cuales no son ms que una manera diferente de dibujar un diagrama de estado clsico, con smbolos muy similares a los usados en los Diagramas de Flujo usados para especificar programas de computadora como los que se describen a continuacin

Smbolos usados Bloque de estado: El diagrama deber tener un bloque de estado por cada posible estado presente del circuito. En este bloque se especifica una lista de las salidas que dependen de este estado (Salidas tipo Moore) y los valores que toman en dicho estado. Tambin se deber especificar a un lado del bloque los valores que toman las variables de estado.

Bloque de decisin: Los bloques de decisin son los que establecen las condiciones para que ocurra un cambio de estado, es decir, definen las trayectorias posibles y las condiciones para pasar de un estado a otro. Dentro del bloque se debe especificar la expresin lgica que decida cual es la trayectoria a seguir y en cada salida del bloque se deber especificar el valor de la expresin para seguir por dicha salida.

Bloque de salida: Este bloque siempre viene de un bloque de decisin para especificar salidas cuyo valor depende del estado y de las entradas de dicho bloque de decisin (Salidas tipo Mealy). Se especifica dentro de este bloque la lista de salidas que dependen del estado y de las entradas as como los valores que toman dichas salidas.

Una carta ASM consiste de uno o ms bloques ASM interconectados de una manera consistente como se observa en la siguiente figura. En dicha figura se aprecian cuatro estados denominados A, B, C y D y dos entradas: X y Y. La transicin de un bloque a otro se realiza a travs de lneas denominadas caminos de enlace. En las cartas ASM, a cada bloque le corresponde una unidad de tiempo y en este lapso se ejecutan todos los bloques de decisin y de salidas condicionales que estn asociados con el mismo estado.

Para describir de manera general los atributos de una carta ASM, consideremos como ejemplo el circuito de la siguiente figura:

Como puede observarse, la carta ASM est formada por cuatro estados, identificados como A, B, C y D, cada uno con un cdigo binario respectivo; as, el estado A tiene asignado el cdigo 00 y el estado B, el cdigo 01. Tambin puede verse en el estado A que existe una seal de salida denominada Inicio, mientras que en el estado D la seal de salida se define como Apagado. La carta tiene dos seales de entrada identificadas por las variables X y Y.

Esta carta puede escribirse mediante la siguiente tabla. Como se puede ver, presenta las columnas Estado presenta, Seales de entrada, Estado futuro y Seales de salidas.

En la lnea 1 de la tabla nos encontramos en el estado A representado por el cdigo , si la seal del sensor es igual a uno se pasa al estado B cdigo en el tiempo Es importante remarcar que mientras nos encontremos en el estado A la salida activa ser Inicio. En la lnea 2 de nuevo se encuentra el estado A; sin embargo la seal de entrada X adopta el valor de cero por lo cual se transfiere al estado C. Debe notarse que la seal de salida an es Inicio, dado que se trata del estado A; por otro lado la condicin de no importa en el sensor de la seal se debe a que para pasar del estado A al B o del estado A al C, el valor de entrada Y no es relevante. El mismo anlisis lo puede hacer el lector con relativa facilidad interpretando el comportamiento de la carta ASM de la lnea 3 a la 6. Ejemplo: Observe la carta ASM de la figura y elabore una tabla que describa su comportamiento.

Solucin La tabla correspondiente a la carta ASM se muestra a continuacin. Observe en la lnea 4 cmo es que al estar en el estado B se pasa al estado A sin importar el valor de las seales de entrada P y R.

Diagramas ASM en comparacin con las mquinas de estado Es relativamente fcil pasar de una carta ASM a un diagrama de estados y viceversa, por ejemplo, consideremos la carta de la siguiente figura (a).

Como puede observarse, dicha carta est formada por cuatro estados (A, B, C y D), tiene dos seales de entrada (X y Y) y dos salidas (SALl, SAL2). Note cmo estas seales de salida permanecen activas slo mientras el sistema se encuentra en el estado presente (estructura de Moore). En la figura (b) se muestra la mquina de estados correspondiente. Segn se aprecia, existen tambin cuatro estados y la unin entre ellos se presenta a travs de sus lneas de entrada (X y Y). La negacin de la variable indica la condicin cuando las

entradas son igual a cero o a uno, como se ve en la figura de abajo. Observe tambin en la figura (b) que las seales de salida se denotan mediante la notacin .

a) Negacin de las variables para indicar la condicin de entrada (0 o 1). b) Notacin de las seales de salida

Hasta este momento no se ha especificado el uso de las salidas condicionadas en la carta ASM; stas se usan en la estructura Mealy cuando la salida depende no slo del estado en el que se encuentra, sino tambin de sus entradas. Como ejemplo considere la siguiente mquina secuencial (a):

a) Estructura Moore. b) Estructura Mealy en carta ASM.

Como puede observar, cuando la mquina se encuentra en el estado , si la seal de entrada vale se transfiere al estado y durante este enlace se activa la seal de salida Igual sucede cuando se halla en el estado y se dirige hacia el estado . Observe que la seal de salida que se activa es La carta ASM correspondiente a esta mquina de es-tado se muestra en la figura b.

Ejemplo: Convierta la siguiente mquina de Mealy en una carta ASM.

Solucin: La carta ASM correspondiente se muestra en la siguiente figura.

2.3 Diseo de mquinas de estados finitos tipo Mealy y tipo Moore utilizando VHDL
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. 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. Esto se colocara en la zona de declaraciones de la arquitectura. TYPE Tipo EstadosIS (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:

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.

Autmata de Mealy y autmata de Moore Segn la dependencia que se prefiera de la salida frente a las entradas del circuito, un circuito secuencial puede implementarse utilizando la construccin tipo autmata de Mealy o autmata de Moore. Cuando la salida depende de las entradas (como en la figura a) la salida cambia tanto ante cambios de estado como ante cambios de las entradas. Si el circuito se implementa utilizando un autmata de Moore (figura b) las salidas cambiarn slo se cuando se produzca un cambio estado.

a)

b)

El diagrama de estados (tabla de estados) resultante refleja el tipo de autmata que se implementa. Por ejemplo, el grafo y tabla de estados de la figura 8a corresponden a un autmata de Mealy, mientras que los de la figura 8b representan al autmata de Moore.

a)

b)

En un autmata de Mealy la salida est directamente relacionada con la entrada, por lo que todo cambio producido en la entrada del circuito repercutir en la salida. El grafo de la figura a) se lee: partiendo del estado si, si la entrada es x el autmata va al estado sj y la salida es a (x/a); si la entrada es y permanece en elmismo estado y su salida es b (y/b). Por su lado, el autmata de Moore tiene asociada la salida al estado, por lo que slo una transicin de estado provocar un cambio en la salida. En la figura b), partiendo del estado sl y siendo la entrada x el autmata evoluciona al estado y, siendo la salida b. Sin embargo, si la entrada es y el autmata permanece en el mismo estado si y su salida es a.

Aunque ambas mquinas representen al mismo circuito, la dependencia directa de la salida con la entrada que existe en el autmata de Mealy propicia la introduccin de azares en la salida del circuito. En la mquina de Moore, debido a que la salida slo depende directamente del estado, la salida slo cambiar cuando exista un cambio de estado, no producindose en ningn caso azar alguno. Por ello, el autmata de Moore asegura una fiabilidad mayor frente al autmata de Mealy en la propagacin de azares. El ejemplo 1 muestra la descripcin VHDL de un autmata de Moore. La descripcin del autmata de Mealy es parecida, slo que el proceso de salida es funcin, adems del estado, de las entradas del circuito.

Ejemplo 1: Implementacin con dos procesos. Para un primer ejemplo de modelado VHDL se ha elegido el autmata simple de la figura que (se observa fcilmente) corresponde a un contador de 4 estados con seal de terminacin de conteo. La tabla mostrada es su tabla de estados. En este caso, la salida slo es dependiente del estado en el que se encuentra el autmata

En este ejemplo el proceso bloque_estado (bloque combinacional de entrada ms bloque de retardo) contiene las transiciones que se realizan entre estados, funcin de su variable de entrada x. Es el proceso que define las transiciones entre estados. El bloque_salida realiza el clculo de la seal terminal de conteo. El modelo del diagrama de estados (considerando seal de reset sncrona) queda de la forma siguiente:
Entity ex1_2proc is port (x, ck, reset: in bit; y: out bit); end; architecture me of ex1_2proc is type estados is (s0, s1, s2, s3); signal actual, proximo: estados; begin futur_estado: process (actual, x) begin case actual is when s0 => y <= '0';

if x='1' then proximo <= s1; else proximo<=actual; end if; when s1 => y <= '0'; if x='1' then proximo <= s2; else proximo<=actual; end if; when s2 => y <= '0'; if x='1' then proximo <= s3; else proximo<=actual; end if; when s3 => y <= '1'; if x='1' then proximo <= s0; else proximo<=actual; end if; end case; end process; cambio_estado: process begin wait until ck'event and ck='1'; if reset='1' then actual<=s0; else actual<=proximo; end if; end process;

La siguiente figura muestra su diagrama temporal:

El ejemplo 2 muestra la descripcin de un circuito de Mealy.

El ejemplo 2 corresponde a un autmata contador up/down controlado por las seales de entrada e y x. La seal e es una seal de enable que mantiene el estado cuando vale 0 y permite el conteo si vale 1. La seal x es el controlador de conteo up cuando vale 0 y down cuando toma el valor 1. La salida toma el valor 1 cuando el estado es s3 (en conteo up) mientras que en conteo down toma el valor 2 cuando se llega al estado s0.

El modelo VHDL correspondiente al ejemplo puede escribirse de acuerdo a:


Entity Mealy is port (x, enable, ck, reset: in bit; y: out bit_vector(1 downto 0)); end; architecture me of Mealy is type estados is (s0, s1, s2, s3); signal estado: estados; begin Proceso_estado: process (reset, ck) begin if reset='1' then estado <= s0; elsif ck'event and ck='1' then if enable = '1' then case estado is when s0 => if x='1' then estado <= s1; else estado <= s3; end if; when s1 => if x='1' then estado <= s2; else estado <= s0; end if; when s2 => if x='1' then estado <= s3; else estado <= s1; end if; when s3 => if x='1' then estado <= s0; else estado <= s2; end if; end case; end if; end if; end process; Proceso_salida: process (estado, x) begin case estado is when s0 => if x='1' then y <= "10"; else y <= "00"; end if; when s3 => if x='0' then y <= "01"; else y <= "00"; end if; when others => y <= "00"; end case; end process; end;

La siguiente figura muestra un resultado de simulacin del autmata de Mealy. Se comprueba como, a diferencia del autmata de Moore, la salida es dependiente del calor de la entrada.

A continuacin se muestra como implementar un diagrama de estados tipo Moore en VHDL

Para la implementacin en VHDL. Primero definimos un tipo enumerado, formado por los nombres de los estados y se declara una seal de este tipo:
type estado is (a,b,c,d,e); signal state:estado;

A continuacin creamos un proceso combinacional en el que se determina el siguiente estado (state) y la salida "z" en funcin del estado actual (estado).

El programa quedara al final de la siguiente manera:


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity moorefsm is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; w : in STD_LOGIC; z : out STD_LOGIC); end moorefsm; architecture Behavioral of moorefsm is type estado is (a,b,c,d,e); signal state:estado; begin process (reset, clk) begin if reset='0' then state <=a; elsif (clk'event and clk = '1') then case (state) is when a => if w = '0' then state <= b; else state <= d; end if; when b => if w = '0' then state <= c; else state <= d; end if; when c => if w = '0' then state <= c; else state <= d; end if; when d => if w = '0' then state <= b; else state <= e; end if; when e => if w = '0' then state <= b; else state <= e; end if; end case; end if; end process; z <= '1' when (state = c or state = e) else '0'; end Behavioral;

A continuacin se muestra como implementar un diagrama de estados tipo Mealy en VHDL

Para la implementacin en VHDL. Primero definimos un tipo enumerado, formado por los nombres de los estados y se declara una seal de este tipo:
type estado is (a,b,c); signal state: estado;

El programa quedara al final de la siguiente manera:


library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity mealyfs is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; w : in STD_LOGIC; z : out STD_LOGIC); end mealyfs; architecture Behavioral of mealyfs is type estado is (a,b,c); signal state: estado; begin process(clk,reset) begin if (reset = '0') then state <= a; elsif (clk'event and clk = '1') then case (state) is when a => if w = '0' then

state <= else state <= end if; when b => if w = '0' state <= else state <= end if; when c => if w = '0' state <= else state <= end if; end case; end if; end process;

b; c; then b; c; then b; c;

process (state, w) begin case state is when a =>z <= '0'; when b =>z <= w; when c =>z <= not w; end case; end process; end Behavioral;

Bibliografa
http://lc.fie.umich.mx/~jrincon/apuntes%20circuitos%20secuenciales.pdf

http://yaqui.mxl.uabc.mx/~aglay/MealyMoore.pdf http://es.scribd.com/doc/58655100/Maquinas-de-Estados-Mealy-Vhdl http://www.cannic.uab.es/docencia/DSD/Apunts/MEF.pdf http://www.openboxer.260mb.com/asignaturas/dsd.php David G. Martnez, VHDL: El Arte de Programar Sistemas Digitales, primera edicin, Ed. CECSA, 2002, pgs. 153-162.

Vous aimerez peut-être aussi