← Índice del curso

Circuitos Secuenciales y Memoria · Tema 1

Del circuito combinacional al secuencial

Las entradas dicen qué está pasando. El estado permite recordar qué pasó antes. Ese cambio convierte puertas que deciden en circuitos que almacenan, cuentan y controlan secuencias.

01 · Punto de partida

La tabla de verdad ya no cuenta toda la historia

En el curso de Electrónica Digital diseñaste circuitos combinacionales: puertas, multiplexores, sumadores y comparadores. Conocidas las entradas, podías calcular la salida. Si un comparador recibe dos números iguales, indica igualdad; no necesita saber qué números comparó ayer.

Ahora imaginá un contador de personas. Un pulso en su entrada no alcanza para determinar el número del display: si antes había 3 personas, pasa a 4; si había 8, pasa a 9. La misma entrada produce resultados distintos porque el circuito conserva información.

El punto de partida es conocer bits, puertas AND/OR/NOT y tablas de verdad. La notación es la misma; agregamos una pregunta: ¿en qué estado estaba el circuito antes de recibir esta entrada?

02 · Lo que ya sabés

Combinacional: una función de las entradas actuales

Una luz de aviso se enciende cuando un equipo está habilitado y su sensor detecta una condición. Si H es la habilitación y S el sensor, su salida es:

Y = H AND S
Con la misma pareja H, S, la salida estable siempre es la misma.
HSY
000
010
100
111

Cuando S vuelve a 0, el aviso se apaga. El circuito no registra que hubo una detección. En el modelo lógico, Y depende solo de H y S; en el componente real cambia después de un retardo de propagación. Que una puerta tarde unos nanosegundos en responder no la convierte en memoria.

03 · Un problema nuevo

Queremos recordar una detección

Supongamos que el sensor de una puerta entrega 1 cuando detecta una apertura. Queremos que una alarma permanezca encendida aunque la puerta se cierre. Un operador debe reconocer el evento y borrarlo mediante R, la entrada de reset.

Definimos un estado Q: Q = 0 significa «sin evento pendiente» y Q = 1 significa «hubo una detección que todavía no se borró». La salida de alarma será directamente Q.

Historia A

Se inicializa el sistema, nadie abre la puerta. Ahora S = 0 y R = 0. La alarma está apagada: Q = 0.

Historia B

Se detecta una apertura y después la puerta se cierra. Ahora también S = 0 y R = 0. La alarma sigue encendida: Q = 1.

Las entradas actuales son idénticas, pero las salidas son distintas. No existe una función combinacional de S y R que describa ambos casos sin agregar información. Lo que falta es el estado actual.

04 · El modelo secuencial

Entradas + estado actual → próximo estado

Vamos a estudiar una versión síncrona de la alarma: evaluamos S y R en cada flanco ascendente del reloj. Elegimos que el reset tenga prioridad. Si S y R valen 1 en ese instante, el próximo estado será 0.

Q[n + 1] = NOT R[n] AND (Q[n] OR S[n])
Y[n] = Q[n]

El índice n identifica un paso de actualización, no un voltaje. Q[n] es el estado antes de actualizar; Q[n + 1] es el que quedará después. Primero se calcula el próximo valor y después se almacena.

Tabla de transición de la alarma. El guion significa «cualquiera de los dos valores».
RSQ actualQ próximoAcción
1——0Borrar, con prioridad
01—1Registrar detección
0000Conservar apagada
0011Conservar encendida

Una tabla de verdad sigue sirviendo para describir la lógica que calcula Q próximo. La diferencia es que ahora incluye Q actual como entrada. La tabla de transición conecta ese cálculo con la evolución del almacenamiento.

Qué bloques hacen falta

Estructura de la alarma secuencial S y R entran en lógica combinacional. Su resultado entra en una memoria con reloj. Q sale de la memoria, activa la alarma y vuelve a la lógica para calcular el próximo estado. SRLógica combinacionalcalcula Q próximoDMemoriaguarda QQ = Yestado actualreloj

La salida del almacenamiento vuelve a la lógica: eso es realimentación. El bloque de memoria puede ser un flip-flop D, que estudiaremos más adelante. La realimentación por sí sola no garantiza una memoria útil: conectar la salida de un inversor a su entrada, por ejemplo, no produce automáticamente un bit estable.

05 · Seguir una secuencia

El orden de los eventos cambia el resultado

Partimos de Q = 0 por una inicialización explícita. En cada fila observamos las entradas justo antes de un flanco ascendente y calculamos el estado que quedará después.

Ejemplo de evolución: detectar, retener y borrar.
FlancoSRQ antesQ después
10000
21001
30011
40110
50000

En los flancos 1, 3 y 5 las entradas son 0, 0. Sin embargo, en el flanco 3 la alarma queda encendida. Esa fila muestra la memoria en acción.

Un reloj no detecta todo lo que ocurre entre flancos

En este modelo, cambiar S sin generar un flanco no modifica Q. Si S sube y baja completamente entre dos flancos, el evento puede pasar inadvertido. Lo mismo sucede con nuestro reset síncrono: debe estar activo en un flanco para borrar.

