Leitfaden für Anfänger zur Wiederherstellung von Uhrendaten
Wenn Sie neu in der Welt des Designs und der Überprüfung sind, haben Sie wahrscheinlich viele Fragen! Eine davon kann ein wichtiges Element betreffen – die Wiederherstellung von Uhrendaten. In diesem Blog versuchen wir, diesen Prozess zu entmystifizieren.
Der Zweck des Entwerfens verschiedener Protokolle besteht darin, eine Reihe von Informationen (Daten) von einem Ort zum anderen zu übertragen. Oft wird die serielle Datenkommunikation verwendet, um die Daten mit hoher Geschwindigkeit zu übertragen. Auf der Empfängerseite müssen die übertragenen Daten abgerufen werden, ohne ihre Integrität mit der zugehörigen Zeitinformation zu verlieren. Dieser Vorgang wird als Uhr- und Datenwiederherstellung bezeichnet.
In diesem Artikel werden wir auf die Anforderungen von CDR eingehen und wie es funktioniert, wie man mit Problemen wie Jitter und PPM bei der Modellierung des CDR umgeht.
Übrigens, wenn Sie viel Zeit damit verbringen, auf Wellenformen zu starren, um einen Sinn zu finden, könnte unser Protokoll-Debugging-Tool (PDA) für Sie interessant sein. Bitte schauen Sie sich hier eine kurze 3-minütige Demo an (Keine Kopfhörer? Keine Sorge! Es hat Untertitel!).
Verschiedene Techniken der Datenkommunikation:
Bevor wir mit CDR beginnen, werden wir uns verschiedene Techniken der Datenkommunikation ansehen:
1. Serielle Datenkommunikation
Bei der seriellen Kommunikation werden Datenbits nacheinander übertragen.
2. Parallele Datenkommunikation
Bei paralleler Kommunikation werden Datenbits auf mehreren Leitungen gleichzeitig angesteuert.
Wenn man sich die obigen Zahlen ansieht, kann man leicht beurteilen, dass die parallele Kommunikation viel schneller ist als die serielle Kommunikation.
Aber dann stellt sich die Frage, warum wird die serielle Kommunikation der parallelen Kommunikation vorgezogen???
Dies liegt daran, dass die parallele Kommunikation in der Praxis nicht schneller ist als die serielle Kommunikation. Dies ist auf die folgenden Gründe zurückzuführen –
a) Skew
Die Weglänge für jedes Bit wird unterschiedlich sein.Aus diesem Grund können einige Bits früher oder früher als andere ankommen, was die Informationen beschädigen kann.
Um dies zu lösen, können Sie die Bits auffüllen. Dies würde jedoch auf Kosten der Geschwindigkeit gehen, da dadurch die Geschwindigkeit jeder Verbindung auf die langsamste von allen reduziert wird.
b) Intersymbolinterferenz und Übersprechen
Aufgrund mehrerer paralleler Verbindungen werden ISI und Übersprechen in das System eingeführt, die mit zunehmender Verbindungslänge schwerwiegender werden. Dies begrenzt also die Länge einer Verbindung.
c) Begrenzung der Anzahl der E / A-Pins
Die parallele Datenkommunikation erfordert viel mehr E / A-Pins als die serielle Datenkommunikation.
Was ist Clock Data Recovery?
Da die meisten seriellen Hochgeschwindigkeitsschnittstellen keinen begleitenden Takt haben, muss der Empfänger den Takt wiederherstellen, um die Daten auf seriellen Leitungen abzutasten.
Um den Abtasttakt wiederherzustellen, Empfänger benötigt eine Referenz eine Uhr von etwa gleicher Frequenz. Um den wiederhergestellten Takt zu erzeugen, muss der Empfänger den Referenztakt phasenweise auf die Übergänge des eingehenden Datenstroms ausrichten. Dies wird als Clock Recovery bezeichnet.
Das Abtasten dieses eingehenden Datensignals mit wiederhergestelltem Takt zur Erzeugung eines Bitstroms wird als Datenwiederherstellung bezeichnet. Zusammen wird dies Clock Data Recovery oder CDR genannt.
CDR ist erforderlich, um Daten aus einem eingehenden Datenstrom ohne begleitendes Taktsignal ohne Bitfehler aufgrund von Über- / Unterabtastung wiederherzustellen.
Wie funktioniert Clock Data Recovery?
Die zwei wichtigsten funktionen für durchführung CDR sind-frequenz erkennung und phase ausrichtung.
I) Frequenzerkennung
Es ist ein Prozess des Sperrens einer Frequenz, die aus einem eingehenden Datenstrom abgerufen wird. Dies geschieht durch Erfassen der Zeitdifferenz zwischen zwei aufeinanderfolgenden Flanken im Datenstrom.
Diese gesperrte Frequenz wird zum Regenerieren des übertragenen Datenbitstroms verwendet.
Um Sie mit der Frequenzerkennung vertraut zu machen, möchte ich Ihnen eine Analogie der Interpunktion in einem Satz geben. Möglicherweise haben Sie beobachtet, dass die Baufirma bei Reparaturarbeiten an einer Straße eine Anzeigemeldung auf einer Tafel anzeigt, um die vorbeifahrenden Fahrzeuge zu verlangsamen. Diese Nachricht ist ungefähr so –
LANGSAM, MÄNNER BEI DER ARBEIT
Wenn nun dieselbe Nachricht ohne richtige Interpunktion geschrieben wird, kann dies etwas völlig anderes bedeuten! –
LANGSAME MÄNNER BEI DER ARBEIT
Satzzeichen sind wie die Frequenz. Wenn Sie auf einer falschen Frequenz gesperrt sind, führt dies zu einer falschen Datenabtastung!
Die Frage hier ist also, wie man einen eingehenden Datenbitstrom richtig abtastet?
Eine Lösung, die mir sofort in den Sinn kommt, besteht darin, den Bitstrom auf derselben Frequenz abzutasten, mit der er übertragen wurde.
Dazu muss man den Takt am Empfänger erzeugen, der die gleiche Frequenz hat, auf der Daten übertragen wurden. Es ist jedoch nicht möglich, zwei Takte mit genau derselben Frequenz zu erzeugen, indem zwei verschiedene Taktgeneratoren verwendet werden, selbst wenn sie die gleichen Spezifikationen haben.
Es ist auch nicht möglich, einen Takt mit einer genauen Frequenz zu erzeugen.
Gleichzeitig kann ein winziger Unterschied in der Abtastfrequenz zu einem Bitfehler führen, wie im folgenden Diagramm beschrieben:
Wie in der obigen Abbildung gezeigt, wird ein einzelnes Bit aufgrund eines winzigen Unterschieds in der TX- und RX-Frequenz zweimal abgetastet.
Wie sonst eine Uhr mit der gleichen Frequenz von ‘TX Clock’ erzeugt werden?
Dies kann durch Überprüfen der Kanten des eingehenden Datenbitstroms erfolgen.In diesem Prozess gehen jedoch die anfänglichen Bits verloren, die zur Erkennung der Frequenz verwendet werden. Um dies zu lösen, wird vor der Übertragung der gültigen Daten ein bestimmter Satz von Bitfolgen übertragen. Diese Sequenzen werden als Trainingssequenzen bezeichnet. Trainingssequenzen besitzen eine sehr hohe Kantendichte, so dass der Empfänger eine Frequenz leicht sperren kann, indem er die aufeinanderfolgenden Kanten auf dem Draht vor dem Start gültiger Daten überprüft. Die folgende Abbildung zeigt eine Sequenz mit hoher Kantendichte.
Frequenz vom eingehenden Datenbitstrom wurde wiederhergestellt. Der RX-Takt kann nun basierend auf der wiederhergestellten Frequenz generiert werden.
Die obige wiederhergestellte Frequenz ist für einen idealen Fall in Ordnung, wenn kein Rauschen in die Übertragung eingeführt wird, dh die Taktfrequenz für den TX-Takt ist durchweg gleich. Auch Daten sind ein ganzzahliges Vielfaches der TX-Taktperiode. Dies ist jedoch praktisch nicht der Fall, da es eine Reihe von Attributen gibt, die die Datenübertragung beeinflussen und die Gleichmäßigkeit der Uhr verzerren.
Unten abbildung zeigt eine echtzeit uhr, die hat variationen in seine zeitraum.
Es gibt hauptsächlich zwei Attribute, die sich auf die meisten seriellen Hochgeschwindigkeitsdatenübertragungen auswirken –
A) Jitter:
Jitter ist eine Verschiebung der Flanken eines periodischen Signals. Dies unterbricht die Periodizität des Signals.
Jitter ist ein kurzfristiger Effekt. Es folgt der Gaußschen Verteilung, weshalb der durchschnittliche Mittelwert des Jitters Null ist, dh der kumulative Effekt des Jitters ist null.
Da sich die Flanken des Taktsignals aufgrund von Jitter verschieben, stellt sich die Frage, an welcher Position ein Bit optimal abgetastet werden kann?
Ein Bit sollte in der Mitte abgetastet werden. Es ist die optimale Position, an der eine maximale Verschiebung der Kanten auf beiden Seiten (von links nach rechts oder von rechts nach links) auftreten kann. Wenn jedoch die Verschiebung einer Flanke größer als die Hälfte der Bitperiode wird, liegt ein Bitfehler vor.
B) PPM (Teile pro Million):
PPM ist eine Ungenauigkeit bestimmter Komponenten (Quarz im Falle eines Taktgenerators) in einer Schaltung, die zur Erzeugung eines Signals mit ungenauer Periode führt. PPM unterbricht nicht die Periodizität eines Signals. Wie der Name schon sagt, ist PPM ein Langzeiteffekt, der die Ungenauigkeit in der Bitperiode über eine Million Taktzyklen bezeichnet. PPM ist additiver oder subtraktiver Natur.
Nur wenn der kumulative Effekt von Jitter oder PPM im TX-CLK mehr als die Hälfte des RX-CLK beträgt, treten Fehler aufgrund von Über- / Unterabtastung auf.
Ein Beispiel unten zeigt, wie sich fortlaufende Variationen im eingehenden Datenstrom auf die Abtastung von Daten auswirken können. Dasselbe Beispiel wird in Betracht gezogen, um die Probleme im weiteren Verlauf zu lösen.
RX CLK (FD) ist frequenz gesperrt während frequenz erkennung. Während der eingehende Datenstrom auf FD abgetastet wird, wie in der roten Box dargestellt, wird ein einzelnes Bit zweimal abgetastet. Dies geschieht aufgrund der Variationen im eingehenden Datenbitstrom.
Zu begegnen diese variationen in frequenz von TX CLK, die zweite funktion von CDR, Phase ausrichtung kommt in bild. Dadurch werden die CLK-Kanten neu eingestellt.
II) Phasenausrichtung
Phasenausrichtung ist ein Prozess der Anpassung der Phase eines Signals an ein anderes Signal. Hier wird die Phase des bei der Frequenzerkennung gewonnenen Takts mit dem eingehenden Datenbitstrom abgeglichen.
Lassen Sie mich Ihnen eine Analogie für die Phasenausrichtung geben.
Möglicherweise haben Sie ein analoges Radio gesehen. Es sind zwei knöpfe nämlich grob melodie und feinabstimmung auf analog radio. Wenn man irgendwelche hörbaren Signale hören möchte, wird grober Abstimmungsknopf benutzt, um auf eine Frequenz zuzuschließen, in der Signale aber mit einigen Störungen hörbar sind. Hier ist die Grobabstimmung so gut wie die Frequenzerkennung und Störungen sind Jitter und PPM. Um diese Störungen zu beseitigen und die Stimme hörbar zu machen, wird ein Feinabstimmungsknopf verwendet, der die Vorfrequenz hier und da ein wenig anpasst, um ein perfektes akustisches Signal zu erhalten. Hier ähnelt die Feinabstimmung der Phasenausrichtung.
Die folgenden Regeln müssen für die Phasenausrichtung befolgt werden:
- Wenn ein Übergang am Draht erkannt wird, stellen Sie den Pegel von RX CLK (FD + PD) = 1 ein.
- Wenn RX CLK (FD) Periode nach einem Posedge auf RX CLK (FD + PD) abgeschlossen ist und kein Übergang auf Draht erkannt wird, dann posedge von RX CLK (FD + PD) bestätigen.
Hier ist RX CLK (FD) die Taktfrequenz, die während des Frequenzerkennungsprozesses gesperrt ist, und RX CLK (FD + PD) ist die Taktfrequenz während des Phasenausrichtungsprozesses.
Es ist an der Zeit, sich mit der Funktionsweise der Phasenausrichtung zu befassen. Nehmen wir das gleiche Beispiel, das zuvor für PPM-Jitter betrachtet wurde.
Hier ist die Taktperiode RX CLK(FD) = 10
Uhren, denen in der Abbildung keine Periode zugewiesen wurde, haben standardmäßig die Periode 10.
In der obigen Abbildung haben wir zuvor gesehen, dass das letzte Bit zweimal als Ergebnis einer kontinuierlichen konstanten Variation (von 10 bis 12) in TX CLK abgetastet wurde (kann aufgrund von PPM sein).Wie im roten Feld dargestellt, wird das Bit jetzt jedoch korrekt abgetastet.
In die erste TX uhr zyklus, zeitraum ist 10 zeit einheit, die ist gesperrt nach frequenz erkennung und auch reflektiert auf RX CLK (FD + PD). Gemäß Regel 1 wird die Kante auf Daten den Pegel von RX CLK (FD + PD) auf 1 setzen (gekennzeichnet durch den ersten gepunkteten Pfeil). Dann wird Negedge nach der Hälfte der RX CLK (FD) -Periode auf RX CLK (FD + PD) geltend gemacht. Dann wird Posedge auf RX CLK (FD + PD) abhängig von der Hälfte der RX CLK (FD) Periode oder Übergang auf DATEN geltend gemacht, je nachdem, was zuerst eintritt (Regel Nummer 2).
Beim sechsten und siebten TX-Takt sind die Datenbits 0 und 0, kein Übergang auf der Leitung. RX CLK (FD + PD) folgt also der Regel Nummer 2, um eine Taktperiode von RX CLK (FD) zu haben, die im ersten Zyklus von RX CLK (FD + PD) im roten Feld dargestellt ist. Da der Zeitraum für den siebten Taktzyklus 12 Zeiteinheiten beträgt, erfolgt der Übergang der DATEN nach 2 Zeiteinheiten als erwartet. Jetzt hat RX CLK (FD + PD) bereits den Posedge geltend gemacht und wartet auf den Abschluss der Hälfte des RX CLK (FD) -Zeitraums, um Negedge auf RX CLK (FD + PD) geltend zu machen. Nach Abschluss von 2 Zeiteinheiten wird jedoch ein Übergang erkannt, der dazu führt, dass die Wartezeit der Hälfte von RX CLK (FD) neu gestartet wird. Das führt zu einem Negedge von RX CLK (FD + PD) nach 7 Zeiteinheiten anstelle von 5 (dh der Hälfte der RX CLK (FD) Periode). Dann posedge nach 5 Zeiteinheit (2. Zyklus von RX CLK (FD + PD) im roten Feld). Ebenso passt die Phasenausrichtung die Taktperiode basierend auf konstanten Variationen des eingehenden Datenstroms an.
Unten abbildung zeigt negative jitter fall…
Die dritte TX-Taktperiode wurde aufgrund von negativem Jitter von 10 Zeiteinheiten auf 7 Zeiteinheiten variiert. Diese Variation trat korrekt durch Phasenausrichtung auf, wie im roten Feld dargestellt.
Der Posedge auf RX CLK (FD + PD) tritt als Übergang auf, der an DATEN erkannt wird. Negedge auf RX CLK(FD + PD) tritt nach Abschluss der Hälfte der RX CLK (FD) Zeitraum. Jetzt ist ein Übergang auf DATEN vor Abschluss der Hälfte der RX CLK (FD) -Periode zu sehen, der einen Pegelübergang von 0 nach 1 auf RX CLK (FD + PD) verursacht (dargestellt durch den 3. gekrümmten gepunkteten Pfeil).
Unten abbildung zeigt positive jitter fall…
Die TX-Taktperiode wurde aufgrund von positivem Jitter von 10 Zeiteinheiten auf 13 Zeiteinheiten variiert. Diese Variation trat korrekt durch Phasenausrichtung auf, wie im roten Feld dargestellt.
RX CLK (FD + PD) folgt Regel Nummer 2, um eine Taktperiode von RX CLK (FD) zu haben, die im ersten Zyklus von RX CLK (FD + PD) im roten Feld dargestellt ist. Da die Periode für den fünften Taktzyklus 13 ist, tritt der Übergang auf DATEN nach 3 Zeiteinheiten als erwartet auf. Jetzt behauptet RX CLK (FD + PD) bereits den Posedge und wartet auf den Abschluss der Hälfte der RX CLK (FD) -Periode, um Negedge auf RX CLK (FD + PD) zu behaupten. Nach Abschluss von 3 Zeiteinheiten wird jedoch ein Übergang erkannt, der dazu führt, dass die Wartezeit der Hälfte von RX CLK (FD) neu gestartet wird. Das führt zu einem Negedge von RX CLK (FD + PD) nach 8 Zeiteinheiten anstelle von 5 (dh der Hälfte der RX CLK (FD) -Periode). Dann posedge nach 5 Zeiteinheit (2. Zyklus von RX CLK (FD + PD) im roten Feld).
Das war alles über den Prozess der Phasenausrichtung.
Eine Einschränkung…!
Es gibt ein Problem, das nicht durch Frequenzerkennung und Phasenausrichtung abgedeckt wird! Die Phasenausrichtung funktioniert beim Übergang im eingehenden Datenstrom. Es ist jedoch möglich, einen langen identischen Bitstrom zu haben, der keinen Übergang aufweist. In diesem Fall, wenn die kumulative Verschiebung in einer Flanke mehr als die Hälfte der wiederhergestellten Taktperiode (RX CLK (FD)) beträgt, führt dies zu Bitfehlern und abtastet die Daten falsch ab.
Um dieses Problem zu lösen, werden Bitfolgen mit verschiedenen Arten der Codierung verarbeitet, bevor sie drahtgebunden übertragen werden. Dies begrenzt die Anzahl aufeinanderfolgender identischer Bits auf einen bestimmten Pegel. Dies verringert die Wahrscheinlichkeit, sich der kumulativen Verschiebung auf mehr als die Hälfte des CLK(FD) zu nähern.
Zum Beispiel werden in USB 3.0 die Datenbits mit 8B10B-Codierung verarbeitet, bevor sie auf einem Draht übertragen werden.
Unten abbildung beschreibt die verhaltens block diagramm von CDR
Eingehender Datenstrom als Eingang an FD (Frequenzdetektor), ED (Flankendetektor) und ein D-Flip-Flop übergeben. Frequenzdetektor erzeugt eine Frequenz basierend auf Trainingssequenzen. Der Kantendetektor gibt immer dann eine Ausgabe aus, wenn er einen Übergang bei eingehenden Daten erkennt. Die Ausgänge des Frequenzdetektors und des Flankendetektors werden als Eingang an den Taktgeneratorblock übergeben, der einen Takt zum Abtasten der Daten erzeugt. Dieser erzeugte Takt und eingehende Daten, die an das Flip-Flop übergeben wurden, um den Bitstrom zu regenerieren.
Die folgende Abbildung zeigt das Flussdiagramm für die Taktgenerierung nach Phasenausrichtung
RX CLK (FD + PD) wird entweder auf 1 oder 0 initialisiert. Nach der Initialisierung werden zwei parallele Prozesse gestartet, der Wartetimer für die Hälfte der RX CLK (FD) -Zeit und die Flankenerkennung bei eingehenden Daten. Welcher der beiden parallelen Prozesse zuerst abgeschlossen wird, deaktiviert den anderen Prozess. Wenn der Timer abgelaufen ist, bevor eine Flanke erkannt wird, wird der aktuelle Pegel von RX CLK (FD + PD) überprüft. Wenn der Pegel von RX CLK (FD + PD) 1 ist, gehen Sie zu “RX CLK (FD + PD) = 0” Aktivität und setzen Sie RX CLK (FD + PD) auf 0 zurück, sonst gehen Sie zu “RX CLK (FD + PD) = 1” Aktivität. Starten Sie beide parallelen Prozesse erneut und warten Sie, bis einer der beiden abgeschlossen ist. Wenn eine Kante vor Abschluss des Wartetimers erkannt wird, wechseln Sie zur Aktivität “RX CLK (FD + PD) = 0” und stellen Sie den Pegel von RX CLK (FD + PD) auf 1.Starten Sie beide parallelen Prozesse erneut und warten Sie, bis einer der beiden abgeschlossen ist.
Ich hoffe, dieser Artikel hilft Ingenieuren, die Uhr und die Datenwiederherstellung zu modellieren.
Autor: Deepak Nagaria mit Aditya Mittal