Aprende › Tema 12
Diagramas de tiempo, glitches y riesgos estáticos
Lectura de 8 min · Equipo bitGateLab
En el papel una compuerta responde al instante; en la realidad cada compuerta tarda unos nanosegundos. Esa diferencia casi nunca importa en la tabla de verdad, pero sí en el diagrama de tiempos: dos caminos con retardos distintos pueden producir pulsos falsos, llamados glitches, que hacen avanzar un contador o disparar un latch cuando no debían. Aquí aprenderás a leer un diagrama de tiempos, calcular retardos y detectar y eliminar riesgos estáticos con el mapa de Karnaugh.
Cómo leer un diagrama de tiempos
Un diagrama de tiempos dibuja cada señal como una línea que sube (1) o baja (0) sobre un eje horizontal de tiempo común. Una línea vertical imaginaria en cualquier instante te da el valor de todas las señales. Los flancos de las entradas son las causas; la distancia entre un flanco de entrada y el cambio que provoca en la salida es el retardo. En circuitos con reloj, lee los valores justo antes de cada flanco activo, que es cuando los flip-flops muestrean.
Retardo de propagación y ruta crítica
El retardo de propagación es el tiempo entre un cambio en la entrada y el cambio resultante en la salida, medido entre los puntos al 50 % de cada transición. Se distinguen dos valores:
- tPLH: retardo cuando la salida pasa de bajo a alto.
- tPHL: retardo cuando la salida pasa de alto a bajo.
En la familia 74HC alimentada a 5 V los retardos de una compuerta sencilla son del orden de 10 ns y crecen con la carga capacitiva y al bajar el voltaje de alimentación.
El retardo de un circuito es el del camino más lento entre cualquier entrada y la salida, la ruta crítica. Se calcula sumando los retardos de las compuertas de cada camino y quedándose con el mayor.
Ejemplo: F = A·B + A·C con tNOT = 5 ns, tAND = 10 ns y tOR = 10 ns.
- Camino de B o de C: AND + OR = 20 ns.
- Camino de A por la AND superior: AND + OR = 20 ns.
- Camino de A por el inversor: NOT + AND + OR = 25 ns.
La ruta crítica es la de A a través del inversor, con 25 ns. Ningún cambio de entrada tarda más que eso en dejar F estable.
Glitches y riesgos estáticos
Un riesgo estático de 1 existe cuando la salida debería quedarse en 1 durante un cambio de entrada, pero puede caer brevemente a 0. Un riesgo estático de 0 es lo contrario: la salida debería quedarse en 0 y da un pico breve a 1. Ambos aparecen cuando una variable y su complemento llegan a la salida por caminos de retardo distinto.
Toma el circuito del ejemplo anterior con B = C = 1. Lógicamente F = A + A = 1 siempre. Pero cuando A baja de 1 a 0, el término A·B se apaga antes de que A·C se encienda, porque A tiene que pasar primero por el inversor.
Cronología del glitch (B = C = 1, A baja en t = 0):
- t = 5 ns: el inversor sube A.
- t = 10 ns: la AND de A·B baja su salida (respondió al cambio de A en t = 0).
- t = 15 ns: la AND de A·C sube su salida (respondió al cambio de A en t = 5).
- Entre 10 y 15 ns las dos entradas de la OR valen 0. La OR responde 10 ns después: F vale 0 desde t = 20 hasta t = 25 ns.
El ancho del glitch es la diferencia de retardos entre los dos caminos: 5 ns, el del inversor. Si A sube, A·B se enciende en t = 10 y A·C se apaga en t = 15; ambas valen 1 en ese intervalo y no hay glitch.
Hay también riesgos dinámicos: la salida debería cambiar una sola vez y cambia tres o más (por ejemplo 1 → 0 → 1 → 0). Aparecen en lógica de varios niveles con tres o más caminos de retardo distinto para la misma variable.
Detectar y eliminar riesgos con Karnaugh
En el mapa de Karnaugh de una suma de productos, un riesgo estático de 1 aparece cuando dos celdas con 1 son adyacentes pero quedan cubiertas por grupos distintos y ningún grupo cubre a ambas. Pasar de una celda a la otra significa cambiar una sola variable, y durante ese cambio el circuito "salta" de un término a otro.
La solución es agregar el término de consenso: un grupo extra que cubra las dos celdas. Es redundante desde el punto de vista lógico (no cambia la tabla de verdad), pero mantiene la salida en 1 durante la transición.
Ejemplo: F = A·B + A·C.
- A·B cubre las celdas ABC = 110 y 111. A·C cubre 001 y 011.
- Las celdas 011 y 111 son adyacentes (solo cambia A) y están en grupos distintos: ese es el riesgo que vimos, con B = C = 1.
- El grupo que cubre ambas es B·C, el consenso de A·B y A·C: se quita la variable que aparece directa en un término y negada en el otro, y se multiplica lo que queda.
- Circuito sin riesgo: F = A·B + A·C + B·C. Con B = C = 1, el término B·C vale 1 todo el tiempo y la OR ya no puede bajar.
Para un producto de sumas el razonamiento es dual: se buscan ceros adyacentes en grupos distintos y se agrega la suma de consenso para eliminar el riesgo estático de 0. Por ejemplo, F = (A + B)·(A + C) tiene riesgo cuando B = C = 0, y se corrige agregando el factor (B + C).
Errores comunes
- Pensar que un circuito con la tabla de verdad correcta no puede fallar: la tabla no dice nada del comportamiento durante las transiciones.
- Quitar el término de consenso "porque sobra" al simplificar, en un circuito que alimenta un reloj o un reset.
- Sumar los retardos de todas las compuertas del circuito en lugar de solo los del camino más lento.
- Creer que el consenso elimina glitches cuando cambian dos entradas al mismo tiempo: solo cubre cambios de una variable.
Pruébalo en el simulador
En el cronograma puedes ver el pico y cómo desaparece al agregar el consenso.
- Coloca un inversor, dos AND y una OR, y arma F = A·B + A·C.
- Fija B = 1 y C = 1, y conecta A a una entrada que puedas cambiar o a una señal de reloj lenta.
- Abre el cronograma y cambia A de 1 a 0 varias veces; observa F en el momento de la transición y si aparece un pulso breve o un aviso de glitch.
- Agrega una tercera AND con B·C y súmala a la OR.
- Repite el cambio de A y observa que F se mantiene en 1.
Ejercicios
- Encuentra el riesgo estático de F = A·C + B·C y escribe la versión sin riesgo.
Respuesta
A·C cubre 100 y 110; B·C cubre 011 y 111. Las celdas 110 y 111 son adyacentes (cambia C) en grupos distintos, con A = B = 1. Consenso: A·B. F = A·C + B·C + A·B.
- En el circuito del ejercicio 1, con tNOT = 4 ns, tAND = 8 ns y tOR = 8 ns, A = B = 1, ¿en qué transición de C aparece el glitch, cuándo y cuánto dura?
Respuesta
Cuando C baja en t = 0: B·C baja en t = 8, C sube en t = 4 y A·C sube en t = 12. Entre 8 y 12 ns la OR ve dos ceros, así que F vale 0 de t = 16 a t = 20 ns: 4 ns. Cuando C sube no hay glitch.
- ¿Cuál es la ruta crítica de F = A·C + B·C con los retardos del ejercicio 2?
Respuesta
De C a través del inversor: 4 + 8 + 8 = 20 ns.
- Para F = (A + B)·(A + C), ¿qué valor debería tener la salida cuando B = C = 0 y qué glitch puede aparecer?
Respuesta
Con B = C = 0, F = A·A = 0. Al cambiar A puede aparecer un pico breve a 1 (riesgo estático de 0). Se elimina agregando el factor (B + C).