vhdl unidad 2 máquinas de estados finitos

30
ITC DGEST SES SEP DISEÑO DIGITAL CON VHDL Profesor: David Flores Hernández Unidad 2 Máquinas de estados finitos Alumno: Sánchez Medina Gustavo

Upload: gustavosm

Post on 24-Oct-2015

421 views

Category:

Documents


13 download

TRANSCRIPT

Page 1: VHDL Unidad 2 Máquinas de estados finitos

ITC DGEST SES SEP

DISEÑO DIGITAL CON VHDL

Profesor: David Flores Hernández

Unidad 2Máquinas de estados finitos

Alumno: Sánchez Medina Gustavo

Ingeniería en electrónica Quinto semestre

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

Page 2: VHDL Unidad 2 Máquinas de estados finitos

2.1 Modelo de Mealy y Modelo de Moore

Las máquinas de Mealy y Moore son circuitos síncronos. En un circuito síncrono ideal, cada cambio en los diferentes niveles lógicos es simultáneo. Estas transiciones se realizan después de un cambio de nivel de una señal llamada reloj. Idealmente la entrada a cada elemento de almacenamiento alcanza su valor final antes de que la siguiente señal de reloj ocurra, por lo tanto el comportamiento de un circuito se puede predecir exactamente. Se requiere se cierto retardo para cada operación lógica, por lo que existe una máxima rapidez en el que cada sistema síncrono puede responder. El análisis de un diagrama de tiempos puede darnos esta rapidez.

Una máquina de Mealy es una máquina de estados finita, donde las salidas en instantes anteriores están 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 señal de salida para cada arista de transición. 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 máquina 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 función de transición (T : S × Σ → S) Una función de salida (G : S × Σ → Λ)

En contraste, la salida de una máquina de estado finito Moore (máquina de Moore), depende solo del estado actual y no depende de la entrada actual.

Page 3: VHDL Unidad 2 Máquinas de estados finitos

El modelo consiste en dos bloques de lógica combinacional mas un bloque de memoria

o La lógica de estado siguiente que defina la manera de generar las variables de estado a partir de las entradas.

o La lógica de salida que define la manera en que se obtienen las salidas del circuito a partir de las variables de estado

Una máquina 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 función de transición (T : S × Σ →S) que dirige a cada estado y a una entrada al

siguiente estado. Una función de salida (G :S → Λ) que dirige a cada estado al alfabeto de salida.

El número de estados en una máquina de Moore es mayor o igual al número de estados a su correspondiente máquina de Mealy.

2.2 Representación de los modelos de Mealy y Moore en diagramas de estado y diagrama ASM

Page 4: VHDL Unidad 2 Máquinas de estados finitos

Representación en diagramas de estado

Para describir el funcionamiento de un circuito secuencial se utilizan las denominadas tablas de estados (o tablas de excitación) y dibujos denominados diagramas de estados.

Los fabricantes de los circuitos integrados usan una tabla de funcionamiento para describir la operación 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 información 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 notación:tn = instante en el cual se aplican las entradas.tn+1 = instante después que el circuito responde.Qo = salida Q en el instante tnQ+ = salida en el instante tn+1

Diagrama de estado clásico

La misma información especificada por la tabla de funcionamiento puede ser representada de varias maneras diferentes, por ejemplo, el siguiente diagrama es una alternativa gráfica que tiene la particularidad de enfatizar el número y nombre de los estados del circuito, por ello se le llama diagrama de estado o de estado clásico. Así, para el FF-SR se tiene el siguiente diagrama:

Page 5: VHDL Unidad 2 Máquinas de estados finitos

Obsérvese que el diagrama de estado clásico incluye información separada de la siguiente manera:

- Nombres simbólicos 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 transición.- En algunas variantes de diagrama de estado se incluye también información 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 máquina y todas las posibles secuencias en las cuales un circuito puede cambiar de un estado a otro. Los estados se representan con círculos y las transiciones mediante flechas. Sobre las flechas se suele usar una notación del tipo (I n−1 , I n−2… I 0/Sm−1 , Sm−2… S0) para señalar los valores de las

entradas (I n−1 , I n−2… I 0) que producen la salida correspondiente (S¿¿m−1 , Sm−2 …S0)¿.

