- Muchas notas - Fran Acién

20210105 - VHDL 11 - Temporización y diseño asíncrono

No idealidades del reloj

  • Clock skew: retardo en la señal de reloj siempre con un valor fijo. Normalmente tiene un efecto negativo en circuitos secuenciales síncronos.
  • Jitter: retardo con un valor aleatorio

$$ T_{hold} \le T_{cq} + T_{next(min)} - T_{skew} \\ T_{hold} \le T_{cq} + T_{skew} $$

Múltiples relojes

  • Independientes
  • Derivados
  • GALS: Sistema globalmente asíncrono y linealmente síncrono

Meta-estabilidad

gg.png

Después de un \(T_r\) (tiempo de resolución) este se pone a 0 o a 1.

El tiempo de resolución es una variable probabilística que define el tiempo que tarda de pasar del valor intermedio a 0 o 1. Se define la función de densidad de probabilidad ¿Cual es la probabilidad que después continue la metaestabilidad?:

$$ P(T_{r}) = e^{\frac{-T_r}{\tau}} $$

Siendo \(\tau\) = Cte de decaimiento del FF

El método para minimizar la probabilidad de metaestabilidad es la utilización de sincronizadores de 2 o más FFs.

MTBF (Tiempo medio entre fallos de sincronización)

Calculamos el reciproco: AF (tasa de fallos por segundo)

$$ AF(T_r) = R_{META} \cdot P(T_r) \\ R_{META} \equiv \text{Tasa media en la que un FF entra en metaestabilidad} \\ R_{META} = \omega \cdot f_{clock} \cdot f_d \\ \omega \equiv \text{ventana susceptible de entrar en metaestabilidad} $$

En un segundo tenemos \(f_{clock}\) flancos de reloj -> luego en 1 segundo tenemos \(\omega f_{clock} (seg)\) susceptibles de metaestabilidad.

$$ f_d \equiv \text{transiciones/seg de la señal de entrada} $$

Habrá \(\omega \cdot f_{clk} \cdot f_d\) transiciones en las ventanas de susceptibilidad.

Solo se producirá error de sincronización cuando alguna de estas transiciones no se haya estabilizado después de \(T_r\). Con lo que llegamos a:

$$ MTBF = \frac{1}{AF(T_r)} = \frac{e^{\frac{T_r}{\tau}}}{\omega \cdot f_{clk} \cdot f_d} $$

Sincronizadores

Sincroniza una entrada asíncrona con el reloj del sistema. Proporciona el suficiente tiempo para resolver la metaestabilidad.

Dónde usar sincronizadores -> Señales libres de glitches en un solo lugar no sincronizar señales que estén relacionadas.

No sincronizador

No hay \(T_r\), en cuanto sale ya se propaga

Caso de sincronizador con un único flipflop

a.png

Si el flip-flop del sincronizador entra en metaestabilidad, una vez que se estabilice la señal a su salida, aún tendrá que recorrer la lógica combinacional y llegar antes del tiempo de setup del siguiente flip-flop para evitar que se propague el estado inestable a través del resto del sistema:

$$ T_r \le T_{clock} - T_{comb} - T_{setup} - T_{skew} $$

Caso de sincronizador con dos flip-flops

6b12ec0983b3ea7505fe5a0d2dad4b97.png

$$ T_r \le T_{clock} - T_{setup} - T_{skew} $$

Caso de sincronizador con tres flip-flops

c.png

$$ T_r \le 2 \cdot (T_{clock} - T_{setup}) - T_{skew} $$

Frecuencia máxima de funcionamiento

Cálculo de periodo de reloj mínimo:

$$ T_{c(min)} = T_{cq} + T_{next(max)} + T_{setup} + T_{skew} \\ T_{cq} = T_{cqFF} = T_{propFF} \\ T_{next(max)} = T_{comb(max)} $$

\(T_{cq}\) se referirá al flipflop de la señal de entrada, y luego \(T_{setup}\) se referirá al siguiente fliflop. Para que afecto el \(T_{skew}\) tiene que salir la señal de un flipflo y entrar en otro distinto.

La operación anterior se hace siguiendo el peor camino posible.

Si sólo hay un FF involucrado no hay \(T_{skew}\)