Analyse temporelle et CDC
Dans une FIFO asynchrone, quelle est la raison correcte pour laquelle on convertit les pointeurs d'écriture et de lecture en code de Gray avant de les synchroniser vers l'autre domaine ?
- AParce que le code de Gray divise par deux le nombre de bits et réduit le nombre de synchroniseurs
- BParce qu'un seul bit change à chaque incrément, si bien que même une capture en plein changement donne une valeur correcte, celle d'avant ou celle d'après l'incrément
- CParce que les signaux en code de Gray ne deviennent pas métastables, ce qui rend la synchronisation inutile
Afficher la réponse et l'explication
Réponse : B. Parce qu'un seul bit change à chaque incrément, si bien que même une capture en plein changement donne une valeur correcte, celle d'avant ou celle d'après l'incrément
Avec un pointeur binaire, plusieurs bits changent en même temps, comme de 0111 à 1000 ; si chaque bit est synchronisé séparément, on peut recevoir une valeur sans aucun rapport. En code de Gray, un seul bit change par incrément : même si ce bit devient métastable et se résout vers l'ancienne ou la nouvelle valeur, le résultat est la valeur d'avant ou d'après l'incrément. On voit simplement une valeur un peu ancienne, et la FIFO n'est pas corrompue. Le nombre de bits ne change pas, et la métastabilité elle-même peut toujours survenir : les synchroniseurs restent nécessaires.
Continuer : 9 autres questions sur Analyse temporelle et CDC