← Índice del curso

Circuitos Secuenciales y Memoria · Tema 5

Latch SR con NOR y NAND

En el tema anterior apareció un lazo de dos puertas que retiene un bit. Ahora le damos nombre y especificación completa: el latch SR. Veremos sus tablas, cómo se lee según use NOR (entradas activas en alto) o NAND (activas en bajo), por qué una combinación de entradas está prohibida y cómo se diseña alrededor de ese hecho.

01 · Punto de partida

El bit más pequeño que se puede escribir y borrar

En la alarma del tema 1 el estado se actualizaba en los flancos de un reloj. Eso la hacía ciega entre flanco y flanco, como vimos en el tema 3: un pulso corto del sensor podía pasar inadvertido. El latch SR resuelve ese problema por otro camino: no tiene reloj y reacciona a sus entradas en cuanto cambian. Una orden de «poner» (Set) lleva la salida a 1 y la deja ahí; una orden de «borrar» (Reset) la lleva a 0; sin órdenes, retiene.

Es el biestable más simple y el ladrillo de los demás: los latches con habilitación del tema 6 y los flip-flops del tema 8 se construyen a partir de él. Entender bien sus reglas, y sobre todo sus restricciones, evita errores que reaparecen más adelante con otros nombres.

Partimos de las dos ecuaciones del tema anterior y las ordenamos: qué hace cada entrada, qué retiene el circuito, qué produce cada combinación.

02 · Con NOR

Entradas activas en alto

Dos puertas NOR realimentadas: la salida de cada una vuelve a una entrada de la otra. La NOR que produce Q recibe R, y la que produce ~Q recibe S:

Q = NOR(R, ~Q)   ·   ~Q = NOR(S, Q)
Latch SR con dos puertas NOR Una NOR superior con entrada R produce Q. Una NOR inferior con entrada S produce ~Q. Cada salida se cruza hacia una entrada de la otra puerta. NORNORRSQ~Q
Tabla de función del latch de NOR. Q+ es el valor de Q después de que el circuito se asienta.
SRQ+~Q+Operación
00Q~QRetiene el valor anterior
1010Set: pone Q en 1
0101Reset: pone Q en 0
1100Prohibida

La lectura es sencilla: las entradas son activas en alto, es decir, se dan órdenes con un 1. El reposo es el 0. La idea es la misma que la de un pulsador con pull-down: sin hacer nada, nada cambia.

03 · Con NAND

Entradas activas en bajo

Con puertas NAND el circuito es el mismo con una salvedad: ahora la NAND que produce Q recibe S, y la que produce ~Q recibe R. Una NAND con una entrada en 0 vale 1 sin importar la otra, así que las órdenes se dan con un 0. Para recordarlo se escribe una barra sobre los nombres: S̄ y R̄.

Q = NAND(S̄, ~Q)   ·   ~Q = NAND(R̄, Q)
Latch SR con dos puertas NAND Una NAND superior con entrada S barra produce Q. Una NAND inferior con entrada R barra produce ~Q. Cada salida se cruza hacia una entrada de la otra puerta. NANDNANDS̄R̄Q~Q
Tabla de función del latch de NAND.
S̄R̄Q+~Q+Operación
11Q~QRetiene el valor anterior
0110Set: pone Q en 1
1001Reset: pone Q en 0
0011Prohibida
Comparación de los dos latches.
AspectoNORNAND
Nivel que da la orden1 (activo en alto)0 (activo en bajo)
Nivel de reposoS = R = 0S̄ = R̄ = 1
Combinación prohibidaS = R = 1S̄ = R̄ = 0
Salidas en la prohibidaQ = ~Q = 0Q = ~Q = 1
Entrada que gobierna a QR (reset)S̄ (set)
Se combina bien conLógica de activo en alto, pull-downPulsadores a masa con pull-up

Los dos circuitos son duales: el NAND con entradas S̄ = NOT S y R̄ = NOT R se comporta como el NOR, salvo en la combinación prohibida. Es una aplicación directa de De Morgan. Elegir uno u otro suele depender de la polaridad de las señales disponibles: un pulsador que conecta a masa entrega 0 al pulsarlo, y es una orden natural para un NAND.

