Altifigence Academy

34 / 37 · Concepto

Cruces de dominios de reloj y metaestabilidad

Comprenda el alcance del sincronizador de dos etapas y distinga niveles de un bit, pulsos cortos y transferencias multibit.

Otro reloj no garantiza separación respecto a los flancos

SetupSetup Tiempo mínimo durante el cual la entrada debe permanecer estable antes del flanco de captura. Si se incumple, el valor almacenado no está garantizado. Más información y holdTiempo de hold Tiempo mínimo durante el cual la entrada debe permanecer estable después del flanco de captura. Hay que distinguirlo, por el contexto, de la simple conservación de un valor. Más información exigen datos estables alrededor del flanco receptor. Un botón o un dominio de reloj independiente cambia con fase arbitraria respecto a él, por lo que es difícil garantizar siempre esas condiciones.

Puede aparecer metaestabilidad: el estado interno del flip-flopFlip-flop Elemento que captura la entrada en el flanco de reloj especificado y la conserva hasta el siguiente. La entrada debe cumplir setup y hold. Más información tarda en decidirse por 0 o 1. La simulación RTL binaria habitual no representa directamente ese fenómeno analógico. Una onda limpia no demuestra un cruce de dominio seguro.

Dos etapas para un nivel de un bit mantenido suficiente tiempo

SystemVerilog
module level_synchronizer (
    input  logic clk_dst,
    input  logic rst_dst,
    input  logic async_level,
    output logic synced_level
);
    logic first_stage;
    always_ff @(posedge clk_dst) begin
        if (rst_dst) begin
            first_stage  <= 1'b0;
            synced_level <= 1'b0;
        end else begin
            first_stage  <= async_level;
            synced_level <= first_stage;
        end
    end
endmodule

Si el primer flip-flop se vuelve inestable, se le da tiempo para resolverse antes de que el siguiente capture. La lógica funcional usa solo la última etapa, sin derivar directamente la primera. Se supone que reset es síncrono al reloj destino.

La implementación requiere atributos de sincronizadorSincronizador Circuito que permite tratar en el reloj receptor una señal procedente de otro dominio temporal. Un sincronizador de varios flip-flops para un bit no debe aplicarse sin más a datos de varios bits., conexiones cortas entre etapas y comprobaciones STA/CDC apropiadas al dispositivo y las herramientas. Dos registrosRegistro Circuito que almacena varios bits de estado. Los registros síncronos de este curso capturan la entrada especificada en el flanco de reloj. Más información en RTL no garantizan colocación ni condiciones de camino.

La entrada asíncrona llega a la primera etapa y la función usa la última. El intervalo entre etapas ofrece tiempo de resolución; no garantiza eliminar siempre la metaestabilidadMetaestabilidad Estado analógico transitorio en el que un elemento de almacenamiento no logra estabilizarse en 0 o 1. La sincronización reduce la probabilidad de propagación, pero no la lleva a cero..

Alcance de un sincronizador de un bit
  1. Nivel asíncrono: Sin relación de fase con el reloj destino
  2. meta FF: Puede volverse metaestable
  3. synced FF: Capture en el siguiente flanco destino
  4. Lógica funcional: Use solo la última etapa

Reduce la probabilidad de fallo, sin llevarla a cero

Un modelo simplificado expresa esta tendencia del tiempo medio entre fallos:

MTBF ∝ eTresolve/τfdstfevent\mathrm{MTBF}\ \propto\ \frac{e^{T_{\mathrm{resolve}}/\tau}}{f_{\mathrm{dst}}f_{\mathrm{event}}}

TresolveT_{\mathrm{resolve}} es el tiempo disponible para resolverse, τ\tau una característica del dispositivo, fdstf_{\mathrm{dst}} la frecuencia receptora y feventf_{\mathrm{event}} la tasa de transiciones asíncronas. El cálculo real necesita constantes específicas del dispositivo. La fórmula sola no justifica afirmar «seguro durante tantos años» para cualquier circuito.

Cada tipo de información necesita su solución

Información¿Bastan dos etapas de un bit?Estructura a considerar
Nivel mantenido suficiente tiempoSi cumple los requisitos probabilísticos y de latenciaSincronizador destino
Pulso menor que un periodo destinoPuede perderse el propio pulsoExtensión, toggle, handshake
Varios bits con significado conjuntoPueden capturarse versiones de instantes distintosBus estable con handshake, FIFO asíncrona
Botón mecánicoEl rebote de contactos es otro problemaSincronización y luego antirrebote

Por ejemplo, al pasar cuatro bits de 0111 a 1000, sincronizarlos independientemente puede producir combinaciones que nunca existieron. Para mantener coherencia del bus, diseñe la relación entre el dato completo y la confirmación de transferencia.

Lectura adicional: MIT OpenCourseWare — Synchronization, Metastability and Arbitration

Inténtalo tú

El reloj receptor es de 50 MHz y los pulsos duran 5 ns. ¿Añadir dos etapas garantiza detectar todos los pulsos? ¿Elimina también el rebote de botones?

Leer la explicación

El periodo es 20 ns. Un pulso de 5 ns puede aparecer y desaparecer entre flancos y perderse ya en la primera etapa. Añadir etapas no preserva por sí solo pulsos: hace falta extensión, handshake u otro contrato. El rebote requiere además antirrebote.

Tu elección se aplica a este navegador. Puedes cambiarla en el pie de página.