Altifigence Academy

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.

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

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 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..

Limites d'emploi du synchroniseur à un bit
  1. Niveau asynchrone: Phase indépendante de l'horloge de destination
  2. FF meta: Instabilité possible
  3. FF synchronisée: Capturer au prochain front de destination
  4. 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 :

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

TresolveT_{\mathrm{resolve}} est le temps de résolution, τ\tau une caractéristique du composant, fdstf_{\mathrm{dst}} la fréquence réceptrice et feventf_{\mathrm{event}} 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

InformationDeux étages d'un bit suffisent-ils ?Structure à examiner
Niveau maintenu assez longtempsPossible si exigences de probabilité et latence satisfaitesSynchroniseur destination
Impulsion plus courte que la période destinationL'impulsion peut être manquéeAllongement, toggle, handshake
Plusieurs bits ayant un sens communBits observés à des instants différentsBus stable avec handshake, FIFO asynchrone
Bouton mécaniqueLes rebonds restent un problème distinctSynchronisation 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.

Votre choix s’applique à ce navigateur. Modifiez-le à tout moment en bas de page.