← Índice del curso

Circuitos Secuenciales y Memoria · Tema 3

Reloj y diagramas temporales

Un estado necesita un momento para cambiar. El reloj es la señal que marca ese momento, y el diagrama temporal es el idioma en el que se explica qué pasa antes, durante y después de cada marca. Aprender a leerlo y a dibujarlo es una de las habilidades más útiles del curso.

01 · Punto de partida

Los estados saben qué recordar; el reloj decide cuándo

En los dos temas anteriores usamos una expresión cómoda: «en cada flanco del reloj, el circuito captura el próximo estado». Pero un flanco no es una idea abstracta. Es un cambio de voltaje con una forma, un instante y un ritmo, y de ese ritmo depende cuánto tarda el circuito en responder, cuánta energía consume y qué eventos puede ver.

También es el lenguaje con el que los datasheets, los analizadores lógicos y los osciloscopios muestran los circuitos secuenciales. Si sabés leer un diagrama temporal, podés comprobar en segundos si una captura hizo lo que dice la tabla de transición.

Seguimos con la alarma del tema 1. Ahora le vamos a prestar atención al tiempo: cuánto dura el pulso del sensor, cuánto el período del reloj, y cómo se relacionan.

02 · Qué es

Una onda cuadrada con dos tipos de flanco

Un reloj es una señal periódica que alterna entre un nivel bajo (0 lógico) y un nivel alto (1 lógico). Idealmente es una onda cuadrada. Cada ciclo completo tiene un tiempo en nivel alto, un tiempo en nivel bajo y dos transiciones:

Vocabulario básico de una señal de reloj.
TérminoQué esCómo se nota
Nivel alto / bajoLos dos valores lógicos que la señal mantiene entre transicionesTramos horizontales del dibujo
Flanco ascendente (↑)Transición de bajo a altoSubida; también se llama flanco positivo
Flanco descendente (↓)Transición de alto a bajoBajada; flanco negativo
CicloUn tramo completo del patrón: de un flanco ascendente al siguienteLo que se repite
Nivel activoEl nivel (alto o bajo) con el que un bloque está «habilitado»Se indica en el símbolo con una burbuja si es el bajo

Los circuitos síncronos eligen un flanco, el ascendente o el descendente, como el instante de captura. Muchos flip-flops comerciales usan el ascendente; algunos usan el descendente, lo que se indica con una burbuja en la entrada de reloj. En este curso usaremos el ascendente salvo que se diga lo contrario.

Ideal frente a real

En un componente real el flanco no es vertical: la señal tarda un tiempo de subida y un tiempo de bajada, que suelen medirse entre el 10 % y el 90 % de la excursión. Además, la entrada reconoce el nivel «alto» o «bajo» según umbrales (los VIH y VIL del curso de Electrónica Digital). Un flanco lento o ruidoso puede cruzar el umbral más de una vez y producir capturas falsas. Por eso a las señales de reloj se les da un trato especial: buffers, trazas cortas y, en casos exigentes, entradas con histéresis.

En los dibujos de este tema usaremos flancos verticales. Es una abstracción útil, mientras recordemos que la realidad tiene pendiente.

03 · Medir un reloj

Período, frecuencia y ciclo de trabajo

Tres magnitudes describen un reloj periódico:

T = 1 / f   ·   f = 1 / T   ·   D = talto / T
Qué significa cada magnitud.
MagnitudSímboloUnidadQué dice
PeríodoTsegundosDuración de un ciclo completo: talto + tbajo
Frecuenciafhertz (ciclos por segundo)Cuántos ciclos caben en un segundo
Ciclo de trabajoDporcentajeQué fracción del ciclo está la señal en nivel alto
Equivalencias que conviene memorizar.
FrecuenciaPeríodoDónde aparece
1 Hz1 sParpadeo lento, divisor final de un reloj de tiempo real
50 Hz20 msRed eléctrica en gran parte del mundo
1 kHz1 msBase de tiempo para barridos y rebotes
32,768 kHz30,5 µsCristal de relojes: 215 ciclos por segundo
1 MHz1 µsCircuitos lentos de la familia 74HC
16 MHz62,5 nsCristal de muchas placas de microcontrolador
100 MHz10 nsLógica rápida: a esta escala el cableado importa

