Sie sind auf Seite 1von 15

2012

Diseo Digital

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

MQUINAS DE ESTADO Las Mquinas de Estado, tambin llamadas Mquinas Secuenciales Finitas (FSM por sus siglas en ingls), son sistemas digitales secuenciales en donde nosotros podemos tener el control del flujo de informacin, es decir, nosotros definimos la secuencia de la ejecucin. Por ejemplo, cuando inicializamos una LCD, es necesario seguir una serie de pasos definida por el fabricante; entonces, nosotros como diseadores, creamos una mquina de estados que sigue la secuencia para la incializacin de acuerdo al datasheet para poder, posteriormente, enviar los caracteres que se quieren observar.

1. FLIP FLOP D En sistemas digitales existen los componentes llamados FLIP FLOPs, que son elementos que guardan un bit de informacin. Estos componentes estn formados por circuitos combinacionales y guardan o cambian su informacin de acuerdo a una seal de sincronizacin (un reloj). Existen diversos FFs y entre ellos est el llamado FLIP FLOP D (FFD). Este FF tiene un smbolo como el que muestra la figura 1.

Figura 1. Smbolo de un FFD.

Como se puede observar en la figura 1, el FFD tiene 2 puertos de entrada (D, CLK) y 2 puertos de salida (Q, QN) donde QN se lee como Q negada. No detallaremos el principio de funcionamiento del FFD en este tutorial y slo nos limitaremos a obtener su ecuacin caracterstica (ya que la usaremos ms adelante).

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 1

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

La tabla de verdad para un FFD activo por flanco de subida se muestra en la tabla 1: D CLK Q QN 1 0

0 f_subida 0 1 f_subida 1 X 1 X 0

Q QN Q QN

X f_bajada Q QN Tabla 1. Tabla de verdad del FFD activo en flanco de subida.

De acuerdo a la tabla 1, podemos definir el funcionamiento del FFD como sigue: Si existe un flanco de subida en el reloj, Q toma el valor de D (decimos que Q sigue a D) y QN es la negacin de D. En cualquier otra condicin Q y QN guardan un bit de informacin. Esta tabla, aunque nos dice como funciona el FFD, no nos da informacin del todo til para obtener la ecuacin que modela a dicho FF. La tabla 2 presenta informacin ms detallada:

D Q Q* 0 0 0 0 1 0 1 0 1 1 1 1 Tabla 2. Tabla de verdad del FFD.

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 2

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

En la tabla 2 se introduce Q*. Cuando existe un flanco de subida en el FFD, Q toma el valor de D, pero no se actualiza sino hasta el siguiente flanco de subida. Q* significa el valor futuro que Q tomar cuando se da el flanco de subida presente y se lee como Q futura. Adems de introducir la seal Q* tambin podemos notar que no existe la seal CLK o reloj, lo cual es debido a que Q slo sigue a D en los flancos de subida, por lo tanto, obviamos el hecho de que en la tabla 2, aparece CLK siempre como f_subida. A partir de la tabla 2 podemos construir el siguiente mapa de Karnaugh: Q 0 D 0 1 1 1 1

Figura 2. Mapa de Karnaugh para el FFD. Y la ecuacin resultante es: Q*=D Cuando se disea utilizando FFs, es normal esperar que Q tenga un valor conocido cuando se enciende el sistema, sin embargo, dada su naturaleza meta-estable, no es posible predecir que valor tomar Q cuando el sistema es encendido. Es decir, Q podr ser 1 o 0, eso es seguro dado el anlisis de meta-estabilidad, pero no es posible asegurar que valor se presenta inicialmente en Q. Los fabricantes de FFs han dado solucin a esta condicin agregando 2 puertos ms al FFD: SET y RESET y un smbolo para el FFD que incluye estos puertos se presenta en la figura 3.

Figura 3. FFD con puertos SET y RESET (RST).

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 3

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

En esta imagen se puede observar que SET y RESET (RST) se activan en bajo y la tabla de verdad se muestra en la tabla 3:

SET RST CLK 0 1 0 1 1 1 0 0 1 1 X X X

D Q QN X 1 0 X 0 1 X 1 1

f_subida 0 0 1 f_subida 1 1 0

Tabla 3. Tabla de verdad del FFD con seales SET y RST.

En la siguiente seccin presentaremos la teora y el diseo de las mquinas de estado. 2. Mquina de Estados Finita Iniciaremos el diseo de mquinas de estado presentando sus diagramas bsicos. Existen diferentes clases de mquinas de estado y las ms populares son la mquina de Mealy, la mquina de Moore y mquina clase C. La figura 4 muestra el diagrama de las mquinas mencionadas.

Figura 4. (a) Mquina de Estados de Mealy (b) Mquina de Estados de Moore (c) Mquina de Estados Clase C.

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 4

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

Las 3 mquinas de estado mostradas en la figura anterior tienen ciertas similitudes: existe un bloque combinacional de entrada y un bloque de memoria retroalimentado al bloque combinacional de entrada; sin embargo, dependiendo de la mquina usada, puede existir un bloque combinacional de salida adems que dicho bloque puede depender de las seales de entrada. 2.1 Diagramas de Estado Una herramienta muy til para disear mquinas de estados, son los Diagramas de Estados. Estos diagramas nos permiten observar de una manera sencilla el funcionamiento de la mquina de estados. Las reglas bsicas de un diagrama de estados son muy simples: En un circulo aparece el estado. Los estados son las operaciones que realiza la mquina de estados. Dentro de estas operaciones se pueden limpiar o poner a 1 seales o esperar condiciones. Los estados son las salidas de los FFs. Flechas nos indican el flujo de ejecucin, es decir, ir de un estado A a un estado B. En las flechas, se colocan las condiciones (si las hay) que provocan que el estado cambie. Para disear una mquina de estados, tenemos que tener un claro entendimiento sobre lo que estamos tratando de resolver o el sistema que queremos implementar. Disearemos una mquina de estados que realizar una cuenta de 0 a 3 (2 bits) y tendr 1 bit de habilitacin. Si el bit de habilitacin es 1 la mquina cuenta y si el bit es 0 la mquina espera en el estado actual. El diagrama de estados del sistema queda como muestra la figura 5.

Figura 5. Diagrama de estados del contador de 2 bits.


Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 5

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

En el diagrama indica que la mquina esperar siempre que En = 0 y En indica que la mquina cambia de estado cuando En = 1. Ya que sabemos como deber funcionar nuestra mquina, deberemos comenzar el diseo iniciando con la definicin de la tabla de estados.

2.2 Tabla de Estados De acuerdo a la figura 5, sabemos que tenemos una seal de entrada En (puede ser un switch, un uControlador, un reloj, otra mquina de estados, etc.), existen 4 estados (00, 01, 10, 11) y las seales de salida sern estos estados (la cuenta binaria). El diseo que usaremos utiliza n FFs para generar 2n estados, es decir usaremos 2 FFDs para generar nuestros 4 estados y se conoce como codificacin binaria (hay diferentes formas de codificar los estados: binario, MUX, One-Hot, ROM, etc.). La tabla de estados del sistema que estamos diseando se muestra en la tabla 4:

Estados En Q1 Q0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0

Tabla 4. Tabla de Estados para el contador de 2 bits.

En la tabla 4 se muestran los estados presentes Q1 y Q0 en la columna de la extrema izquierda; se muestra la entrada En que ser un switch y sus dos posibles valores 0 y 1 en el rengln superior de la derecha y se muestran los estados futuros que corresponden a cada combinacin de celdas de los estados Q1, Q0 y la entrada En que son las dos columnas dentro del cuadro inferior derecho. La tabla de estados se lee de la siguiente manera:

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 6

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

