Guida per principianti a Clock Data Recovery

Se siete nuovi al mondo del design e la verifica, probabilmente avete un sacco di domande! Uno di questi può riguardare un elemento importante: il recupero dei dati dell’orologio. In questo blog, cerchiamo di de-mistificare questo processo.

Lo scopo della progettazione di vari protocolli è quello di trasferire un insieme di informazioni (dati) da un luogo all’altro. Spesso, la comunicazione seriale dei dati viene utilizzata per trasmettere i dati ad alta velocità. Alla fine del ricevitore, i dati trasmessi devono essere recuperati senza perdere la loro integrità con le informazioni di temporizzazione accompagnate. Questo processo è chiamato Orologio e recupero dati.

In questo articolo, ci accingiamo a elaborare i requisiti di CDR e come funziona, come affrontare con problemi come jitter e PPM nella modellazione del CDR.

A proposito, se stai spendendo molto tempo a fissare le forme d’onda, cercando di avere un senso, il nostro protocol debug tool (PDA) potrebbe essere interessante per te. Si prega di dare un’occhiata a una breve demo di 3 minuti qui (senza auricolari? Nessun problema! Ha i sottotitoli!).

Diverse tecniche di comunicazione dei dati:

Prima di iniziare su CDR, avremo uno sguardo a diverse tecniche di comunicazione dei dati, che sono:

1. Comunicazione dati seriale

Nella comunicazione seriale i bit di dati vengono trasmessi in sequenza uno per uno.

serial-data-communication

2. Comunicazione dati parallela

In bit di dati di comunicazione parallela sono guidati su più fili contemporaneamente.

parallel-transmission

Osservando le cifre di cui sopra, si può facilmente giudicare che la comunicazione parallela sarà molto più veloce della comunicazione seriale.

Ma allora sorge la domanda, perché la comunicazione seriale è preferita alla comunicazione parallela???

Questo perché in pratica, la comunicazione parallela non è più veloce della comunicazione seriale. Ciò è dovuto ai seguenti motivi:

a) Skew

La lunghezza del percorso di viaggio per ogni bit sarà diversa.A causa di ciò alcuni bit possono arrivare presto o prima di altri che possono corrompere le informazioni.

parallel-transmission-skew

Per risolvere questo è possibile pad i bit. Ma questo sarebbe sul costo della velocità in quanto ridurrà la velocità di ogni collegamento al più lento di tutti.

b) Interferenza tra simboli e Cross talk

A causa di diversi collegamenti paralleli ISI e Cross talk viene introdotto nel sistema che diventa più grave all’aumentare della lunghezza del collegamento. Quindi questo limita la lunghezza di una connessione.

c) Limitazione di I / O pin count

Comunicazione dati parallela richiede più I / O pin di quello che è richiesto dalla comunicazione dati seriale.

Che cosa è il recupero di dati dell’orologio?

Poiché la maggior parte delle interfacce seriali ad alta velocità non hanno alcun orologio di accompagnamento, il ricevitore deve recuperare l’orologio per campionare i dati sulle linee seriali.

Per recuperare l’orologio di campionamento, ricevitore ha bisogno di un riferimento un orologio di circa stessa frequenza. Per generare l’orologio recuperato, il ricevitore deve allineare in fase l’orologio di riferimento alle transizioni sul flusso di dati in entrata. Questo è chiamato come recupero dell’orologio.

Campionamento di quel segnale di dati in entrata con orologio recuperato per generare un flusso di bit è chiamato come recupero dati. Insieme, questo è chiamato Clock Data Recovery, o CDR.

CDR è necessario per recuperare i dati dal flusso di dati in entrata in assenza di qualsiasi segnale di clock di accompagnamento, senza errori di bit a causa di over/under campionamento.

Come funziona il recupero dati dell’orologio?

Le due funzioni principali per l’esecuzione di CDR sono – rilevamento della frequenza e allineamento di fase.

I) Rilevamento della frequenza

È un processo di blocco su una frequenza che viene recuperata dal flusso di dati in entrata. Questo viene fatto rilevando la differenza di tempo tra due bordi consecutivi sul flusso di dati.

Questa frequenza bloccata viene utilizzata per rigenerare il flusso di bit di dati trasmessi.

Per renderti più familiare con il rilevamento della frequenza, lascia che ti dia un’analogia della punteggiatura in una frase. Potreste aver osservato che ogni volta che una strada subisce lavori di riparazione la società di costruzioni mette un messaggio di visualizzazione su una scheda per rallentare i veicoli che passano. Quel messaggio è qualcosa di simile –

LENTO, UOMINI AL LAVORO