04 · El caso difícil

La condición prohibida

Pedir Set y Reset a la vez es una contradicción: la salida no puede ser 1 y 0 al mismo tiempo. El circuito la «resuelve» de una forma que no es una respuesta lógica: fuerza las dos salidas al mismo valor (0 en NOR, 1 en NAND). Eso rompe la relación entre Q y ~Q, que debían ser complementarias.

El problema serio no es el estado mientras la combinación está aplicada, sino lo que pasa al soltar las dos órdenes a la vez. Las dos puertas quedan libres en el mismo instante y el lazo compite consigo mismo (tema 4):

Al soltar la combinación prohibida (NOR: de S = R = 1 a S = R = 0).
Si la NOR de Q responde antesSi la NOR de ~Q responde antesSi responden a la vez
Q termina en 1Q termina en 0Oscila entre (0, 0) y (1, 1)

En un chip real, pequeñas diferencias de fabricación, de carga y de ruido deciden el resultado, que además cambia de un ejemplar a otro. Con retardos casi iguales, el lazo puede tardar un tiempo variable en decidirse: es una forma de metastabilidad. La conclusión de diseño: el estado posterior es impredecible, y una buena práctica es no permitir que la combinación ocurra.

Tres políticas de diseño

Qué hacer con S = R = 1 (latch de NOR), cada política con su ecuación.
PolíticaCon S = R = 1Q+Cómo se obtiene
ProhibirlaNo debe ocurrirIndefinidoGarantizarlo desde afuera (por ejemplo, un conmutador mecánico)
Set dominanteGana el set1Q+ = S + R̄·Q: se aplica R·S̄ al pin de reset
Reset dominanteGana el reset0Q+ = R̄·(S + Q): se aplica S·R̄ al pin de set

Las dos variantes con prioridad agregan una puerta AND con una entrada negada delante del latch, y nunca llegan a la combinación prohibida. La prioridad solo vale mientras ambas órdenes están activas. Si la que perdió sigue activa cuando la otra se suelta, pasa a mandar. Por eso, con reset dominante, un operador que suelta primero el botón de «Set» y mantiene «Reset» obtiene Q = 0, como pide la tabla.

05 · Formalizar

Ecuación característica y tabla de excitación

Una tabla característica incluye el estado actual Q como una entrada más y entrega el siguiente estado Q+. Para el latch de NOR, con las combinaciones prohibidas marcadas con X (no importa), queda:

Tabla característica del latch SR (NOR).
SRQQ+Operación
0000Retiene
0011Retiene
0100Reset
0110Reset
1001Set
1011Set
110XProhibida
111XProhibida

Las X son «no importa» como en los mapas de Karnaugh que estudiaste en el curso anterior. Agrupando los unos de Q+ con ese grado de libertad aparecen dos soluciones:

Q+ = S + R̄·Q   (las X valen 1: set dominante)
Q+ = R̄·(S + Q)   (las X valen 0: reset dominante)

Las dos coinciden fuera de la combinación prohibida, que es la única en la que difieren. La ecuación característica de un latch SR se escribe en general como Q+ = S + R̄·Q, con la restricción S·R = 0.

Tabla de excitación

En un diseño ocurre lo inverso: se sabe qué transición se quiere (de Q a Q+) y se pregunta qué entradas la producen. Es la tabla de excitación:

Tabla de excitación del latch SR: qué entradas hacen falta para cada transición.
QQ+SRRazón
000XRetener 0, o resetear: R no importa; S debe estar en 0
0110Hay que hacer set, sin reset
1001Hay que hacer reset, sin set
11X0Retener 1, o setear: S no importa; R debe estar en 0

Esa tabla es la herramienta de diseño que usaremos para construir contadores y máquinas de estados con otros biestables: para cada transición de la tabla de estados se consulta qué entradas necesita el elemento de memoria. Las X dan libertad para simplificar la lógica.

06 · El tiempo en un latch

Un latch es asíncrono