Un circuito real necesita que las entradas respeten tiempos de preparación y mantenimiento alrededor del flanco. Además, la salida cambia con un pequeño retardo. El laboratorio ideal omite estos efectos; los estudiaremos en el tema de tiempos y sincronización.

06 · Poner nombres

Secuencial no significa necesariamente «con reloj»

Tres comportamientos que conviene distinguir desde el comienzo.
TipoDe qué dependeCuándo respondeEjemplo
CombinacionalEntradas actualesTras la propagación de las entradasSumador
Secuencial síncronoEntradas y estadoActualiza su estado en eventos del relojContador síncrono
Secuencial asíncronoEntradas y estadoPuede cambiar sin un reloj comúnLatch SR

La característica decisiva es el estado almacenado. Un latch puede recordar sin reloj periódico. Un circuito combinacional puede recibir una onda cuadrada y seguir siendo combinacional. Tampoco todas las salidas de un sistema síncrono tienen que esperar al reloj: algunas dependen combinacionalmente de sus entradas y de su estado.

No confundas memoria con conservación al apagar. Un flip-flop común pierde la información al cortar la alimentación. RAM, ROM, EEPROM y Flash tienen propiedades distintas que analizaremos en el bloque de memorias.

07 · Analogía con programación

Una función pura frente a una variable que persiste

Este código Python describe los modelos lógicos. La función combinacional recibe las entradas y devuelve un resultado; la alarma también necesita recibir el estado anterior.

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

def aviso(habilitado, sensor):
    return habilitado and sensor


def proximo_estado(q_actual, sensor, reset):
    return (not reset) and (q_actual or sensor)


q = False  # inicialización elegida para el ejemplo
muestras = [
    {"sensor": False, "reset": False},
    {"sensor": True,  "reset": False},
    {"sensor": False, "reset": False},
    {"sensor": False, "reset": True},
]

for entrada in muestras:
    # Cada iteración representa un flanco ascendente.
    siguiente = proximo_estado(q, entrada["sensor"], entrada["reset"])
    print(int(q), "→", int(siguiente))
    q = siguiente

Resultado: 0 → 0, 0 → 1, 1 → 1, 1 → 0. Probá invertir el orden de las dos primeras muestras, o activar sensor y reset en la misma muestra, y predecí el resultado antes de ejecutar.

La función proximo_estado también es pura: la memoria está en la variable q que conserva su valor entre iteraciones. En hardware, esa separación corresponde a lógica combinacional más almacenamiento.

La analogía tiene un límite: las puertas y los flip-flops no ejecutan líneas una detrás de otra como una CPU. Si varios registros comparten reloj, cada uno captura el dato preparado para ese flanco usando el estado anterior. El código es un modelo para razonar, no una simulación eléctrica.

08 · Exploración interactiva

Mismas entradas, distinta salida

Compará un aviso combinacional Y = S con la alarma secuencial. Las casillas cambian las entradas; el botón de reloj genera un único flanco ascendente ideal. R solo afecta a la alarma y tiene prioridad sobre S.

Alarma con memoria de un bit

Aviso combinacional Y = S0
Estado guardado Q = alarma0
Q próximo, si hay un flanco0

Estado inicial Q = 0. Todavía no se generaron flancos.

Últimos 10 flancos. Los cambios de casillas no agregan filas.
FlancoSRQ antesQ después
Sin flancos registrados.

Reiniciar simulación restaura las entradas, Q = 0 y el historial. Es una comodidad del simulador, distinta de activar R: el reset del circuito se aplica mediante la casilla y un flanco.

Recorrido guiado

  1. Activá S. El aviso directo y Q próximo pasan a 1, pero Q guardado sigue en 0.
  2. Generá un flanco. Ahora Q vale 1: la detección quedó almacenada.
  3. Desactivá S. El aviso vuelve a 0 y Q permanece en 1, incluso después de otro flanco.
  4. Activá R y generá un flanco. Q pasa a 0. Desactivá R para liberar el reset.
  5. Probá S = 1 y R = 1 en un flanco. Después quitá solo R: Q próximo será 1, pero Q guardado esperará otro flanco.
Desafío: hacer una detección que la alarma no recuerde

Reiniciá, activá S y volvé a desactivarlo sin generar un flanco entre ambos cambios. Generá después un flanco: Q continúa en 0. Un sistema real necesita una estrategia de captura si debe detectar pulsos más cortos que el intervalo de muestreo.

09 · Método de trabajo

Cómo analizar un circuito con memoria

  1. Identificá entradas y salidas. Especificá qué representa cada 0 y cada 1.
  2. Nombrá el estado. Preguntá qué información debe sobrevivir cuando desaparece la entrada.
  3. Definí el arranque. No supongas que todos los flip-flops se encienden en 0. Un diseño necesita un mecanismo de inicialización.
  4. Escribí las transiciones. Incluí prioridades y entradas simultáneas; no dejes el caso S = R = 1 sin definir.
  5. Precisá cuándo se actualiza. Flanco ascendente, descendente, nivel de habilitación o cambio asíncrono.
  6. Recorré una secuencia. Anotá entradas, estado antes y estado después. Probá retención, reset y repetición.

