Beginners Guide To Clock Data Recovery
als u nieuw bent in de wereld van ontwerp en verificatie, hebt u waarschijnlijk veel vragen! Een van hen kan betrekking hebben op een belangrijk element – de klok Data Recovery. In deze blog proberen we dit proces te de-mystificeren.
het doel van het ontwerpen van verschillende protocollen is het overbrengen van een verzameling informatie (gegevens) van de ene plaats naar de andere. Vaak wordt seriële datacommunicatie gebruikt om de gegevens met hoge snelheid te verzenden. Aan het einde van de ontvanger moeten de verzonden gegevens worden opgehaald zonder de integriteit ervan te verliezen met de bijbehorende informatie over de timing. Dit proces heet klok en Data recovery.
In dit artikel gaan we dieper ingaan op de vereisten van CDR en hoe het werkt, hoe we problemen als jitter en PPM kunnen aanpakken bij het modelleren van de CDR.
BTW, als u veel tijd spendeert aan het staren naar golfvormen, om te proberen zinvol te zijn, kan onze protocol debug tool (PDA) interessant voor u zijn. Neem een kijkje op een korte 3 minuten demo hier (geen Oortelefoons? Geen zorgen! Het heeft ondertitels!).
verschillende technieken voor datacommunicatie:
voordat we beginnen met CDR, zullen we een blik werpen op verschillende technieken voor datacommunicatie:
1. Seriële datacommunicatie
in seriële communicatiegegevensbits worden opeenvolgend één voor één verzonden.
2. Parallelle datacommunicatie
bits voor parallelle communicatie worden gelijktijdig op meerdere draden aangestuurd.
door te kijken naar de bovenstaande cijfers, kan men gemakkelijk beoordelen dat parallelle communicatie veel sneller zal zijn dan seriële communicatie.
maar dan rijst de vraag, waarom is seriële communicatie de voorkeur boven parallelle communicatie???
dit komt omdat parallelle communicatie in de praktijk niet sneller is dan seriële communicatie. Dit is te wijten aan de volgende redenen-
a) scheef
de lengte van het verplaatsbare pad voor elk bit zal anders zijn.Hierdoor kunnen sommige bits vroeg of eerder aankomen dan anderen die de informatie kunnen beschadigen.
om dit op te lossen kun je de bits opvullen. Maar dit zou op de kosten van de snelheid als het de snelheid van elke link naar de langzaamste van allemaal zal verminderen.
b) intersymbool-interferentie en Cross talk
door verschillende parallelle koppelingen wordt ISI en Cross talk in het systeem geïntroduceerd, wat ernstiger wordt naarmate de lengte van de koppeling wordt vergroot. Dus dit beperkt de lengte van een verbinding.
C) beperking van het aantal I/O-pinnen
voor parallelle datacommunicatie zijn veel meer I/O-pinnen nodig dan voor seriële datacommunicatie.
Wat is Klokgegevensherstel?
aangezien de meeste seriële interfaces met hoge snelheid geen bijbehorende klok hebben, moet de ontvanger de klok recupereren om de gegevens op seriële lijnen te kunnen bemonsteren.
om de bemonsteringsklok te recupereren, heeft de ontvanger een referentie nodig van een klok met ongeveer dezelfde frequentie. Om de herstelde klok te genereren, moet de ontvanger de referentieklok fase uitlijnen met de overgangen op de inkomende datastroom. Dit heet Klokherstel.
Sampling van dat inkomende gegevenssignaal met herstelde klok om een bitstroom te genereren wordt Data recovery genoemd. Samen, dit heet klok Data Recovery, of CDR.
CDR is vereist om gegevens te herstellen van inkomende gegevensstroom in afwezigheid van een begeleidend kloksignaal, zonder bitfouten als gevolg van over/onder bemonstering.
Hoe Werkt Clock Data Recovery?
de twee belangrijkste functies voor het uitvoeren van CDR zijn frequentiedetectie en fase-uitlijning.
I) Frequentiedetectie
het is een proces van vergrendeling op een frequentie die wordt opgehaald uit inkomende datastroom. Dit wordt gedaan door het tijdsverschil tussen twee opeenvolgende randen op datastroom te detecteren.
deze vergrendelde frequentie wordt gebruikt bij het regenereren van de verzonden gegevensbitstroom.
om u meer vertrouwd te maken met frequentiedetectie, geef ik u een analogie van interpunctie in een zin. U kunt hebben opgemerkt dat wanneer een weg ondergaat reparatiewerkzaamheden het bouwbedrijf zet een display bericht op een bord te vertragen de voertuigen passeren. Dat bericht is ongeveer als volgt –
traag, mannen aan het werk
nu als hetzelfde bericht is geschreven zonder de juiste interpunctie dan kan het iets totaal anders betekenen! –
langzame mannen op het werk
Interpuncties zijn zoals gedetecteerde frequentie. Indien vergrendeld op een verkeerde frequentie die zal leiden tot onjuiste gegevens sampling!
dus de vraag hier is hoe je een inkomende data bit stream correct sample?
een oplossing die direct opkomt, is het sample van de bitstroom op dezelfde frequentie waarmee deze werd verzonden.
hiervoor moet de klok worden gegenereerd op de ontvanger met dezelfde frequentie waarop de gegevens zijn verzonden. Maar het is niet mogelijk om twee klokken met exact dezelfde frequentie te genereren met behulp van twee verschillende klokgeneratoren, zelfs als ze dezelfde specificaties hebben.
ook is het niet mogelijk om een klok met een precieze frequentie te genereren.
tegelijkertijd kan een minutenverschil in bemonsteringsfrequentie leiden tot een bitfout zoals beschreven in het volgende diagram:
zoals weergegeven in de bovenstaande figuur hierboven, wordt een enkele bit tweemaal bemonsterd als gevolg van een minuut verschil in TX en RX frequentie.
Hoe kan een klok met dezelfde frequentie van ‘TX-klok’ anders worden gegenereerd?
dit kan worden gedaan door de randen van inkomende gegevensbitstream te controleren.Maar in dit proces, de eerste bits die wennen aan de frequentie te detecteren verloren. Om dit op te lossen, wordt een bepaalde reeks bitsequenties verzonden voordat de geldige gegevens worden verzonden. Deze opeenvolgingen worden genoemd als opleidingssequenties. Trainingssequenties beschikken over een zeer hoge randdichtheid, zodat de ontvanger gemakkelijk een frequentie kan vergrendelen door de opeenvolgende randen op de draad te controleren voordat geldige gegevens worden gebruikt. Onderstaande figuur toont een reeks met een hoge randdichtheid.
frequentie van inkomende gegevens bit stream is hersteld. RX klok kan nu worden gegenereerd op basis van herstelde frequentie.
de bovengenoemde herstelde frequentie is prima voor een ideaal geval wanneer er geen ruis in de transmissie wordt ingevoerd, d.w.z. de klokfrequentie voor TX-klok is overal gelijk. Ook data is een integraal veelvoud van Tx klok periode. Maar dat is praktisch niet waar, omdat er een aantal attributen zijn die de datatransmissie beà nvloeden en de uniformiteit van de klok vervormen.
onderstaande figuur toont een realtime klok met variaties in zijn periode.
er zijn hoofdzakelijk twee attributen die van invloed zijn op de meeste seriële datacommunicatie met hoge snelheid-
A) Jitter:
Jitter is een verschuiving in de randen van een periodiek signaal. Dit breekt de periodiciteit van het signaal.
Jitter is een effect op korte termijn. Het volgt Gaussiaanse verdeling dat is waarom het gemiddelde gemiddelde van jitter nul is, dat wil zeggen het cumulatieve effect van jitter is nul.
aangezien er een verschuiving is in de randen van het kloksignaal als gevolg van jitter, is de vraag wat de optimale positie is om een bit te bemonsteren.
in het midden wordt een bit bemonsterd. Het is de optimale positie waar maximale verschuiving in de randen aan beide zijden (van links naar rechts of Van rechts naar links) kan worden aangetroffen. Maar als de verschuiving in een rand groter wordt dan de helft van de bitperiode dan zal er een kleine fout zijn.
B) PPM (delen per miljoen):
PPM is een onnauwkeurigheid van bepaalde componenten (kwartskristal in geval van klokgenerator) in een circuit dat leidt tot het genereren van een signaal met onnauwkeurige periode. PPM breekt de periodiciteit van een signaal niet. Zoals de naam al zegt, PPM is een lange termijn effect dat wijst op de onnauwkeurigheid in de bit periode over een miljoen klokcycli. PPM is additief of subtractief van aard.
alleen als het cumulatieve effect van jitter of PPM in TX CLK meer dan de helft van RX CLK wordt, dan zouden er fouten zijn als gevolg van over / onder bemonstering.
een voorbeeld hieronder laat zien hoe voortdurende variaties in inkomende datastroom de bemonstering van gegevens kunnen beïnvloeden. Hetzelfde voorbeeld zal worden overwogen om de problemen op te lossen naarmate we verder gaan.
RX CLK (FD) is Frequentie vergrendeld tijdens frequentie detectie. Als de inkomende datastroom wordt bemonsterd op FD, zoals afgebeeld in de rode doos, wordt een enkele bit tweemaal bemonsterd. Dit gebeurt vanwege de variaties in de inkomende data bit stream.
om deze variaties in frequentie van TX CLK tegen te komen, komt de tweede functie van CDR, fase-uitlijning in beeld. Dit past RX CLK randen.
II) fase-uitlijning
fase-uitlijning is een proces waarbij de fase van een signaal wordt afgestemd op een ander signaal. Hier is het afstemmen van de fase van de klok hersteld in frequentie detectie met de inkomende gegevens bit stream.
laat me je een analogie geven voor fase uitlijning.
u hebt mogelijk een analoge radio gezien. Er zijn twee knoppen namelijk Grove tune en fine tune op analoge radio. Wanneer men naar om het even welke hoorbare signalen wil luisteren, wordt de ruwe tune knop gebruikt om op een frequentie te vergrendelen waar de signalen hoorbaar maar met sommige storingen zijn. Hier is Grove tune zo goed als frequentie detectie en storingen zijn jitter en PPM. Om deze storingen te verwijderen en de stem hoorbaar te maken, wordt de fine tune-knop gebruikt die de vooraf vergrendelde frequentie hier en daar een beetje aanpast om een perfecte hoorbare signalen te krijgen. Hier is fine tuning verwant aan fase uitlijning.
de volgende regels moeten worden gevolgd voor fase-aanpassing:
- als een overgang wordt gedetecteerd op draad, maak dan niveau van RX CLK ( FD+PD) = 1.
- als RX CLK(FD) periode is voltooid na een posedge op RX CLK(FD+PD) en er geen overgang wordt gedetecteerd op draad, dan bevestigen posedge van RX CLK(FD+PD).
hier is RX CLK(FD) klokfrequentie vergrendeld tijdens het frequentiedetectieproces en RX CLK(FD+PD) klokfrequentie tijdens het faseuitlijningsproces.
het is tijd om te kijken naar de werking van fase-uitlijning. Laten we hetzelfde voorbeeld nemen als eerder voor PPM jitter.
hier klok periode RX CLK ( FD) = 10
klokken die niet zijn toegewezen aan een periode in de figuur hebben standaard een periode van 10.
in bovenstaande figuur hebben we eerder gezien dat het laatste bit tweemaal werd bemonsterd als gevolg van continue constante variatie (van 10 tot 12) in TX CLK (kan door PPM).Maar nu, zoals afgebeeld in rode doos, wordt de bit correct gesampled.
in de eerste TX-klokcyclus is de periode 10 tijdseenheid die na frequentiedetectie wordt vergrendeld en ook wordt weerspiegeld op RX CLK(FD+PD). Volgens regel 1 de rand op gegevens zal het niveau van RX CLK(FD+PD) tot 1(aangeduid met de eerste gestippelde pijl). Dan negedge zal worden beweerd op RX CLK (FD+PD) na de helft van de RX CLK(FD) periode. Dan posedge zal worden beweerd op RX CLK(FD+PD) afhankelijk van de helft van Rx CLK (FD) periode of overgang op gegevens welke het eerst komt (regel nummer 2).
op de zesde en zevende TX-klokcyclus zijn de gegevensbits 0 en 0, geen overgang on line. Dus RX CLK (FD+PD) zal regel nummer 2 volgen om een klokperiode van RX CLK(FD) te hebben, afgebeeld in de eerste cyclus van RX CLK(FD+PD) in rode doos. Aangezien de periode voor de zevende klokcyclus 12 tijdseenheid is, zal de overgang op gegevens plaatsvinden na 2 tijdseenheid dan verwacht. Nu RX CLK(FD+PD) al beweerde de posedge en begint te wachten op de voltooiing van de helft van RX CLK(FD) periode om negedge op RX CLK(FD+PD) te bevestigen. Echter na voltooiing van 2 tijdseenheid, een overgang wordt gedetecteerd die ervoor zorgt dat de wachttijd van de helft van RX CLK(FD) opnieuw te starten. Dat leidt tot negedge van RX CLK(FD+PD) na 7 tijdeenheid in plaats van 5 (d.w.z. de helft van Rx CLK(FD) periode). Dan posedge na 5 tijdseenheid(2e cyclus van RX CLK (FD+PD) in rode doos). Ook phase alignment past de klokperiode aan op basis van constante variaties in inkomende datastroom.
onderstaande figuur toont negatieve jitter geval…
de derde TX klok periode is gevarieerd van 10 tijdeenheid tot 7 tijdeenheid als gevolg van negatieve jitter. Deze variatie wordt correct aangetroffen door fase-uitlijning zoals afgebeeld in red box.
de posedge op RX CLK (FD+PD) treedt op als overgang gedetecteerd op DATA. Negedge op RX CLK(FD+PD) treedt op na voltooiing van de helft van Rx CLK (FD) periode. Nu wordt een overgang Gezien Op gegevens vóór de voltooiing van de helft van de RX CLK(FD) periode die een niveau overgang van 0 Naar 1 op RX CLK(FD+PD) veroorzaakt (getoond door 3e gebogen gestippelde pijl).
onderstaande figuur toont positieve jitter case…
vijfde TX klok periode is gevarieerd van 10 tijdeenheid tot 13 tijdeenheid als gevolg van positieve jitter. Deze variatie wordt correct aangetroffen door fase-uitlijning zoals afgebeeld in red box.
RX CLK(FD+PD) volgt regel nummer 2 om een klokperiode van RX CLK(FD) te hebben, afgebeeld in de eerste cyclus van RX CLK (FD+PD) in rode doos. Aangezien de periode voor de vijfde klokcyclus 13 is, zal de overgang op gegevens plaatsvinden na 3 tijdseenheid dan verwacht. Nu RX CLK(FD+PD) al beweert de posedge en begint te wachten op de voltooiing van de helft van RX CLK(FD) periode om negedge te bevestigen op RX CLK(FD+PD). Echter na voltooiing van 3 time unit, een overgang wordt gedetecteerd die ervoor zorgt dat de wachttijd van de helft van RX CLK(FD) opnieuw te starten. Dat leidt tot negedge van RX CLK(FD+PD) na 8 tijdseenheid in plaats van 5 (d.w.z. de helft van Rx CLK(FD) periode). Dan posedge na 5 tijdseenheid(2e cyclus van RX CLK (FD+PD) in rode doos).
dat was alles over het werkproces van fase-uitlijning.
Eén waarschuwing…!
er is één probleem dat niet wordt behandeld door frequentiedetectie en faseuitlijning! Fase-uitlijning werkt op overgang in inkomende datastroom. Niettemin kan worden lang lijkend op BiT toeloop welk niet elk overgang erin gehad. In dit geval als cumulatieve verschuiving in een rand wordt meer dan de helft van de herstelde klokperiode (RX CLK(FD)) dan zal het leiden tot bitfouten en monster de gegevens onjuist.
om dit probleem op te lossen, worden bitsequenties verwerkt met verschillende soorten codering voordat ze op draad worden verzonden. Dit beperkt het aantal opeenvolgende identieke bits tot een bepaald niveau. Dit vermindert de kans op het naderen van de cumulatieve verschuiving naar meer dan de helft van RX CLK(FD).
bijvoorbeeld, in USB 3.0 worden de gegevensbits verwerkt met 8B10B-codering voordat ze op een draad worden verzonden.
onderstaande figuur beschrijft het gedragsblok diagram van CDR
inkomende datastroom doorgegeven als input aan FD( frequentie detector), ED(edge detector) en een D flip flop. Frequentiedetector genereert een frequentie op basis van trainingssequenties. Edge detector geeft output wanneer het detecteert een overgang op inkomende gegevens. De uitgangen van frequentiedetector en randdetector doorgegeven als input aan klok generator blok dat een klok genereert om de gegevens te bemonsteren. Deze gegenereerde klok en inkomende gegevens doorgegeven aan D flip flop om de bitstroom te regenereren.
onderstaande figuur geeft het stroomdiagram weer voor het genereren van klokken na fase-uitlijning
RX CLK (FD+PD) zal worden geïnitialiseerd naar 1 of 0. Na initialisatie worden twee parallelle processen gestart, wacht de timer op de helft van de RX CLK (FD) – tijd en randdetectie op inkomende gegevens. Welke van de twee parallelle processen als eerste wordt voltooid, schakelt het andere proces uit. Als timer timed out voordat een rand wordt gedetecteerd dan zal het controleren op het huidige niveau van RX CLK (FD+PD). Als het niveau van RX CLK(FD+PD) 1 is, ga dan naar “RX CLK(FD+PD)=0” activiteit en reset RX CLK(FD+PD) naar 0 anders ga naar “RX CLK (FD+PD)=1″ activiteit. Herstart beide parallelle processen opnieuw en wacht op voltooiing van een van beide. Als een rand wordt gedetecteerd voordat voltooiing wacht timer ga dan naar” RX CLK(FD+PD)=0 ” activiteit en stel het niveau van RX CLK(FD+PD) op 1.Herstart beide parallelle processen opnieuw en wacht op voltooiing van een van beide.
ik hoop dat dit artikel ingenieurs zal helpen bij het modelleren van de klok en data recovery.
auteur: Deepak Nagaria met Aditya Mittal