El ciclo de trabajo (duty cycle) vale 50 % en una onda cuadrada simétrica. Para un flip-flop que captura en un flanco, el valor de D casi no importa, salvo por los tiempos mínimos en alto y en bajo que pide el fabricante. En cambio, importa mucho cuando la señal activa una carga (un LED, un motor), tema que retomaremos con el PWM.

04 · El idioma del tiempo

Leer un cronograma

Un diagrama temporal (cronograma) dibuja varias señales con el mismo eje horizontal de tiempo, una debajo de otra. Cada fila es una señal; cada línea vertical, un instante. La clave es la lectura: se marcan los flancos de captura y se pregunta, justo antes de cada uno, cuánto valen las entradas.

Veamos la alarma del tema 1 con un reloj de período 4 ms. S es el sensor, R el reset y Q el estado. Cada columna de 24 px representa 1 ms, así que el reloj sube a t = 4, 8, 12, 16, 20 y 24 ms.

Cronograma de la alarma síncrona Cuatro señales: reloj, sensor S, reset R y estado Q. S tiene un pulso breve entre dos flancos, que se pierde, y un pulso largo que contiene el tercer flanco ascendente y hace que Q pase a 1. R tiene un pulso que contiene el quinto flanco y hace que Q vuelva a 0. CLKSRQ ↑1↑2↑3↑4↑5↑6 perdidocapturadoreset capturadoQ cambia después de ↑3 y de ↑5, no antes

Para completar la tabla de captura se mira cada línea punteada y se lee el valor de S y de R inmediatamente a su izquierda:

Lectura del cronograma: valores justo antes de cada flanco ascendente.
Flancot (ms)SRQ antesQ después
↑140000
↑280000
↑3121001
↑4160011
↑5200110
↑6240000

Dos hábitos evitan la mayor parte de los errores. Primero: Q cambia después del flanco, no antes; en un dibujo preciso, el escalón de Q aparece un poco a la derecha de la línea punteada (el retardo de propagación). Segundo: lo que importa es el valor justo antes del flanco, no el que tiene la entrada mientras el flanco ocurre ni el que tendrá después.

05 · Un límite del muestreo

Lo que el reloj no ve

El pulso breve de S, entre ↑1 y ↑2 en el cronograma, subió y bajó sin que ningún flanco lo mirara. Q no se enteró. No es un error del circuito: un sistema síncrono solo observa sus entradas en los flancos. Entre un flanco y otro, es ciego.

Qué pasa con un pulso de ancho w frente a un reloj de período T.
Ancho del pulso¿Siempre se captura?Probabilidad si el pulso llega en un instante al azar
w ≥ TSí: contiene al menos un flanco100 %
w < TNo: puede caer entre dos flancosw / T

La regla práctica: una señal asíncrona debe durar al menos un período de reloj para estar segura de que será vista. Un reloj de 1 kHz (T = 1 ms) ve con seguridad pulsos de 1 ms o más; uno de 0,6 ms se captura el 60 % de las veces. Si el evento puede ser más breve que el período del reloj, hay tres estrategias:

  • Acelerar el reloj, de modo que T sea menor que el pulso más corto esperado.
  • Capturar el evento antes con un biestable que lo retenga hasta el próximo flanco. Eso es, justamente, una memoria de un bit: lo que viene en los próximos temas.
  • Alargar el pulso con un circuito de enclavamiento o de monoestable.

Cerca del flanco, la entrada no debe cambiar

También importa cuándo cambia la entrada respecto del flanco. Si cambia justo en el instante de captura, el flip-flop puede leer cualquiera de los dos valores, o quedar un tiempo en un estado intermedio. Cada flip-flop real exige que el dato sea estable un tiempo antes del flanco (tiempo de preparación, setup) y un tiempo después (tiempo de mantenimiento, hold). Los estudiaremos con detalle en el tema de tiempos reales; por ahora, recordá que los diagramas ideales suponen que las entradas cambian lejos de los flancos.

06 · El reloj como regla

Contar ciclos para medir tiempo