S el estado presente es 00 y En = 0 entonces el estado futuro es 00. S el estado presente es 01 y En = 0 entonces el estado futuro es 01 . S el estado presente es 10 y En = 0 entonces el estado futuro es 10. S el estado presente es 11 y En = 0 entonces el estado futuro es 11. S el estado presente es 00 y En = 1 entonces el estado futuro es 01. S el estado presente es 01 y En = 1 entonces el estado futuro es 10. S el estado presente es 10 y En = 1 entonces el estado futuro es 11. S el estado presente es 11 y En = 1 entonces el estado futuro es 00.

Sabemos que tenemos 3 entradas, una fsica y dos retro-alimentaciones de los FFDs, y ahora sabemos qu valor tomar cada estado futuro. Si observamos los diagramas bsicos de las mquinas de estado de la figura 4, veremos que las salidas del primer bloque combinacional es la entrada al bloque de memoria, es decir, la salida de las funciones combinacionales estn conectados a los puertos D de los FFs. Sin embargo, dado que Q* = D de acuerdo a la ecuacin caracterstica del FFD, entonces lo que estaremos calculando es Q*. Para detallar esta condicin, re-escribiremos la tabla 4 de la siguiente manera:

Estados En Q1 Q0 0 0 0 1 1 0 1 0 1 0 0 1 1 D1 0 1 0 1 D0 1 0 1 1 0 D1 1 0 1 0 D0

Tabla 5. Tabla de Estados incluyendo las entradas Ds de los FFs.

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 7

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

La tabla 5 representa los estados presentes, las entradas, los estados futuros y, adems, las seales D1 y D0 para cada condicin de la seal de entrada En. Esta tabla quiere decir que las ecuaciones de estado que vamos a disear tendrn como salida D1 y D0. Entonces, el mapa de Karnaugh para D1 ser:

En 0 Q1 Q0 0 0 1 1 0 1 1 0 1 1

Figura 5. Mapa de Karnaugh para D1. Y, haciendo las agrupaciones correspondientes, obtendremos la ecuacin:

D1 = En'Q1 + Q1Q0' + Q1'Q0En

Para D0 tendremos:

En 0 Q1 Q0 0 0 1 1 0 1 1 0 1 1

Figura 6. Mapa de Karnaugh para D0.


Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 8

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

Y, agrupando, obtendremos la ecuacin: D0 = En'Q0 + EnQ0' Sin embargo, como mencionamos anteriormente, D1 y D0 no son ms que los estados futuros Q1* y Q0*, respectivamente, debido a la ecuacin caracterstica del FFD: Q* = D Por lo tanto: Q1* = D1 = En'Q1 + Q1Q0' + Q1'Q0En y Q0*= D0 = En'Q0 + EnQ0' Estas dos ecuaciones son nuestro bloque combinacional de entrada y se conocen como Ecuaciones de Estado, y slo dependen de En y de la retro-alimentacin de los FFs (Q0 y Q1). El diagrama esquemtico del circuito de la Mquina de Estados que hemos diseado se muestra en la figura 7.

Figura 7.Esquemtico de contador de 2 bits.

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 9

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

Presentaremos ahora la mquina de estados en VHDL tal cual la hemos diseado, es decir, escribiendo las ecuaciones de estado combinacionales usando las operaciones AND, OR y NOT y los FFDs. Las ecuaciones de estado en VHDL se escriben como: D1 <= (NOT EN AND Q1) OR (Q1 AND NOT Q0) OR (NOT Q1 AND Q0 AND EN); D0 <= (NOT EN AND Q0) OR (EN AND NOT Q0); Podemos notar que la funcin para D0 es una operacin XOR, la cual pueden escribirla directamente en VHDL como tal, es decir: D0 <= EN XOR Q0; El cdigo en VHDL que modela nuestra Mquina de Estados se muestra en la figura 8.

Figura 8. Mquina de estados en VHDL del contador de 2 bits.


Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 10

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