El latch SR no tiene reloj: sus salidas siguen a las entradas con el retardo de las puertas. Eso lo diferencia del sistema síncrono del tema 3 y lo hace capaz de capturar eventos que un reloj perdería. Veamos un cronograma de un latch de NOR, con un retardo de una unidad (tpd) por puerta. Cada cuadrícula de 28 px es un tpd.

Cronograma de un latch SR de NOR S sube en t igual a 2. ~Q baja un retardo después y Q sube otro retardo después. Cuando S vuelve a 0 no pasa nada. R sube en t igual a 10: Q baja un retardo después y ~Q sube otro después. SRQ~Q 1 tpd2.º1 tpd2.ºS vuelve a 0: retieneR vuelve a 0: retiene

Dos hechos se ven directamente. Primero, la entrada que da la orden actúa sobre una puerta: S gobierna a la NOR de ~Q, que cambia tras un tpd; recién entonces Q cambia, tras otro. Q se estabiliza a los 2 tpd. Segundo, al soltar la orden no ocurre nada: el lazo ya está sostenido por sí mismo.

Ancho mínimo del pulso

Para que el lazo se «enganche» necesita que la orden dure lo suficiente como para que las dos puertas completen su cambio. Un pulso demasiado corto deja al lazo a medias:

Pulso de S sobre un latch de NOR en reposo (Q = 0), modelo con retardo ideal tpd en cada puerta.
Ancho del pulsoQué ocurre
1 tpdQ sube y baja, y el lazo oscila: no se garantiza el set
2 tpd o másSet completo y estable: Q queda en 1

Los fabricantes dan este valor como ancho mínimo de pulso (tw) en la hoja de datos. A diferencia del reloj del tema 3, la condición no es «al menos un período», sino «al menos tw», que suele ser de unos pocos nanosegundos. Un latch captura pulsos cortos que un sistema síncrono ignoraría, siempre que superen ese mínimo.

07 · Aplicaciones

Dónde se usa un latch SR

Cuatro usos clásicos.
UsoSeñalesIdea
Memoria de eventoS = sensor, R = reconocimiento del operadorLa alarma queda encendida aunque el pulso del sensor haya terminado, y no se pierde entre flancos
Antirrebote de un pulsador de dos posicionesS̄ y R̄ = los dos contactos de un inversor mecánicoLos rebotes afectan a un contacto a la vez; el latch conserva el último que tocó (lo veremos en el tema 7)
Arranque y parada (enclavamiento)S = marcha, R = paroUn pulso de marcha mantiene el motor funcionando; el paro tiene prioridad (reset dominante)
Bandera «pegajosa»S = condición de error, R = limpieza por softwareEl error se registra hasta que alguien lo lee y lo borra: el equivalente hardware de un bit de interrupción pendiente

En todos los casos el latch cumple el mismo papel: convertir un pulso (algo que ocurrió) en un nivel (algo que quedó registrado). Es la forma más básica de memoria de evento, y la reencontraremos en periféricos de microcontroladores como indicadores de estado.

La limitación está en el control del momento: como el latch reacciona a cualquier cambio de sus entradas, es sensible al ruido y a los glitches. Si una entrada tiene un pico espurio, el latch lo guarda. Para eso existen las versiones con habilitación y los flip-flops que veremos enseguida.

08 · Analogía con programación

Banderas con set y clear, y una política de prioridad

Una bandera booleana que se activa con un evento y se baja con un reconocimiento es un latch SR en software: el bit «pendiente» de un registro de interrupciones, un flag dirty o un has_error que solo borra el usuario. En código, la política de prioridad se ve en la expresión:

Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.

# Q+ para tres políticas de diseño
POLITICAS = {
    "set":   lambda q, s, r: bool(s or (not r and q)),     # gana el set
    "reset": lambda q, s, r: bool(not r and (s or q)),     # gana el reset
}


def estricta(q, s, r):
    if s and r:
        raise ValueError("S y R activos a la vez")
    return bool(s or (not r and q))


for s, r in [(0, 0), (1, 0), (0, 1), (1, 1)]:
    fila = " | ".join(
        f"Q={q}: set->{int(POLITICAS['set'](q, s, r))} reset->{int(POLITICAS['reset'](q, s, r))}"
        for q in (0, 1)
    )
    print(f"S={s} R={r} {fila}")
