Está en la página 1de 7

Tomado del libro: Sistemas Digitales y sus Aplicaciones. Gerardo Mino et al.

Editorial
BUAP. 2016

Capitulo 7 Máquinas de estados finitos


Ana María Rodríguez Domínguez, Selene Edith Maya Rueda, Gerardo Mino Aguilar,
Ricardo Álvarez González, Rodrigo Lucio Maya Ramírez, José Francisco Portillo Robledo

1.1 Diseño de Máquinas Secuenciales


Para realizar el diseño de una máquina digital secuencial primero debe describirse el
comportamiento que se desea y posteriormente se obtiene el circuito.

Para describir el comportamiento de una máquina secuencial se pueden utilizar técnicas


gráficas como los diagramas de estado, los diagramas MDS o bien las cartas ASM; también
se pueden utilizar técnicas no gráficas como tablas de estado o bien descripciones en algún
HDL (Lenguaje de Descripción de Hardware).

Una vez descrito el comportamiento se pueden utilizar diferentes dispositivos de hardware


para el circuito secuencial que realizará tal función, desde compuertas hasta FPGAs.

1.1.1 Descripción de Máquinas Secuenciales


A continuación se abordará brevemente cada una de las técnicas de descripción de una
máquina secuencial.

1.1.1.1 Diagrama de Estados


Ésta técnica gráfica identifica a un estado como un círculo y para representar la transición
entre uno y otro estado se utiliza una flecha (figura 7.8), junto a ella se coloca una diagonal
para escribir el valor de las entradas (a la izquierda) y el valor de las salidas (a la derecha).

Figura ¡Error! No hay texto con el estilo especificado en el documento.7-8 Elementos de un diagrama de estados.

Se ilustrará su aplicación con un ejemplo: suponga que tiene tres luces que realizan una
secuencia en que se van encendiendo las luces primero una, luego dos, luego las tres y
vuelven a empezar, este proceso se realiza siempre y cuando un interruptor de habilitación
esté activo, es decir, si dicho interruptor está activo entonces en el primer ciclo se encuentran
todas las luces apagadas, en el segundo se enciende la de la izquierda, en el segundo ciclo se
enciende la de la izquierda y la de en medio, en el tercer ciclo encienden las tres y luego
vuelve a iniciar la secuencia, pero si en algún momento el interruptor se desactiva, entonces
pausará la secuencia y las luces quedarán quietas.

El diagrama de estados mostrando la secuencia de las salidas según la entrada se muestra en


la figura 7-9 b); se aprecian 4 estados (los 4 círculos) a los que se les ha llamado e1, e2, e3,
e4; no se observa la señal de reloj, sin embargo está implícita, ya que es la que causa la
transición de un estado a otro; si en este sistema se utilizan como elementos de memoria flip
flops disparados por flanco de subida, se entiende tácitamente que para pasar del estado e1
al estado e2 se necesitaría que hubiera un flanco de subida del reloj y que SW estuviera activa.
El tiempo que dura la máquina en cada estado es de un ciclo de reloj, luego decide hacia
dónde va a transitar de acuerdo a las entradas, puede ser que transite al mismo estado (si SW
= 0), entonces permanecerá en ese mismo estado otro ciclo o bien puede ser que cambie de
estado (si SW = 1).

Primero se identifica que el sistema tendrá dos entradas: el reloj (CLK) y un interruptor (SW)
y tres salidas para las luces (L3, L2, L1) como lo muestra el diagrama esquemático de la
figura 7-9 a). La muesca indica que la memoria es disparada por flancos de subida.

Figura 7-9 a) Diagrama esquemático b) Diagrama de estados c) Diagrama de tiempos del ejemplo de secuencia de
las tres luces.

Una manera natural de ilustrar el comportamiento de una máquina secuencial es utilizando


