Está en la página 1de 8

Autmatas secuenciales finitos En este artculo vamos a ver como implementar con un ejemplo prctico un autmata secuencial finito

paso a paso, empezando por el desarrollo del DTE (Diagrama de Transicin de Estados), construccin de la tabla de verdad, simplificacin a travs de los diagramas de Karnaugh, obtencin de las ecuaciones de salida e implementacin y simulacin del circuito resultante. El desarrollo de circuitos con autmatas secuenciales es una herramienta muy potente y cuya comprensin abre el camino a otras tcnicas de desarrollo como son por ejemplo en los Micro controladores los RTOS (Sistemas Operativos en Tiempo Real). En el desarrollo de sistemas digitales combinacionales las salidas de nuestro circuito en un momento dado dependen nicamente de los valores de las entradas en ese momento. En un sistema secuencial adems del valor de las entradas en un instante dado tenemos que tener en cuenta tambin el estado anterior por el que ha pasado el sistema, por lo que ha estos circuitos se les suele llamar sistemas con memoria. Para implementar esa memoria se suele utilizar biestables (flip-flop) memorias ROM. Pero... A que se le llama un autmata secuencial finito? Una definicin podra ser la siguiente: Un autmata es una mquina secuencial sncrona (controlada por una seal de reloj) que se puede encontrar en uno de entre un nmero posible de estados, recibe una serie de entradas binarias y en funcin de estas entradas y del estado particular en el que se encuentra, genera una o varias salidas binarias determinadas. Se le llama finito por que el nmero de estados en el que puede encontrarse el autmata tiene que quedar perfectamente determinado, de ah que a estos sistemas se les llame tambin deterministas. Siempre que hagamos el diseo de un circuito con autmatas secuenciales finitos podremos diferenciar en l los siguientes elementos:

Una memoria que permite almacenar el estado actual del autmata. Dos circuitos combinacionales, uno para calcular el estado siguiente del autmata y el otro para hallar la salida.

Un diagrama de bloques del circuito sera el siguiente:

Bsicamente existen dos tipos de autmatas finitos: el autmata de Mealy y el autmata de Moore.

Autmatas de Mealy En un Autmata de Mealy, tanto la salida del autmata como su estado siguiente, en un instante determinado, depende tanto del estado en el que se encuentra el autmata en ese instante como de la entrada entradas binarias introducidas. Esto implica que un autmata de Mealy, estando en un determinado estado, puede evolucionar hacia estados siguientes distintos y producir salidas distintas si se introduce una varias entradas binarias distintas. Un ejemplo en el que podemos ver los diferentes elementos que componen un diagrama de Transicin de Estados de un Autmata de Mealy sera el siguiente:

En el podemos distinguir los siguientes elementos:


Estados: que se pueden definir como las posibles situaciones a las que puede llegar el autmata. Transiciones: son los eventos producidos por las entradas y que producirn el cambio de un estado a otro, en el sentido indicado por las flechas.

Un ejemplo de cmo debe leerse el diagrama para su comprensin sera el siguiente: desde el estado Q0, con entradas 11, se pasa al estado Q1 y produce salida 0; desde el estado Q1, con entradas 00 se pasa al estado Q0, y la salida ser igual a "1", y as para todas las posibles transiciones. Para que el autmata sea determinista de cada estado deben de salir 2 elevado a n transiciones donde n es el nmero de entradas. Como vemos en el DTE (Diagrama de Transicin de Estados), la salida depende del estado en que nos encontremos y del valor de las entradas. Autmatas de Moore Son aquellos en los cuales el estado siguiente, en un instante determinado, depende tanto del estado en el que se encuentra el autmata como de la entrada o entradas binarias introducidas, pero la salida en ese mismo instante slo depende del estado en el que se encuentra el autmata. Esto implica que un autmata de Moore, estando en un determinado estado, produce siempre la misma salida, independientemente de cul sea la entrada entradas de datos en ese estado. Un ejemplo de un Diagrama de Estados de un Autmata de Moore sera el siguiente:

Como vemos en el DTE la salida depende del estado en que nos encontremos pero no del valor de la entrada entradas de ese estado. El diagrama debe de interpretarse de la siguiente forma: desde el estado 00 (en el cual siempre se da salida 0) y con entrada E0=1 se pasa al estado 01 (en el que siempre tenemos salida 0), una vez que el sistema a evolucionado a este nuevo estado y con entrada E0=1 se pasa al estado 10 con salida 0), y as para todas las posibles transiciones. Al igual que el autmata de Mealy de cada estado debe salir 2 elevado a n transiciones donde n es el nmero de entradas. Pero qu Autmata elegir para mis diseos? La mayora de las veces suele ser una cuestin de gustos. Algunos puntos prcticos que diferencian a ambos autmatas son los siguientes:

En Mealy la salida es obtenida antes que en Moore. Mealy es ms gil y nervioso que Moore, que es ms ordenado y tranquilo. Los diseadores tienen a Mealy por peligroso, ya que tiene cierto carcter asncrono. Los estados en Mealy suelen o pueden ser ms abstractos que en Moore. Mealy suele o puede tener menos estados que Moore, por tanto su implementacin resulta ms econmica. Suele ser ms cmodo obtener el DTE de Moore que el de Mealy, pero como he dicho antes suele ser una cuestin de gustos. En el ejemplo prctico que vamos hacer utilizaremos a Moore.

Tablas de excitacin de los biestables Si utilizamos biestables como dispositivo de memoria para almacenar el estado actual del autmata, estas tablas nos sirven para relacionar el estado actual y el estado siguiente en que se encuentre el autmata con las entradas del biestable. En el ejemplo prctico que vamos hacer veremos cmo utilizarlas para hacer la tabla de verdad de nuestro autmata. Cada biestable tiene su propia tabla de excitacin, en la figura de abajo se nuestra la tabla de excitacin para cada uno de los biestables existentes.

Ejemplo prctico Vamos hacer un ejemplo prctico y lo vamos a resolver utilizando el modelo del autmata de Moore. Se trata de resolver la parte de control de un pequeo robot de juguete que funciona a travs de un mando a distancia. La caja de control dispone de dos pulsadores (I1 y I2) como entradas del sistema y de dos salidas S0 y S1. Se deben de cumplir las siguientes condiciones:

En estado de reposo (I1=I2=0) el robot no se mover. Si se pulsa el pulsador I1 el robot se mover hacia adelante, continuando el movimiento al dejar de presionar dicho pulsador. Si se pulsan ambos pulsadores I1 y I2 a la vez el robot se mover hacia atrs, continuando el movimiento al dejar de pulsarlos. Si se pulsa el pulsador I2 el robot se parar.

Las seales de salida en funcin del movimiento del robot debern de ser las siguientes:

Si el robot est parado S0=S1=0 Si el robot se mueve hacia atrs S0=0 y S1=1 Y si el robot se mueve hacia adelante S0=1 y S1=0

Resolucin del ejemplo Lo primero y ms importante que tenemos que hacer es dibujar nuestro diagrama de estados de transicin (DTE), lo podemos dibujar directamente en un papel ayudarnos de algn software de los muchos que hay, para la realizacin de este paso (al final del artculo pondr los enlaces de algunos de ellos). Hay que tener en cuenta, que si nos equivocamos aqu, todo lo que hagamos despus no servir de nada. Una cosa que siempre tenemos que comprobar es que sea un autmata determinista, para ello hay que comprobar que no queden posibles estados sin definir. El DTE del ejemplo es el siguiente:

Como se ve en la figura nuestro DTE tiene tres estados llamados (Para, Adel, Atrs), que definen los tres posibles estados de movimiento en los que se puede encontrar el robot. Como vemos de cada estado salen 4 transiciones, contndose tambin las que salen y entran al mismo estado. Como tenemos dos entradas, nuestro autmata es determinista (2 elevado a 2 igual a 4). Vamos a ver un ejemplo de cmo habra que ir construyendo nuestro DTE. Partimos del estado (Para) con entradas I1=I2=0 donde las salidas son S0=0 y S1=0, si pulsamos I1 (I1=1 , I2=0), se producir la transicin al estado (Adel) y la salida cambiar a S0=1 y S1=0 y el robot se mover hacia adelante. Si ahora soltamos el pulsador (I1=0, I2=0), vemos que continuamos en el mismo estado y por tanto el robot continuar movindose en la misma direccin, que es como se haba definido en las condiciones del ejemplo. Pues de esta forma hay que ir comprobando todos los estados que definamos y comprobando todas las posibles transiciones entre ellos. Una vez dibujado y comprobado nuestro DTE. Debemos de construir la tabla de verdad, que en este ejemplo ser la siguiente:

Vamos a ir viendo poco a poco como se ha construido esta tabla. En otros ejemplos los nombres de los campos se mantendrn, aunque el nmero de columnas depender del nmero de estados que tenga nuestro DTE as como del tipo de biestable que utilicemos. Lo primero que tenemos que hacer es codificar los estados, resultado de hacer nuestro DTE. Como tenemos tres estados (paro, adel y atrs) necesitaremos 2 bits. Q1 0 0 1 1 0 1 0 1 Q0 paro adelante atras X Estado

Nos sobra la combinacin (1,1), hay que ponerla porque nos servir para simplificar las funciones de salida. Las variables Q1 y Q0 necesarias para representar en binario cada uno de los estados, pasaran a formar parte de las entradas de nuestro autmata y forman parte del circuito combi nacional que habamos visto en el diagrama de bloques para determinar el estado siguiente del autmata. Otro dato a tener en cuenta y que ya podemos deducir con lo que llevamos hecho es que: el nmero de Biestables necesarios en nuestro circuito depende de los bits en binario necesarios para representar todos los estados. En este ejemplo como el nmero de estados necesita dos bits para su codificacin, necesitaremos dos biestables. Tambin tendremos que decidir ahora el tipo de biestable que deseamos utilizar, yo he utilizado el flip-flop tipo D, luego en el campo flip-flop de la tabla aadiremos las columnas D0 y D1, que corresponden a las salidas de estos flip-flop y que pasaran a formar parte de las funciones de salida de nuestro autmata. Para tener los campos de las columnas de la tabla completa, tendremos que aadir como entradas I1 y I2 definidas como variables de entrada en nuestro ejemplo y como variables de salida aadiremos S0 y S1, definidas tambin en el ejemplo. Aadiremos tambin las columnas del campo correspondiente al estado siguiente de los flip-flop, que aunque no las he definido ni como entradas ni como salidas son necesarias, para hallar el valor de las entradas de los biestables (veremos un ejemplo de cmo hacer esto). Pues bien, una vez definidas todas las columnas que tendr nuestra tabla de verdad, es hora de empezar a insertar filas con datos. Empezaremos con las variables de entrada: como tenemos cuatro (Q1, Q0, I2, I1) necesitaremos 16 combinaciones para poder representar todos sus posibles valores, luego empezaremos a rellenar las filas correspondiente a estas columnas, empezando con el valor (0000) y terminando con (1111). El siguiente paso es rellenar las filas correspondientes a las columnas del campo estado siguiente. Cmo se hace esto?, pues con ayuda del DTE. Por ejemplo estoy en el estado presente paro (Q1=0, Q1=0) si las variables de entrada son (I1=0, I2=0), miro en el DTE cul sera el estado siguiente, como la transicin sale y entra al mismo estado, en las variables (t+1) de Q1 y Q0 tendr que poner cero en ambas tambin y as igual para todas las combinaciones posibles de Q1 Q0 correspondientes al estado presente. Los siguientes campos a rellenar son las entradas de los Flip-Flop en este caso D0 y D1, para ello necesitamos la ayuda de la tabla de excitacin del biestable. Mira la figura de abajo, donde se calcula el valor que tiene que tener D1 para una fila en concreto:

Como veis se trata de ir viendo que valores le corresponde a la entrada del flip-flop segn los valores Q(t) y Q(t+1) que tengamos en cada fila. Ya solo queda rellenar los valores del campo variables de salida (S1 y S0). Lo podemos hacer fcilmente mirando el DTE. Y poniendo los valores de la salida en funcin del estado presente en que nos encontremos. Nota: en este ejemplo coincide por casualidad la codificacin del estado con el valor de las variables de salida, pero es una simple coincidencia. Pues ya tenemos nuestra tabla de verdad completa. Ahora toca obtener las funciones de salida, previamente es aconsejable obtener las expresiones mnimas por un mtodo de simplificacin como los diagramas de Karnaugh.

Una vez obtenida las funciones de salida simplificadas, ha llegado la hora de construir nuestro circuito y simularlo. Lo podemos hacer con Proteus, pero existe otro IDE que es perfecto por su sencillez para este tipo de circuitos. Se trata logisim, que adems se puede descargar de forma gratuita desde la pgina del autor, el circuito terminado sera el siguiente:

También podría gustarte