# Las políticas solo difieren en S=1 R=1, la fila prohibida del hardware

q = False
historial = []
for s, r in [(1, 0), (0, 0), (0, 1), (0, 0), (1, 1), (0, 0)]:
    q = POLITICAS["reset"](q, s, r)      # reset dominante
    historial.append(int(q))
print(*historial)                        # 1 1 0 0 0 0

try:
    estricta(False, 1, 1)
except ValueError as e:
    print("Error:", e)

Las políticas solo se distinguen en la fila S = 1, R = 1. El historial con reset dominante es 1 1 0 0 0 0, y la política estricta termina con Error: S y R activos a la vez. Agregá una tercera política en el diccionario y compará.

Las tres políticas solo se distinguen en la fila S = R = 1, que es justamente la prohibida del hardware. La ecuación s or (not r and q) es la ecuación característica de la sección 5. En software, una política «estricta» que lanza una excepción es razonable; en un circuito no existe «lanzar excepción», por eso se elige una política o se garantiza que la situación no ocurra.

Una diferencia: el código evalúa una política determinista. El latch real, cuando se suelta la combinación prohibida, resuelve una carrera física que ninguna línea de código modela. Es una de las pocas veces en las que el modelo de software es más limpio que el hardware.

09 · Exploración interactiva

El mismo latch, con NOR o con NAND

Las casillas representan las órdenes lógicas («pedir Set» y «pedir Reset»). El laboratorio las traduce al nivel físico en los pines: con NOR, una orden activa es un 1; con NAND, un 0. Podés ver cómo cambia el circuito mientras la función sigue siendo la misma. Además se elige cómo se resuelve el desempate si se suelta la combinación prohibida.

Latch SR configurable

Latch SR interactivo Dos compuertas realimentadas, NOR o NAND según la configuración. Los cables en verde valen 1.
Q0
~Q1
Operación pedidaRetiene
Niveles en los pinesS = 0, R = 0
ResultadoDeterminado
Eventos registrados0

Latch de NOR en reposo, con Q = 0. Marcá «Pedir Set» para escribir un 1.

Últimos 10 eventos. Cada cambio de una casilla es un evento.
N.ºEventoSet pedidoReset pedidoQ después
Sin eventos registrados.

Recorrido guiado

  1. Con el latch de NOR en reposo (Q = 0), marcá «Pedir Set». Q pasa a 1. Desmarcá: Q sigue en 1 y el estado dice «Retiene».
  2. Marcá «Pedir Reset» y desmarcá. Q vuelve a 0 y se queda. Escribiste y borraste sin reloj.
  3. Cambiá a «NAND». Mirá los pines: en reposo, S̄ = R̄ = 1; al pedir Set, S̄ baja a 0. El comportamiento lógico es idéntico, con polaridad invertida en los pines.
  4. Marcá «Pedir Set» y «Pedir Reset» a la vez. Con NOR las dos salidas valen 0; con NAND, 1. Ninguna es un par complementario.
  5. Con el desempate «gana la compuerta de Q», usá «Soltar ambas a la vez». El resultado figura como «Indeterminado: ganó una carrera» y Q termina en 1. Repetí con «gana la de ~Q» (Q termina en 0) y comparalo: el diseño no decidió nada, lo decidió la carrera.
  6. Seleccioná «Sin desempate», activá y soltá ambas a la vez: el lazo oscila. Usá «Avanzar un paso de compuerta» para verlo alternar entre (0, 0) y (1, 1).
  7. Repetí lo anterior con NAND. Con el mismo criterio de desempate («gana la compuerta de Q») termina en el valor opuesto, Q = 0, porque la compuerta que «gana» fuerza una salida distinta.
  8. Lo importante: soltar las dos órdenes en momentos distintos evita la carrera. Activá ambas, desmarcá primero la casilla de Set y observá cómo manda el Reset restante: el estado queda bien definido (Q = 0).
Desafío: encontrar una secuencia de órdenes sin carrera que llegue a Q = 1 pasando por la prohibida

