Beginners Guide To Clock Data Recovery
om du är ny i världen av design och verifiering har du förmodligen många frågor! En av dem kan avse ett viktigt element – Klockdataåterställning. I den här bloggen försöker vi avmystifiera denna process.
syftet med att utforma olika protokoll är att överföra en uppsättning information (data) från en plats till en annan. Ofta används seriell datakommunikation för att överföra data med hög hastighet. Vid mottagaränden måste de överförda data hämtas utan att förlora sin integritet med den åtföljda tidsinformationen. Denna process kallas klocka och dataåterställning.
i den här artikeln kommer vi att utarbeta kraven i CDR och hur det fungerar, hur man hanterar problem som jitter och PPM vid modellering av CDR.
BTW, om du spenderar mycket tid på att stirra på vågformer, försöker göra mening, kan vårt protocol debug tool (PDA) vara intressant för dig. Ta en titt på en kort 3 minuters demo här (inga hörlurar? Inga bekymmer! Den har undertexter!).
olika tekniker för datakommunikation:
innan vi börjar på CDR kommer vi att titta på olika tekniker för datakommunikation, som är:
1. Seriell datakommunikation
i seriell kommunikation överförs databitar i följd en efter en.
2. Parallell datakommunikation
i parallell kommunikation drivs databitar på flera ledningar samtidigt.
genom att titta på ovanstående figurer kan man lätt bedöma att parallell kommunikation blir mycket snabbare än seriell kommunikation.
men då uppstår frågan, varför föredras seriell kommunikation framför parallell kommunikation???
detta beror på att parallell kommunikation i praktiken inte är snabbare än seriell kommunikation. Detta beror på följande skäl-
a) skev
resväg längd för varje bit kommer att vara annorlunda.På grund av detta kan vissa bitar komma tidigt eller tidigare än andra som kan korrumpera informationen.
för att lösa detta kan du padda bitarna. Men detta skulle vara på bekostnad av hastighet eftersom det kommer att minska hastigheten på varje länk till den långsammaste av alla.
b) intersymbol interferens och Cross talk
på grund av flera parallella länkar ISI och Cross talk introduceras i systemet som blir svårare när länkens längd ökas. Så detta begränsar längden på en anslutning.
c) begränsning av I/O-stiftantal
parallell datakommunikation kräver mycket mer i/O-stift än vad som krävs av seriell datakommunikation.
Vad är Clock Data Recovery?
eftersom de flesta höghastighets seriella gränssnitt inte har någon medföljande klocka måste mottagaren återställa klockan för att kunna prova data på seriella linjer.
för att återställa provtagningsklockan behöver mottagaren en referens en klocka med ungefär samma frekvens. För att generera den återställda klockan måste mottagaren fasjustera referensklockan till övergångarna på den inkommande dataströmmen. Detta kallas Klockåterställning.
Sampling av den inkommande datasignalen med återställd klocka för att generera en bitström kallas dataåterställning. Tillsammans kallas detta Clock Data Recovery, eller CDR.
CDR krävs för att återställa data från inkommande dataström i avsaknad av någon medföljande klocksignal, utan några bitfel på grund av över/under sampling.
Hur Fungerar Clock Data Recovery?
de två huvudfunktionerna för att utföra CDR är – frekvensdetektering och fasjustering.
I) Frekvensdetektering
det är en process för låsning på en frekvens som hämtas från inkommande dataström. Detta görs genom att detektera tidsskillnaden mellan två på varandra följande kanter på dataströmmen.
denna låsta frekvens används för att regenerera den överförda databitströmmen.
för att göra dig mer bekant med frekvensdetektering, låt mig ge dig en analogi av skiljetecken i en mening. Du kanske har observerat att när en väg genomgår reparationsarbete sätter byggföretaget upp ett displaymeddelande på ett bräde för att sakta ner fordonen som passerar. Det meddelandet är ungefär så här-
långsam, män på jobbet
nu om samma meddelande skrivs utan ordentlig skiljetecken kan det innebära något helt annat! –
långsamma män på jobbet
punkteringar är som detekterad frekvens. Om låst på fel frekvens som leder till felaktig dataprovtagning!
så frågan här är hur man provar en inkommande databitström korrekt?
en lösning som kommer att tänka direkt är att prova bitströmmen på samma frekvens som den överfördes.
för att göra det måste man generera klockan på mottagaren med samma frekvens som data överfördes. Men det är inte möjligt att generera två klockor med exakt samma frekvens genom att använda två olika klockgeneratorer även om de har samma specifikationer.
det är inte heller möjligt att generera en klocka med en exakt frekvens.
samtidigt kan en minutskillnad i samplingsfrekvens leda till ett bitfel som beskrivs i följande diagram:
som visas i ovanstående figur ovan samplas en enda bit två gånger på grund av en minutskillnad i TX-och RX-frekvens.
hur annars en klocka med samma frekvens av ‘TX klocka’ genereras?
detta kan göras genom att kontrollera kanterna på inkommande data bit ström.Men i denna process försvinner de initiala bitarna som vänjer sig för att upptäcka frekvensen. För att lösa detta överförs en viss uppsättning bitsekvenser innan de giltiga data överförs. Dessa sekvenser kallas som träningssekvenser. Träningssekvenser har mycket hög kantdensitet, så att mottagaren enkelt kan låsa på en frekvens genom att kontrollera de på varandra följande kanterna på tråden innan giltiga data börjar. Nedanstående figur visar en sekvens med hög kantdensitet.
frekvens från inkommande data bit ström har återställts. RX klocka kan nu genereras baserat på återvunnen frekvens.
ovanstående Återvunna frekvens är bra för ett idealiskt fall när det inte finns något ljud som införs i överföringen, dvs klockfrekvensen för TX-klockan är densamma hela tiden. Även data är en integrerad multipel av TX Klockperiod. Men det är inte sant i praktiken, eftersom det finns ett antal attribut som affectthe dataöverföring och snedvrida likformigheten av klockan.
nedanstående figur visar en realtidsklocka som har variationer i sin period.
det finns huvudsakligen två attribut som påverkar de flesta höghastighets seriell datakommunikation –
a) Jitter:
Jitter är ett skifte i kanterna på en periodisk signal. Detta bryter signalens periodicitet.
Jitter är en kortsiktig effekt. Det följer Gaussisk fördelning det är därför det genomsnittliga medelvärdet av jitter är noll, dvs den kumulativa effekten av jitter är null.
eftersom det finns ett skifte i kanterna på klocksignalen på grund av jitter är frågan vad som är den optimala positionen att prova lite?
en bit bör samplas i mitten. Det är den optimala positionen där maximal förskjutning i kanterna på vardera sidan (från vänster till höger eller höger till vänster) kan uppstå. Men om skiftet i en kant blir större än hälften av bitperioden kommer det att bli lite fel.
B) PPM (delar per miljon):
PPM är en felaktighet hos vissa komponenter (kvartskristall vid klockgenerator) i en krets som leder till generering av en signal med felaktig period. PPM bryter inte frekvensen av en signal. Som namnet säger är PPM en långsiktig effekt som betecknar felaktigheten i bitperioden över en miljon klockcykler. PPM är additiv eller subtraktiv i naturen.
Onlyif kumulativ effekt av jitter eller PPM i TX CLK blir mer än hälften av RX CLK då skulle det finnas fel på grund av över/under provtagning.
ett exempel nedan visar hur pågående variationer i inkommande dataström kan påverka samplingen av data. Samma exempel kommer att övervägas för att lösa problemen när vi går vidare.
RX CLK (FD) är frekvenslåst under frekvensdetektering. När den inkommande dataströmmen samplas på FD, som avbildas i den röda rutan, samplas en enda bit två gånger. Detta inträffar på grund av variationerna i den inkommande databitströmmen.
för att stöta på dessa variationer i frekvensen av TX CLK, den andra funktionen av CDR, fasjustering kommer i bild. Detta justerar RX CLK kanter.
II) Fasjustering
Fasjustering är en process för att matcha fasen hos en signal med en annan signal. Här matchar den fas av klockan som återvinns i frekvensdetektering med den inkommande databitströmmen.
Låt mig ge dig en analogi för fasjustering.
du kanske har sett en analog radio. Det finns två rattar nämligen grov melodi och finjustera på analog radio. När man vill lyssna på några ljudsignaler, används grov tune knopp för att låsa på en frekvens där signaler är hörbara men med vissa störningar. Här är grov melodi lika bra som frekvensdetektering och störningar är jitter och PPM. För att ta bort dessa störningar och göra rösten hörbar används finjusteringsknappen som justerar den förlåsta frekvensen lite här och där för att få en perfekt ljudsignal. Här är finjustering besläktad med fasjustering.
följande regler måste följas för Fasjustering:
- om en övergång detekteras på tråd gör du nivå av RX CLK(FD+PD) = 1.
- om RX CLK(FD) period är avslutad efter en posedge på RX CLK(FD+PD) och ingen någon övergång detekteras på tråd sedan hävda posedge av RX CLK(FD+PD).
här RX CLK(FD) är klockfrekvens låst under frekvensdetekteringsprocessen och RX CLK(FD+PD) är klockfrekvens under fasjusteringsprocessen.
det är dags att titta på arbetet med fasjustering. Låt oss ta samma exempel som tidigare ansågs för PPM jitter.
här klockperiod RX CLK (FD) = 10
klockor som inte har tilldelats en period i figuren har som standardperiod på 10.
i ovanstående figur har vi tidigare sett den sista biten samplades två gånger som ett resultat av kontinuerlig konstant variation (från 10 till 12) i TX CLK (kan bero på PPM).Men nu, som avbildad i röd ruta, samplas biten korrekt.
i den första TX-klockcykeln är perioden 10 tidsenhet som är låst efter frekvensdetektering och reflekteras också på RX CLK(FD+PD). Enligt regel 1 kommer kanten på data att göra nivån på RX CLK(FD+PD) till 1(betecknad med första prickade pilen). Då kommer negedge att hävdas på RX CLK(FD+PD) efter hälften av RX CLK (FD) – perioden. Då kommer posedge att hävdas på RX CLK(FD+PD) beroende på hälften av RX CLK (FD) period eller övergång på DATA beroende på vilket som kommer först (regelnummer 2).
på sjätte och sjunde TX-klockcykeln är databitarna 0 och 0, ingen övergång på rad. Så RX CLK(FD+PD) följer Regel nummer 2 för att ha en klockperiod av RX CLK(FD), avbildad i första cykeln av RX CLK(FD+PD) i röd ruta. Eftersom perioden för sjunde klockcykeln är 12 tidsenhet, övergång på DATA kommer att ske efter 2 tidsenhet än väntat. Nu RX CLK(FD+PD) redan hävdat posedge och börjar vänta på slutförandet av hälften av RX CLK(FD) period att hävda negedge på RX CLK(FD+PD). Men efter slutförandet av 2 tidsenhet, en övergång blir upptäckt som orsakar att starta om väntetiden för hälften av RX CLK(FD). Det leder till negedge av RX CLK (FD+PD) efter 7 tidsenhet istället för 5(dvs hälften av RX CLK (FD) period). Sedan posedge efter 5 tidsenhet(2: a cykeln av RX CLK (FD+PD) i röd ruta). På samma sätt justerar fasjustering klockperioden baserat på konstanta variationer i inkommande dataström.
nedanstående figur visar negativt jitterfall…
den tredje TX-klockperioden har varierats från 10 tidsenhet till 7 tidsenhet på grund av negativ jitter. Denna variation påträffas korrekt genom fasjustering som avbildas i röd ruta.
posedge på RX CLK(FD+PD) inträffar som övergång detekterad på DATA. Negedge på RX CLK(FD+PD) inträffar efter avslutad hälften av RX CLK (FD) period. Nu ses en övergång på DATA före slutförandet av hälften av RX CLK(FD) – perioden som orsakar en nivåövergång från 0 till 1 på RX CLK(FD+PD) (visas med 3: e böjda prickade pilen).
nedanstående figur visar positivt jitterfall…
femte TX-klockperioden har varierats från 10 tidsenhet till 13 tidsenhet på grund av positiv jitter. Denna variation påträffas korrekt genom fasjustering som avbildas i röd ruta.
RX CLK(FD+PD) följer regelnummer 2 för att ha en klockperiod av RX CLK(FD), avbildad i första cykeln av RX CLK(FD+PD) i röd ruta. Eftersom perioden för femte klockcykeln är 13, övergång på DATA kommer att ske efter 3 tidsenhet än väntat. Nu hävdar RX CLK(FD+PD) redan posedge och börjar vänta på att hälften av RX CLK(FD) – perioden ska slutföras för att hävda negedge på RX CLK(FD+PD). Men efter slutförandet av 3 tidsenhet, en övergång blir upptäckt som orsakar att starta om väntetiden för hälften av RX CLK(FD). Det leder till negedge av RX CLK (FD+PD) efter 8 tidsenhet istället för 5(dvs hälften av RX CLK (FD) period). Sedan posedge efter 5 tidsenhet(2: a cykeln av RX CLK (FD+PD) i röd ruta).
det handlade om arbetsprocessen för fasjustering.
en varning…!
det finns ett problem som inte omfattas av frekvensdetektering och fasjustering! Fasjustering fungerar vid övergång i inkommande dataström. Det är dock möjligt att ha lång identisk bitström som inte har någon övergång i den. I det här fallet om kumulativ förskjutning i en kant blir mer än hälften av återställd klockperiod (RX CLK(FD)) kommer det att leda till bitfel och prova data felaktigt.
för att lösa detta problem bearbetas bitsekvenser med olika typer av kodning innan de överförs på tråd. Detta begränsar antalet på varandra följande identiska bitar till en viss nivå. Detta minskar sannolikheten för att närma sig det kumulativa skiftet till mer än hälften av RX CLK(FD).
till exempel i USB 3.0 bearbetas databitarna med 8b10b-kodning innan de sänds på en tråd.
nedan figur beskriver beteendeblocksdiagrammet för CDR
inkommande dataström skickas som ingång till FD(frekvensdetektor), ED (kantdetektor) och en d flip flop. Frekvensdetektor genererar en frekvens baserad på träningssekvenser. Edge detector ger utgång när den upptäcker en övergång på inkommande data. Utgångarna från frekvensdetektor och kantdetektor passerade som ingång till klockgeneratorblock som genererar en klocka för att prova data. Denna genererade klocka och inkommande data skickas till d flip flop att regenerera bitströmmen.
nedanstående figur visar flödesschemat för klockgenerering efter fasjustering
RX CLK (FD+PD) initieras till antingen 1 eller 0. Efter initiering två parallella processer startar, vänta timer för hälften av RX CLK (FD) tid och kantdetektering på inkommande data. Beroende på vilket som slutförs först av de två parallella processerna kommer den andra processen att inaktiveras. Om timern timed out innan någon kant upptäcks kommer den att kontrollera för aktuell nivå av RX CLK (FD+PD). Om nivån på RX CLK (FD + PD) är 1, Gå till “RX CLK(FD+PD)=0” aktivitet och återställ RX CLK(FD+PD) till 0 annars gå till “RX CLK(FD+PD)=1″ aktivitet. Starta om båda parallella processerna igen och vänta på att någon av dem är klar. Om en edge upptäcks innan färdigställandet vänta timer sedan flytta till” RX CLK(FD+PD)=0 ” aktivitet och ställ in nivån på RX CLK(FD+PD) till 1.Starta om båda parallella processerna igen och vänta på att någon av dem är klar.
jag hoppas att den här artikeln kommer att hjälpa ingenjörer att modellera klockan och dataåterställning.
författare: Deepak Nagaria med Aditya Mittal