CDC
Initiales de clock domain crossing, un franchissement de domaine d'horloge.
CDC: quand les signaux numériques passent d'un domaine d'horloge à un autre
Un franchissement de domaine d'horloge (CDC) se produit lorsqu'un signal numérique passe d'une partie d'un circuit fonctionnant sur une fréquence d'horloge à une autre partie fonctionnant sur une fréquence d'horloge différente, ou d'une source asynchrone vers un système synchrone. En pratique, cela signifie qu'un signal généré et utilisé dans un domaine de synchronisation doit d'une manière ou d'une autre entrer et être utilisé en toute sécurité dans un autre. Le problème est que l'horloge de réception peut échantillonner le signal entrant à un moment inopportun, le capturant en pleine transition, ce qui provoque la métastabilité: la bascule de réception entre dans un état indéfini entre 0 et 1, corrompant potentiellement les données en aval.
La métastabilité n'est pas un problème mineur. Lorsqu'une bascule entre dans un état métastable, il peut lui falloir un temps imprévisible pour se stabiliser à un niveau logique valide, et parfois elle ne se stabilise jamais complètement avant que le front d'horloge suivant ne l'échantillonne à nouveau. Cela entraîne des erreurs logiques, des violations de synchronisation et une défaillance du système. Pour cette raison, le franchissement des domaines d'horloge est l'une des opérations les plus dangereuses en conception numérique. Une conception qui passe la simulation peut échouer silencieusement sur le terrain car la métastabilité est probabiliste: elle peut se produire rarement, mais avec suffisamment de cycles d'horloge, elle se produira.
Stratégies de synchronisation
La solution standard est un synchroniseur: une chaîne de deux bascules ou plus cadencées par le domaine de destination, le signal entrant étant appliqué à la première bascule. Même si la première bascule devient métastable, la deuxième bascule a le temps de voir une sortie stable et de l'échantillonner proprement. Pour les signaux de commande à un seul bit, un synchroniseur à deux étages est souvent suffisant. Le franchissement de données multi-bits nécessite des structures plus complexes, telles que des compteurs en code Gray ou des protocoles de poignée de main, car plusieurs bits ne peuvent pas être synchronisés ensemble sans risque de décalage entre les bits.
Le franchissement de domaine d'horloge est courant dans les systèmes réels. Une puce peut avoir plusieurs domaines d'horloge internes pour la gestion de l'alimentation, ou des signaux asynchrones externes (boutons de réinitialisation, entrées de capteurs, données reçues) doivent être synchronisés avec une horloge interne. Les FPGA et les ASIC gérant des interfaces haute vitesse passent fréquemment de l'horloge d'interface à une horloge système. Ne pas gérer correctement le CDC est une source majeure de bugs silicium subtils et difficiles à déboguer, c'est pourquoi la vérification formelle du CDC est de plus en plus une pratique courante dans les flux de conception professionnels.
Sources
- Source de la définitionWiktionary