La lógica secuencial es la electrónica digital con memoria. La salida depende no solo de las entradas actuales, sino también del estado anterior del circuito.
En el artículo anterior vimos circuitos combinacionales (puertas, multiplexores). Su regla era simple: si cambias la entrada, cambia la salida. No importaba lo que hubiera pasado hace 10 milisegundos. El circuito vivía en un eterno presente.
Pero los ordenadores necesitan recordar. Necesitan almacenar variables, contar pasos o guardar una foto.
Para eso nace la lógica secuencial. La clave aquí es la realimentación (feedback). Si tomamos la salida de una puerta lógica y la conectamos de vuelta a su entrada, creamos un bucle que puede mantener un estado indefinidamente.
Hoy vamos a ver las celdas de memoria más básicas: el latch y el flip-flop.
Latch vs flip-flop
| Característica | Latch | Flip-flop |
|---|---|---|
| Sincronización | Asíncrono (o por nivel) | Síncrono (por reloj) |
| Cuándo cambia | En cuanto cambia la entrada | Solo en el flanco del reloj |
| Uso principal | Circuitos simples, rebotes | CPUs, contadores, registros |
| Estabilidad | Baja (sensible al ruido) | Alta (sincronizado) |
El latch SR (la memoria básica)
El latch (cerrojo) es el circuito de memoria más sencillo. Se construye cruzando dos puertas NOR o NAND. Vamos a centrarnos en el latch SR (Set-Reset).
Tiene dos entradas:
- S (Set): Para “poner” la memoria a 1.
- R (Reset): Para “borrar” la memoria a 0.
Funcionamiento
Si pulsas S: La salida Q se pone a 1. Aunque sueltes S, la salida se queda en 1. ¡Ha recordado!
Si pulsas R: La salida Q se pone a 0. Se queda en 0 aunque sueltes R.
Si no pulsas nada (S=0, R=0): El circuito mantiene el estado que tuviera antes (memoria).
El estado prohibido: ¿Qué pasa si pulsas S y R a la vez? Las puertas luchan entre sí, la salida se vuelve impredecible y el chip se calienta u oscila. En un diseño correcto nunca debemos activar ambos a la vez.
El problema del latch: el caos temporal
El latch es sensible al nivel. En un latch D con señal de habilitación, mientras esta permanezca activa los cambios de la entrada pasan a la salida; al desactivarla, conserva el último estado.
En circuitos complejos con millones de puertas, esto es un desastre. Las señales tardan tiempos diferentes en llegar (nanosegundos de diferencia). Si los latches cambian en momentos distintos, el procesador se volvería loco.
Necesitamos un director de orquesta. Necesitamos un reloj.
El reloj (clock) y el disparo por flanco
Para solucionar el caos, introducimos una señal cuadrada constante llamada CLK (clock). Y aquí nace el flip-flop.
La diferencia fundamental entre un latch y un flip-flop es cuándo aceptan datos:
- Latch: Es transparente. Si el reloj está en nivel alto, deja pasar todo. Es malo para sincronizar.
- Flip-flop: Solo hace caso a la entrada en el instante exacto en que el reloj cambia. Esto se llama disparo por flanco (edge triggering).
El flip-flop tipo D (data)
El flip-flop tipo D es muy habitual en registros y otros circuitos secuenciales. Soluciona el problema del estado prohibido del SR usando una sola entrada de datos (D).
Funcionamiento
Tiene una entrada D y una entrada de reloj CLK.
- Ponemos un
1o un0en la entrada D. No pasa nada, la salida no cambia. - En el momento que CLK hace un flanco de subida (pasa de LOW a HIGH)…
- …el flip-flop copia lo que haya en D y lo pone en la salida Q.
- La salida Q se queda congelada, ignorando cambios en D, hasta el próximo flanco de subida.
Esto es lo que permite que un procesador funcione por pasos (ciclos de reloj). Todo el sistema se mueve a la vez al ritmo del tic-tac del reloj.
El flip-flop JK (el universal)
El JK es una versión mejorada del SR.
- J actúa como set.
- K actúa como reset.
La mejora es que si activas J y K a la vez, no se vuelve loco (como el SR). Lo que hace es invertir (toggle) su estado anterior. Si estaba en 0 pasa a 1, y viceversa. Esto lo hace ideal para construir contadores.
Aplicación: el registro
Un flip-flop almacena 1 bit. Si ponemos 8 flip-flops tipo D en paralelo y conectamos todos sus relojes juntos tenemos un registro de 8 bits (1 byte).
Cuando el reloj da la señal, los 8 bits se almacenan simultáneamente.
- Así funcionan los puertos de salida en microcontroladores (como
PORTD). - Así funciona la memoria RAM (millones de flip-flops y condensadores).