¿Cómo se puede hacer un chip secuencial solo con chips combinacionales?

Realimentación.

El núcleo de toda lógica secuencial es el concepto de retroalimentación, una salida que se conecta de nuevo a una entrada. Cuando tenga eso, puede hacer que un circuito combinacional simple ‘recuerde’ un estado anterior.

La más simple es una sola puerta ‘OR’ con su salida conectada a una de sus propias entradas. Cuando la otra entrada va a ‘1’, la salida irá a ‘1’ y permanecerá allí incluso si la entrada vuelve a ‘0’. Ha recordado el ‘1’.

Sin embargo, este tipo de comportamiento de enclavamiento es inútil, por lo que en la práctica el primer circuito práctico de este tipo que conocemos es el flip flop Set-Reset (SR FF).

En este circuito, las conexiones de retroalimentación de las salidas permiten que el circuito ‘recuerde’ estar configurado (salida Q configurada en 1) o restablecer (salida Q configurada en 0). Otros cambios en las entradas no afectan el estado: una vez que se establece el circuito, solo un restablecimiento puede cambiarlo, y viceversa.

Este circuito se puede extender para construir un flip flop maestro-esclavo, de los cuales un tipo común es el flip flop JK (JK FF):

Este tipo de circuito es bastante versátil, porque dependiendo de cómo se usen las entradas J y K, se puede configurar de varias maneras. Pero lo esencial para notar es que un conjunto de entradas ha sido reemplazado por una señal de ‘reloj’. Las partes maestra y esclava del circuito son operadas por la fase opuesta del reloj: en una fase, el circuito maestro se establece en algún estado, al igual que el SR FF, luego en la fase opuesta ese estado se transfiere al circuito esclavo. Entonces, como un todo, el circuito registra el estado de sus entradas de acuerdo con la señal del reloj. Los cambios en cualquier otro momento se ignoran. Entonces ahora tiene una celda de memoria de 1 bit que está estrictamente controlada por la presencia de una señal de reloj fija. Con eso, puede construir una gran cantidad de circuitos secuenciales adicionales.

El siguiente circuito secuencial más útil para aprender es el registro. Esto es simplemente una secuencia de celdas de 1 bit como la anterior, impulsada por un reloj común. Una de las configuraciones para las que puede usar un flip flop JK es el tipo ‘datos’ o el flip flop tipo D (DFF). Esto reemplaza múltiples entradas con una sola entrada de ‘datos’ (D). Cualquier estado en esa entrada cuando el reloj cambia es registrado por la celda. Por lo tanto, puede encadenar varios tipos D para crear un registro de entrada en serie y salida en paralelo:

En cada ciclo de reloj, el valor de datos marcha una posición a lo largo de la cadena, por lo que puede registrar un valor en serie y luego hacer que ese valor aparezca en las salidas Q después de que se haya movido el número correcto de bits. El valor se mantiene indefinidamente siempre que el reloj no cambie: ha implementado una memoria simple de varios bits.

Con la lógica adecuada, también puede implementar un contador. Este es un registro cuyo valor actual seguirá un patrón de conteo. Puede diseñar un contador para contar de la forma que desee que sea útil para usted. Por ejemplo, aquí hay un contador binario de 4 bits implementado usando flip flops JK. Cuenta por uno en cada pulso de reloj.

Una vez que tenga contadores y registros, puede hacer cualquier cosa que desee: máquinas de estado, unidades aritméticas, procesadores, computadoras enteras.

Las máquinas de estado se pueden generalizar en dos tipos, máquinas Moore y máquinas Mealy. En ambos casos, el estado existente, que se mantiene en algún tipo de memoria (registros), se retroalimenta para actuar como entrada adicional. Entonces, una vez más, la retroalimentación está en el corazón de todas las máquinas secuenciales. Hay una retroalimentación interna en forma de acoplamiento cruzado que permite recordar un solo bit, y hay una retroalimentación general que permite que el estado existente se use como entrada para sí mismo.

Se puede construir una CPU a partir de una máquina de estado junto con una cantidad de memoria pura para implementar una máquina informática. Se pueden aplicar más comentarios en el software para hacer que haga muchas cosas útiles.

Es retroalimentación todo el camino hacia abajo (o hacia arriba).

La lógica secuencial es solo lógica combinacional conectada con rutas de retroalimentación.

No hay prácticamente nada que no pueda hacer con las compuertas NAND convencionales (por ejemplo, 74LS00) si tiene suficientes.

Ate 2 entradas juntas, tiene un inversor. Invierta la salida de una puerta NAND y tendrá una puerta AND. Invierta ambas entradas de una puerta NAND y tendrá una puerta OR. Invierta la salida también. y tienes una puerta OR.

Conecte la salida de la compuerta NAND A a cualquiera de las entradas de la compuerta NAND B. Conecte la salida de la compuerta NAND B a una entrada de la compuerta NAND A. Ahora tiene un flip flop SR o biestable. Siga agregando compuertas NAND y podrá crear circuitos secuenciales cada vez más complejos. Ponga unas chanclas en cascada y ahora tiene un contador … y así sucesivamente.

Circuitos lógicos secuenciales y el flip-flop SR

Muchas veces me he quedado sin espacio en un prototipo de placa y no pude meterme en otro paquete de 14 pines, como un flip-flop doble 74LS74, pero me las he arreglado para buscar suficientes puertas no utilizadas en otras fichas para juntar algo en un ¡pellizco!

¡Sencillo! Puede construir flipflops cronometrados a partir de la lógica combinacional. Entonces puedes construir circuitos secuenciales a partir de ellos. Simplemente busque los dibujos lógicos internos para flipflops tipo D o JK.

Como alternativa, si tiene cosas como la lógica de matriz programable disponible, sin registros, puede construir Earle Latches a partir de ellos y combinar la lógica combinacional con los registros. Necesitará al menos dos relojes de fase para hacer esto.