En la mesa, primero comprobás alimentación, niveles lógicos y reset. Después observás el reloj y la evolución de Q. Un multímetro puede mostrar un valor promedio de una señal que conmuta: para distinguir flancos, rebotes y pulsos breves resulta más adecuado un osciloscopio o un analizador lógico.

10 · Comprensión

Confusiones frecuentes

«Si la salida tarda en cambiar, hay memoria»

Una puerta tiene retardo aunque sea combinacional. La memoria implica conservar un estado que interviene en decisiones posteriores, no simplemente responder con demora.

«Toda realimentación almacena un bit estable»

La respuesta depende del circuito y de sus condiciones. Puede haber estabilidad, oscilación o un comportamiento no válido. Los biestables se diseñan para tener dos estados estables utilizables.

«El reloj es un programa que se ejecuta»

El reloj es una señal temporal. Coordina capturas de datos, pero no contiene instrucciones. Un contador puede funcionar con puertas y flip-flops sin CPU ni software.

«Activar reset siempre borra inmediatamente»

Depende del diseño. Nuestro reset es síncrono y actúa en el flanco. Un clear asíncrono puede actuar sin esperar al reloj. Hay que consultar la función de cada entrada.

«Un bit de memoria recuerda una sola entrada»

Recuerda uno de dos estados. En esta alarma resume cualquier cantidad de detecciones pendientes, pero no permite distinguir una detección de diez.

11 · Práctica guiada

Predecí antes de comprobar

1. ¿Combinacional o secuencial?

Clasificá: un sumador de 4 bits; un contador de pulsos; un multiplexor; un botón que alterna encendido/apagado en cada pulsación válida; una alarma que deja de sonar apenas desaparece el sensor.

Ver solución razonada

Sumador y multiplexor son combinacionales. El contador necesita conservar la cuenta. El botón alternador necesita recordar si estaba encendido o apagado: ambos son secuenciales. La última alarma puede ser combinacional si su salida depende únicamente del sensor y no incorpora temporización ni retención.

2. Completá una secuencia

Con Q inicial = 0, aplicá en cinco flancos estas parejas (S, R): (1, 0), (0, 0), (1, 1), (1, 0), (0, 0). ¿Cuáles son los cinco valores de Q después de cada flanco?

Ver solución

1, 1, 0, 1, 1. La primera detección activa; la segunda fila retiene; en la tercera el reset gana; la cuarta vuelve a activar; la quinta conserva. Comprobalo en el laboratorio.

3. ¿Qué ocurre si falta el flanco?

Q = 1. Activás R y lo desactivás antes del próximo flanco. En ese flanco S = 0 y R = 0. ¿Se borra el evento?

Ver solución

No en nuestro modelo síncrono: Q sigue en 1. El reset no estuvo activo cuando se capturó el próximo estado. Un reset asíncrono tendría un comportamiento distinto.

4. Elegir qué hay que recordar

Querés distinguir entre cero, una, dos y tres detecciones acumuladas. ¿Alcanza el bit Q de nuestra alarma? ¿Cuántos bits hacen falta como mínimo?

Ver solución razonada

Hay cuatro estados distintos. Un bit ofrece dos combinaciones; dos bits ofrecen cuatro: 00, 01, 10 y 11. Además hay que decidir qué pasa con la cuarta detección: volver a cero, saturar en tres o señalar desborde. Esa decisión forma parte de la especificación del contador.

5. Cambiar una prioridad

Si la detección debe ganar al reset, proponé otra expresión para Q próximo. ¿En qué combinación cambia el resultado?

Ver solución

Q próximo = S OR (Q actual AND NOT R). Cambia cuando S = 1 y R = 1: ahora resulta 1. Para las demás combinaciones conserva el comportamiento anterior. La prioridad es una elección del diseño, no una propiedad universal de las alarmas.

12 · Síntesis

Ideas para recordar

  • Un circuito combinacional calcula salidas a partir de las entradas actuales, con sus retardos físicos.
  • Un circuito secuencial incorpora estado: la historia relevante puede cambiar su respuesta.
  • El estado resume la información necesaria; no tiene por qué registrar todos los eventos.
  • La lógica calcula el próximo estado y el almacenamiento lo conserva.
  • El reloj coordina actualizaciones en los circuitos síncronos. También existen circuitos secuenciales asíncronos.
  • Arranque, reset, prioridades y momento de captura deben quedar especificados.

¿Listo para el tema 2?

Antes de avanzar, explicá por qué dos alarmas con S = R = 0 pueden tener salidas distintas, reconstruí la tabla de transición y describí un pulso que nuestro sistema síncrono podría perder. Si podés justificar las tres respuestas, ya cruzaste el puente.

En el próximo tema profundizaremos el concepto de estado y memoria: cómo elegir la información que un circuito necesita conservar y cuántos estados hacen falta.