Si el reloj es regular, contar sus ciclos es medir tiempo: n ciclos duran n · T. Un circuito que cuenta flancos puede esperar un segundo, generar un pulso de duración exacta o dividir una frecuencia.

Medir tiempo contando ciclos.
ObjetivoRelojCiclos a contarBits de cuenta
Esperar 1 s1 kHz100010 (210 = 1024)
Esperar 1 s32,768 kHz32 768 = 21515
Esperar 50 ms1 MHz50 00016 (216 = 65 536)
Pulso de 2 µs8 MHz165 (con holgura)

Recordá el tema anterior: para contar hasta N hacen falta ⌈log₂ N⌉ bits de estado. Por eso el cristal de 32,768 kHz se usa en los relojes: dividido 15 veces por 2 entrega exactamente 1 Hz.

El divisor por dos

El bloque secuencial más simple que cuenta es un flip-flop que invierte su salida en cada flanco ascendente del reloj. Su salida completa un ciclo cada dos ciclos de entrada: la frecuencia se divide por 2, y el ciclo de trabajo de la salida es 50 % aunque el de la entrada no lo sea. Encadenando varios, cada etapa divide por 2 de nuevo: tres etapas dividen por 8, de 8 MHz a 1 MHz. Es la base de los contadores asíncronos del bloque siguiente.

07 · Los límites reales

Cuánto se puede acelerar un reloj

Ningún circuito acepta cualquier frecuencia. Entre un flanco y el siguiente, la señal tiene que recorrer un camino completo: salir del flip-flop, atravesar la lógica y llegar a otro flip-flop con tiempo de sobra antes del próximo flanco.

T ≥ tclk→Q + tlógica + tsetup   →   fmáx = 1 / Tmín
Cada término del camino crítico, con valores de ejemplo (orientativos; consultá la hoja de datos del componente).
TérminoQué esEjemplo
tclk→QRetardo desde el flanco hasta que la salida del flip-flop cambia20 ns
tlógicaRetardo de la lógica combinacional más lenta entre dos flip-flops15 ns
tsetupTiempo que el dato debe estar estable antes del flanco siguiente15 ns
SumaPeríodo mínimo50 ns, fmáx = 20 MHz

Dos conclusiones. Cuanto más lógica hay entre flip-flops, más lento debe ser el reloj: el camino más largo (el camino crítico) manda. Y si se rebasa el límite, el circuito no avisa: captura datos viejos o a medias, y se comporta de manera intermitente. Por eso las frecuencias máximas se calculan, no se prueban subiendo la perilla hasta que falla.

Hay dos efectos adicionales. El skew es la diferencia de llegada del reloj a distintos flip-flops por la longitud del cableado. El jitter es la variación del instante del flanco de ciclo a ciclo. Ambos le restan margen al período.

08 · Analogía con programación

Un bucle de ticks y un detector de flancos

Si programaste un juego o un servidor de eventos, conocés el reloj: es el tick del bucle principal. En cada tick se leen entradas y se actualiza el estado. Este fragmento genera un reloj discreto, detecta sus flancos ascendentes y repite el cronograma de la sección 4:

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

def reloj(periodo, alto, ticks):
    return [1 if t % periodo < alto else 0 for t in range(ticks)]


def flancos_ascendentes(senal):
    return [t for t in range(1, len(senal)) if not senal[t - 1] and senal[t]]


T, ALTO, MS = 4, 2, 1                # 1 tick = 1 ms
clk = reloj(T, ALTO, 28)
print("f =", 1000 / (T * MS), "Hz; ciclo de trabajo =", 100 * ALTO / T, "%")
# f = 250.0 Hz; ciclo de trabajo = 50.0 %

S = [1 if t == 5 or 9 <= t < 13 else 0 for t in range(28)]
R = [1 if 18 <= t < 21 else 0 for t in range(28)]

q = 0
flancos = flancos_ascendentes(clk)
despues = []
for t in flancos:
    # se lee la entrada justo antes del flanco: el tick anterior
    q = 0 if R[t - 1] else int(q or S[t - 1])
    despues.append(q)
print(*flancos, "->", *despues)
# 4 8 12 16 20 24 -> 0 0 1 1 0 0

