Guide des Débutants Pour la Récupération de données d’Horloge
Si vous êtes nouveau dans le monde de la conception et de la vérification, vous avez probablement BEAUCOUP de questions! L’un d’eux peut concerner un élément important – la récupération de données d’horloge. Dans ce blog, nous essayons de dé-mystifier ce processus.
Le but de la conception de différents protocoles est de transférer un ensemble d’informations (données) d’un endroit à un autre. Souvent, la communication de données série est utilisée pour transmettre les données à grande vitesse. Côté récepteur, les données transmises doivent être récupérées sans perdre leur intégrité avec les informations de synchronisation accompagnées. Ce processus est appelé Récupération d’horloge et de données.
Dans cet article, nous allons développer les exigences du CDR et son fonctionnement, comment aborder des problèmes tels que la gigue et le PPM dans la modélisation du CDR.
BTW, si vous passez beaucoup de temps à regarder les formes d’onde, à essayer d’avoir du sens, notre outil de débogage de protocole (PDA) pourrait vous intéresser. Veuillez jeter un coup d’œil à une courte démo de 3 minutes ici (pas d’écouteurs? Pas de problème! Il a des sous-titres!).
Différentes Techniques de communication de données:
Avant de commencer sur CDR, nous examinerons différentes techniques de communication de données, qui sont:
1. Communication de données série
Dans la communication série, les bits de données sont transmis séquentiellement un par un.
2. Communication de données parallèle
En communication parallèle, les bits de données sont pilotés simultanément sur plusieurs fils.
En regardant les chiffres ci-dessus, on peut facilement juger que la communication parallèle sera beaucoup plus rapide que la communication série.
Mais alors la question se pose, pourquoi la communication série est-elle préférée à la communication parallèle???
En effet, en pratique, la communication parallèle n’est pas plus rapide que la communication série. Cela est dû aux raisons suivantes –
a) L’inclinaison
La longueur du chemin de déplacement pour chaque bit va être différente.Pour cette raison, certains bits peuvent arriver plus tôt ou plus tôt que d’autres, ce qui peut corrompre les informations.
Pour résoudre ce problème, vous pouvez tamponner les bits. Mais ce serait sur le coût de la vitesse car cela réduirait la vitesse de chaque lien au plus lent de tous.
b) Interférence entre symboles et conversation croisée
En raison de plusieurs liaisons parallèles, l’ISI et la conversation croisée sont introduites dans le système, ce qui devient plus sévère à mesure que la longueur de la liaison augmente. Cela limite donc la longueur d’une connexion.
c) Limitation du nombre de broches d’E / S
La communication de données parallèle nécessite beaucoup plus de broches d’E / S que ce qui est requis par la communication de données série.
Qu’est-ce que la récupération de données d’horloge?
Étant donné que la plupart des interfaces série haute vitesse n’ont pas d’horloge d’accompagnement, le récepteur doit récupérer l’horloge afin d’échantillonner les données sur les lignes série.
Pour récupérer l’horloge d’échantillonnage, le récepteur a besoin d’une horloge de référence à peu près de même fréquence. Pour générer l’horloge récupérée, le récepteur doit aligner en phase l’horloge de référence sur les transitions du flux de données entrant. C’est ce qu’on appelle la récupération d’horloge.
L’échantillonnage de ce signal de données entrant avec l’horloge récupérée pour générer un flux binaire est appelé Récupération de données. Ensemble, cela s’appelle la récupération de données d’horloge, ou CDR.
CDR est nécessaire pour récupérer les données du flux de données entrant en l’absence de tout signal d’horloge d’accompagnement, sans erreurs de bits dues à un sur/ sous-échantillonnage.
Comment Fonctionne la Récupération De Données d’Horloge?
Les deux fonctions principales pour effectuer le CDR sont la détection de fréquence et l’alignement de phase.
I) Détection de fréquence
Il s’agit d’un processus de verrouillage d’une fréquence extraite du flux de données entrant. Ceci est fait en détectant la différence de temps entre deux fronts consécutifs sur le flux de données.
Cette fréquence verrouillée est utilisée pour régénérer le flux binaire de données transmis.
Pour vous familiariser avec la détection de fréquence, permettez-moi de vous donner une analogie de ponctuation dans une phrase. Vous avez peut-être observé que chaque fois qu’une route subit des travaux de réparation, l’entreprise de construction affiche un message d’affichage sur un tableau pour ralentir les véhicules qui passent. Ce message est quelque chose comme ça –
LENT, LES HOMMES AU TRAVAIL
Maintenant, si le même message est écrit sans ponctuation appropriée, cela peut impliquer quelque chose de totalement différent! –
LES HOMMES LENTS AU TRAVAIL
Les ponctuations sont comme une fréquence détectée. S’il est verrouillé sur une fréquence incorrecte, cela entraînera un échantillonnage de données incorrect!
La question ici est donc de savoir comment échantillonner correctement un flux de bits de données entrant?
Une solution qui vient instantanément à l’esprit est d’échantillonner le flux binaire sur la même fréquence à laquelle il a été transmis.
Pour ce faire, il faut générer l’horloge sur le récepteur ayant la même fréquence sur laquelle les données ont été transmises. Mais il n’est pas possible de générer deux horloges ayant exactement la même fréquence en utilisant deux générateurs d’horloge différents même s’ils ont les mêmes spécifications.
De plus, il n’est pas possible de générer une horloge avec une fréquence précise.
En même temps, une différence infime de fréquence d’échantillonnage peut entraîner une erreur de bit comme décrit dans le diagramme suivant:
Comme le montre la figure ci-dessus ci-dessus, un seul bit est échantillonné deux fois en raison d’une différence infime de fréquence TX et RX.
Sinon, comment générer une horloge avec la même fréquence de ‘horloge TX’?
Cela peut être fait en vérifiant les bords sur le flux de bits de données entrant.Cependant, dans ce processus, les bits initiaux utilisés pour détecter la fréquence sont perdus. Pour résoudre ce problème, un ensemble particulier de séquences de bits est transmis avant de transmettre les données valides. Ces séquences sont appelées séquences d’entraînement. Les séquences d’entraînement possèdent une densité de bords très élevée, de sorte que le récepteur peut facilement verrouiller une fréquence en vérifiant les bords consécutifs sur le fil avant le début des données valides. La figure ci-dessous montre une séquence avec une densité de bord élevée.
La fréquence du flux de bits de données entrant a été récupérée. L’horloge RX peut maintenant être générée en fonction de la fréquence récupérée.
La fréquence récupérée ci-dessus convient à un cas idéal lorsqu’il n’y a pas de bruit introduit dans la transmission, c’est-à-dire que la fréquence d’horloge pour l’horloge TX est la même partout. Les données sont également un multiple intégral de la période d’horloge TX. Cependant, ce n’est pas vrai pratiquement, car il existe un certain nombre d’attributs qui affectent la transmission de données et faussent l’uniformité de l’horloge.
La figure ci-dessous représente une horloge en temps réel dont la période varie.
Il y a principalement deux attributs qui affectent la plupart des communications de données série à grande vitesse –
A) Gigue:
La gigue est un décalage des bords d’un signal périodique. Cela rompt la périodicité du signal.
La gigue est un effet à court terme. Il suit la distribution gaussienne, c’est pourquoi la moyenne moyenne de la gigue est nulle, c’est-à-dire que l’effet cumulatif de la gigue est nul.
Comme il y a un décalage des bords du signal d’horloge dû à la gigue, la question est de savoir quelle est la position optimale pour échantillonner un bit?
Un bit doit être échantillonné au centre. C’est la position optimale où le décalage maximal des bords de chaque côté (de gauche à droite ou de droite à gauche) peut être rencontré. Cependant, si le décalage d’une arête devient supérieur à la moitié de la période de bits, il y aura une erreur de bits.
B) PPM (parties par million):
PPM est une imprécision de certains composants (cristal de quartz en cas de générateur d’horloge) dans un circuit qui conduit à la génération d’un signal à période inexacte. PPM ne rompt pas la périodicité d’un signal. Comme son nom l’indique, PPM est un effet à long terme qui dénote l’inexactitude de la période binaire sur un million de cycles d’horloge. PPM est de nature additive ou soustractive.
Seulement si l’effet cumulatif de la gigue ou des PPM dans la CLK TX devient plus de la moitié de la CLK RX, il y aurait alors des erreurs dues à un sur / sous-échantillonnage.
Un exemple ci-dessous montre comment les variations continues du flux de données entrant peuvent affecter l’échantillonnage des données. Ce même exemple sera considéré pour résoudre les problèmes au fur et à mesure que nous progresserons.
RX CLK (FD) est verrouillé en fréquence pendant la détection de fréquence. Comme le flux de données entrant est échantillonné sur FD, comme illustré dans la boîte rouge, un seul bit est échantillonné deux fois. Cela se produit en raison des variations du flux binaire de données entrant.
Pour rencontrer ces variations de fréquence de TX CLK, la deuxième fonction de CDR, l’alignement de phase vient en image. Cela réajuste les bords RX CLK.
II) Alignement de phase
L’alignement de phase est un processus d’adaptation de la phase d’un signal à un autre signal. Il correspond ici à la phase d’horloge récupérée en détection de fréquence avec le flux binaire de données entrant.
Permettez-moi de vous donner une analogie pour l’alignement de phase.
Vous avez peut-être vu une radio analogique. Il y a deux boutons à savoir l’accord grossier et l’accord fin sur la radio analogique. Lorsque l’on veut écouter des signaux audibles, le bouton de réglage grossier est utilisé pour verrouiller une fréquence où les signaux sont audibles mais avec quelques perturbations. Ici, l’accord grossier est aussi bon que la détection de fréquence et les perturbations sont la gigue et les PPM. Pour supprimer ces perturbations et rendre la voix audible, un bouton de réglage fin est utilisé qui ajuste un peu ici et là la fréquence pré-verrouillée pour obtenir des signaux sonores parfaits. Ici, le réglage fin s’apparente à un alignement de phase.
Les règles suivantes doivent être suivies pour l’alignement de phase:
- Si une transition est détectée sur le fil, faites le niveau de RX CLK (FD + PD) = 1.
- Si la période RX CLK (FD) est terminée après un posedge sur RX CLK (FD + PD) et qu’aucune transition n’est détectée sur le fil, alors affirmez le posedge de RX CLK (FD + PD).
Ici RX CLK (FD) est la fréquence d’horloge verrouillée pendant le processus de détection de fréquence et RX CLK (FD + PD) est la fréquence d’horloge pendant le processus d’alignement de phase.
Il est temps de se pencher sur le fonctionnement de l’alignement de phase. Prenons le même exemple considéré précédemment pour la gigue PPM.
Ici période d’horloge RX CLK(FD) = 10
Les horloges qui n’ont pas été affectées d’une période dans la figure ont par défaut une période de 10.
Dans la figure ci-dessus, nous avons vu précédemment que le dernier bit était échantillonné deux fois en raison d’une variation constante continue (de 10 à 12) en TX CLK (peut être due à PPM).Cependant maintenant, comme représenté dans la boîte rouge, le bit est échantillonné correctement.
Dans le premier cycle d’horloge TX, la période est de 10 unités de temps qui sont verrouillées après la détection de fréquence et également réfléchies sur RX CLK (FD + PD). Selon la règle 1, le bord sur les données fera passer le niveau de RX CLK (FD + PD) à 1 (noté par la première flèche pointillée). Ensuite, negedge sera affirmé sur RX CLK (FD + PD) après la moitié de la période RX CLK (FD). Ensuite, posedge sera affirmé sur RX CLK (FD + PD) en fonction de la moitié de la période RX CLK (FD) ou de la transition sur les DONNÉES selon la première éventualité (règle numéro 2).
Sur les sixième et septième cycles d’horloge TX, les bits de DONNÉES sont 0 et 0, pas de transition en ligne. Ainsi, RX CLK (FD + PD) suivra la règle numéro 2 pour avoir une période d’horloge de RX CLK (FD), représentée dans le premier cycle de RX CLK (FD + PD) dans la boîte rouge. Puisque la période du septième cycle d’horloge est de 12 unités de temps, la transition sur les DONNÉES se produira après 2 unités de temps que prévu. Maintenant, RX CLK (FD + PD) a déjà affirmé le posedge et commence à attendre la fin de la moitié de la période RX CLK (FD) pour affirmer le negedge sur RX CLK (FD + PD). Cependant après l’achèvement de 2 unités de temps, une transition est détectée ce qui provoque le redémarrage du temps d’attente de la moitié de RX CLK (FD). Cela conduit à une négation de RX CLK (FD + PD) après 7 unités de temps au lieu de 5 (c’est-à-dire la moitié de la période RX CLK (FD)). Puis posedge après 5 unités de temps (2ème cycle de RX CLK (FD + PD) dans la boîte rouge). De même, l’alignement de phase ajuste la période d’horloge en fonction des variations constantes du flux de données entrant.
La figure ci-dessous représente un cas de gigue négative…
La troisième période d’horloge TX a été modifiée de 10 unités de temps à 7 unités de temps en raison de la gigue négative. Cette variation rencontrée correctement par alignement de phase comme représenté dans la boîte rouge.
Le posedge sur RX CLK (FD + PD) se produit lorsque la transition est détectée sur les DONNÉES. La négation sur RX CLK (FD + PD) se produit après la fin de la moitié de la période RX CLK (FD). Maintenant, une transition est vue sur les DONNÉES avant la fin de la moitié de la période RX CLK (FD), ce qui provoque une transition de niveau de 0 à 1 sur RX CLK (FD + PD) (représentée par la 3ème flèche pointillée incurvée).
La figure ci-dessous représente un cas de gigue positive…
La cinquième période d’horloge TX a été modifiée de 10 unités de temps à 13 unités de temps en raison de la gigue positive. Cette variation rencontrée correctement par alignement de phase comme représenté dans la boîte rouge.
RX CLK (FD + PD) suivra la règle numéro 2 pour avoir une période d’horloge de RX CLK (FD), représentée dans le premier cycle de RX CLK (FD + PD) dans la boîte rouge. Puisque la période du cinquième cycle d’horloge est de 13, la transition sur les DONNÉES se produira après 3 unités de temps que prévu. Maintenant, RX CLK (FD + PD) affirme déjà le posedge et commence à attendre la fin de la moitié de la période RX CLK (FD) pour affirmer le negedge sur RX CLK (FD + PD). Cependant après l’achèvement de 3 unités de temps, une transition est détectée ce qui provoque le redémarrage du temps d’attente de la moitié de RX CLK (FD). Cela conduit à une négation de RX CLK (FD + PD) après 8 unités de temps au lieu de 5 (c’est-à-dire la moitié de la période RX CLK (FD)). Puis posedge après 5 unités de temps (2ème cycle de RX CLK (FD + PD) dans la boîte rouge).
C’était tout au sujet du processus de travail de l’alignement de phase.
Une mise en garde…!
Il y a un problème qui n’est pas couvert par la détection de fréquence et l’alignement de phase! L’alignement de phase fonctionne sur la transition dans le flux de données entrant. Cependant, il est possible d’avoir un long flux binaire identique qui ne comporte aucune transition. Dans ce cas, si le décalage cumulé dans un bord devient plus de la moitié de la période d’horloge récupérée (RX CLK (FD)), cela entraînera des erreurs de bits et un échantillonnage incorrect des données.
Pour résoudre ce problème, des séquences de bits sont traitées avec différents types de codage avant de les transmettre sur fil. Ceci limite le nombre de bits identiques consécutifs à un certain niveau. Cela réduit la probabilité d’approcher le décalage cumulé à plus de la moitié de RX CLK (FD).
Par exemple, en USB 3.0, les bits de données sont traités avec un codage 8B10B avant de les transmettre sur un fil.
La figure ci-dessous décrit le schéma fonctionnel comportemental du CDR
Flux de données entrant transmis en entrée à FD (détecteur de fréquence), ED (détecteur de bord) et à une bascule D. Le détecteur de fréquence génère une fréquence basée sur des séquences d’entraînement. Edge detector donne une sortie chaque fois qu’il détecte une transition sur les données entrantes. Les sorties du détecteur de fréquence et du détecteur de bord sont passées en entrée au bloc générateur d’horloge qui génère une horloge pour échantillonner les données. Cette horloge générée et les données entrantes transmises à la bascule D pour régénérer le flux binaire.
La figure ci-dessous représente l’organigramme pour la génération d’horloge après alignement de phase
RX CLK (FD + PD) sera initialisé à 1 ou 0. Après l’initialisation, deux processus parallèles démarreront, attendez la moitié du temps RX CLK (FD) et la détection des bords sur les données entrantes. Celui qui est terminé le premier des deux processus parallèles désactivera l’autre processus. Si la minuterie a expiré avant qu’un bord ne soit détecté, elle vérifiera le niveau actuel de RX CLK (FD + PD). Si le niveau de RX CLK (FD + PD) est 1, passez à l’activité “RX CLK (FD + PD) = 0” et réinitialisez RX CLK (FD + PD) à 0 sinon, passez à l’activité “RX CLK (FD + PD) = 1”. Redémarrez à nouveau les deux processus parallèles et attendez la fin de l’un ou l’autre. Si un bord est détecté avant la fin du temporisateur d’attente, passez à l’activité “RX CLK (FD + PD) = 0” et réglez le niveau de RX CLK (FD + PD) sur 1.Redémarrez à nouveau les deux processus parallèles et attendez la fin de l’un ou l’autre.
J’espère que cet article aidera les ingénieurs à modéliser l’horloge et la récupération de données.
Auteur: Deepak Nagaria avec Aditya Mittal