Ora se lo stesso messaggio è scritto senza una corretta punteggiatura, potrebbe implicare qualcosa di totalmente diverso! –

UOMINI LENTI AL LAVORO

Le punteggiature sono come la frequenza rilevata. Se bloccato su una frequenza sbagliata che porterà al campionamento dei dati non corretto!

frequency-detection

Quindi la domanda qui è come campionare correttamente un flusso di bit di dati in entrata?

Una soluzione che viene in mente immediatamente è quella di campionare il flusso di bit sulla stessa frequenza alla quale è stato trasmesso.

Per farlo si deve generare l’orologio sul ricevitore avente la stessa frequenza su cui sono stati trasmessi i dati. Ma non è possibile generare due orologi con la stessa identica frequenza utilizzando due diversi generatori di clock anche se hanno le stesse specifiche.

Inoltre non è possibile generare un orologio con una frequenza precisa.

Allo stesso tempo, una differenza di frequenza di campionamento minuto può portare a un errore di bit come descritto nel seguente diagramma:

frequency-detection-minor-difference

Come mostrato nella figura sopra sopra, un singolo bit viene campionato due volte a causa di una differenza minima nella frequenza TX e RX.

In quale altro modo viene generato un orologio con la stessa frequenza di “TX clock”?

Questo può essere fatto controllando i bordi sul flusso di bit di dati in entrata.Tuttavia in questo processo, i bit iniziali che si abituano a rilevare la frequenza si perdono. Per risolvere questo problema, un particolare insieme di sequenze di bit viene trasmesso prima di trasmettere i dati validi. Queste sequenze sono chiamate sequenze di allenamento. Le sequenze di allenamento possiedono una densità di bordi molto elevata, in modo che il ricevitore possa facilmente bloccare una frequenza controllando i bordi consecutivi sul filo prima dell’inizio dei dati validi. Sotto figura mostra una sequenza con alta densità di bordo.

frequency-sequence-high-density

Frequenza dal flusso di bit di dati in entrata è stato recuperato. L’orologio RX può ora essere generato in base alla frequenza recuperata.

La frequenza sopra recuperata va bene per un caso ideale in cui non vi è alcun rumore introdotto nella trasmissione, ovvero la frequenza di clock per l’orologio TX è la stessa in tutto. Anche i dati sono un multiplo integrale del periodo di clock TX. Tuttavia questo non è vero praticamente, in quanto vi sono un certo numero di attributi che influenzano la trasmissione dei dati e distorcono l’uniformità dell’orologio.

Sotto figura raffigura un orologio in tempo reale che ha variazioni nel suo periodo.

variable-period-clock

Ci sono principalmente due attributi che influenzano la maggior parte delle comunicazioni di dati seriali ad alta velocità-

A) Jitter:

Jitter è uno spostamento nei bordi di un segnale periodico. Questo rompe la periodicità del segnale.

periodic-signal-jitter

Il jitter è un effetto a breve termine. Segue la distribuzione gaussiana, ecco perché la media media del jitter è zero, cioè l’effetto cumulativo del jitter è nullo.

Frequency-Jitter-Distribution

Poiché c’è uno spostamento dei bordi del segnale di clock a causa del jitter, la domanda è qual è la posizione ottimale per campionare un po’?

Un bit dovrebbe essere campionato al centro. È la posizione ottimale in cui si può incontrare il massimo spostamento dei bordi su entrambi i lati (da sinistra a destra o da destra a sinistra). Tuttavia, se lo spostamento in un bordo diventa maggiore della metà del periodo di bit, ci sarà un errore di bit.

frequency-jitter-distribution

B) PPM (parti per milione):

PPM è un’imprecisione di alcuni componenti (cristallo di quarzo in caso di generatore di clock) in un circuito che porta alla generazione di un segnale con periodo impreciso. PPM non interrompe la periodicità di un segnale. Come afferma il nome, PPM è un effetto a lungo termine che denota l’inesattezza nel periodo di bit oltre un milione di cicli di clock. PPM è additivo o sottrattivo in natura.

jitter-free-range-frequency

Onlyif effetto cumulativo di jitter o PPM in TX CLK diventa più della metà di RX CLK allora ci sarebbero errori a causa di sopra/sotto campionamento.

Un esempio seguente mostra come le variazioni in corso nel flusso di dati in entrata possono influenzare il campionamento dei dati. Questo stesso esempio sarà considerato per risolvere i problemi man mano che progrediamo ulteriormente.

clock-frequency-ppm-effect

RX CLK (FD) è frequenza bloccato durante il rilevamento della frequenza. Mentre il flusso di dati in arrivo viene campionato su FD, come illustrato nella casella rossa, un singolo bit viene campionato due volte. Ciò si verifica a causa delle variazioni nel flusso di bit di dati in entrata.

