Beginners Guide To Clock Data Recovery
If you are new to the world of design and verification, you probably have a LOT of questions! Yksi niistä voi koskea tärkeä elementti-kellon tietojen hyödyntämistä. Tässä blogissa yritämme de-mystifioida tätä prosessia.
erilaisten protokollien suunnittelun tarkoituksena on siirtää tietojoukko paikasta toiseen. Usein sarjatiedonvälitystä käytetään tiedon siirtämiseen suurella nopeudella. Vastaanottimen päässä siirretyt tiedot on haettava menettämättä eheyttään mukana toimitettujen ajoitustietojen kanssa. Tätä prosessia kutsutaan Kello ja tietojen hyödyntämistä.
tässä artikkelissa kerromme tarkemmin CDR: n vaatimuksista ja siitä, miten se toimii, miten puututaan tämmöisiin jitter-ja PPM-kysymyksiin CDR: n mallintamisessa.
BTW, jos vietät paljon aikaa tuijottamalla aaltomuotoja, yrittäen saada järkeä, protokollan virheenjäljitystyökalumme (PDA) saattaa kiinnostaa sinua. Ole hyvä katsomaan lyhyt 3 minuutin demo täällä (ei kuulokkeita? Ei hätää! Siinä on tekstitys!).
erilaiset tiedonsiirron tekniikat:
ennen CDR: llä aloitusta käydään läpi erilaisia tiedonsiirron tekniikoita, jotka ovat:
1. Sarjatiedonvälitys
sarjatiedonvälityksessä databitit lähetetään peräkkäin yksi kerrallaan.
2. Rinnakkaisessa tietoliikenteessä
rinnakkaisessa tietoliikenteessä databittejä ajetaan samanaikaisesti useilla johdoilla.
edellä mainittuja lukuja tarkastelemalla voi helposti päätellä, että rinnakkainen viestintä on paljon nopeampaa kuin sarjaviestintä.
mutta sitten herää kysymys, miksi sarjaviestintää suositaan rinnakkaisviestinnän sijaan???
tämä johtuu siitä, että käytännössä rinnakkaisviestintä ei ole sarjaviestintää nopeampaa. Tämä johtuu seuraavista syistä –
a) Skew
kulkureitin pituus jokaista bittiä kohti tulee olemaan erilainen.Tämän vuoksi jotkut bitit voivat saapua aikaisin tai ennen kuin toiset, jotka voivat turmella tiedot.
voit ratkaista tämän voit pad bittiä. Mutta tämä olisi hinta nopeus, koska se vähentää nopeutta jokaisen linkin hitain kaikista.
b) symbolin välinen häiriö ja Ristipuhe
useiden rinnakkaisten linkkien vuoksi järjestelmään tulee ISI ja Ristipuhe, joka vaikeutuu linkin pituuden kasvaessa. Tämä siis rajoittaa yhteyden pituutta.
c) I/O-nastamäärän rajoittaminen
rinnakkainen tiedonsiirto vaatii paljon enemmän I/O-nastoja kuin mitä sarjatiedonvälitys vaatii.
mikä on Clock Data Recovery?
koska suurimmassa osassa suurinopeuksisia sarjaliitäntöjä ei ole mukana olevaa kelloa, vastaanottajan on palautettava kello voidakseen samplata tietoja sarjalinjoilta.
näytteenottokellon palauttamiseen vastaanotin tarvitsee suunnilleen saman taajuisen referenssikellon. Palautetun kellon tuottamiseksi vastaanottimen on vaiheistettava viitekello saapuvan datavirran siirtymiin. Tätä kutsutaan kellon talteenotoksi.
kyseisen saapuvan datasignaalin näytteenottoa talteen otetulla kellolla bittivirran tuottamiseksi kutsutaan tietojen palauttamiseksi. Yhdessä tätä kutsutaan Clock Data Recovery eli CDR.
CDR: n on palautettava tiedot saapuvasta datavirrasta siihen liittyvän kellosignaalin puuttuessa ilman yli/ali-näytteenotosta johtuvia bittivirheitä.
Miten Clock Data Recovery Toimii?
CDR: n kaksi päätehtävää ovat – taajuusmittari ja vaihekohdistus.
I) Taajuudentunnistus
se on prosessi, jossa lukitaan saapuvasta datavirrasta haettava taajuus. Tämä tehdään havaitsemalla aikaero kahden peräkkäisen edgesin välillä datavirrassa.
tätä lukittua taajuutta käytetään lähetetyn datan bittivirran regeneroinnissa.
jotta tutustuisit paremmin taajuuden tunnistamiseen, annan sinulle vertauksen välimerkistä lauseessa. Olet ehkä havainnut, että aina kun tiellä tehdään korjaustöitä, rakennusyhtiö asettaa taululle näyttöviestin ohiajavien ajoneuvojen hidastamiseksi. Se viesti on jotain tällaista –
hitaat, miehet töissä
nyt Jos sama viesti on kirjoitettu ilman kunnollisia välimerkkejä, niin se voi merkitä jotain aivan muuta! –
hitaat miehet työssä
säntillisyys on kuin havaittu frekvenssi. Jos lukittu väärällä taajuudella, joka johtaa virheelliseen tietojen näytteenotto!
joten kysymys tässä on, miten näyte saapuvan datan bittivirta oikein?
yksi ratkaisu, joka tulee heti mieleen, on maistella bittivirtaa samalla taajuudella, jolla se välitettiin.
tätä varten on luotava vastaanottimelle kello, jolla on sama taajuus, jolla tiedot lähetettiin. Mutta ei ole mahdollista tuottaa kahta kelloa, joilla on täsmälleen sama taajuus, käyttämällä kahta eri kellogeneraattoria, vaikka niillä olisi samat tekniset tiedot.
ei myöskään ole mahdollista luoda kelloa, jolla olisi tarkka taajuus.
samaan aikaan minuutin ero näytteenottotaajuudessa voi johtaa seuraavassa kaaviossa kuvattuun bittivirheeseen:
kuten yllä olevassa kuvassa on esitetty, yksi bitti saa näytteitä kahdesti, koska minuutin ero TX ja RX taajuus.
miten muuten saadaan aikaan kello, jolla on sama “TX clock” – taajuus?
tämä voidaan tehdä tarkistamalla tulevan datan bittivirran reunat.Kuitenkin tässä prosessissa, alkuperäinen bittiä, joita käytetään havaitsemaan taajuuden eksyä. Tämän ratkaisemiseksi lähetetään tietty joukko bittisekvenssejä ennen kelvollisen tiedon lähettämistä. Näitä jaksoja kutsutaan harjoitussarjoiksi. Harjoitussekvenssit posses erittäin korkea reuna tiheys, niin että vastaanotin voi helposti lukita taajuudella tarkistamalla peräkkäiset reunat Lanka ennen alkua voimassa olevia tietoja. Alla olevassa kuvassa on sarja, jolla on korkea reunatiheys.
saapuvan datan bittivirran taajuus on palautettu. RX kello voidaan nyt luoda perustuu talteen taajuus.
edellä mainittu palautustaajuus sopii mainiosti ideaalitapaukseen, kun lähetyksessä ei ole lainkaan kohinaa eli TX-kellon kellotaajuus on kauttaaltaan sama. Myös data on kiinteä kerrannainen TX kellon ajan. Tämä ei kuitenkaan ole totta käytännössä, koska on olemassa useita attribuutteja, jotka vaikuttavat tiedonsiirtoon ja vääristävät kellon yhdenmukaisuutta.
alla olevassa kuvassa on reaaliaikainen kello, jolla on aikakautensa vaihteluita.
on pääasiassa kaksi ominaisuutta, jotka vaikuttavat suurinopeuksiseen sarjatiedonvälitykseen –
a) Jitter:
Jitter on jaksollisen signaalin reunojen muutos. Tämä rikkoo signaalin jaksotuksen.
Jitter on lyhytaikainen vaikutus. Se seuraa Gaussin jakaumaa, minkä vuoksi värähdyksen keskiarvo on nolla Eli värähdyksen kumulatiivinen vaikutus on nolla.
koska kellosignaalin reunoissa tapahtuu värinän aiheuttama muutos, kysymys kuuluukin, mikä on optimaalisin asento näytteenotolle?
keskuksesta pitäisi ottaa vähän näytteitä. Se on optimaalinen sijainti, jossa voidaan havaita suurin muutos reunoissa jommallakummalla puolella (vasemmalta oikealle tai oikealta vasemmalle). Kuitenkin jos muutos reuna tulee suurempi kuin puolet bitin ajan sitten on vähän virhe.
B) PPM (miljoonasosaa):
PPM on tiettyjen komponenttien (kellogeneraattorin tapauksessa kvartsikide) epätarkkuus piirissä, joka johtaa epätarkalla jaksolla varustetun signaalin syntymiseen. PPM ei riko signaalin jaksotusta. Kuten sen nimi toteaa, PPM on pitkän aikavälin vaikutus, joka ilmaisee epätarkkuutta bittiajan yli miljoona kellosykliä. PPM on luonteeltaan additiivinen tai subtraktiivinen.
vain jos värinän tai PPM: n kumulatiivinen vaikutus TX CLK: ssa on yli puolet RX CLK: sta, yli – /ali-näytteenotosta aiheutuisi virheitä.
alla oleva esimerkki osoittaa, miten jatkuvat vaihtelut saapuvassa datavirrassa voivat vaikuttaa tietojen otantaan. Tätä samaa esimerkkiä harkitaan ongelmien ratkaisemiseksi, kun etenemme eteenpäin.
RX CLK (FD) on taajuus lukittu taajuuden tunnistuksen aikana. Koska saapuva datavirta on näytteenotto FD, kuten kuvattu punainen laatikko, yksi bitti saa näytteen kahdesti. Tämä tapahtuu, koska vaihtelut saapuvan datan bittivirran.
näiden TX CLK: n taajuuden vaihtelujen kohtaamiseksi tulee kuvaan CDR: n toinen funktio, vaihekohdistus. Tämä palauttaa RX CLK reunat.
II) Vaihekohdistus
Vaihekohdistus on prosessi, jossa signaalin vaihe sovitetaan toiseen signaaliin. Tässä se vastaa vaihe kellon talteen taajuus havaitseminen saapuvan datan bittivirran.
annan sinulle analogian vaihesuuntaukselle.
olet saattanut nähdä analogisen radion. On olemassa kaksi nupit eli karkea tune ja hieno tune analogisessa radiossa. Kun haluaa kuunnella mitä tahansa äänimerkkejä, karkeaa viritysnuppia käytetään lukitsemaan taajuudelle, jossa signaalit ovat kuultavissa, mutta joitakin häiriöitä. Tässä karkea viritys on yhtä hyvä kuin taajuudentunnistus ja häiriöt ovat tärinä ja PPM. Poistaa nämä häiriöt ja tehdä ääni kuultavissa, hienosäätää nuppia käytetään, joka säätää pre lukittu taajuus hieman siellä täällä saada täydellinen äänisignaalit. Tässä hienosäätö muistuttaa vaihesuuntausta.
vaiheen yhdenmukaistamisessa on noudatettava seuraavia sääntöjä:
- jos johdossa havaitaan siirtyminen, tehdään taso RX CLK(FD+PD) = 1.
- jos RX CLK(FD) – ajanjakso on päättynyt RX CLK: n posedgen jälkeen(FD+PD), eikä johtimessa havaita siirtymää, niin vahvista RX CLK: n posedge(FD+PD).
tässä RX CLK(FD) on kellotaajuus lukittu taajuuden tunnistusprosessin aikana ja RX CLK (FD+PD) on kellotaajuus vaiheen kohdistusprosessin aikana.
on aika perehtyä vaihesuuntauksen toimivuuteen. Ottakaamme sama esimerkki tarkasteltiin aiemmin ppm jitter.
tässä kellojakso RX CLK (FD) = 10
kellot, joille ei ole annettu lukujaksoa, ovat oletusarvoisesti 10.
yllä olevassa kuvassa olemme nähneet aiemmin, että viimeinen bitti sai näytteen kahdesti seurauksena jatkuva jatkuva vaihtelu (10-12) TX CLK (voi johtua PPM).Kuitenkin nyt, kuten kuvattu punainen laatikko, bitti on otettu oikein.
ensimmäisessä TX-kellosyklissä periodi on 10 aikayksikkö, joka lukitaan taajuudentunnistuksen jälkeen ja heijastuu myös RX CLK: Hon(FD+PD). Säännön 1 mukaan tietojen reuna tekee RX CLK: n(FD+PD) tasosta 1(merkitään ensimmäisellä pistenuolella). Tämän jälkeen negedge esitetään RX CLK: ssa(FD+PD) RX CLK: n(FD) kauden puolivälin jälkeen. Sitten posedge vahvistetaan RX CLK(FD+PD) riippuen puolet RX CLK (FD) ajan tai siirtymän TIEDOT kumpi tulee ensin (sääntö numero 2).
kuudennella ja seitsemännellä TX-kellosyklillä databitit ovat 0 ja 0, ei siirtymää linjalla. Joten RX CLK(FD+PD) seuraa sääntöä numero 2, jotta RX CLK: n(FD) kelloaika on kuvattu RX CLK: n ensimmäisessä syklissä (FD+PD) punaisessa laatikossa. Koska seitsemännen kellosyklin aika on 12 aikayksikköä, siirtyminen dataan tapahtuu 2 aikayksikön jälkeen kuin odotettiin. Nyt RX CLK (FD+PD) jo väitti posedge ja alkaa odottaa loppuun puolet RX CLK(FD) ajan puolustaa negedge RX CLK(FD+PD). Kuitenkin valmistumisen jälkeen 2 aikayksikön, siirtyminen saa havaittu, joka aiheuttaa käynnistää odotusaika puolet RX CLK (FD). Tämä johtaa negedge RX CLK (FD+PD) jälkeen 7 aikayksikön sijasta 5(eli puolet RX CLK (FD) aikana). Sitten posedge jälkeen 5 aikayksikön (2. sykli RX CLK(FD+PD) punaisessa laatikossa). Samoin vaihe tasaus säätää kellon ajan perustuu jatkuvaan vaihteluun saapuvan datavirran.
alla kuva negatiivisesta värähdystapauksesta…
kolmas TX-kellokausi on vaihdellut 10 aikayksiköstä 7 aikayksikköön negatiivisen värinän vuoksi. Tämä vaihtelu kohdannut oikein vaiheen kohdistus kuvattu punainen laatikko.
RX CLK: n posedge(FD+PD) esiintyy datassa havaittuna siirtymänä. Negedge on RX CLK(FD+PD) tapahtuu sen jälkeen, kun puolet RX CLK (FD) aikana. Nyt siirtyminen näkyy tiedot ennen puolet RX CLK(FD) aikana, joka aiheuttaa tason siirtyminen 0-1 RX CLK (FD+PD) (näkyy 3rd kaareva pistenuoli).
alla kuva positiivisesta värähdystapauksesta…
viides TX kellojakso on vaihdellut 10 aikayksiköstä 13 aikayksikköön positiivisen värinän vuoksi. Tämä vaihtelu kohdannut oikein vaiheen kohdistus kuvattu punainen laatikko.
RX CLK(FD+PD) noudattaa sääntöä numero 2, jolloin RX CLK: n(FD) kelloaika on kuvattu RX CLK: n ensimmäisessä syklissä (FD+PD) punaisessa laatikossa. Koska viidennen kellosyklin aika on 13, siirtyminen dataan tapahtuu 3 aikayksikön jälkeen kuin odotettiin. Nyt RX CLK (FD+PD) jo väittää posedge ja alkaa odottaa loppuun puolet RX CLK(FD) ajan puolustaa negedge RX CLK(FD+PD). Kuitenkin valmistumisen jälkeen 3 aikayksikkö, siirtyminen saa havaittu, joka aiheuttaa käynnistää odotusaika puolet RX CLK (FD). Tämä johtaa negedge RX CLK (FD+PD) jälkeen 8 aikayksikön sijasta 5(eli puolet RX CLK (FD) aikana). Sitten posedge jälkeen 5 aikayksikön (2. sykli RX CLK(FD+PD) punaisessa laatikossa).
siinä oli kyse vaiheen yhdenmukaistamisen työprosessista.
One caveat…!
on yksi asia, joka ei kuulu taajuudentunnistuksen ja vaiheen linjauksen piiriin! Vaihe tasaus toimii siirtyminen saapuvan datavirran. On kuitenkin mahdollista saada pitkä identtinen bittivirta, jossa ei ole mitään siirtymää. Tässä tapauksessa, jos kumulatiivinen muutos reuna tulee yli puolet talteen kellon ajan (RX CLK (FD)) niin se johtaa bittivirheisiin ja näyte tiedot väärin.
tämän ongelman ratkaisemiseksi bittisekvenssejä käsitellään erilaisilla koodauksilla ennen sen lähettämistä langalla. Tämä rajoittaa peräkkäisten identtisten bittien määrän tietylle tasolle. Tämä vähentää todennäköisyyttä, että kumulatiivinen muutos lähestyy yli puolta RX CLK: sta(FD).
esimerkiksi USB 3.0: ssa databitit käsitellään 8b10b-koodauksella ennen sen lähettämistä johtimella.
alla oleva kuva kuvaa CDR: n behavioraalista lohkokaaviota
saapuva datavirta välitettiin tulona FD: lle(taajuusilmaisin), ED: lle (edge detector) ja D: lle (flip flop). Taajuusilmaisin luo taajuuden, joka perustuu harjoitussekvensseihin. Edge detector antaa lähtö aina, kun se havaitsee siirtymisen saapuvan datan. Taajuusilmaisimen ja reunailmaisimen ulostulot välitetään syötteenä kellogeneraattorilohkoon, joka luo kellon näytteenottoa varten. Tämä loi kellon ja saapuvan datan d flip flopille bittivirran uudistamiseksi.
alla oleva kuva kuvaa kellojen generoinnin vuokaaviota vaiheen linjauksen jälkeen
RX CLK (FD+PD) alustetaan joko 1: ksi tai 0: ksi. Alustuksen jälkeen käynnistyy kaksi rinnakkaista prosessia, odota ajastin puoleen RX CLK (FD) – ajasta ja reunahavainto saapuvista tiedoista. Kumpi valmistuu ensin kahdesta rinnakkaisesta prosessista, poistaa toisen prosessin käytöstä. Jos ajastin sammuu ennen kuin mitään reunaa havaitaan, se tarkistaa RX CLK: n nykyisen tason(FD+PD). Jos RX CLK: n(FD+PD) taso on 1, Siirry kohtaan “RX CLK(FD+PD)=0” aktiivisuus ja nollaa RX CLK(FD+PD) arvoon 0 muu siirry kohtaan “RX CLK(FD+PD)=1″ aktiivisuus. Käynnistä molemmat rinnakkaiset prosessit uudelleen ja odota loppuun jompikumpi. Jos reuna havaitaan ennen valmistumista odota ajastin sitten siirtyä” RX CLK(FD+PD)=0 ” aktiivisuus ja aseta RX CLK(FD+PD) tasolle 1.Käynnistä molemmat rinnakkaiset prosessit uudelleen ja odota loppuun jompikumpi.
toivon, että tämä artikkeli auttaa insinöörejä mallintamaan kellon ja tietojen palauttamisen.
tekijä: Deepak Nagaria, Aditya Mittal