begyndere Guide til ur Data Recovery
hvis du er ny til en verden af design og verifikation, har du sikkert en masse spørgsmål! En af dem kan vedrøre et vigtigt element – uret datagendannelse. I denne blog forsøger vi at afmystificere denne proces.
formålet med at designe forskellige protokoller er at overføre et sæt information (data) fra et sted til et andet. Ofte bruges seriel datakommunikation til at transmittere dataene med høj hastighed. Ved modtagerenden skal de transmitterede data hentes uden at miste sin integritet med de medfølgende timingoplysninger. Denne proces kaldes ur og data recovery.
i denne artikel vil vi uddybe kravene til CDR, og hvordan det fungerer, hvordan man tackler problemer som jitter og PPM i modellering af CDR.
hvis du bruger meget tid på at stirre på bølgeformer og forsøge at give mening, kan vores protocol debug tool (PDA) være interessant for dig. Se venligst en kort 3 minutters demo her(Ingen øretelefoner ? Ingen bekymringer! Det har undertekster!).
forskellige teknikker til datakommunikation:
før vi starter på CDR, vil vi se på forskellige teknikker til datakommunikation, som er:
1. Seriel datakommunikation
i seriel kommunikation transmitteres Databits sekventielt en efter en.
2. Parallel datakommunikation
i parallel kommunikation drives Databits på flere ledninger samtidigt.
ved at se på ovenstående tal kan man let bedømme, at parallel kommunikation vil være meget hurtigere end seriel kommunikation.
men så opstår spørgsmålet, Hvorfor foretrækkes seriel kommunikation frem for parallel kommunikation???
dette skyldes, at parallel kommunikation i praksis ikke er hurtigere end seriel kommunikation. Dette skyldes følgende grunde –
a) skævhed
Rejsesti længde for hver bit vil være anderledes.På grund af dette kan nogle bits ankomme tidligt eller før end andre, der kan ødelægge oplysningerne.
for at løse dette kan du padde bitene. Men dette ville være på bekostning af hastighed, da det vil reducere hastigheden på hvert link til det langsomste af alle.
b) inter symbol interferens og Cross talk
på grund af flere parallelle links introduceres ISI og Cross talk i systemet, som bliver mere alvorligt, da længden af linket øges. Så dette begrænser længden af en forbindelse.
c) begrænsning af I/O pin count
Parallel datakommunikation kræver meget flere I/O-stifter end hvad der kræves af seriel datakommunikation.
Hvad er clock Data Recovery?
da de fleste af de serielle grænseflader med høj hastighed ikke har noget ledsagende ur, skal modtageren gendanne uret for at prøve dataene på serielle linjer.
for at gendanne prøveudtagningsklokken har modtageren brug for en reference et ur med omtrent samme frekvens. For at generere det gendannede ur skal modtageren faseindstille referenceuret til overgangene på den indgående datastrøm. Dette kaldes som urgendannelse.
Sampling af det indgående datasignal med genvundet ur for at generere en bitstrøm kaldes som datagendannelse. Sammen kaldes dette Clock Data Recovery eller CDR.
CDR kræves for at gendanne data fra indgående datastrøm i fravær af ledsagende ursignal uden bitfejl på grund af over/under prøveudtagning.
Hvordan Fungerer Clock Data Recovery?
de to hovedfunktioner til udførelse af CDR er-frekvensdetektion og fasejustering.
I) Frekvensdetektion
det er en proces med låsning på en frekvens, der hentes fra indgående datastrøm. Dette gøres ved at registrere tidsforskellen mellem to på hinanden følgende kanter på datastrøm.
denne låste frekvens bruges til at regenerere den transmitterede databitstrøm.
for at gøre dig mere fortrolig med frekvensdetektion, lad mig give dig en analogi af tegnsætning i en sætning. Du har måske bemærket, at når en vej gennemgår reparationsarbejde, lægger byggefirmaet en displaymeddelelse på et bord for at bremse de køretøjer, der passerer forbi. Denne besked er noget som dette –
langsom, mænd på arbejde
nu hvis den samme besked er skrevet uden ordentlig tegnsætning, så kan det betyde noget helt andet! –
langsomme mænd på arbejde
punkteringer er som detekteret frekvens. Hvis låst på en forkert frekvens, der vil føre til forkert data sampling!
så spørgsmålet her er, hvordan man prøver en indgående databitstrøm korrekt?
en løsning, der kommer til at tænke øjeblikkeligt, er at prøve bitstrømmen på samme frekvens, som den blev transmitteret.
for at gøre det skal man generere uret på modtageren med samme frekvens, som data blev transmitteret. Men det er ikke muligt at generere to ure med nøjagtig samme frekvens ved at bruge to forskellige urgeneratorer, selvom de har de samme specifikationer.
det er heller ikke muligt at generere et ur med en præcis frekvens.
samtidig kan en minutforskel i prøveudtagningsfrekvens føre til en bitfejl som beskrevet i følgende diagram:
som vist i ovenstående figur ovenfor, en enkelt bit bliver samplet to gange på grund af en minutforskel i TKS og rks frekvens.
hvordan genereres ellers et ur med samme frekvens af ‘TK-ur’?
dette kan gøres ved at kontrollere kanterne på indgående databitstrøm.Men i denne proces går de indledende bits, der vænner sig til at registrere frekvensen, tabt. For at løse dette transmitteres et bestemt sæt bitsekvenser, før de gyldige data transmitteres. Disse sekvenser kaldes som træningssekvenser. Træningssekvenser besidder meget høj kantdensitet, så modtageren let kan låse på en frekvens ved at kontrollere de på hinanden følgende kanter på ledningen inden start af gyldige data. Nedenstående figur viser en sekvens med høj kantdensitet.
frekvens fra indgående data bit stream er blevet inddrevet. Ur kan nu genereres baseret på genvundet frekvens.
ovennævnte genvundne frekvens er fint for et ideelt tilfælde, når der ikke er nogen støj introduceret i transmission, dvs. Også data er et integreret multiplum af TK-Urperioden. Men det er ikke sandt praktisk, da der er en række attributter, der påvirker dataoverførslen og forvrider ensartetheden af uret.
nedenstående figur viser et realtidsur, der har variationer i sin periode.
der er hovedsageligt to attributter, der påvirker mest højhastigheds seriel datakommunikation-
A) Jitter:
Jitter er et skift i kanterne af et periodisk signal. Dette bryder signalets periodicitet.
Jitter er en kortsigtet effekt. Det følger Gaussisk fordeling, hvorfor det gennemsnitlige gennemsnit af jitter er nul, dvs. den kumulative effekt af jitter er null.
da der er et skift i kanterne af kloksignal på grund af jitter, er spørgsmålet, Hvad er den optimale position til at prøve lidt?
der skal samples en smule i midten. Det er den optimale position, hvor der kan opstå maksimal forskydning i kanterne på begge sider (fra venstre mod højre eller højre mod venstre). Men hvis skiftet i en kant bliver større end halvdelen af bitperioden, vil der være en bitfejl.
B) PPM (dele pr. million):
PPM er en unøjagtighed af visse komponenter (kvartskrystal i tilfælde af urgenerator) i et kredsløb, der fører til generering af et signal med unøjagtig periode. PPM bryder ikke periodiciteten af et signal. Som navnet siger, PPM er en langsigtet effekt, der angiver unøjagtigheden i bitperioden over en million urcyklusser. PPM er additiv eller subtraktiv.
kun hvis kumulativ effekt af jitter eller PPM i CLK bliver mere end halvdelen af CLK, vil der være fejl på grund af over/under prøveudtagning.
et eksempel nedenfor viser, hvordan løbende variationer i indgående datastrøm kan påvirke prøveudtagningen af data. Det samme eksempel vil blive overvejet for at løse problemerne, når vi går videre.
CLK (FD) er frekvenslåst under frekvensdetektering. Da den indkommende datastrøm samples på FD, som afbildet i den røde boks, bliver en enkelt bit samplet to gange. Dette sker på grund af variationerne i den indgående databitstrøm.
for at støde på disse variationer i frekvensen af CLK, kommer den anden funktion af CDR, Fasejustering i billedet. Dette justerer rk CLK kanter.
II) Fasejustering
Fasejustering er en proces til at matche fasen af et signal med et andet signal. Her matcher den fase af uret, der er genoprettet i frekvensdetektering med den indgående databitstrøm.
Lad mig give dig en analogi til fasejustering.
du har muligvis set en analog radio. Der er to knapper, nemlig grov melodi og finjustering på analog radio. Når man ønsker at lytte til nogen hørbare signaler, grov tune drejeknap bruges til at låse på en frekvens, hvor signalerne er hørbare, men med nogle forstyrrelser. Her er grov melodi lige så god som frekvensdetektion, og forstyrrelser er jitter og PPM. For at fjerne disse forstyrrelser og gøre stemmen hørbar, finjustering drejeknap bruges som justerer pre låst frekvens en lille smule her og der for at få en perfekt hørbare signaler. Her er finjustering beslægtet med fasejustering.
følgende regler skal følges for Fasejustering:
- hvis der registreres en overgang på ledningen, skal du foretage niveauet for CLK(FD+PD) = 1.
- hvis CLK(FD) – perioden er afsluttet efter en posedge på CLK(FD+PD), og der ikke registreres nogen overgang på ledningen, skal du hævde posedge af CLK(FD+PD).
her er clock frekvens låst under frekvensdetekteringsprocessen, og CLK(FD+PD) er clock frekvens under fasejusteringsprocessen.
det er på tide at se på arbejdet med fasejustering. Lad os tage det samme eksempel, der blev betragtet tidligere for PPM jitter.
her ur periode rk CLK (FD) = 10
ure, der ikke er blevet tildelt med en periode i figuren har som standard periode på 10.
i ovenstående figur har vi tidligere set, at sidste bit blev samplet to gange som følge af kontinuerlig konstant variation (fra 10 til 12) i CLK (kan være på grund af PPM).Men nu, som afbildet i rød boks, er biten samplet korrekt.
i den første tidscyklus er perioden 10 tidsenhed, som er låst efter frekvensdetektion og også reflekteret på CLK(FD+PD). I henhold til regel 1 vil kanten på data gøre niveauet for CLK(FD+PD) til 1(betegnet med den første stiplede pil). Derefter vil negedge blive hævdet på CLK (FD+PD) efter halvdelen af CLK(FD) perioden. Derefter vil posedge blive hævdet på CLK (FD + PD) afhængigt af halvdelen af CLK(FD) periode eller overgang på DATA, alt efter hvad der kommer først (regel nummer 2).
på sjette og syvende URCYKLUS er DATABITENE 0 og 0, ingen overgang på linje. 2 for at have en urperiode på RK CLK(FD), afbildet i første cyklus af RK CLK(FD+PD) i rød boks. Da perioden for syvende urcyklus er 12 tidsenhed, overgang på DATA vil ske efter 2 tidsenhed end forventet. Nu hævdede CLK(FD+PD) allerede posedge og begynder at vente på afslutningen af halvdelen af CLK(FD) – perioden for at hævde negedge på CLK(FD+PD). Men efter afslutningen af 2 tidsenhed, en overgang bliver opdaget, som forårsager at genstarte ventetiden på halvdelen af RK CLK(FD). Det fører til negedge af CLK (FD + PD) efter 7 tidsenhed i stedet for 5 (dvs.halvdelen af CLK(FD) periode). Derefter posedge efter 5 tidsenhed(2.cyklus af CLK (FD+PD) i rød boks). Ligeledes fasejustering justerer uret periode baseret på konstante variationer i indgående datastrøm.
nedenstående figur viser negativ jitter sag…
den tredje tidsinterval er blevet varieret fra 10 tidsenhed til 7 tidsenhed på grund af negativ jitter. Denne variation stødt korrekt ved fasejustering som afbildet i rød boks.
posedge på CLK(FD+PD) forekommer som overgang detekteret på DATA. Efter afslutningen af halvdelen af CLK(FD) – perioden. Nu ses en overgang på DATA inden afslutningen af halvdelen af RK CLK(FD) periode, der forårsager en niveauovergang fra 0 til 1 på RK CLK(FD+PD) (vist med 3.buet prikket pil).
nedenstående figur viser positiv jitter sag…
femte tidsenhed er blevet varieret fra 10 tidsenhed til 13 tidsenhed på grund af positiv jitter. Denne variation stødt korrekt ved fasejustering som afbildet i rød boks.
CLK(FD+PD) følger regel nummer 2 for at have en urperiode på CLK(FD), afbildet i første cyklus af CLK(FD+PD) i rød boks. Da perioden for femte urcyklus er 13, overgang på DATA vil ske efter 3 tidsenhed end forventet. Nu hævder rk CLK(FD+PD) allerede posedge og begynder at vente på afslutningen af halvdelen af RK CLK(FD) periode for at hævde negedge på RK CLK(FD+PD). Men efter afslutningen af 3 tidsenhed, en overgang bliver opdaget, som forårsager at genstarte ventetiden på halvdelen af RK CLK(FD). Det fører til negedge af CLK (FD + PD) efter 8 tidsenhed i stedet for 5 (dvs.halvdelen af CLK(FD) periode). Derefter posedge efter 5 tidsenhed(2.cyklus af CLK (FD+PD) i rød boks).
det handlede om arbejdsprocessen for fasejustering.
en advarsel…!
der er et problem, der ikke er dækket af frekvensdetektion og fasejustering! Fasejustering fungerer ved overgang i indgående datastrøm. Det er dog muligt at have lang identisk bitstrøm, som ikke har nogen overgang i den. I dette tilfælde, hvis kumulative skift i en kant bliver mere end halvdelen af genvundet ur periode (FD), så vil det føre til bit fejl og prøve dataene forkert.
for at løse dette problem behandles bitsekvenser med forskellige typer kodning, før de transmitteres på ledning. Dette begrænser antallet af på hinanden følgende identiske bits til et bestemt niveau. Dette reducerer sandsynligheden for at nærme sig det kumulative skift til mere end halvdelen af CLK(FD).
for eksempel behandles databitene i USB 3.0 med 8b10b-kodning, før de transmitteres på en ledning.
nedenstående figur beskriver ADFÆRDSBLOKDIAGRAMMET for CDR
indgående datastrøm bestået som input til FD(frekvensdetektor), ED (kantdetektor) og en D flip flop. Frekvensdetektor genererer en frekvens baseret på træningssekvenser. Edge detector giver output, når den registrerer en overgang på indgående data. Udgangene fra frekvensdetektor og kantdetektor passerede som input til urgeneratorblok, der genererer et ur til at prøve dataene. Dette genererede ur og indgående data overført til D flip flop for at regenerere bitstrømmen.
nedenstående figur viser rutediagrammet for urgenerering efter fasejustering
CLK (FD+PD) initialiseres til enten 1 eller 0. Efter initialisering starter to parallelle processer, vent timer for halvdelen af CLK (FD) tid og kantdetektion på indgående data. Alt efter hvad der er afsluttet først ud af de to parallelle processer vil deaktivere den anden proces. Hvis timeren timeout, før nogen kant registreres, vil den kontrollere for det aktuelle niveau af CLK (FD + PD). Hvis niveauet for CLK (FD + PD) er 1, skal du gå til “CLK(FD+PD)=0” aktivitet og nulstille CLK(FD+PD) til 0 ellers gå til “CLK(FD+PD)=1″ aktivitet. Genstart begge de parallelle processer igen, og vent på afslutningen af en af dem. Hvis der registreres en kant før afslutning vent timer derefter flytte til” RK CLK(FD+PD)=0 ” aktivitet og indstille niveauet for RK CLK(FD+PD) til 1.Genstart begge de parallelle processer igen, og vent på afslutningen af en af dem.
jeg håber, at denne artikel vil hjælpe ingeniører til at modellere uret og datagendannelse.
forfatter: Deepak Nagaria med Aditya Mittal