La máquina Moore se distingue por ser una máquina en la cual dentro de cada círculo además de especificarse el estado de la máquina se especifican la salida o las salidas que se producen en dicho estado. Las salidas no son necesariamente iguales al estado de la máquina.

A continuación se muestra un diagrama tipo Moore.

Page 6: VHDL Unidad 2 Máquinas de estados finitos

La máquina Mealy se distingue por ser una máquina en la cual si la máquina está en cierto estado, entonces al aplicarle cierta entrada transicionará a otro estado produciendo cierta salida como consecuencia de la transición. La notación utilizada en los vértices tiene una forma como 1/0, en donde la primera palabra binaria (1) nos indica la entrada dada a la máquina y la segunda palabra binaria (0) nos indica la salida producida al llevarse a cabo la transición de un estado al siguiente.

A continuación se muestra un diagrama tipo Mealy

Supongamos el caso de un circuito secuencial que se comporte como un contador de tres bits, con una señal que controle si la cuenta se realiza de forma ascendente o descendente.

Page 7: VHDL Unidad 2 Máquinas de estados finitos

Las tablas de estados consisten en unas tablas en la que se muestra en función del estado actual y las combinaciones posibles de las entradas, el próximo estado al que deberá acudir.

Tabla de excitación

Page 8: VHDL Unidad 2 Máquinas de estados finitos

La información que guarda el diagrama de estado clásico 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 renglón de la tabla por cada transición y anotando los valores necesarios de las entradas para producir dicha transición. Así, para el ejemplo del FF-SR se obtiene:

Tabla de Estado o Tabla Característica

Esta es otra manera de organizar en forma de tabla el comportamiento del circuito secuencial, Se trata básicamente 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:

Representación en diagramas ASM

Una herramienta alternativa para la representación, análisis y diseño de circuitos secuenciales son los Diagramas de Flujo de Estado, también conocidos como diagramas ASM (Algorithmic State Machine), los cuales no son más que una manera diferente de dibujar un diagrama de estado clásico, con símbolos muy similares a los usados en los Diagramas de Flujo usados para especificar programas de computadora como los que se describen a continuación

Símbolos usados

Page 9: VHDL Unidad 2 Máquinas de estados finitos

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. También se deberá especificar a un lado del bloque los valores que toman las variables de estado.

Bloque de decisión: Los bloques de decisión 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 expresión lógica que decida cual es la trayectoria a seguir y en cada salida del bloque se deberá especificar el valor de la expresión para seguir por dicha salida.

Bloque de salida: Este bloque siempre viene de un bloque de decisión para especificar salidas cuyo valor depende del estado y de las entradas de dicho bloque de decisión (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.

Page 10: VHDL Unidad 2 Máquinas de estados finitos

Una carta ASM consiste de uno o más 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 transición de un bloque a otro se realiza a través de líneas 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 decisión y de salidas condicionales que estén 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:

Page 11: VHDL Unidad 2 Máquinas de estados finitos

Como puede observarse, la carta ASM está formada por cuatro estados, identi-ficados como A, B, C y D, cada uno con un código binario respectivo; así, el es -tado A tiene asignado el código 00 y el estado B, el código 01. También puede verse en el estado A que existe una señal de salida denominada Inicio, mientras que en el estado D la señal de salida se define como Apagado. La carta tiene dos señales 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, Señales de entrada, Estado futuro y Señales de salidas.

En la línea 1 de la tabla nos encontramos en el estado A representado por el código Q 1 ,Q 0=00, si la señal del sensor X es igual a uno (X=i) se pasa al estado B código {01¿ en el tiempo (Ql , Q 0)t+ 1 Es importante remarcar que mientras nos encontremos en el estado A la salida activa será Inicio. En la línea 2 de nuevo se encuentra el estado A; sin embargo la se¬ñal de entrada X adopta el valor de cero X=0 por lo cual se transfiere al estado C. Debe notarse que la señal de salida aún es Inicio, dado que se trata del estado A; por otro lado la condición de no importa en el sensor de la señal Y (Y =¿) , 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 análisis lo puede hacer el lector con relativa facilidad interpretando el comportamiento de la carta ASM de la línea 3 a la 6.

Ejemplo: Observe la carta ASM de la figura y elabore una tabla que describa su comportamiento.

Page 12: VHDL Unidad 2 Máquinas de estados finitos

Solución

La tabla correspondiente a la carta ASM se muestra a continuación. Observe en la línea 4 cómo es que al estar en el estado B se pasa al estado A sin importar el valor de las señales de entrada P y R.

Diagramas ASM en comparación con las máquinas de estado

Es relativamente fácil 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 señales de entrada (X y Y) y dos salidas (SALl, SAL2). Note cómo estas señales de salida permanecen activas sólo mientras el sistema se encuentra en el estado presente (estructura de Moore). En la figura (b) se muestra la máquina de estados correspondiente.

Page 13: VHDL Unidad 2 Máquinas de estados finitos

Según se aprecia, existen también cuatro estados y la unión entre ellos se presenta a través de sus líneas de entrada (X y Y). La negación de la variable indica la condición cuando las entradas son igual a cero o a uno, como se ve en la figura de abajo. Observe también en la figura (b) que las señales de salida se denotan mediante la notación (↑↓).

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 sólo del estado en el que se encuentra, sino también de sus entradas. Como ejemplo considere la siguiente máquina secuencial (a):

Como puede observar, cuando la máquina se encuentra en el estado B, si la señal de entrada vale 0(0/1(Zl)) se transfiere al estado C y durante este enlace se activa la señal de salida Zl=i . Igual sucede cuando se halla en el estado D y se dirige hacia el estado A. Observe

a) Negación de las variables para indicar la condición de entrada (0 o 1). b) Notación de las señales de salida

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