un diagrama de tiempos, en que el eje horizontal corresponde al tiempo y se dibujan líneas
para cada una de las señales que intervienen en el proceso, como en las gráficas que se
observan en las simulaciones. Para el ejemplo anterior se muestra un diagrama de tiempos en
la figura 7-9 c). Se puede notar que aunque la entrada cambia en cualquier momento, las
salidas sólo cambian en un instante de tiempo dado por el flanco y que permanecen estables,
lo mismo que el estado, por el resto del ciclo de reloj. En la figura 7-9 c) se observa que se
han supuesto inicialmente las tres salidas iguales a cero, es decir se ha supuesto que al inicio
la máquina secuencial se encuentra en el estado e1; para el primer flanco de subida del reloj
la señal SW es cero, por lo que permanece el estado e1 y las salidas sin cambio; durante los
siguientes tres flancos de subida SW = 1, así que inicia la secuencia y L3 L2 L1 van tomando
los valores de acuerdo a los estados e1, e2 y e3 hasta que en los flancos 5 y 6 se pausa la
secuencia debido a la señal SW = 0; para el flanco 7 se reanuda la secuencia.

1.1.1.2 Diagrama MDS

Figura ¡Error! No hay texto con el estilo especificado en el documento.7-10 Diagrama MDS del ejemplo de secuencia
de las tres luces.

Ésta técnica obtiene su nombre de las siglas en inglés de Mnemonic Documented State
Diagram (diagrama de estados documentado con mnemónicos) y se trata básicamente de un
diagrama de estados, lo único que cambia es que se colocan los nombres o abreviaturas de
las señales de entrada y salida cerca o dentro de los estados y transiciones.

Por ejemplo, el diagrama de estados de la figura 7-9 b) tendría su equivalente diagrama MDS
en la figura 7-10.

Tanto el diagrama esquemático como el diagrama de tiempos es el mismo, ya que se está


describiendo el mismo sistema.

1.1.1.3 Carta ASM


Cuando se requiere que un circuito digital realice un algoritmo que solucione un cierto
problema, lo más adecuado es describirlo mediante una carta para máquina de estado
algorítmica (por sus siglas en inglés). Tiene cierto parecido con un diagrama de flujo, pero
contiene menos elementos (fig. 7-11) y ciertas restricciones, ya que las cartas ASM describen
hardware y no software.
Figura 7-11 Elementos de una carta ASM.

Se aprecia que los estados se representan ahora mediante rectángulos y las condiciones de
entrada se consideran dentro de los rombos o hexágonos. Existen dos tipos de salidas que se
expresan de manera diferente: una salida condicional, como su nombre lo dice, proviene
obligatoriamente de una condición de entrada, es decir, en un estado determinado si se
cumplen las entradas requeridas entonces se produce la salida especificada dentro de una
elipse, de otra manera no se activa la salida, recibe también el nombre de salida tipo Mealy,
ya que depende tanto del estado actual como del valor de las entradas; el otro tipo de salida,
la salida no condicional o tipo Moore no depende de ninguna entrada, se debe activar en
tanto permanezca el estado en que se indica y por eso va dentro de él, es decir, la salida
depende solamente del estado actual.

Igual que en los diagramas de estado y en los MDS, los estados se mantienen estables durante
un ciclo de reloj y sólo puede haber un cambio de estado en el instante del flanco activo del
reloj, en el cual también se verifican las entradas y se decide cuál será el estado siguiente y
se activan las correspondientes salidas no condicionales si las hubiera. Por lo tanto, las
transiciones sólo deben ir a los rectángulos, es decir, no se puede enviar una transición a una
parte intermedia del estado, a un rombo o a una elipse.

El ejemplo siguiente muestra una muy sencilla aplicación de las cartas ASM.

Suponga que se va a realizar el control para controlar automáticamente la bomba de agua de


una casa habitación; considere que se tienen un sensor en la parte superior del tinaco de agua
que indica si está lleno o no, también hay un sensor en la parte inferior para saber si el tinaco
está vacío o no, un sensor en la parte inferior de la cisterna para saber si está vacía, una etapa
de potencia que recibe una señal para activar la bomba de agua y otra para una luz encienda
si es que se agota el agua de la cisterna (fig. 7-12). Tanto los sensores como la etapa de
potencia tienen una interfaz para señales digitales que se conectan al circuito de control que
se diseñará mediante la carta ASM.
Figura 7-12 a) Dibujo b) Diagrama esquemático del ejemplo del control automático de bomba de agua.