Reloj de 250 Hz con 50 % de ciclo de trabajo; los flancos están en 4, 8, 12, 16, 20 y 24 ms y Q vale 0 0 1 1 0 0 después de cada uno. En la definición de S, reemplazá la condición del primer pulso (t == 5) por 5 <= t < 8: ahora contiene t = 7, que se lee antes del flanco de 8 ms, y la alarma se activa un período antes (0 1 1 1 0 0).

El primer pulso de S, en t = 5, nunca se ve: S[t - 1] solo se consulta en los instantes 3, 7, 11, 15, 19 y 23. Es la misma pérdida del cronograma. Fijate también que el valor se lee en t - 1: eso es «justo antes del flanco».

En software es común mezclar muestreo y eventos: un manejador de interrupción atiende cada cambio, aunque dure poco; un bucle que duerme con time.sleep y lee periódicamente puede perder un cambio entre dos lecturas. Un sistema síncrono es lo segundo. Para no perder un evento, a veces se agrega un hardware que se parece a una interrupción: un biestable de captura.

El código simula un reloj discreto y no incluye retardos ni ruido. Sirve para razonar y verificar tablas, no para estimar márgenes de tiempo.

09 · Exploración interactiva

Capturar o perder un pulso

La ventana muestra 48 ms. Elegí el período del reloj, cuánto tiempo está en alto y cuándo empieza y cuánto dura un pulso en S. La alarma Q almacena el pulso si algún flanco ascendente lo ve justo antes de ocurrir (círculo relleno); si no, lo pierde (círculo vacío). Las líneas naranjas marcan los flancos.

Reloj, pulso y alarma

Cronograma interactivo Tres señales: el reloj, el pulso S y el estado Q de la alarma, con los flancos ascendentes marcados y el valor de S muestreado en cada uno.
Período8 ms
Frecuencia125 Hz
Ciclo de trabajo50 %
Flancos ↑ en la ventana5
¿Pulso capturado?—
Pulso mínimo seguro≥ 8 ms

Ajustá los controles para ver cuándo el reloj captura el pulso.

Recorrido guiado

  1. Con los valores iniciales, T = 8 ms (125 Hz). El pulso de 5 ms dura menos que T, pero el flanco ↑2 lo contiene: Q pasa a 1. Fue cuestión de fase.
  2. Movés el inicio del pulso a 17 ms. Ahora el pulso cabe entre ↑2 (16 ms) y ↑3 (24 ms): ningún flanco lo ve y Q no cambia. Es una detección perdida.
  3. Con el pulso ya perdido, subí su ancho a 8 ms (igual a T). Se captura, sea cual sea el inicio: un pulso de ancho ≥ T contiene siempre un flanco.
  4. Bajá T a 4 ms (250 Hz). El pulso de 5 ms ya es más largo que el período y se captura siempre. Probá a mover el inicio.
  5. Subí T a 16 ms. Con una ventana de 48 ms quedan solo 2 flancos y un pulso corto casi nunca se ve. La frecuencia es de 62,5 Hz.
  6. Cambiá el tiempo en alto sin tocar T: la frecuencia no cambia, el ciclo de trabajo sí, y los flancos ascendentes siguen en los mismos instantes. Para un flip-flop que captura en ↑, el ciclo de trabajo no altera la captura.
Desafío: un pulso de 1 ms que se capture siempre

Con un pulso de 1 ms, hay que lograr que T sea menor o igual a 1 ms; el control mínimo del laboratorio es 2 ms, así que no se puede: con T = 2 ms, la mitad de los inicios pierde el pulso. En un circuito real habría que subir el reloj por encima de 1 kHz o usar un biestable de captura que retenga el evento. Es el límite que motiva los flip-flops y latches de los próximos temas.

10 · Método de trabajo