Page 14: VHDL Unidad 2 Máquinas de estados finitos

que la señal de salida que se activa es Z 2(Z 2=1) . La carta ASM correspondiente a esta máquina de es-tado se muestra en la figura b.

Ejemplo: Convierta la siguiente máquina de Mealy en una carta ASM.

Solución:

La carta ASM correspondiente se muestra en la siguiente figura.

Page 15: VHDL Unidad 2 Máquinas de estados finitos

2.3 Diseño de máquinas de estados finitos tipo Mealy y tipo Moore utilizando VHDL

VHDL permite realizar descripciones logarítmicas a alto nivel de máquinas de estado. De esta forma, el diseñador se evita tareas como generar la tabla de transición de estados, o la obtención de las ecuaciones de excitación, basadas en el tipo de biestable seleccionado. Una máquina de estados se puede describir en VHDL de varias formas.1.

1. En primer lugar, en la sección 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 síntesis será la encargada de codificar estos estados. Esto se colocaría 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 descripción funcional de la máquina de estados, tanto para las máquinas de Moore como para las de Mealy conviene separar la parte secuencial de la combinacional, de manera que las asignaciones de salida se efectúen con sentencias de asignación concurrente; la asignación del siguiente estado con un proceso y una sentencia case y finalmente modelar los biestables usados en otro proceso separado. En conclusión, dentro de la arquitectura que describe la máquina de estados conviene que aparezcan tres zonas claramente diferenciadas:

a) Una zona dedicada a un proceso, el cual modela la lógica combinacional encargada de la generación del estado siguiente.

b) Una zona dedicada a un proceso que modela la lógica secuencial encargada de implementar la memoria de estado.

c) Una zona concurrente en la que se modela la lógica combinacional encargada de implementar las ecuaciones de salida.

Page 16: VHDL Unidad 2 Máquinas de estados finitos

Autómata de Mealy y autómata de Moore

Según la dependencia que se prefiera de la salida frente a las entradas del circuito, un circuito secuencial puede implementarse utilizando la construcción tipo autómata de Mealy o autómata 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 autómata de Moore (figura b) las salidas cambiarán sólo se cuando se produzca un cambio estado.

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

En un autómata 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 autómata 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 autómata de Moore tiene asociada la salida al estado, por lo que sólo una transición de estado provocará un cambio en la salida. En la figura b), partiendo del estado

a) b)

a) b)

Page 17: VHDL Unidad 2 Máquinas de estados finitos

sl y siendo la entrada x el autómata evoluciona al estado y, siendo la salida b. Sin embargo, si la entrada es y el autómata permanece en el mismo estado si y su salida es a.