Activá Set y Reset con el botón de «a la vez», después desmarcá la casilla de Reset (queda solo Set) y asentá: Q = 1 sin carrera, porque la salida de la prohibida se resuelve con una orden activa. Por último desmarcá Set. Es la idea del set dominante: la secuencia de liberación decide el resultado, no el azar. Con el orden inverso (desmarcar Set primero) queda Q = 0.

10 · Método de trabajo

Cómo especificar y usar un latch

  1. Nombrá lo que recuerda el bit. «Hay un evento pendiente», «el motor está encendido». Q = 1 debe tener un significado claro.
  2. Definí quién pone y quién borra. Una señal para Set y otra para Reset, con su polaridad: ¿activas en alto o en bajo?
  3. Elegí NOR o NAND según la polaridad de esas señales. Si hay que invertir, mejor elegir el latch que no lo necesite.
  4. Decidí qué ocurre si ambas órdenes coinciden. Prohibirlo, set dominante o reset dominante; anotá la razón.
  5. Definí el estado inicial. Un latch arranca en cualquiera de sus estados: si importa, hay que dar una orden de Reset (o Set) al encender.
  6. Comprobá el ancho mínimo de los pulsos de orden con la hoja de datos y que las entradas no tengan glitches ni rebotes.
  7. Verificá con una secuencia: reposo, set, retención, reset, retención, y los casos simultáneos.

En la mesa, si el latch parece «a veces cambiar solo», sospechá de las entradas (flotantes, ruido, rebotes) antes que del propio latch. Con S y R conectados a pulsadores, las resistencias de pull-up o pull-down son tan importantes como las puertas.

11 · Comprensión

Confusiones frecuentes

«El latch de NAND es lo mismo que el de NOR, con otras puertas»

Casi: cambia la polaridad de las entradas (activas en bajo) y la salida de la combinación prohibida (ambas en 1). Si se mezclan tablas, el circuito hace lo opuesto a lo esperado.

«Q y ~Q siempre son complementarios»

Solo si no se aplica la combinación prohibida. Con ella, ambas valen lo mismo. Por eso ~Q es un nombre, y no una garantía.

«Prohibida significa que el latch se rompe»

No se daña: durante la combinación las salidas valen algo definido. El problema es lo que pasa al soltarla: el estado queda determinado por una carrera, y es impredecible.

«Para evitar la prohibida basta con no tocar los dos botones juntos»

En la práctica, dos botones o dos sensores pueden coincidir, y el diseño no debe depender de la buena voluntad. Se la elimina por construcción: con un conmutador mecánico, o con una política de prioridad lógica.

«La prioridad del set dominante funciona siempre»

Solo mientras ambas órdenes están activas. Si el Set se suelta antes y el Reset sigue activo, el Reset toma el control. La prioridad no es memoria de quién llegó primero.

«Un latch es lo mismo que un flip-flop»

El latch SR es asíncrono: responde apenas cambian sus entradas. Un flip-flop captura en un flanco de reloj. Muchos libros usan «flip-flop» como nombre genérico, pero conviene distinguirlos por cómo se actualizan.

«Con un latch no se pierden eventos»

Se pierden los pulsos más cortos que el ancho mínimo, y se registran los espurios si hay ruido en las entradas. Captura mejor que un reloj lento, pero no es infalible.

12 · Práctica guiada

Predecí antes de comprobar

1. Una secuencia con NAND

Un latch de NAND parte de Q = 0. Se aplican, una tras otra, estas parejas (S̄, R̄): (1, 1), (0, 1), (1, 1), (1, 0), (1, 1), (0, 0). Escribí Q después de cada una. ¿Qué pasa si después se aplica (1, 1)?

Ver solución razonada

Q: 0, 1, 1, 0, 0, 1. La última es la prohibida: Q = ~Q = 1. Al aplicar (1, 1) a continuación, el resultado queda indeterminado: depende de cuál NAND responda antes. El lazo puede asentarse en Q = 0 o en Q = 1.

2. Usar la tabla de excitación

Un latch NOR debe seguir la secuencia de estados 0 → 1 → 1 → 0 → 0. ¿Qué valores de S y R necesita en cada transición?