Para comenzar con el algoritmo debemos tener la bomba apagada y preguntar periódicamente
por la señal CV, ya que si la cisterna está vacía hay que activar la señal C y no se puede hacer
nada más que esperar a que ya no esté vacía. Si CV indica que la cisterna tiene agua entonces
se pregunta por la señal TV, si no es activa, indica que el tinaco no está vacío y entonces no
hay por qué activar la bomba, pero si CV es activa hay que pasar a hacer una acción diferente,
es decir, encender la bomba y quedarse ahí hasta que se llene el tinaco (TL activa) o si se
vacía la cisterna (CV activa), entonces hay que apagar la bomba y estar listos para comenzar
el proceso de nuevo. Este, que es un posible algoritmo que resuelva el control, se puede
expresar como la carta ASM de la figura 7-13, en la que también se muestra un diagrama de
tiempos con las entradas simulando una secuencia de eventos que podría suceder en una casa.

En el estado llamado APAGADO (fig. 7-13) la bomba de agua no se activará nunca, pero sí
registra las entradas TV y CV a cada flanco de subida del reloj por si el tinaco o la cisterna
se han vaciado. En el caso de que la cisterna esté vacía la señal C se enciende y así permanece
mientras continúe el estado APAGADO y la cisterna vacía. Cuando la cisterna tiene agua
pero el tinaco ya está vacío entonces se hará la transición hacia el estado ENCENDIDO, en
donde la salida B está activa mientras la máquina permanece en este estado sin importar
ninguna entrada y permanecerá en él mientras el tinaco se llena y no falte agua en la cisterna,
de otra manera pasará al estado APAGADO en el próximo flanco de subida del reloj. La
salida C depende del estado APAGADO y de la entrada CV, así que se trata de una salida
condicional, en cambio B sólo depende del estado ENCENDIDO, por lo tanto es no
condicional.
Figura 7-13 a) Carta ASM b) Diagrama de tiempos del ejemplo del control automático de bomba de agua.

1.2 Recomendaciones
Sin importar cómo se describa el comportamiento de una máquina secuencial, es
recomendable tener buenas prácticas de diseño, algunas de ellas son:

Hacer primero el diagrama esquemático del sistema mostrando las entradas y las
salidas (sus nombres, cuántas son, de qué tipo son, si se conectan con algún otro
elemento –sensor, etapa de potencia, etc.)
Comprender exactamente lo que pide el problema o el usuario, para ello hay que leer
y releer la especificación del problema (o preguntar si es el caso); lo que no se debe
hacer es suponer algún comportamiento o algunas condiciones, en muchas ocasiones
lo que uno piensa no es necesariamente lo que desea el cliente
Mantener la simplicidad del diseño, hay que recordar que “la menor distancia entre
dos puntos es la recta que los une” (Euclides). Cuanto más complique la solución del
problema, se incrementan las posibilidades de que falle
No necesariamente la primera descripción es la correcta o la mejor, se puede empezar
por una simple y después refinarla poco a poco
Cerciorarse de que todos los estados tengan al menos un estado siguiente; no es
posible que cuando llegue el siguiente flanco de reloj no se sepa a qué estado va a
pasar el sistema; se debe recordar en todo momento que no se trata de un diagrama
de flujo que describe software, ya que éste al llegar a su instrucción final detiene la
ejecución, sin embargo aquí se está describiendo hardware, el cual siempre está en
funcionamiento, además el tiempo no puede detenerse, después de un flanco de reloj
vendrá otro y otro y otro más, y como diseñador se debe estar bien consciente de
cómo se comportará la máquina en todo tiempo
Contemplar todos los casos posibles en que pueda trabajar el sistema para evitar
ambigüedades
Probar el funcionamiento del diagrama de estados o diagrama MDS o carta ASM
antes de pasar a la etapa para obtener el circuito, esto se puede hacer proponiendo
casos de prueba apegados a la realidad y no suponer qué va a pasar, sólo seguir el
flujo que resulta del dibujo para detectar errores o comprobar lo confiable que será la
máquina

Se espera que con el tiempo, cada diseñador en la práctica vaya desarrollando su propia
metodología de diseño, determinando una serie de pasos que le lleven a la elaboración exitosa
de sus máquinas secuenciales.

También podría gustarte