Per incontrare queste variazioni di frequenza di TX CLK, la seconda funzione di CDR, allineamento di fase viene in foto. Questo regola i bordi RX CLK.

II) Allineamento di fase

L’allineamento di fase è un processo di corrispondenza della fase di un segnale con un altro segnale. Qui corrisponde alla fase di clock recuperata nel rilevamento della frequenza con il flusso di bit di dati in entrata.

Lascia che ti dia un’analogia per l’allineamento di fase.

Potresti aver visto una radio analogica. Ci sono due manopole e cioè grossolana tune e fine tune su radio analogica. Quando si vuole ascoltare qualsiasi segnale acustico, manopola coarse tune viene utilizzato per bloccare su una frequenza in cui i segnali sono udibili, ma con alcuni disturbi. Qui la melodia grossolana è buona quanto il rilevamento della frequenza e i disturbi sono jitter e PPM. Per rimuovere questi disturbi e rendere la voce udibile, manopola fine tune viene utilizzato che regola la frequenza pre bloccato un po ‘ qua e là per ottenere un perfetto segnali acustici. Qui la messa a punto è simile all’allineamento di fase.

phase-alignment-radio

Le seguenti regole devono essere seguite per l’allineamento di fase:

  1. Se viene rilevata una transizione sul filo, fare il livello di RX CLK(FD+PD) = 1.
  2. Se RX CLK(FD) periodo è completato dopo un posedge su RX CLK(FD+PD) e nessuna transizione viene rilevato sul filo poi affermare posedge di RX CLK (FD+PD).

Qui RX CLK (FD) è frequenza di clock bloccato durante il processo di rilevamento della frequenza e RX CLK(FD+PD) è frequenza di clock durante il processo di allineamento di fase.

È tempo di esaminare il funzionamento dell’allineamento di fase. Prendiamo lo stesso esempio considerato in precedenza per il jitter PPM.

ppm-jitter-phase-alignment

Qui clock period RX CLK (FD) = 10

Gli orologi a cui non è stato assegnato un periodo nella figura hanno per impostazione predefinita un periodo di 10.

Nella figura sopra abbiamo visto in precedenza che l’ultimo bit veniva campionato due volte a causa della variazione costante continua (da 10 a 12) in TX CLK (può essere a causa di PPM).Tuttavia ora, come illustrato nella casella rossa, il bit viene campionato correttamente.

Nel primo ciclo di clock TX, il periodo è di 10 unità di tempo che viene bloccata dopo il rilevamento della frequenza e riflessa anche su RX CLK (FD + PD). Secondo la regola 1 il bordo sui dati renderà il livello di RX CLK (FD + PD)a 1 (indicato dalla prima freccia tratteggiata). Quindi negedge verrà affermato su RX CLK (FD+PD) dopo metà del periodo RX CLK (FD). Quindi posedge verrà affermato su RX CLK (FD+PD) a seconda della metà del periodo RX CLK (FD) o della transizione sui DATI a seconda di quale viene prima (regola numero 2).

Al sesto e settimo ciclo di clock TX i bit di DATI sono 0 e 0, nessuna transizione on line. Quindi RX CLK(FD+PD) seguirà la regola numero 2 per avere un periodo di clock di RX CLK(FD), raffigurato nel primo ciclo di RX CLK (FD + PD) in scatola rossa. Poiché il periodo per il settimo ciclo di clock è 12 unità di tempo, la transizione sui DATI avverrà dopo 2 unità di tempo del previsto. Ora RX CLK (FD + PD) ha già affermato il posedge e inizia ad attendere il completamento della metà del periodo RX CLK(FD) per affermare il negedge su RX CLK(FD+PD). Tuttavia, dopo il completamento di 2 unità di tempo, viene rilevata una transizione che fa riavviare il tempo di attesa della metà di RX CLK(FD). Ciò porta a negedge di RX CLK (FD+PD) dopo 7 unità di tempo invece di 5 (cioè metà del periodo RX CLK (FD)). Poi posedge dopo 5 unità di tempo(2 ° ciclo di RX CLK (FD+PD) in scatola rossa). Allo stesso modo l’allineamento di fase regola il periodo di clock in base alle variazioni costanti nel flusso di dati in entrata.

Sotto figura raffigura caso jitter negativo…

negative-jitter-case

Il terzo periodo di clock TX è stato variato da 10 unità di tempo a 7 unità di tempo a causa di jitter negativo. Questa variazione riscontrata correttamente dall’allineamento di fase come illustrato nella casella rossa.