Ver solución

0→1: S = 1, R = 0. 1→1: S = X, R = 0. 1→0: S = 0, R = 1. 0→0: S = 0, R = X. Las X permiten elegir el valor más cómodo; por ejemplo, mantener S = 1 durante 1→1 ahorra una señal.

3. Arranque y parada

Un motor se arranca con un botón START y se detiene con STOP. Por seguridad, si se pulsan los dos a la vez debe detenerse. Elegí la política y escribí la ecuación de Q+.

Ver solución

Reset dominante: Q+ = STOP̄ · (START + Q). Con START = STOP = 1, resulta 0. Si STOP se suelta y START sigue pulsado, el motor arranca; si se suelta START primero, no. En un circuito real el START suele ser un pulso breve y el latch lo enclava.

4. Ancho mínimo

Un latch usa puertas con tpd = 12 ns. Un sensor entrega pulsos de 15 ns. Usando la regla de 2 tpd del modelo, ¿se capturan? ¿Y con puertas de 6 ns?

Ver solución razonada

Con 12 ns hace falta un ancho de al menos 2 · 12 = 24 ns: los pulsos de 15 ns no se capturan de forma confiable. Con 6 ns, el mínimo es 12 ns y sí. En la práctica se consulta el tw de la hoja de datos y se deja margen; el modelo da el orden de magnitud.

5. Elegir NOR o NAND

Un pulsador a masa con pull-up entrega 0 cuando se aprieta. ¿Qué latch conviene para recordar «se apretó» sin agregar inversores? ¿Y si el sensor entrega 1 cuando detecta?

Ver solución

Para el pulsador a masa, el latch de NAND: sus entradas son activas en bajo, así que se conecta directamente. Para el sensor que entrega 1, el latch de NOR. Mezclar las polaridades obliga a agregar un inversor por señal.

6. Evitar la prohibida por construcción

Un conmutador mecánico de dos posiciones (una pala que toca el contacto A o el B) alimenta S̄ y R̄ de un latch NAND, con pull-ups en ambas entradas. ¿Puede ocurrir la combinación prohibida? ¿Qué sucede entre una posición y la otra?

Ver solución razonada

No puede ocurrir: la pala nunca toca A y B a la vez, así que S̄ y R̄ no valen 0 simultáneamente. Mientras la pala viaja, ninguno está a masa y los pull-ups dejan S̄ = R̄ = 1: retiene. Los rebotes al tocar un contacto no pasan al otro lado, así que el latch conserva la última posición. Es el antirrebote que armaremos en el tema 7.

13 · Síntesis

Ideas para recordar

  • El latch SR es un biestable asíncrono con dos órdenes: Set (Q a 1) y Reset (Q a 0). Sin órdenes, retiene.
  • Con NOR las entradas son activas en alto (reposo 0); con NAND, activas en bajo (reposo 1). Son duales por De Morgan.
  • La combinación prohibida (S = R = 1 en NOR, S̄ = R̄ = 0 en NAND) fuerza las dos salidas al mismo valor, y al soltarla el resultado es impredecible.
  • La ecuación característica es Q+ = S + R̄·Q con S·R = 0; el valor que se da a las X elige entre set y reset dominante.
  • La tabla de excitación (0→0: 0X, 0→1: 10, 1→0: 01, 1→1: X0) indica qué entradas producen cada transición.
  • Q se estabiliza a los 2 tpd, y la orden debe durar al menos el ancho mínimo de pulso.
  • Convierte un pulso en un nivel: memoria de evento, antirrebote, enclavamientos y banderas pegajosas.

¿Listo para el tema 6?

Antes de avanzar, completá de memoria las tablas de función de los dos latches, explicá por qué se prohíbe una combinación y no otra, y elegí entre set y reset dominante para un caso de seguridad. Si podés justificar las tres respuestas, ya podés incorporar un habilitador.

En el próximo tema veremos el latch D y la habilitación: cómo eliminar de raíz la combinación prohibida con una sola entrada de datos y cómo una señal de habilitación decide cuándo el latch es transparente y cuándo retiene.