ghid pentru incepatori ceas de recuperare de date
dacă sunteți nou în lumea de proiectare și verificare, probabil că aveți o mulțime de întrebări! Una dintre ele se poate referi la un element important – recuperarea datelor de ceas. În acest blog, vom încerca și de-mistifica acest proces.
scopul proiectării diferitelor protocoale este de a transfera un set de informații (date) dintr-un loc în altul. Adesea, comunicarea de date seriale este utilizată pentru a transmite datele la o viteză mare. La capătul receptorului, datele transmise trebuie preluate fără a-și pierde integritatea cu informațiile de sincronizare însoțite. Acest proces se numește ceas și recuperare de date.
în acest articol, vom elabora cerințele CDR și cum funcționează, cum să abordăm probleme precum jitter și PPM în modelarea CDR.
BTW, dacă petreceți mult timp uitându-vă la formele de undă, încercând să aveți sens, instrumentul nostru de depanare a protocolului (PDA) ar putea fi interesant pentru dvs. Vă rugăm să aruncați o privire la un demo scurt de 3 minute aici (fără căști? Nu vă faceți griji! Are subtitrări!).
diferite tehnici de comunicare a datelor:
înainte de a începe pe CDR, vom avea o privire la diferite tehnici de comunicare a datelor, care sunt:
1. Comunicația de date seriale
în comunicația serială biții de date sunt transmiși secvențial unul câte unul.
2. Comunicații de date paralele
în Comunicații paralele biți de date sunt conduse pe mai multe fire simultan.
privind cifrele de mai sus, se poate judeca cu ușurință că comunicarea paralelă va fi mult mai rapidă decât comunicarea serială.
dar apoi se pune întrebarea, de ce este preferată comunicarea serială în locul comunicării paralele???
acest lucru se datorează faptului că, în practică, comunicarea paralelă nu este mai rapidă decât comunicarea serială. Acest lucru se datorează următoarelor motive –
a) oblic
lungimea căii de deplasare pentru fiecare bit va fi diferită.Din acest motiv, unii biți pot ajunge mai devreme sau mai devreme decât alții care pot corupe informațiile.
pentru a rezolva acest lucru puteți pad biți. Dar acest lucru ar fi pe costul de viteză, deoarece va reduce viteza de fiecare link la cel mai lent dintre toate.
b) interferența între simboluri și vorbirea încrucișată
datorită mai multor legături paralele ISI și vorbirea încrucișată sunt introduse în sistem, care devine mai severă pe măsură ce lungimea legăturii crește. Deci, acest lucru limitează lungimea unei conexiuni.
c) limitarea numărului de pini I/O
comunicarea de date paralelă necesită mult mai mulți pini I/O decât ceea ce este cerut de comunicarea de date seriale.
ce este ceas de recuperare de date?
deoarece majoritatea interfețelor seriale de mare viteză nu au niciun ceas însoțitor, receptorul trebuie să recupereze ceasul pentru a proba datele de pe liniile seriale.
pentru a recupera ceasul de eșantionare, receptorul are nevoie de o referință un ceas de aproximativ aceeași frecvență. Pentru a genera ceasul recuperat, receptorul trebuie să alinieze în fază ceasul de referință la tranzițiile din fluxul de date primite. Aceasta se numește recuperare ceas.
eșantionarea acelui semnal de date primite cu ceas recuperat pentru a genera un flux de biți se numește recuperare de date. Împreună, aceasta se numește Clock Data Recovery sau CDR.
CDR este necesar pentru a recupera datele din fluxul de date primite în absența oricărui semnal de ceas însoțitor, fără erori de biți datorate eșantionării peste/sub.
Cum Funcționează Recuperarea Datelor Ceasului?
cele două funcții principale pentru efectuarea CDR sunt – detectarea frecvenței și alinierea fazelor.
I) detectarea frecvenței
este un proces de blocare pe o frecvență care este preluată din fluxul de date primite. Acest lucru se face prin detectarea diferenței de timp dintre două margini consecutive pe fluxul de date.
această frecvență blocată este utilizată în regenerarea fluxului de biți de date transmise.
pentru a vă familiariza cu detectarea frecvenței, permiteți-mi să vă dau o analogie a punctuației într-o propoziție. Este posibil să fi observat că ori de câte ori un drum este supus unor lucrări de reparații, compania de construcții pune un mesaj afișat pe o placă pentru a încetini vehiculele care trec. Acest mesaj este ceva de genul acesta-
încet, bărbați la locul de muncă
acum, dacă același mesaj este scris fără punctuație adecvată, atunci poate implica ceva total diferit! –
bărbații lenți la locul de muncă
Punctuațiile sunt ca frecvența detectată. Dacă este blocat pe o frecvență greșită care va duce la eșantionarea incorectă a datelor!
deci, întrebarea aici este cum să eșantionați corect un flux de biți de date primite?
o soluție care vine în minte instantaneu este de a proba fluxul de biți pe aceeași frecvență la care a fost transmis.
pentru a face acest lucru, trebuie să generați ceasul pe receptor având aceeași frecvență pe care au fost transmise datele. Dar nu este posibil să se genereze Două ceasuri cu aceeași frecvență exactă prin utilizarea a două generatoare de ceas diferite, chiar dacă acestea au aceleași specificații.
de asemenea, nu este posibilă generarea unui ceas cu o frecvență precisă.
în același timp, o diferență de minut în frecvența de eșantionare poate duce la o eroare de biți, așa cum este descris în diagrama următoare:
după cum se arată în figura de mai sus de mai sus, un singur bit este eșantionat de două ori datorită unei diferențe de minute în frecvența TX și RX.
cum altfel un ceas cu aceeași frecvență de ‘ceas TX’ fi generate?
acest lucru se poate face verificând marginile fluxului de biți de date primite.Cu toate acestea, în acest proces, biții inițiali care se obișnuiesc să detecteze frecvența se pierd. Pentru a rezolva acest lucru, un anumit set de secvențe de biți sunt transmise înainte de a transmite datele valide. Aceste secvențe sunt numite secvențe de antrenament. Secvențele de antrenament au o densitate de margine foarte mare, astfel încât receptorul să poată bloca cu ușurință o frecvență verificând marginile consecutive de pe fir înainte de începerea datelor valide. Figura de mai jos prezintă o secvență cu densitate mare margine.
frecvența din fluxul de biți de date primite a fost recuperată. Ceasul RX poate fi acum generat pe baza frecvenței recuperate.
frecvența recuperată de mai sus este bine pentru un caz ideal atunci când nu există nici un zgomot introdus în transmisie, adică frecvența ceasului pentru ceasul TX este aceeași pe tot parcursul. De asemenea, datele sunt un multiplu integral al perioadei de ceas TX. Cu toate acestea, acest lucru nu este adevărat practic, deoarece există o serie de atribute care afectează transmisia de date și distorsionează uniformitatea ceasului.
figura de mai jos descrie un ceas în timp real, care are variații în perioada sa.
există în principal două atribute care afectează cele mai multe comunicații de date seriale de mare viteză-
A) bruiaj:
bruiaj este o schimbare în marginile unui semnal periodic. Aceasta întrerupe periodicitatea semnalului.
bruiajul este un efect pe termen scurt. Urmează distribuția Gaussiană de aceea media medie a bruiajului este zero, adică efectul cumulativ al bruiajului este nul.
deoarece există o schimbare în marginile semnalului de ceas din cauza bruiaj, întrebarea este ceea ce este poziția optimă pentru a proba un pic?
un bit trebuie prelevat în centru. Este poziția optimă în care poate fi întâlnită deplasarea maximă a marginilor de pe ambele părți (de la stânga la dreapta sau de la dreapta la stânga). Cu toate acestea, dacă schimbarea într-o margine devine mai mare de jumătate din perioada de biți, atunci va exista o eroare de biți.
B) PPM (părți per milion):
PPM este o inexactitate a anumitor componente (cristal de cuarț în cazul generatorului de ceas) într-un circuit care duce la generarea unui semnal cu perioadă inexactă. PPM nu rupe periodicitatea unui semnal. După cum afirmă numele său, PPM este un efect pe termen lung care denotă inexactitatea în perioada de biți peste un milion de cicluri de ceas. PPM este aditiv sau substractiv în natură.
Onlyif efect cumulativ de bruiaj sau PPM în TX CLK devine mai mult de jumătate din RX CLK, atunci ar exista erori din cauza peste/sub eșantionare.
un exemplu de mai jos arată modul în care variațiile continue ale fluxului de date primite pot afecta eșantionarea datelor. Același exemplu va fi luat în considerare pentru a rezolva problemele pe măsură ce progresăm în continuare.
RX CLK (FD) este frecvența blocată în timpul detectării frecvenței. Pe măsură ce fluxul de date primite este eșantionat pe FD, așa cum este descris în caseta roșie, un singur bit este eșantionat de două ori. Acest lucru se întâmplă din cauza variațiilor în fluxul de biți de date primite.
pentru a întâlni aceste variații în frecvența TX CLK, a doua funcție a CDR, alinierea fazei vine în imagine. Acest reajustează marginile RX CLK.
II) alinierea fazei
alinierea fazei este un proces de potrivire a fazei unui semnal cu un alt semnal. Aici se potrivește cu faza ceasului recuperat în detectarea frecvenței cu fluxul de biți de date primite.
permiteți-mi să vă dau o analogie pentru alinierea fazelor.
este posibil să fi văzut un radio analogic. Există două butoane și anume ton grosier și ton fin pe radio analogic. Când cineva vrea să asculte orice semnale sonore, buton ton grosier este folosit pentru a bloca pe o frecvență în cazul în care semnalele sunt sonore, dar cu unele perturbații. Aici ton grosier este la fel de bun ca detectarea frecvenței și tulburări sunt bruiaj și PPM. Pentru a elimina aceste tulburări și de a face vocea sonoră, fin tune buton este folosit care reglează frecvența pre blocat un pic aici și acolo pentru a obține un semnal sonor perfect. Aici reglarea fină este asemănătoare cu alinierea fazelor.
următoarele reguli trebuie respectate pentru alinierea fazelor:
- dacă este detectată o tranziție pe fir, faceți nivelul RX CLK(FD+PD) = 1.
- dacă RX CLK(FD) perioadă este finalizată după o posedge pe RX CLK(FD+PD) și nu orice tranziție este detectat pe sârmă apoi afirma posedge de RX CLK(FD+PD).
aici RX CLK(FD) este frecvența ceasului blocată în timpul procesului de detectare a frecvenței și RX CLK(FD+PD) este frecvența ceasului în timpul procesului de aliniere a fazelor.
este timpul să ne uităm la funcționarea alinierii fazelor. Să luăm același exemplu considerat anterior pentru jitter PPM.
aici perioada de ceas RX CLK ( FD) = 10
ceasurile care nu au fost atribuite cu o perioadă în figură au în mod implicit perioada de 10.
în figura de mai sus am văzut anterior că ultimul bit a fost eșantionat de două ori ca urmare a variației constante continue (de la 10 la 12) în TX CLK (poate fi din cauza PPM).Cu toate acestea, acum, așa cum este descris în caseta roșie, bitul este eșantionat corect.
în primul ciclu de ceas TX, perioada este de 10 unitate de timp care este blocată după detectarea frecvenței și reflectată și pe RX CLK(FD+PD). Conform regulii 1, marginea datelor va face nivelul RX CLK (FD + PD) la 1(notat cu prima săgeată punctată). Apoi negedge va fi afirmat pe RX CLK(FD+PD) după jumătate din perioada RX CLK (FD). Apoi posedge va fi afirmat pe RX CLK(FD+PD) în funcție de jumătate din RX CLK (FD) perioadă sau tranziție pe date oricare dintre acestea survine mai întâi (Regula numărul 2).
pe al șaselea și al șaptelea ciclu de ceas TX biții de date sunt 0 și 0, nici o tranziție pe linie. Deci RX CLK (FD + PD) va urma regula numărul 2 pentru a avea o perioadă de ceas de RX CLK(FD), descris în primul ciclu de RX CLK(FD+PD) în caseta roșie. Deoarece perioada pentru al șaptelea ciclu de ceas este de 12 unități de timp, tranziția datelor va avea loc după 2 unități de timp decât se aștepta. Acum RX CLK (FD + PD) a afirmat deja posedge și începe să aștepte finalizarea a jumătate din perioada RX CLK(FD) pentru a afirma negedge pe RX CLK(FD+PD). Cu toate acestea, după finalizarea unității de timp 2, se detectează o tranziție care determină repornirea timpului de așteptare de jumătate din RX CLK(FD). Aceasta duce la negarea RX CLK(FD+PD) după 7 unități de timp în loc de 5 (adică jumătate din perioada RX CLK(FD)). Apoi posedge după 5 unitate de timp(ciclul 2 de RX CLK (FD+PD) în caseta roșie). De asemenea, alinierea fazei ajustează perioada de ceas pe baza variațiilor constante în fluxul de date primite.
figura de mai jos descrie caz jitter negativ…
a treia perioadă de ceas TX a fost variată de la 10 unități de timp la 7 unități de timp din cauza bruiajului negativ. Această variație întâlnită corect prin alinierea fazei așa cum este descris în caseta roșie.
posedge pe RX CLK(FD+PD) apare ca tranziție detectată pe date. Negedge pe RX CLK(FD+PD) apare după finalizarea a jumătate din RX CLK (FD) perioadă. Acum se vede o tranziție pe date înainte de finalizarea jumătății perioadei RX CLK(FD), care determină o tranziție de nivel de la 0 la 1 pe RX CLK(FD+PD) (afișată de săgeata punctată curbată a 3-a).
figura de mai jos descrie caz bruiaj pozitiv…
a cincea perioadă de ceas TX a fost variată de la 10 unități de timp la 13 unități de timp din cauza bruiajului pozitiv. Această variație întâlnită corect prin alinierea fazei așa cum este descris în caseta roșie.
RX CLK(FD+PD) va urma regula numărul 2 pentru a avea o perioadă de ceas de RX CLK(FD), descris în primul ciclu de RX CLK(FD+PD) în caseta roșie. Deoarece perioada pentru ciclul de ceas al cincilea este 13, tranziție pe date va avea loc după 3 unitate de timp decât era de așteptat. Acum RX CLK(FD+PD) afirmă deja posedge și începe să aștepte finalizarea a jumătate din perioada RX CLK(FD) pentru a afirma negedge pe RX CLK (FD+PD). Cu toate acestea, după finalizarea unității de timp 3, se detectează o tranziție care determină repornirea timpului de așteptare de jumătate din RX CLK(FD). Aceasta duce la negarea RX CLK(FD+PD) după 8 unități de timp în loc de 5 (adică jumătate din perioada RX CLK(FD)). Apoi posedge după 5 unitate de timp(ciclul 2 de RX CLK (FD+PD) în caseta roșie).
asta a fost totul despre procesul de lucru al alinierii fazelor.
un avertisment…!
există o problemă care nu este acoperită de detectarea frecvenței și alinierea fazelor! Faza de aliniere funcționează pe tranziție în fluxul de date primite. Cu toate acestea, este posibil să aveți un flux de biți identic lung, care nu are nicio tranziție în el. În acest caz, dacă schimbarea cumulativă într-o margine devine mai mult de jumătate din perioada de ceas recuperată (RX CLK(FD)), atunci va duce la erori de biți și va proba datele incorect.
pentru a rezolva această problemă, secvențele de biți sunt procesate cu diferite tipuri de codificare înainte de a le transmite pe fir. Acest lucru limitează numărul de biți identici consecutivi la un anumit nivel. Acest lucru reduce probabilitatea de a se apropia de trecerea cumulativă la mai mult de jumătate din RX CLK(FD).
de exemplu, în USB 3.0 biții de date sunt procesați cu codificare 8B10B înainte de a-l transmite pe un fir.
figura de mai jos descrie diagrama bloc comportamentală a CDR
fluxul de date primite a trecut ca intrare la FD(detector de frecvență), ED (detector de margine) și un flip flop D. Detector de frecvență generează o frecvență bazată pe secvențe de formare. Edge detector oferă ieșire ori de câte ori detectează o tranziție pe datele primite. Ieșirile detectorului de frecvență și ale detectorului de margine au trecut ca intrare la blocul generatorului de ceas care generează un ceas pentru a proba datele. Acest ceas generat și datele primite au trecut la D flip flop pentru a regenera fluxul de biți.
figura de mai jos prezintă diagrama de flux pentru generarea de ceas după alinierea fazei
RX CLK (FD + PD) va fi inițializat fie la 1, fie la 0. După inițializare vor începe două procese paralele, așteptați cronometrul pentru jumătate din timpul RX CLK(FD) și detectarea marginilor pe datele primite. Oricare dintre acestea este finalizat mai întâi din cele două procese paralele va dezactiva celălalt proces. Dacă cronometrul a expirat înainte ca orice margine să fie detectată, atunci va verifica nivelul curent al RX CLK(FD+PD). Dacă nivelul RX CLK (FD + PD) este 1, atunci mergeți la “RX CLK(FD+PD)=0” activitate și resetați RX CLK(FD+PD) la 0 altceva mergeți la “RX CLK(FD+PD)=1″ activitate. Reporniți ambele procese paralele din nou și așteptați finalizarea oricăruia. Dacă este detectată o margine înainte de finalizare, așteptați cronometrul, apoi treceți la activitatea” RX CLK(FD+PD)=0 ” și setați nivelul RX CLK(FD+PD) la 1.Reporniți ambele procese paralele din nou și așteptați finalizarea oricăruia.
sper că acest articol va ajuta inginerii să modeleze ceasul și recuperarea datelor.
autor: Deepak Nagaria cu Aditya Mittal