logica-secuencial-flip-flops-latches

Lógica secuencial: latches y flip-flops (memorias de 1 bit)

  • 4 min

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ísticaLatchFlip-flop
SincronizaciónAsíncrono (o por nivel)Síncrono (por reloj)
Cuándo cambiaEn cuanto cambia la entradaSolo en el flanco del reloj
Uso principalCircuitos simples, rebotesCPUs, contadores, registros
EstabilidadBaja (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.

  1. Ponemos un 1 o un 0 en la entrada D. No pasa nada, la salida no cambia.
  2. En el momento que CLK hace un flanco de subida (pasa de LOW a HIGH)…
  3. …el flip-flop copia lo que haya en D y lo pone en la salida Q.
  4. 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).