Download Maquinas de Estados Mealy Vhdl...
Diseño de Sistemas Electrónicos-DB4 Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
Unidad 8 Diseño Basado en Máqu Má quin inas as de Estado Finitas Fini tas (F.S.M (F.S.M.).)
[email protected] [email protected] Mayo 2003
TEMARIO
1
⋅ ⋅
Diseño de Sistemas Electrónicos-DB4 Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
CONTENIDO Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.). 8.1. Introducción. 8.1.1. Concepto de estado. 8.1.2. Máquinas tipo Mealy y Moore. 8.1.3. Tablas y Diagramas de Estados. 8.2. Análisis de máquinas de estados. 8.2.1. Estructura de una máquina de estados. 8.2.2. Lógica de salida. 8.2.3. Ecuaciones características. 8.3. Diseño de Máquinas de Estados. 8.3.1. Asignación de estados. 8.3.2. Minimización de estados. 8.3.3. Ecuaciones de Transición. 8.3.4. Ecuaciones de Excitación. 8.4. Descripción VHDL de máquinas de estados. 8.5. Ejemplo de aplicación: Diseño del circuito de control de llenado de un depósito de líquidos.
OBJETIVOS OBJ ETIVOS ESPECÍFICOS ESPECÍFICOS • • • • • •
• •
Repasar los conceptos de estado y variable de estado. Distinguir entre comportamientos tipo Mealy y Moore. Conocer la estructura de diseño de una máquina de estados. Ser capaz de deducir las ecuaciones características 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 diseño de una máquina de estados. Aprender a modelar estos componentes en VHDL.
2
⋅ ⋅
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
8.1 INTRODUCCIÓN 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 información. 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 cómo 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 evolución de una situación a otra (o incluso a la misma). Cada una de estas situaciones será lo que se denominará un “estado” y el cambio de una situación a otra será lo que se denominará “transición”. Por ejemplo, si el contador actualmente presenta el valor de cuenta 5, en la próxima activación del reloj deberá incrementarse para pasar al estado 6. Este cambio del estado 5 al estado 6 es lo que se denomina transición. Como ya se ha comentado, el circuito secuencial ha de memorizar los posibles estados. Para ello usará biestables, los cuales constituyen los elementos mínimos de almacenamiento de información. Como un biestable puede codificar dos estados (‘1’ ó ‘0’), para codificar un sistema secuencial que presente E estados, se deberá usar un número de biestables (B) tal que 2B≥ E. En consecuencia:
Nº Biestables = log2(Nº estados) La forma en que se codifica cada posible situación (estado) según los posibles valores que presenten los biestables es lo que se denomina “asignación de estados”. 3
⋅ ⋅
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
Máquinas de Mealy y Moore. En una máquina de estados, cada estado siempre será función 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 máquinas de estado finitas:
Máquina de Moore.
Máquina de Mealy
Estado Siguiente = F(Estado Actual, Entrada) Estado Siguiente = F(Estado Actual, Entrada) Salida = G(Estado Actual)
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 excitación) 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 señal (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 función del estado actual y las combinaciones posibles de las entradas, el próximo 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
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
Un diagrama de estados es un dibujo que muestra cada estado de la I2I1/S0 máquina y todas las posibles secuencias en las cuales un circuito puede cambiar de un estado a otro. Los estados se representan con E círculos y las transiciones mediante flechas. Sobre las flechas se suele usar una notación del tipo In-1In-1…I0/Sm-1Sm-2…S0 para señalar los valores de las entradas (In-1In-1…I0) que producen la salida Notación Mealy correspondiente (Sm-1Sm-2…S0).
I2I1
En el caso de máquinas tipo Moore, en las que las salidas sólo dependen del estado es común representar la salida dentro del círculo que representa el estado y usar en las transiciones una notación del tipo: In-1In-1…I0.
E S Notación Moore
Diagrama de estados del contador Up/Down de tres bits:
1
U Ei
1 E0
E7 1
0
E1
0
1
0 E6
E2
0
0
1 E5
1
0
0
1 E3
E4
5
⋅ ⋅
1
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
8.2 ANÁLISIS DE MÁQUINAS DE ESTADO Estructura de una máquina de estados. De manera general, es posible considerar que una máquina 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 máquina, y tiene 2n estados distintos. Lo normal es hablar de máquinas de estados síncronas, es decir aquéllas en las que todos los flip-flops se encuentran conectados a una señal de reloj común. Este tipo de máquinas será el que se aborda en la presente unidad. 2.- Lógica del estado siguiente. Se trata de un bloque combinacional que, en función del estado y entradas actuales, genera una función (F) que alimentará a las entradas de los biestables y hará que estos evolucionen hacia el estado siguiente. 3.- Lógica de salida. Genera las funciones de salida del circuito secuencial.
Lógica de salida. Anteriormente se ha comentado que la diferencia entre los dos posibles modelos de máquinas de estado se encuentra en cómo son generadas las salidas. Máquina de Mealy: S=G(Entradas, Estado Actual)
Entradas
LÓGICA DE ESTADO SIGUIENTE (F)
Estado Actual MEMORIA DE ESTADO Excitación
RESET CLK 6
⋅ ⋅
LÓGICA DE SALIDA (G)
Salidas
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
Máquina de Moore: S=G(Estado Actual)
Entradas
LÓGICA DE ESTADO SIGUIENTE (F)
Estado Actual MEMORIA DE ESTADO
LÓGICA DE SALIDA (G)
Salidas
Excitación RESET CLK
En el diseño de circuitos de alta velocidad, con frecuencia es necesario asegurar que las salidas de la máquina 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 máquinas tipo Moore. En consecuencia, cuando se trabaja en diseños digitales de alta velocidad, las máquinas de Moore presentan mejores resultados. Sin embargo, las máquinas tipo Mealy suelen producir soluciones de menor área al presentar menos estados que sus equivalentes tipo Moore. En consecuencia, es tarea del diseñador elegir la mejor opción, en función de las necesidades de su diseño.
Ecuación característica. El comportamiento funcional de un biestable puede describirse formalmente mediante una expresión booleana, denominada “ecuación característica”, que especifica el siguiente estado del biestable (Q*) como una función de su estado actual (Q) y de las entradas actuales. Es importante resaltar que la ecuación característica no describe el comportamiento de temporización detallado del dispositivo (activo por nivel, flanco…), sino solamente la respuesta funcional a las entradas de control. 7
⋅ ⋅
Diseño de Sistemas Electrónicos-DB4
D
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
Q
T
Q
Q
Q
BIESTABLE D
BIESTABLE T
D 0 1
T 0 1
Q* 0 1
Q* = D Con Enable (EN): Q* = EN · D + EN’ · Q
S R
Q Q
R 0 1 0 1
Q
Q* = T · Q’ + T’ · Q
J K
BIESTABLE S-R S 0 0 1 1
Q* Q
Q Q
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 conclusión, si se desea analizar un circuito del que se conoce que implementa una máquina de estados, conviene seguir los siguientes pasos básicos: 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 combinación de estado siguiente y salida. 3. Dibujar un diagrama de estado que presente la información de los pasos anteriores de forma gráfica.
8
⋅ ⋅
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
8.3 DISEÑO DE MÁQUINAS DE ESTADO. El proceso de diseño de una máquina de estados finita, a partir de una especificación o descripción en palabras puede resumirse en los siguientes pasos: 1. Construir una tabla de estado/salida que corresponde a la especificación, empleando nombres de mnemónicos para los estados. (También es posible comenzar con un diagrama de estados). 2. (Opcional) Minimizar el número 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 asignación 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 transición/salida que muestre la siguiente combinación variable-estado y salida para cada combinación de estado/entrada actual. 5. Elegir un tipo de flip-flop para la memoria de estado. 6. Construir una tabla de excitación, que muestre los valores de excitación requeridos para obtener el siguiente estado deseado para cada combinación de estado/entradas. 7. Obtener las ecuaciones de excitación a partir de la tabla de excitación. 8. Obtener las ecuaciones de salida a partir de la tabla de transiciones. 9. Implementar de las ecuaciones en un circuito físico.
Minimización de estados. En ocasiones, la especificación conduce a un diagrama de estados inicial que presenta muchos estados. Bajo unas determinadas condiciones es posible efectuar una reducción de estados gracias a que ciertos caminos de la máquina de estados pueden eliminarse porque su comportamiento en función de las entradas y salidas se halla duplicado por algún otro camino equivalente. De forma general, es posible decir que dos estados tendrán un comportamiento equivalente (y por lo tanto podrán resumirse en uno sólo) si para todas sus combinaciones posibles de entradas, sus salidas son las mismas y evolucionan hacia los mismos estados o hacia estados que también son equivalentes. 9
⋅ ⋅
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
El algoritmo para reducir los estados podría resumirse en los siguientes pasos: 1. En primer lugar se agrupan los estados que presentan las mismas salidas (caso de máquinas de Moore) o las mismas salidas en las transiciones (caso de máquinas de Mealy). Estos determinarán un conjunto de estados potencialmente equivalentes, ya que los estados no pueden ser equivalentes si sus salidas difieren. 2. A continuación se examinan las transiciones, a fin de comprobar que para cada posible combinación conducen al mismo estado (o a dos estados que también 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 más estados.
Ejemplo de minimización:
Diagrama de estados original
Diagrama de estados minimizado (E0 ⇔ E2)
10⋅
⋅
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
Asignación de estados. El número de puertas que se necesitarán para implementar una máquina de estados se halla fuertemente relacionado con la manera en que se produce la codificación de sus estados. a) Metodología de asignación heurística. Una estrategia heurística habitual para la asignación de estados es aquella que trata de minimizar el número de bits que han de cambiar a lo largo de las transiciones. Consideremos una máquina de estados que presenta 5 estados (S0…S4) y se duda entre cualquiera de las siguientes codificación de estados:
Asignación 1 Estado Q2 Q1 Q0 S0 0 0 0 S1 1 0 1 S2 1 1 1 S3 0 1 0 S4 0 1 1
Asignación 2 Estado Q2 Q1 Q0 S0 0 0 0 S1 0 0 1 S2 0 1 0 S3 0 1 1 S4 1 1 1
En este caso, se analizarían todas las transiciones que presenta la máquina de estados y calcularíamos para cada una de ellas el número de bits que han de cambiar de un estado al siguiente. Supongamos que la máquina de estado disponible presenta las transiciones resumidas en la tabla adjunta: Transición S0 -> S1 S0 -> S2 S1 -> S3 S2 -> S3 S3 -> S4 S4 -> S1
11⋅
⋅
Bits que cambian Asignación 1 Asignación 2 2 1 3 1 3 1 2 1 1 1 2 2 13 bits 7 bits
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
En consecuencia, la asignación 2 es la óptima ya que minimiza el número de bits que cambiarán a lo largo de la evolución de los estados. El principal problema de este método 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 asignación de forma automática. Otro aspecto importante en la asignación de estados es la codificación de los estados iniciales. Conviene elegir una que sea posible implementar fácilmente en la inicialización de los biestables. La más habitual suele ser todo a ‘0’ (RESET) o todo a ‘1’ (SET). b) Codificación “One-hot”. Este tipo de codificación suele presentar buenos resultados cuando se realizan diseños que deben trabajar a elevadas frecuencias de reloj. La idea fundamental consiste en realizar una asignación que en vez de usar N bits para codificar 2N estados, se usen tantos bits como estados presenta el diseño. De esta forma, una máquina con S estados, estará implementada usando S flip-flops y no el log2(S). Además cada estado tendrá una asignación en la que un único bit tendrá el valor de ‘1’ y el resto ‘0’. Así, una máquina de estados que presentara 4 posibles estados de funcionamiento presentaría la siguiente codificación: Asignación Tradicional (2 flip-flop s) Estado Q2 Q1 S0 0 0 S1 0 1 S2 1 0 S3 1 1
Asignación “ 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 codificación “One-hot” radica en el hecho de conseguir simplificar la lógica de generación del estado siguiente y de las salidas, conduciendo a diseños que pueden trabajar a una frecuencia de funcionamiento superior. 12⋅
⋅
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
Ecuaciones de transición. Permiten obtener la lógica combinacional de salida.
UP
Q
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 minimizaría por Karnaugh ⇒ S1 = Q1 y S0 = Q0 (Máquina de Moore)
Cuenta
Ecuaciones de excitación. Generan la lógica combinacional del siguiente estado. Suponiendo biestables T: Est. Actual Est. Siguiente Excitación 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 obtendría: T0 = ‘1’ T1 = Qo·Up + Qo’ · Up’ = Qo xnor Up. Cuenta
13⋅
⋅
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
8.4 DESCRIPCIÓN VHDL DE MÁQUINAS DE ESTADOS. 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. 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. Aquí también suele ser -- Esto se colocaría 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 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: c) a) b)
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. 14⋅
⋅
Diseño de Sistemas Electrónicos-DB4
Unidad 8. Diseño Basado en Máquinas de Estado Finitas (F.S.M.)
Ejemplo de descripción VHDL de una Máquina de estados:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MaquinaEstados IS PORT ( sEntrada1, sEntrada2, sEntrada3: IN std_logic; --Señales de entrada. CLK: IN std_logic; --Señal de reloj. (No olvidar) sResetL: IN std_logic; --Señal de inicialización sSalida1, sSalida2: OUT std_logic); --Salidas END MaquinaEstados; ARCHITECTURE MaquinaEstadosArch OF MaquinaEstados IS --Declaración del tipo asociado a los estados. TYPE TipoEstados IS (EInicio, EDetect1, EAbort, EDetect2, EFin); --Señales auxiliares para la codificación del --estado actual y siguiente. SIGNAL tEstadoActual, tEstadoSiguiente: TipoEstados; BEGIN
-- Proceso dedicado a la lógica de estado: LOGICA_ESTADO: PROCESS(tEstadoActual, sEntrada1, sEntrada2, sEntrada3) BEGIN CASE (tEstadoActual) IS WHEN EInicio => IF (sEntrada1 = ‘1’) THEN tEstadoSiguiente