3. Infiriendo Mquinas de Estados en VHDL Esta estrategia de diseo usa tambin el diagrama bsico de las mquinas de estado, es decir, debemos disear un bloque combinacional y un bloque de memoria, pero para disear la mquina, slo partiremos del diagrama de estados de la figura 5. El bloque de memoria no es ms que el FFD que presentamos en el cdigo VHDL anterior. El bloque combinacional cambiar para describir las condiciones que provocan los cambios de estados y no usaremos funciones AND, OR y NOT sino condiciones IF o CASE. La sintaxis para los bloques IF es: IF condicin(es)1 THEN asignaciones y/o condiciones; ELSIF condicin(es)2 THEN asignaciones y/o condiciones; ELSE asignaciones y/o condiciones; END IF;

En un bloque IF, se comparan las condiciones en un ciclo de reloj y se ejecuta el bloque correspondiente para la condicin que sea verdadera en el mismo ciclo de reloj. Cuando se usan bloques IF para el diseo de mquinas de estado, es importante declarar todas las posibles condiciones para las entradas en el diseo del bloque combinacional, ya que de no hacerlo, las condiciones no descritas provocarn que el sistema guarde la informacin, dejando de ser un bloque combinacional y cambiando a ser un bloque de memoria, infiriendo Latches. El siguiente ejemplo ilustra este comportamiento IF x = '0' THEN y <= '1'; END IF; El bloque IF anterior describe que se asignar un 1 a y cuando x sea igual a 0. Pero no describe que sucede cuando x es igual a 1, por lo tanto infiere que debe guardar la informacin cuando x es diferente de 0 usando Latches para guardar la informacin y, por lo tanto, ya no estamos describiendo un bloque combinacional sino uno secuencial.

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 11

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

La sintaxis del bloque CASE es la siguiente: CASE seal/puerto IS WHEN valor_condicion1 => asignaciones y/o condiciones; WHEN valor_condicion2 => asignaciones y/o condiciones; . . WHEN OTHERS => asignaciones y/o condiciones; END CASE; El bloque CASE monitorea la seal/puerto y cada WHEN es un bloque que se ejecuta cuando el valor_condicionX que se presenta como entrada en la seal/puerto es verdadero.En el bloque CASE, aparece al final una condicin OTHERS, provocando que cualquier condicin que no est descrita se ejecute en esta condicin. Disearemos la mquina de estados usando un bloque CASE y puedes practicar diseando la misma mquina usando el bloque IF. Volveremos a escribir la descripcin del diagrama de estados de la figura 5 para para describir el diseo en VHDL: S el estado presente es 00 y En = 0 entonces el estado futuro es 00. S el estado presente es 01 y En = 0 entonces el estado futuro es 01 . S el estado presente es 10 y En = 0 entonces el estado futuro es 10. S el estado presente es 11 y En = 0 entonces el estado futuro es 11. S el estado presente es 00 y En = 1 entonces el estado futuro es 01. S el estado presente es 01 y En = 1 entonces el estado futuro es 10. S el estado presente es 10 y En = 1 entonces el estado futuro es 11. S el estado presente es 11 y En = 1 entonces el estado futuro es 00.

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 12

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

Como se puede observar en la descripcin del bloque CASE, los estados no son definidos como Q0 y Q1 sino como la seal estado_presente que es un vector de 2 bits. Se puede observar cmo cada combinacin de este vector de bits es un estado descrito en el diagrama de estados (00, 01, 10, 11). El bloque CASE describe el cambio de una seal estado_futuro de acuerdo al estado actual, estado_presente, y a la condicin presente en nuestro puerto En. El cdigo completo en VHDL para implementar nuestro contador de 2 bits se presenta en la figura 9.

Figura 9. Cdigo en VHDL que infiere la mquina de estados del contador de 2 bits.
Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 13

Instituto Tecnolgico de Orizaba Ingeniera Electrnica

Diseo Digital

Referencias

Wakerly F. John, Diseo Digital Principios y Prcticas, Prentice Hall. 2001. Xilinx, VHDL Reference Guide, Xilinx, 1999. Philiphs, 74AHC74 Dual D-type flip-flop with set and reset; positive-edge trigger. Philips Semiconductor, 1999

Reyes Hernndez Damna- Hora: 7-9 AM

Pgina 14

Das könnte Ihnen auch gefallen