Cómo dibujar un diagrama temporal

  1. Elegí la escala de tiempo. Una cuadrícula en períodos de reloj (o en nanosegundos) permite ubicar flancos con exactitud.
  2. Dibujá el reloj primero y marcá con una línea vertical cada flanco de captura.
  3. Agregá las entradas como niveles entre transiciones, y escribí al margen cuándo cambian respecto del reloj.
  4. Leé las entradas justo antes de cada flanco y completá una tabla (entradas, estado antes, estado después).
  5. Dibujá el estado: cambia en cada flanco donde la tabla lo indica, y siempre después del flanco.
  6. Dibujá las salidas derivadas del estado (y, si corresponde, de las entradas). Verificá que no cambien en instantes inesperados.
  7. Revisá los casos conflictivos. ¿Hay pulsos más cortos que T? ¿Entradas que cambian cerca de un flanco? Anotalos como supuestos o corregí el diseño.

En la mesa, el mismo orden se aplica a una captura: con el analizador lógico disparando en el flanco ascendente del reloj, comprobá primero que el reloj tenga la frecuencia y el ciclo de trabajo esperados, después mirá las entradas y por último el estado. Si el reloj es incorrecto o ruidoso, todo lo demás será confuso.

11 · Comprensión

Confusiones frecuentes

«Un reloj más rápido siempre es mejor»

Un reloj rápido procesa más ciclos por segundo, pero consume más energía, genera más ruido y exige más cuidado con el cableado. Y no puede superar la frecuencia máxima que permite el camino crítico: lo importante es que se cumpla el período mínimo.

«El ciclo de trabajo cambia cuándo captura el flip-flop»

El flanco ascendente sucede al comienzo de cada período, sea cual sea el tiempo en alto. El ciclo de trabajo solo importa por los anchos mínimos que pide el datasheet, o cuando la señal alimenta una carga.

«La salida cambia justo en el flanco»

Cambia un poco después: el retardo clk→Q. En un dibujo ideal se omite, pero el valor que se captura es siempre el anterior al flanco. Eso es lo que permite que varios flip-flops se actualicen a la vez sin pisarse.

«Si la entrada estuvo en 1 durante un ciclo de reloj, se captura»

Hace falta que haya estado en 1 en el instante previo a algún flanco. Un pulso de ancho menor que T puede caer completamente entre dos flancos; uno de ancho mayor o igual que T siempre contiene alguno.

«Frecuencia y período son inversos exactos, así que no hace falta preocuparse por las unidades»

La relación T = 1/f es exacta, pero hay que cuidar las unidades: 250 kHz es 4 µs, no 4 ms. Pasar siempre a hertz y segundos antes de operar o usar los prefijos con cuidado evita errores de un factor mil.

«El período mínimo solo depende del flip-flop»

También depende de la lógica entre flip-flops, del reloj (skew, jitter) y de la tensión y la temperatura. Un mismo chip admite relojes distintos según el circuito en el que se lo use.

«Con un diagrama temporal ideal, el circuito real se comportará igual»

El diagrama ideal es el primer paso. En la realidad hay tiempos de subida, retardos, setup y hold; un diseño correcto debe verificarse contra esos márgenes.

12 · Práctica guiada

Calculá y dibujá antes de comprobar

1. Pasar de frecuencia a período

Calculá el período de relojes de 2,5 MHz, 400 kHz y 12 Hz. Después, la frecuencia de relojes con T = 250 ns y T = 20 ms.

Ver solución razonada

T = 1/f: 2,5 MHz → 400 ns; 400 kHz → 2,5 µs; 12 Hz → 83,3 ms. Al revés: 250 ns → 4 MHz; 20 ms → 50 Hz. Un truco: 1 MHz es 1 µs, y las demás se escalan por potencias de diez.

2. Ciclo de trabajo

Una señal de 1 kHz está en alto durante 250 µs. ¿Cuánto vale D, y cuánto el tiempo en bajo? ¿Cuántas veces mayor es el tiempo en bajo que en alto?

Ver solución

T = 1 ms, D = 250 µs / 1000 µs = 25 %. El tiempo en bajo es 750 µs, 3 veces el tiempo en alto. Los flancos ascendentes siguen separados por 1 ms.

3. ¿Se pierde el pulso?

Un reloj de 1 kHz (T = 1 ms) vigila un sensor. Llega un pulso de 0,6 ms en un instante al azar. ¿Con qué probabilidad se captura? ¿Qué ancho garantiza la captura?