Aunque ambas máquinas representen al mismo circuito, la dependencia directa de la salida con la entrada que existe en el autómata de Mealy propicia la introducción de azares en la salida del circuito. En la máquina de Moore, debido a que la salida sólo depende directamente del estado, la salida sólo cambiará cuando exista un cambio de estado, no produciéndose en ningún caso azar alguno. Por ello, el autómata de Moore asegura una fiabilidad mayor frente al autómata de Mealy en la propagación de azares.

El ejemplo 1 muestra la descripción VHDL de un autómata de Moore. La descripción del autómata de Mealy es parecida, sólo que el proceso de salida es función, además del estado, de las entradas del circuito.

Ejemplo 1: Implementación con dos procesos.

Para un primer ejemplo de modelado VHDL se ha elegido el autómata simple de la figura que (se observa fácilmente) corresponde a un contador de 4 estados con señal de terminación de conteo. La tabla mostrada es su tabla de estados. En este caso, la salida sólo es dependiente del estado en el que se encuentra el autómata

En este ejemplo el proceso bloque_estado (bloque combinacional de entrada más bloque de retardo) contiene las transiciones que se realizan entre estados, función de su variable de entrada x. Es el proceso que define las transiciones entre estados. El bloque_salida realiza el cálculo de la señal terminal de conteo.El modelo del diagrama de estados (considerando señal de reset síncrona) queda de la forma siguiente:

Entity ex1_2proc isport (x, ck, reset: in bit; y: out bit);end;architecture me of ex1_2proc istype estados is (s0, s1, s2, s3);signal actual, proximo: estados;begin

Page 18: VHDL Unidad 2 Máquinas de estados finitos

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: processbegin 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 descripción de un circuito de Mealy.

El ejemplo 2 corresponde a un autómata contador up/down controlado por las señales de entrada e y x. La señal e es una señal de enable que mantiene el estado cuando vale 0 y permite el conteo si vale 1. La señal x es el controlador de conteo up cuando vale 0 y down

Page 19: VHDL Unidad 2 Máquinas de estados finitos

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 isport (x, enable, ck, reset: in bit; y: out bit_vector(1 downto 0));end;

architecture me of Mealy istype 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";

Page 20: VHDL Unidad 2 Máquinas de estados finitos

end case; end process;end;

La siguiente figura muestra un resultado de simulación del autómata de Mealy. Se comprueba como, a diferencia del autómata de Moore, la salida es dependiente del calor de la entrada.

A continuación se muestra como implementar un diagrama de estados tipo Moore en VHDL

Para la implementación en VHDL. Primero definimos un tipo enumerado, formado por los nombres de los estados y se declara una señal de este tipo:

type estado is (a,b,c,d,e);signal state:estado;

A continuación creamos un proceso combinacional en el que se determina el siguiente estado (state) y la salida "z" en función del estado actual (estado).

Page 21: VHDL Unidad 2 Máquinas de estados finitos

El programa quedaría 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 isPort ( clk : in STD_LOGIC; reset : in STD_LOGIC; w : in STD_LOGIC; z : out STD_LOGIC);end moorefsm;

architecture Behavioral of moorefsm istype 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;

Page 22: VHDL Unidad 2 Máquinas de estados finitos

A continuación se muestra como implementar un diagrama de estados tipo Mealy en VHDL

Para la implementación en VHDL. Primero definimos un tipo enumerado, formado por los nombres de los estados y se declara una señal de este tipo:

type estado is (a,b,c);signal state: estado;

El programa quedaría 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 isPort ( clk : in STD_LOGIC; reset : in STD_LOGIC; w : in STD_LOGIC; z : out STD_LOGIC);end mealyfs;

architecture Behavioral of mealyfs istype estado is (a,b,c);signal state: estado;beginprocess(clk,reset)

Page 23: VHDL Unidad 2 Máquinas de estados finitos

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 <= c; end if; when b => if w = '0' then state <= b; else state <= c; end if; when c => if w = '0' then state <= b; else state <= c; end if; end case; end if; end process;

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;

Bibliografía

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. Martínez, VHDL: El Arte de Programar Sistemas Digitales, primera edición, Ed. CECSA, 2002, págs. 153-162.