Il posedge su RX CLK (FD+PD) si verifica come transizione rilevata sui DATI. Negedge su RX CLK (FD+PD) si verifica dopo il completamento della metà del periodo RX CLK (FD). Ora una transizione è vista sui DATI prima del completamento della metà del periodo RX CLK (FD) che causa una transizione di livello da 0 a 1 su RX CLK(FD+PD) (mostrato dalla 3a freccia tratteggiata curva).

Sotto figura raffigura caso jitter positivo…

positive-jitter-case

Quinto periodo di clock TX è stato variato da 10 unità di tempo a 13 unità di tempo a causa di jitter positivo. Questa variazione riscontrata correttamente dall’allineamento di fase come illustrato nella casella rossa.

RX CLK(FD+PD) seguirà la regola numero 2 per avere un periodo di clock di RX CLK(FD), raffigurato nel primo ciclo di RX CLK (FD + PD) in scatola rossa. Poiché il periodo per il quinto ciclo di clock è 13, la transizione sui DATI avverrà dopo 3 unità di tempo del previsto. Ora RX CLK(FD+PD) afferma già il posedge e inizia ad attendere il completamento della metà del periodo RX CLK(FD) per affermare il negedge su RX CLK (FD+PD). Tuttavia, dopo il completamento di 3 unità di tempo, viene rilevata una transizione che fa riavviare il tempo di attesa della metà di RX CLK(FD). Ciò porta a negedge di RX CLK (FD+PD) dopo 8 unità di tempo invece di 5 (cioè metà del periodo RX CLK (FD)). Poi posedge dopo 5 unità di tempo(2 ° ciclo di RX CLK (FD+PD) in scatola rossa).

Si trattava di lavorare sul processo di allineamento delle fasi.

Un avvertimento…!

C’è un problema che non è coperto dal rilevamento della frequenza e dall’allineamento di fase! L’allineamento di fase funziona sulla transizione nel flusso di dati in entrata. Tuttavia è possibile avere un flusso di bit identico a lungo che non ha alcuna transizione in esso. In questo caso, se lo spostamento cumulativo in un bordo diventa più della metà del periodo di clock recuperato (RX CLK(FD)), ciò porterà a errori di bit e campionerà i dati in modo errato.

Per risolvere questo problema, le sequenze di bit vengono elaborate con vari tipi di codifica prima di trasmetterle su filo. Questo limita il numero di bit identici consecutivi a un certo livello. Ciò riduce la probabilità di avvicinarsi allo spostamento cumulativo a più della metà di RX CLK (FD).

Ad esempio, in USB 3.0 i bit di dati vengono elaborati con codifica 8B10B prima di trasmetterli su un filo.

Sotto figura descrive il diagramma a blocchi comportamentale di CDR

behavioural-block-diagram-cdr

Flusso di dati in entrata passato come input per FD (frequency detector), ED(edge detector) e a D flip flop. Frequency detector genera una frequenza basata su sequenze di allenamento. Edge detector fornisce l’output ogni volta che rileva una transizione sui dati in arrivo. Le uscite del rilevatore di frequenza e del rilevatore di bordo sono passate come input al blocco generatore di clock che genera un orologio per campionare i dati. Questo orologio generato e dati in entrata passati a D flip flop per rigenerare il flusso di bit.

Sotto figura raffigura il diagramma di flusso per la generazione di clock dopo l’allineamento di fase

clock-generation-post-phase-alignment

RX CLK (FD + PD)verrà inizializzato su 1 o 0. Dopo l’inizializzazione due processi paralleli inizieranno, attendere timer per la metà del tempo RX CLK (FD) e il rilevamento dei bordi sui dati in arrivo. Qualunque sia completato prima dei due processi paralleli disabiliterà l’altro processo. Se il timer è scaduto prima che venga rilevato un bordo, controllerà il livello corrente di RX CLK (FD+PD). Se il livello di RX CLK(FD+PD) è 1, vai su “RX CLK(FD+PD)=0” attività e ripristina RX CLK(FD+PD) su 0 altro vai su “RX CLK (FD + PD)=1″ attività. Riavvia nuovamente entrambi i processi paralleli e attendi il completamento di uno dei due. Se viene rilevato un bordo prima del completamento attendere timer quindi passare a” RX CLK(FD+PD)=0 ” attività e impostare il livello di RX CLK (FD + PD) a 1.Riavvia nuovamente entrambi i processi paralleli e attendi il completamento di uno dei due.

Spero che questo articolo aiuterà gli ingegneri a modellare l’orologio e il recupero dei dati.

Autore: Deepak Nagaria con Aditya Mittal

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.