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.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
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
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
endmoduleSi 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..
- Nivel asíncrono: Sin relación de fase con el reloj destino
- meta FF: Puede volverse metaestable
- synced FF: Capture en el siguiente flanco destino
- 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:
es el tiempo disponible para resolverse, una característica del dispositivo, la frecuencia receptora y 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 tiempo | Si cumple los requisitos probabilísticos y de latencia | Sincronizador destino |
| Pulso menor que un periodo destino | Puede perderse el propio pulso | Extensión, toggle, handshake |
| Varios bits con significado conjunto | Pueden capturarse versiones de instantes distintos | Bus estable con handshake, FIFO asíncrona |
| Botón mecánico | El rebote de contactos es otro problema | Sincronizació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.