34 / 37 · Concept
Frontières de domaines d'horloge et métastabilité
Comprendre la portée du synchroniseur à deux étages et distinguer niveau, impulsion brève et transfert multibit.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Entre deux horloges, aucun écart aux fronts n'est garanti
SetupSetup Durée minimale de stabilité de la donnée avant le front de capture. En cas de violation, le résultat mémorisé n'est pas garanti. En savoir plus et holdTemps hold Durée minimale de stabilité des données après le front de capture. À distinguer du maintien ordinaire d'une valeur selon le contexte. En savoir plus exigent une donnée stable autour du front récepteur. Un bouton ou la sortie d'un domaine indépendant n'a pas de relation fixe avec ce front : garantir ces contraintes en permanence est difficile.
La basculeBascule Élément capturant l'entrée au front d'horloge spécifié et la conservant jusqu'au suivant. L'entrée doit respecter setup et hold. En savoir plus peut alors entrer en métastabilité, sans se décider rapidement entre 0 et 1. Ce phénomène analogique n'est pas représenté tel quel dans une simulation RTL 0/1. Un chronogramme propre ne prouve pas la sûreté du CDC.
Deux étages pour un niveau d'un bit maintenu assez longtemps
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 le premier étage devient instable, cette structure lui laisse du temps avant la lecture par le second. La logique fonctionnelle utilise uniquement le dernier étage, sans dérivation directe du premier. Le reset ci-dessus est supposé synchrone à l'horloge destination.
En pratique, attributs de synchroniseurSynchroniseur Circuit recevant dans une horloge locale un signal issu d'un autre domaine temporel. Une chaîne de bascules pour un bit ne s'applique pas directement à des données multibits., liaisons courtes entre étages et vérifications STA/CDC dépendent de l'outil et du composant. Deux registresRegistre Circuit stockant plusieurs bits d'état. Les registres synchrones du cours capturent leur entrée définie sur un front d'horloge. En savoir plus dans le code ne garantissent pas placement et chemins.
L'entrée asynchrone arrive au premier étage, la fonction ne lit que le dernier. Le temps intermédiaire favorise la résolution sans garantir la disparition de toute métastabilitéMétastabilité État analogique où un élément de stockage ne se stabilise temporairement ni à 0 ni à 1. La synchronisation réduit sa probabilité de propagation sans l'annuler..
- Niveau asynchrone: Phase indépendante de l'horloge de destination
- FF meta: Instabilité possible
- FF synchronisée: Capturer au prochain front de destination
- Circuit fonctionnel: Utiliser uniquement le dernier étage
Réduire la probabilité d'échec ne l'annule pas
Un modèle simplifié donne la tendance suivante au temps moyen entre défaillances MTBF :
est le temps de résolution, une caractéristique du composant, la fréquence réceptrice et la fréquence de transition asynchrone. Le calcul réel exige des constantes propres au composant. Cette formule seule ne justifie pas « sûr pendant tant d'années » pour n'importe quel circuit.
Des problèmes différents demandent des structures différentes
| Information | Deux étages d'un bit suffisent-ils ? | Structure à examiner |
|---|---|---|
| Niveau maintenu assez longtemps | Possible si exigences de probabilité et latence satisfaites | Synchroniseur destination |
| Impulsion plus courte que la période destination | L'impulsion peut être manquée | Allongement, toggle, handshake |
| Plusieurs bits ayant un sens commun | Bits observés à des instants différents | Bus stable avec handshake, FIFO asynchrone |
| Bouton mécanique | Les rebonds restent un problème distinct | Synchronisation puis anti-rebond |
Lors d'un passage 0111→1000, synchroniser chaque bit séparément peut faire observer un mot jamais émis. Préserver la cohérence exige de définir la relation entre données complètes et achèvement du transfert.
Pour aller plus loin : MIT OpenCourseWare — Synchronization, Metastability and Arbitration
Essayez vous-même
Avec une horloge réceptrice à 50MHz et des impulsions de 5ns, deux étages garantissent-ils la détection de toutes les impulsions ? Suppriment-ils aussi les rebonds d'un bouton ?
Lire l’explication
50MHz donne 20ns. Une impulsion de 5ns peut apparaître et disparaître entre deux fronts, sans être capturée au premier étage. Ajouter des étages ne garantit pas sa conservation : il faut un contrat d'allongement ou de handshake. Les rebonds demandent un anti-rebond distinct.