En la teoría de autómatas , la lógica secuencial es un tipo de circuito lógico cuya salida depende del valor actual de sus señales de entrada y de la secuencia de entradas pasadas, el historial de entrada. [1] [2] [3] [4] Esto contrasta con la lógica combinacional , cuya salida es una función solo de la entrada actual. Es decir, la lógica secuencial tiene estado ( memoria ) mientras que la lógica combinacional no.
La lógica secuencial se utiliza para construir máquinas de estados finitos , un componente básico de todos los circuitos digitales. Prácticamente todos los circuitos de los dispositivos digitales prácticos son una mezcla de lógica combinacional y secuencial.
Un ejemplo conocido de un dispositivo con lógica secuencial es un televisor con botones de "subir canal" y "bajar canal". [1] Al presionar el botón "subir" se le da al televisor una entrada que le indica que cambie al siguiente canal por encima del que está recibiendo actualmente. Si el televisor está en el canal 5, al presionar "subir" cambia para recibir el canal 6. Sin embargo, si el televisor está en el canal 8, al presionar "subir" cambia al canal "9". Para que la selección de canal funcione correctamente, el televisor debe saber qué canal está recibiendo actualmente, lo cual fue determinado por selecciones de canal anteriores. [1] El televisor almacena el canal actual como parte de su estado . Cuando se le da una entrada de "subir canal" o "bajar canal", la lógica secuencial del circuito de selección de canal calcula el nuevo canal a partir de la entrada y el canal actual.
Los circuitos lógicos secuenciales digitales se dividen en síncronos y asíncronos . En los circuitos secuenciales síncronos, el estado del dispositivo cambia solo en momentos discretos en respuesta a una señal de reloj . En los circuitos asíncronos, el estado del dispositivo puede cambiar en cualquier momento en respuesta a cambios en las entradas.
Casi toda la lógica secuencial actual es lógica sincronizada o síncrona . En un circuito síncrono, un oscilador electrónico llamado reloj (o generador de reloj ) genera una secuencia de pulsos repetitivos llamados señal de reloj que se distribuyen a todos los elementos de memoria del circuito. El elemento de memoria básico en la lógica síncrona es el flip-flop . La salida de cada flip-flop solo cambia cuando se activa con el pulso de reloj, por lo que los cambios en las señales lógicas de todo el circuito comienzan todos al mismo tiempo, a intervalos regulares, sincronizados por el reloj.
La salida de todos los elementos de almacenamiento (flip-flops) del circuito en un momento dado, los datos binarios que contienen, se denomina estado del circuito. El estado del circuito síncrono solo cambia en los pulsos de reloj. En cada ciclo, el siguiente estado está determinado por el estado actual y el valor de las señales de entrada cuando se produce el pulso de reloj.
La principal ventaja de la lógica sincrónica es su simplicidad. Las puertas lógicas que realizan las operaciones sobre los datos requieren una cantidad finita de tiempo para responder a los cambios en sus entradas. Esto se denomina retardo de propagación . El intervalo entre los pulsos de reloj debe ser lo suficientemente largo para que todas las puertas lógicas tengan tiempo de responder a los cambios y sus salidas se "establezcan" en valores lógicos estables antes de que se produzca el siguiente pulso de reloj. Mientras se cumpla esta condición (ignorando otros detalles), se garantiza que el circuito sea estable y confiable. Esto determina la velocidad máxima de funcionamiento del circuito sincrónico.
La lógica sincrónica tiene dos desventajas principales:
La lógica secuencial asincrónica ( sin reloj o con temporizador automático ) no está sincronizada por una señal de reloj; las salidas del circuito cambian directamente en respuesta a los cambios en las entradas. La ventaja de la lógica asincrónica es que puede ser más rápida que la lógica sincrónica, porque el circuito no tiene que esperar una señal de reloj para procesar las entradas. La velocidad del dispositivo está potencialmente limitada solo por los retrasos de propagación de las puertas lógicas utilizadas.
Sin embargo, la lógica asincrónica es más difícil de diseñar y está sujeta a problemas que no se encuentran en los diseños sincrónicos. El problema principal es que los elementos de memoria digital son sensibles al orden en que llegan sus señales de entrada; si dos señales llegan a un flip-flop o pestillo casi al mismo tiempo, el estado al que pasa el circuito puede depender de qué señal llega primero a la compuerta. Por lo tanto, el circuito puede pasar al estado incorrecto, dependiendo de pequeñas diferencias en los retrasos de propagación de las compuertas lógicas. Esto se llama condición de carrera . Este problema no es tan grave en los circuitos sincrónicos porque las salidas de los elementos de memoria solo cambian en cada pulso de reloj. El intervalo entre las señales de reloj está diseñado para ser lo suficientemente largo como para permitir que las salidas de los elementos de memoria se "establezcan" de modo que no cambien cuando llegue el siguiente reloj. Por lo tanto, los únicos problemas de sincronización se deben a "entradas asincrónicas"; entradas al circuito desde otros sistemas que no están sincronizados con la señal de reloj.
Los circuitos secuenciales asincrónicos suelen utilizarse solo en unas pocas partes críticas de sistemas sincrónicos donde la velocidad es fundamental, como partes de microprocesadores y circuitos de procesamiento de señales digitales .
El diseño de la lógica asincrónica utiliza modelos matemáticos y técnicas diferentes a las de la lógica sincrónica, y es un área activa de investigación.