TEMA I: INTRODUCCIÓN A LOS CIRCUITOS SECUENCIALES Hasta ahora, únicamente hemos visto circuitos combinacionales, es decir, circuitos en los que las salidas dependen única y exclusivamente de las combinaciones de entradas, y no de la historia pasada del sistema. Vamos a ver cuáles serían las formas de onda del siguiente circuito. A B A F B F F = A·B + A·F + B·F Figura 1.1.- Ejemplo de circuito digital junto con sus formas de ondas. En las formas de onda podemos comprobar que la señal de salida F cambiará de estado (cuando sea necesario) después del retraso de la puerta AND y OR. Otra característica de este circuito que también podemos observar es que la salida también muestra una dependencia de ella misma, además de las señales de entrada; ésta implica que para una misma combinación de señales de entrada podemos encontrar valores de salida diferentes, como sucede en el caso de AB = “10”. Por lo tanto, el valor de la salida también depende de los valores pasados del circuito, es decir, de su historia. La dependencia de esta historia puede ser ventajosa e incluso necesaria para algunas aplicaciones en las que es necesario recordar una determinada situación. Algunos ejemplos de esta ventaja (necesidad) pueden ser: • La creación de un reloj, que se modelada con la afirmación “la salida será el valor complementario de su valor anterior”, • La creación de un contador, que se modelada con la afirmación “la salida será el resultado de sumar uno a su valor anterior”,... 2 Dpto. Ingeniería Electrónica de Sistemas Informáticos y Automática Por lo tanto, se ve cuando menos interesante incluir la dependencia del tiempo en los sistemas y en especial, en los sistemas digitales. 1. Introducción. Definición de Sistema Secuencial Los sistemas digitales que introducen la dependencia temporal son conocidos como sistemas secuenciales. Una definición más rigurosa de sistema secuencial puede ser la siguiente: Un circuito de conmutación secuencial se define como un circuito bivaluado en el cual, la salida en cualquier instante depende de las entradas en dicho instante y de la historia pasada (o secuencia) de entradas. Esta definición implica una serie de características inherentes a estos sistemas. Entre éstas podemos destacar las siguientes: • Poseen uno o más caminos de realimentación, es decir, una o más señales internas o de salida se vuelven a introducir como señales de entradas. Gracias a esta característica se garantiza la dependencia de la operación con la secuencia anterior. • Como es lógico, existe una dependencia explícita del tiempo. Esta dependencia se produce en los lazos de realimentación antes mencionados. En estos lazos es necesario distinguir entre las salidas y las entradas realimentadas. Esta distinción se traducirá en un retraso de ambas señales (en el caso más ideal), como se puede ver en la figura 1.2, el cual puede producirse mediante dos elementos: • Elementos de retraso, ya sean explícitos o implícitos debido al retraso de la lógica combinacional. Este retraso es fijo e independiente de cualquier señal. • Elementos de memoria, que son dispositivos que almacena el valor de la entrada en un instante determinado por una señal externa y lo mantiene hasta que dicha señal ordene el almacenamiento de un nuevo valor. La diferencia de comportamiento entre ambos elementos radica en que la salida del elemento de retraso es una copia de la señal de entrada; mientras que el elemento de memoria copia determinados instantes de la entrada (determinados por una señal externa), y no la señal completa, el resto del tiempo la salida no cambia de valor, como podemos apreciar en la figura 1.2. Entrada Control Retraso Memoria Figura 1.2.- Formas de onda de salida y entrada de un elemento de retraso y de memoria. TEMA I: INTRODUCCIÓN A LOS CIRCUITOS SECUENCIALES 3 En este caso, podemos observar que la salida del elemento de retraso es una copia de la señal de entrada retraso un determinado tiempo; mientras que la salida del elemento de memoria copia los valores de la entrada cuando la señal de control tiene una transición de subida, por lo que la copia no es exacta, sino que sólo copia lo que interesa. Por lo tanto, el modelo clásico de un sistema secuencial consta de un bloque combinacional, que generará la función lógica que queramos realizar, y un grupo de elementos de memoria con una serie de señales realimentadas, como se muestra en la figura 1.3. Salidas Co L m ógi bi c na a ci on al Entradas Próximo Estado Elemento de Memoria Estado Presente Figura 1.3.- Modelo clásico de un sistema secuencial. En ella podemos distinguir tres tipos de señales: señales de entradas, señales de salida y señales de estado. Las señales de entrada y salida tienen el mismo significado que en los sistemas combinacionales. En cambio, las señales de estado son aquellas que mantienen la información de la historia pasada del sistema. Las señales de estado tienen dos versiones, según se consideren a la salida o a la entrada del elemento de memoria: • Si consideramos las señales de estado a la salida de los elementos de memoria, o lo que es lo mismo, a la entrada del bloque combinacional, se denominan señales de estado presente ya que nos indica el estado en el que se encuentra el sistema para realizar una operación. • Si consideramos las señales de estado a la entrada de los elementos de memoria, o lo que es lo mismo, a la salida del bloque combinacional, se denominan señales del próximo estado ya que nos indican el estado al que llegará después de que el bloque combinacional haya realizado la operación. 2. Clasificación de los Sistemas Secuenciales Uno de los primeros problemas de los circuitos secuenciales era determinar el momento en el que el próximo estado debía pasar a estado presente, sin capturar situaciones no deseadas como pueden ser los azares. Este problema es lo que se conoce como sincronización, cuyas soluciones dieron lugar a una de la principales clasificaciones de los sistemas secuenciales. Así podemos dividir los sistemas en dos categorías: 4 Dpto. Ingeniería Electrónica de Sistemas Informáticos y Automática • Sistemas asíncronos.- La sincronización depende exclusivamente de los retrasos de la lógica combinacional, sin necesidad de ninguna señal externa al sistema. • Sistemas síncronos.- La sincronización depende exclusivamente de una señal externa al sistema, conocida generalmente como señal de reloj. Esta señal de reloj controlará el comportamiento de los elementos de memoria. Las operaciones de un sistema asíncrono tienen efecto, es decir, se almacena el próximo estado, en intervalos temporales diferentes. Por lo tanto, su velocidad de operación será distinta para cada secuencia de entradas. De esta forma se toma como el parámetro de la velocidad de operación el valor medio de todas las velocidades. Así, la operación de un sistema asíncrono se denomina operación del caso medio. En cambio, las operaciones de un sistema síncrono tienen efecto en el mismo intervalo temporal, el dictaminado por el periodo de la señal de reloj. Por lo tanto, su velocidad de operación será siempre la misma para todas las secuencias de entrada. Esta velocidad debe ser tal que todas las operaciones tengan el tiempo necesario para poder llevarse a cabo. Así, la velocidad de un sistema síncrono (y por tanto la frecuencia de la señal de reloj asociada) debe estar limitada por la operación más lenta. A este tipo de operaciones se le suele denominar operación del caso peor. Estos dos tipos de operaciones se muestran esquematizadas en la figura 1.4. Ambos se pueden modelar de la misma forma, es decir, con una lógica combinacional y realimentaciones a través de elementos de memoria. La diferencia radica en el control de estos elementos: en el caso síncrono, los elementos de memoria son controlados por una señal externa, que por lo general es controlada directamente por el usuario; mientras que en el caso asíncrono, esta señal de control no existe (por lo que el elemento de memoria se traduce en un elemento de retraso) o en su defecto dicha señal es generada por el propio circuito, luego el gobierno de las operaciones recaen completamente en el propio circuito. Así podemos apreciar que el cambio de las señales de próximo estado a estado presente se llevan a cabo mediante un mayor o menor retraso en el caso asíncrono o cuando lo indique una señal externa en el caso síncrno. 3. Representación de los sistemas secuenciales. De igual forma que existe una representación de los sistemas combinacionales (mediante tablas de combinaciones), los sistemas secuenciales también tienen sus formas de representación. Éstas son algo más complejas, debido a la dependencia temporal. Así, podemos encontrar las siguientes formas equivalentes, mostradas en la figura 1.5: • Diagrama de estados, es un grafo orientado en el que cada nudo es un estado y cada transición indica el cambio, tanto de estado como de salida, respecto a un cambio en alguna de las señales de entradas. • Tablas de estado y de salida, es una representación tabular del grafo anterior. Las entradas se representan como columnas, y los estados presentes como filas; y en el interior de cada celda, se indica el próximo estado y el valor que tomará la salida cuando sufra la transición. Las representaciones del ejemplo de la figura podrían describirse verbalmente de la siguiente forma: 5 TEMA I: INTRODUCCIÓN A LOS CIRCUITOS SECUENCIALES Salidas Entradas ica l na g Ló cio na bi C Próximo Estado Elemento de Estado Presente Memoria Próximo Estado Elemento de n bi m Co om Estado Presente l na io ac Memoria ica g Ló Salidas Entradas Reloj Entradas Entradas P. estado P. estado Estado p. Estado p. Reloj Caso Asíncrono Caso Síncrono Figura 1.4.- Esquematización de los casos secuenciales asíncronos y síncronos. 0,1 A B 0,0 1,0 0,1 1,0 C 1,0 D 0 1 A B, 1 C, 0 B B, 1 D, 0 C A, 0 D, 0 D C, 1 C, 0 0,1 1,0 Diagrama de estados Tabla de estados Figura 1.5.- Representación de los sistemas secuenciales mediante diagramas de estados y • Cuando el sistema está en el estado A y la señal de entrada vale ‘0’, pasaremos al estado B con un valor de salida igual a ‘1’. • Cuando el sistema está en el estado A y la señal de entrada vale ‘1’, pasaremos al estado C con un valor de salida igual a ‘0’. • Cuando el sistema está en el estado B y la señal de entrada vale ‘0’, no cambiaremos de estado pero el valor de salida será igual a ‘1’. 6 Dpto. Ingeniería Electrónica de Sistemas Informáticos y Automática • Cuando el sistema está en el estado B y la señal de entrada vale ‘1’, pasaremos al estado D con un valor de salida igual a ‘0’. • Cuando el sistema está en el estado C y la señal de entrada vale ‘0’, pasaremos al estado A con un valor de salida igual a ‘0’. • Cuando el sistema está en el estado C y la señal de entrada vale ‘1’, pasaremos al estado D con un valor de salida igual a ‘0’. • Cuando el sistema está en el estado D y la señal de entrada vale ‘0’, pasaremos al estado C con un valor de salida igual a ‘1’. • Cuando el sistema está en el estado D y la señal de entrada vale ‘1’, pasaremos al estado C con un valor de salida igual a ‘0’. En principio, en cualquier sistema secuencial, las señales de salida y del próximo estado van a venir determinadas por una función lógica de las señales de entrada y del estado presente, como muestra la siguiente ecuación. Q i, F i = f ( q i, I i ) No obstante, la dependencia de las señales de entrada sobre las señales de salida pueden llegar a eliminarse y encontrarlas de forma implícita en las señales de estado presente, es decir, siempre que lleguemos a un mismo estado, las salidas tomarán un único valor. Por lo tanto, podemos encontrarnos con dos modelos o tipos de sistemas secuenciales en función de la dependencia de las señales de salida: • Modelo de Mealy.- Las señales de salida son funciones tanto de las señales de entrada como de estado presente, como muestra las siguientes ecuaciones: F i = f ( q i , I i ), Q i = f ( q i , I i ) • Modelo de Moore.- Las señales de salida son funciones únicamente de las señales del estado presente, como muestra las siguientes ecuaciones: F i = f ( q i ), Q i = f ( q i, I i ) debido a la diferencia de dependencia de las salidas, ambas máquinas las podemos representar de dos formas tabulares diferentes, como podemos ver en la figura 1.6. En ella, el significado de cada celda es diferente, puesto que un mismo sistema se debe poder representar de ambas formas. En el caso de la representación de Mealy, el significado del interior de cada celda es el que vimos anteriormente, es decir, el próximo estado al que llegará con el valor de salida correspondiente. En cambio, en el representación de Moore, el interior de la celda de las columnas de las entradas es el mismo, es decir, el próximo estado al que llegará el sistema; no obstante, para saber cuál será la salida tenemos que obtenerlo del valor correspondiente al próximo estado al que llegará. Ambos tipos de modelos son equivalentes y existe una transformación directa entre ellos, según el significado de las celdas de cada una de las representaciones. • Para pasar de una máquina de Mealy a una de Moore, se siguen los siguientes pasos: 7 TEMA I: INTRODUCCIÓN A LOS CIRCUITOS SECUENCIALES 0 1 0 1 Salida A B, 1 C, 0 A B C 0 B B, 1 D, 0 B B D 1 C A, 0 D, 0 C A D 0 D B, 1 C, 0 D B C 0 Autómata de Moore Autómata de Mealy Figura 1.6.- Representaciones tabulares de los autómatas de Mealy y Moore. • Se deja el mismo alfabeto de entradas y salidas • El alfabeto de estados es el correspondiente al inicial más los estados a los que se llega con diferentes valores de salida • Para pasar de una máquina de Moore a una de Mealy, se siguen los siguientes pasos • Se deja el mismo alfabeto de entradas y salidas • En la tabla de estados, se le asigna como salida la correspondiente a la del próximo estado y se eliminan las filas idénticas. Ambas transformaciones se muestran en la figura 1.7. En este ejemplo, cuando pasamos de Moore a Mealy, los estados A, B y D permanecen igual ya que siempre se llega con el mismo valor de salida. No obstante al estado C se llega con dos valores de salida diferentes, luego tenemos que añadir tantos estados como valores diferentes de salida presente (en este caso dos). En la conversión contraria, en el interior de la celda se indica tanto el próximo estado como el valor de salida al que llega (indicado por la última columna de la máquina de Mealy). Una vez hecho esto, si existiesen filas iguales, solamente nos quedaríamos con una de ellas eliminando los estados sobrantes. 0 A B, 1 C, 0 B, 1 D, 0 C A, 0 D, 0 D C, 1 C, 0 B 0 1 Salida 0 1 Salida A0 B1 C0 0 A B C 0 A B, 1 C, 0 B0 B1 D0 1 B B E 1 B B, 1 E, 0 C0 A0 D0 0 C A E 0 C A, 0 E, 0 C1 A0 D0 1 D A E 1 D A, 0 E, 0 D0 C1 C0 0 E D C 0 E D, 1 C, 0 1 Mealy --> Moore 0 1 Moore --> Mealy Figura 1.7.- Conversiones entre máquinas de Mealy y máquinas de Moore. Por lo tanto, hemos obtenido dos implementaciones que modelan el mismo sistema secuencial. Luego Se dice que dos sistemas secuenciales son equivalentes cuando generan la misma secuencia de salida para la misma secuencia de entrada, con independencia de cómo sea ésta. 8 Dpto. Ingeniería Electrónica de Sistemas Informáticos y Automática Si consideramos las máquinas de la figura 1.7, para cualquier secuencia de las señales de entrada, deberíamos poder encontrar un estado inicial tal que la secuencia de salida sería la misma. Este hecho lo podemos ver en la figura 1.8, donde se muestran las formas de ondas para ambas máquinas. Debemos destacar que hemos elegido como estados iniciales equivalentes, los estados B (de la máquina de Mealy) y B1 (de la máquina de Moore). También podemos observar que cuando la entrada toma el valor ‘1’, ningún estado se estabiliza sino que existe un cambio continuo entre los estados C y D (C0 y D0); el estado en el que se produce la transición de entrada depende del retraso de la máquina. Entrada Estado B D C D C A B D C A B C0 A0 B1 D0 C0 A0 B1 Salida Máquina de Mealy Estado B1 D0 C0 D0 Salida Máquina de Moore Figura 1.8.- Equivalencia entre dos máquinas secuenciales. 4. Aplicaciones de sistemas secuenciales. Como ya hemos comentado, los sistemas secuenciales forman un conjunto de circuitos muy importantes en la vida cotidiana. En cualquier elemento que sea necesario almacenar algún parámetro, es necesario un sistema secuencial. Así, cualquier elemento de programación (o lo que es lo mismo, con más de una función) necesita un sistema secuencial. A modo de ejemplo, expondremos el caso de una máquina de refrescos. En esta máquina iremos introduciendo monedas hasta alcanzar o sobrepasar el valor del refresco que deseamos sacar. Por lo tanto, en este sistema se debe almacenar una serie de datos, como pueden ser: • Los precios de los productos ofertados. • Estado de existencia de los mismos. • Cantidad de dinero que hayamos introducido en la máquina hasta el momento. Así, vemos que es necesario almacenar temporalmente una serie de datos, por lo que nos encontramos ante un sistema secuencial.