Ver solución razonada

La probabilidad es w / T = 0,6 ms / 1 ms = 60 %. Para garantizar la captura el ancho tiene que ser al menos T = 1 ms. Si el sensor entrega pulsos de 0,6 ms, hay que subir el reloj por encima de 1,67 kHz (T ≤ 0,6 ms) o usar un biestable que retenga el evento.

4. Dividir una frecuencia

Un flip-flop que invierte en cada flanco ascendente recibe 8 MHz con ciclo de trabajo del 20 %. ¿Qué frecuencia y qué ciclo de trabajo tiene su salida? ¿Y tras tres etapas encadenadas?

Ver solución

La primera etapa entrega 4 MHz con 50 %, aunque la entrada tuviera 20 %: cada nivel dura un período completo de entrada. Tras tres etapas: 8 → 4 → 2 → 1 MHz, siempre con 50 %.

5. Frecuencia máxima

Un circuito tiene tclk→Q = 25 ns, el camino de lógica más lento es de 40 ns y tsetup = 10 ns. ¿Cuál es la frecuencia máxima? ¿Puede funcionar a 20 MHz?

Ver solución razonada

Tmín = 25 + 40 + 10 = 75 ns, o sea fmáx ≈ 13,3 MHz. A 20 MHz el período sería de 50 ns, que no alcanza. Opciones: reducir la lógica entre flip-flops, por ejemplo partiéndola en dos etapas con un flip-flop intermedio, o elegir una familia más rápida.

6. Un segundo exacto

Un cristal de 32 768 Hz alimenta una cadena de divisores por 2. ¿Cuántos hacen falta para obtener 1 Hz? ¿Cuánto vale el período de la salida?

Ver solución

32 768 = 215, así que 15 divisores encadenados entregan 1 Hz, con T = 1 s y ciclo de trabajo 50 %. Es el esquema de casi todos los relojes de pulsera digitales.

7. Completar un cronograma

Con un reloj de período 4 ms que sube en t = 4, 8, 12, … y Q = 0 al comienzo, dibujá Q si S vale 1 en [6, 8) y en [11, 12), y R vale 1 en [14, 17). ¿Cuándo cambia Q y por qué?

Ver solución razonada

Los flancos leen S en los instantes 3, 7, 11, 15… (el tick anterior a cada flanco). El primer pulso incluye t = 7, que es el valor justo antes de ↑(t = 8): Q pasa a 1 después de t = 8. El segundo pulso, en [11, 12), contiene t = 11, que se lee antes de ↑(t = 12): sigue en 1. R, en [14, 17), contiene t = 15, leído antes de ↑(t = 16): Q vuelve a 0 después de t = 16. Resumen: Q sube tras t = 8 y baja tras t = 16.

13 · Síntesis

Ideas para recordar

  • El reloj marca cuándo se actualiza el estado. Los circuitos síncronos eligen un flanco, normalmente el ascendente.
  • T = 1/f; D = talto/T. Hay que cuidar las unidades: 1 MHz son 1 µs.
  • En un cronograma, la entrada relevante es la que vale justo antes del flanco; el estado cambia justo después.
  • Un sistema síncrono es ciego entre flancos: un pulso de ancho ≥ T siempre se captura; uno más corto puede perderse, con probabilidad w/T de verse.
  • Contar n ciclos mide n · T; un flip-flop que invierte en cada flanco divide la frecuencia por 2 y deja el ciclo de trabajo en 50 %.
  • El período mínimo es T ≥ tclk→Q + tlógica + tsetup: manda el camino crítico.
  • Los diagramas ideales omiten pendientes, retardos, setup y hold. Los datasheets sí los incluyen.

¿Listo para el tema 4?

Antes de avanzar, calculá el período de un reloj de 40 kHz, explicá por qué un pulso más corto que T puede perderse y describí qué tres sumandos limitan la frecuencia máxima de un circuito. Si podés justificar las tres respuestas, ya sabés mirar el tiempo.

En el próximo tema abriremos la caja: realimentación y biestables. Veremos cómo conectando la salida de una puerta a la entrada de otra se consigue conservar un bit, y por qué no basta con cualquier lazo.