Aprende › Tema 9
Latches y flip-flops: SR, D, JK y T paso a paso
Lectura de 7 min · Equipo bitGateLab
Hasta ahora las salidas de tus circuitos dependían solo de las entradas del momento. Para contar, guardar un dato o recordar en qué paso va un proceso necesitas memoria, y la celda de memoria más pequeña es el latch. Aquí vas a construir un latch con dos compuertas, a convertirlo en flip-flop disparado por flanco y a usar las tablas que necesitarás para diseñar contadores y máquinas de estados.
El latch SR
Dos compuertas NOR con las salidas cruzadas hacia las entradas forman un latch SR. La realimentación es lo que crea la memoria: una vez que la salida toma un valor, se sostiene sola.
| S | R | Q siguiente | Acción |
|---|---|---|---|
| 0 | 0 | Q | Mantener |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | — | Prohibido |
Con S = R = 1 ambas NOR entregan 0, así que Q y Q dejan de ser complementarias. Peor aún: si después las dos entradas bajan a 0 al mismo tiempo, el estado final depende de cuál compuerta es más rápida. Por eso esa combinación se prohíbe. Su ecuación característica, válida con la condición S·R = 0, es Q+ = S + R·Q.
Con compuertas NAND se obtiene el latch SR, de entradas activas en bajo: 11 mantiene, 01 pone Q = 1, 10 pone Q = 0 y 00 es la combinación prohibida (ambas salidas en 1).
El latch D: transparente mientras está habilitado
Para eliminar la combinación prohibida se agrega una entrada de habilitación EN y se generan S = D·EN y R = D·EN. Como S y R nunca valen 1 a la vez, el problema desaparece. El comportamiento es simple:
- EN = 1: el latch es transparente, Q sigue a D en todo momento.
- EN = 0: Q se congela con el último valor que tenía D.
La transparencia es la debilidad del latch. Si conectas la salida de un latch, a través de lógica, a su propia entrada, mientras EN = 1 la señal puede dar varias vueltas y el resultado es impredecible. Para circuitos secuenciales síncronos se necesita algo que capture el dato en un solo instante.
Flip-flops disparados por flanco
Un flip-flop D disparado por flanco de subida copia D en Q únicamente en el instante en que el reloj pasa de 0 a 1. El resto del tiempo ignora D. Se construye con dos latches D en cascada (maestro y esclavo) con habilitaciones opuestas: mientras el reloj está en 0 el maestro sigue a D y el esclavo está cerrado; al subir el reloj el maestro se cierra y el esclavo pasa a la salida el valor capturado. Su ecuación es la más sencilla: Q+ = D.
A partir del flip-flop básico se definen otros dos tipos muy usados en diseño:
- JK: como el SR pero sin combinación prohibida. J = K = 1 hace que Q cambie (conmute) en cada flanco. Ecuación:
Q+ = J·Q + K·Q. - T (toggle): con T = 0 mantiene, con T = 1 conmuta. Ecuación:
Q+ = T ⊕ Q. Se obtiene de un JK con J = K = T o de un D con D = T ⊕ Q.
| J | K | Q+ | Acción |
|---|---|---|---|
| 0 | 0 | Q | Mantener |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | Q | Conmutar |
Ejemplo: un flip-flop JK parte de Q = 0 y recibe cinco flancos con (J, K) = (1,0), (0,0), (1,1), (0,1), (1,1). Aplica Q+ = J·Q + K·Q en cada uno:
- (1,0), Q = 0: 1·1 + 1·0 = 1.
- (0,0), Q = 1: 0·0 + 1·1 = 1 (mantiene).
- (1,1), Q = 1: 1·0 + 0·1 = 0 (conmuta).
- (0,1), Q = 0: 0·1 + 0·0 = 0.
- (1,1), Q = 0: 1·1 + 0·0 = 1 (conmuta).
Secuencia de Q después de cada flanco: 1, 1, 0, 0, 1.
Tablas de excitación
La tabla característica responde "dadas las entradas, ¿a dónde va Q?". Para diseñar se necesita la pregunta inversa: "quiero que Q pase de este valor a este otro, ¿qué entradas pongo?". Esa es la tabla de excitación, y la vas a usar en cada contador y máquina de estados.
| Q → Q+ | D | T | J K | S R |
|---|---|---|---|---|
| 0 → 0 | 0 | 0 | 0 X | 0 X |
| 0 → 1 | 1 | 1 | 1 X | 1 0 |
| 1 → 0 | 0 | 1 | X 1 | 0 1 |
| 1 → 1 | 1 | 0 | X 0 | X 0 |
Las X del JK son la razón por la que este flip-flop suele dar ecuaciones más cortas: para pasar de 0 a 1 da igual si K vale 0 (set) o 1 (conmutar), y esa libertad se aprovecha en el mapa de Karnaugh.
Tiempos de setup, hold y frecuencia máxima
Un flip-flop real necesita que D esté estable un tiempo antes del flanco, el tiempo de setup (tsu), y que siga estable un tiempo después, el tiempo de hold (th). Si D cambia dentro de esa ventana, la salida puede quedar un rato en un nivel intermedio antes de decidirse: es la metaestabilidad. Además, la salida tarda un retardo tCQ en cambiar después del flanco.
En un circuito síncrono la señal sale de un flip-flop, cruza lógica combinacional y llega al siguiente. El periodo mínimo del reloj es:
Tmin = tCQ + tlógica + tsu
Ejemplo: tCQ = 15 ns, el camino combinacional más largo tarda 20 ns y tsu = 5 ns.
Tmin = 15 + 20 + 5 = 40 ns, así que fmax = 1 / 40 ns = 25 MHz.
Para el hold se usa el camino más corto: si el tCQ mínimo es 5 ns y no hay lógica entre dos flip-flops, el dato nuevo llega 5 ns después del flanco. Con th = 3 ns se cumple, porque 5 ns ≥ 3 ns.
Errores comunes
- Llamar flip-flop a un latch: el latch responde al nivel de la habilitación, el flip-flop al flanco del reloj.
- Usar la tabla característica cuando el diseño pide la de excitación.
- Olvidar que en el latch NAND las entradas son activas en bajo y que la combinación prohibida es 00, no 11.
- Cambiar D justo en el flanco del reloj y esperar un resultado definido.
- Dejar sin conectar las entradas asíncronas de preset y clear de un flip-flop real: deben ir a su nivel inactivo.
Pruébalo en el simulador
La diferencia entre latch y flip-flop se ve de inmediato en un diagrama de tiempos. Arma los dos y aliméntalos con la misma señal.
- Coloca dos compuertas NOR y conecta la salida de cada una a una entrada de la otra; agrega entradas S y R y dos indicadores.
- Cambia S y R para comprobar las cuatro filas de la tabla, incluida la prohibida, y observa que Q y Q valen 0 a la vez.
- Coloca un latch D y un flip-flop D, conecta a ambos la misma entrada de dato y la misma señal de reloj o habilitación.
- Abre el cronograma y cambia D varias veces mientras el reloj está en 1: el latch sigue los cambios y el flip-flop solo toma el valor del flanco de subida.
- Repite con un flip-flop JK con J = K = 1 y observa cómo su salida tiene la mitad de la frecuencia del reloj.
Ejercicios
- Un flip-flop T parte de Q = 1 y recibe T = 1, 1, 0, 1 en cuatro flancos. ¿Qué valores toma Q?
Respuesta
Q+ = T ⊕ Q: 1⊕1 = 0, 1⊕0 = 1, 0⊕1 = 1, 1⊕1 = 0. Secuencia: 0, 1, 1, 0.
- ¿Qué valores de J y K necesitas para que un flip-flop pase de Q = 1 a Q = 0?
Respuesta
J = X, K = 1. Con K = 1 y J = 0 se hace reset; con J = K = 1 se conmuta. Ambas opciones llevan Q a 0.
- Con tCQ = 12 ns, tsu = 4 ns y una frecuencia deseada de 40 MHz, ¿cuánto puede tardar como máximo la lógica entre flip-flops?
Respuesta
T = 1 / 40 MHz = 25 ns. tlógica ≤ 25 − 12 − 4 = 9 ns.
- Escribe la ecuación de D para que un flip-flop D se comporte como un JK.
Respuesta
D = J·Q + K·Q, que es la ecuación característica del JK.
Con estas piezas ya puedes pasar a los contadores y registros y después a las máquinas de estados.