Guía para Principiantes de Recuperación de Datos de Reloj
Si es nuevo en el mundo del diseño y la verificación, ¡probablemente tenga muchas preguntas! Uno de ellos puede pertenecer a un elemento importante: la Recuperación de datos de Reloj. En este blog tratamos de aclarar este proceso.
El propósito de diseñar varios protocolos es transferir un conjunto de información (datos) de un lugar a otro. A menudo, la comunicación de datos en serie se utiliza para transmitir los datos a alta velocidad. En el extremo receptor, los datos transmitidos deben recuperarse sin perder su integridad con la información de sincronización acompañada. Este proceso se llama Reloj y recuperación de datos.
En este artículo, vamos a desarrollar los requisitos de CDR y cómo funciona, cómo abordar problemas como jitter y PPM en el modelado de CDR.
POR cierto, si está pasando mucho tiempo mirando formas de onda, tratando de tener sentido, nuestra herramienta de depuración de protocolos (PDA) podría ser interesante para usted. Por favor, eche un vistazo a una breve demostración de 3 minutos aquí (¿Sin auriculares? ¡No hay problema! Tiene subtítulos!).
Diferentes Técnicas de Comunicación de Datos:
Antes de comenzar en CDR, echaremos un vistazo a diferentes técnicas de comunicación de datos, que son:
1. Comunicación de datos en serie
En la comunicación en serie, los bits de datos se transmiten secuencialmente uno por uno.
2. Comunicación de datos en paralelo
En comunicación en paralelo, los bits de datos se accionan en varios cables simultáneamente.
Al observar las cifras anteriores, se puede juzgar fácilmente que la comunicación paralela será mucho más rápida que la comunicación en serie.
Pero entonces surge la pregunta, ¿por qué se prefiere la comunicación en serie a la comunicación paralela???
Esto se debe a que, en la práctica, la comunicación paralela no es más rápida que la comunicación en serie. Esto se debe a las siguientes razones:
a) Sesgar
La longitud de la ruta de desplazamiento para cada bit será diferente.Debido a esto, algunos bits pueden llegar antes o antes que otros, lo que puede corromper la información.
Para resolver esto, puede rellenar los bits. Pero esto sería en el costo de la velocidad, ya que reducirá la velocidad de cada enlace a la más lenta de todas.
b) Interferencia entre símbolos y conversación cruzada
Debido a varios enlaces paralelos, se introduce I y conversación cruzada en el sistema, que se vuelve más severa a medida que aumenta la longitud del enlace. Esto limita la longitud de una conexión.
c) Limitación del número de pines de E/S
La comunicación de datos en paralelo requiere muchos más pines de E/S de los que requiere la comunicación de datos en serie.
¿Qué es la Recuperación de datos de reloj?
Dado que la mayoría de las interfaces serie de alta velocidad no tienen reloj acompañante, el receptor necesita recuperar el reloj para muestrear los datos en las líneas serie.
Para recuperar el reloj de muestreo, el receptor necesita una referencia de un reloj de aproximadamente la misma frecuencia. Para generar el reloj recuperado, el receptor necesita alinear el reloj de referencia con las transiciones en el flujo de datos entrante. Esto se llama Recuperación de reloj.
El muestreo de esa señal de datos entrante con reloj recuperado para generar un flujo de bits se denomina Recuperación de datos. Juntos, esto se llama Recuperación de Datos de reloj, o CDR.
Se requiere CDR para recuperar datos del flujo de datos entrante en ausencia de cualquier señal de reloj acompañante, sin errores de bits debido a un muestreo excesivo/insuficiente.
¿Cómo Funciona la Recuperación de Datos de Reloj?
Las dos funciones principales para realizar CDR son: detección de frecuencia y alineación de fase.
I) Detección de frecuencia
Es un proceso de bloqueo de una frecuencia que se recupera del flujo de datos entrante. Esto se hace detectando la diferencia de tiempo entre dos bordes consecutivos en el flujo de datos.
Esta frecuencia bloqueada se utiliza para regenerar el flujo de bits de datos transmitidos.
Para que te familiarices más con la detección de frecuencia, déjame darte una analogía de puntuación en una oración. Es posible que haya observado que cada vez que una carretera se somete a trabajos de reparación, la empresa constructora coloca un mensaje en una pizarra para ralentizar el paso de los vehículos. Ese mensaje es algo como esto:
LENTO, HOMBRES EN EL TRABAJO
Ahora, si el mismo mensaje se escribe sin la puntuación adecuada, ¡puede implicar algo totalmente diferente! –
HOMBRES LENTOS EN EL TRABAJO
Las puntuaciones son como la frecuencia detectada. Si está bloqueado en una frecuencia incorrecta que conducirá a un muestreo de datos incorrecto!
Entonces, la pregunta aquí es ¿cómo muestrear correctamente un flujo de bits de datos entrantes?
Una solución que viene a la mente al instante es muestrear el flujo de bits en la misma frecuencia a la que se transmitió.
Para hacer eso, uno tiene que generar el reloj en el receptor que tiene la misma frecuencia en la que se transmitieron los datos. Pero no es posible generar dos relojes que tengan exactamente la misma frecuencia utilizando dos generadores de reloj diferentes, incluso si tienen las mismas especificaciones.
Tampoco es posible generar un reloj con una frecuencia precisa.
Al mismo tiempo, una diferencia de minutos en la frecuencia de muestreo puede conducir a un error de bits como se describe en el siguiente diagrama:
Como se muestra en la figura anterior, un solo bit se muestrea dos veces debido a una diferencia de minutos en la frecuencia TX y RX.
¿De qué otra manera se generará un reloj con la misma frecuencia de ‘TX clock’?
Esto se puede hacer comprobando los bordes del flujo de bits de datos entrantes.Sin embargo, en este proceso, los bits iniciales que se acostumbran a detectar la frecuencia se pierden. Para resolver esto, se transmite un conjunto particular de secuencias de bits antes de transmitir los datos válidos. Estas secuencias se llaman secuencias de entrenamiento. Las secuencias de entrenamiento poseen una densidad de bordes muy alta, de modo que el receptor puede bloquear fácilmente una frecuencia al verificar los bordes consecutivos en el cable antes del inicio de los datos válidos. La siguiente figura muestra una secuencia con alta densidad de bordes.
Se ha recuperado la frecuencia del flujo de bits de datos entrantes. El reloj RX ahora se puede generar en función de la frecuencia recuperada.
La frecuencia recuperada anterior está bien para un caso ideal cuando no hay ningún ruido introducido en la transmisión, es decir, la frecuencia de reloj para el reloj TX es la misma en todo. También los datos son un múltiplo integral del período de reloj TX. Sin embargo, eso no es cierto prácticamente, ya que hay una serie de atributos que afectan a la transmisión de datos y distorsionan la uniformidad del reloj.
La siguiente figura muestra un reloj en tiempo real que tiene variaciones en su período.
Hay principalmente dos atributos que afectan a la mayoría de las comunicaciones de datos en serie de alta velocidad:
A) Jitter:
Jitter es un cambio en los bordes de una señal periódica. Esto rompe la periodicidad de la señal.
El nerviosismo es un efecto a corto plazo. Sigue la distribución gaussiana por eso la media media de la fluctuación es cero, es decir, el efecto acumulativo de la fluctuación es nulo.
Dado que hay un cambio en los bordes de la señal del reloj debido a la fluctuación, la pregunta es ¿cuál es la posición óptima para muestrear un poco?
Un bit debe muestrearse en el centro. Es la posición óptima en la que se puede encontrar el desplazamiento máximo en los bordes a cada lado (de izquierda a derecha o de derecha a izquierda). Sin embargo, si el desplazamiento en un borde es mayor que la mitad del período de bits, entonces habrá un error de bits.
B) PPM (partes por millón):
PPM es una inexactitud de ciertos componentes (cristal de cuarzo en el caso del generador de reloj) en un circuito que conduce a la generación de una señal con un período inexacto. PPM no rompe la periodicidad de una señal. Como su nombre indica, PPM es un efecto a largo plazo que denota la inexactitud en el período de bits de más de un millón de ciclos de reloj. El PPM es de naturaleza aditiva o sustractiva.
Solo si el efecto acumulativo del jitter o PPM en TX CLK se convierte en más de la mitad del RX CLK, entonces habría errores debido al muestreo excesivo/insuficiente.
Un ejemplo a continuación muestra cómo las variaciones continuas en el flujo de datos entrantes pueden afectar al muestreo de datos. Este mismo ejemplo se considerará para resolver los problemas a medida que avancemos.
El RX CLK (FD) se bloquea durante la detección de frecuencia. A medida que el flujo de datos entrante se muestrea en FD, como se muestra en el cuadro rojo, un solo bit se muestrea dos veces. Esto ocurre debido a las variaciones en el flujo de bits de datos entrantes.
Para encontrar estas variaciones en la frecuencia de TX CLK, la segunda función de CDR, Alineación de fase viene en la imagen. Esto reajusta los bordes de RX CLK.
II) Alineación de fase
La alineación de fase es un proceso de coincidencia de la fase de una señal con otra señal. Aquí está haciendo coincidir la fase del reloj recuperada en la detección de frecuencia con el flujo de bits de datos entrantes.
Permítanme darles una analogía para la alineación de fases.
Es posible que haya visto una radio analógica. Hay dos botones, a saber, afinación gruesa y afinación fina en la radio analógica. Cuando uno quiere escuchar cualquier señal audible, el botón de sintonía gruesa se usa para bloquear una frecuencia donde las señales son audibles pero con algunas perturbaciones. Aquí el tono grueso es tan bueno como la detección de frecuencia y las perturbaciones son jitter y PPM. Para eliminar estas perturbaciones y hacer que la voz sea audible, se utiliza la perilla de ajuste fino que ajusta la frecuencia prebloqueada un poco aquí y allá para obtener señales audibles perfectas. Aquí el ajuste fino es similar a la alineación de fase.
Se deben seguir las siguientes reglas para la Alineación de fases:
- Si se detecta una transición en el cable, haga un nivel de RX CLK ( FD+PD) = 1.
- Si el período RX CLK(FD) se completa después de un posedge en RX CLK(FD+PD) y no se detecta ninguna transición en el cable, entonces afirme el posedge de RX CLK(FD+PD).
Aquí RX CLK (FD) es la frecuencia de reloj bloqueada durante el proceso de detección de frecuencia y RX CLK(FD+PD) es la frecuencia de reloj durante el proceso de alineación de fase.
Es hora de observar el funcionamiento de la alineación de fases. Tomemos el mismo ejemplo considerado anteriormente para el jitter de PPM.
Aquí período de reloj RX CLK ( FD) = 10
Los relojes que no han sido asignados con un período en la figura tienen por defecto un período de 10.
En la figura anterior hemos visto anteriormente que el último bit se muestreaba dos veces como resultado de una variación constante continua (de 10 a 12) en TX CLK (puede deberse a PPM).Sin embargo, ahora, como se muestra en el cuadro rojo, el bit se muestrea correctamente.
En el primer ciclo de reloj TX, el período es 10 unidades de tiempo que se bloquean después de la detección de frecuencia y también se reflejan en RX CLK(FD+PD). De acuerdo con la regla 1, el borde en los datos hará que el nivel de RX CLK(FD+PD) sea 1(indicado por la primera flecha punteada). Luego negedge se afirmará en RX CLK(FD+PD) después de la mitad del período RX CLK (FD). Luego, el posedge se afirmará en RX CLK(FD+PD) dependiendo de la mitad del período de RX CLK (FD) o la transición en los DATOS, lo que ocurra primero (regla número 2).
En el sexto y séptimo ciclo de reloj TX, los bits de datos son 0 y 0, sin transición en línea. Por lo tanto, RX CLK(FD+PD) seguirá la regla número 2 para tener un período de reloj de RX CLK(FD), representado en el primer ciclo de RX CLK(FD+PD) en caja roja. Dado que el período para el séptimo ciclo de reloj es de 12 unidades de tiempo, la transición en los DATOS se producirá después de 2 unidades de tiempo de lo esperado. Ahora RX CLK (FD + PD) ya afirmó el posedge y comienza a esperar la finalización de la mitad del período RX CLK(FD) para afirmar negedge en RX CLK(FD+PD). Sin embargo, después de completar 2 unidades de tiempo, se detecta una transición que hace que se reinicie el tiempo de espera de la mitad de RX CLK(FD). Eso lleva a negedge de RX CLK (FD+PD) después de 7 unidades de tiempo en lugar de 5(es decir, la mitad del período RX CLK (FD)). Luego posedge después de 5 unidades de tiempo (2º ciclo de RX CLK (FD+PD) en caja roja). Del mismo modo, la alineación de fases ajusta el período del reloj en función de las variaciones constantes en el flujo de datos entrante.
La siguiente figura muestra un caso de fluctuación negativa…
El tercer período de reloj TX se ha variado de 10 unidades de tiempo a 7 unidades de tiempo debido a la fluctuación negativa. Esta variación se encontró correctamente por alineación de fase como se muestra en el cuadro rojo.
El posedge en RX CLK (FD+PD) se produce como transición detectada en los DATOS. Negedge en RX CLK(FD+PD) se produce después de completar la mitad del período de RX CLK (FD). Ahora se ve una transición en los DATOS antes de completar la mitad del período RX CLK(FD), lo que provoca una transición de nivel de 0 a 1 en RX CLK(FD+PD) (se muestra mediante la 3a flecha de puntos curvada).
La siguiente figura muestra un caso de fluctuación positiva…
El quinto período de reloj TX se ha variado de 10 unidades de tiempo a 13 unidades de tiempo debido a la fluctuación positiva. Esta variación se encontró correctamente por alineación de fase como se muestra en el cuadro rojo.
RX CLK(FD+PD) seguirá la regla número 2 para tener un período de reloj de RX CLK(FD), representado en el primer ciclo de RX CLK (FD+PD) en caja roja. Dado que el período para el quinto ciclo de reloj es 13, la transición en los DATOS se producirá después de 3 unidades de tiempo de lo esperado. Ahora RX CLK (FD + PD) ya afirma el posedge y comienza a esperar la finalización de la mitad del período RX CLK(FD) para afirmar negedge en RX CLK(FD+PD). Sin embargo, después de completar la unidad de tiempo 3, se detecta una transición que hace que se reinicie el tiempo de espera de la mitad de RX CLK(FD). Eso lleva a negedge de RX CLK (FD+PD) después de 8 unidades de tiempo en lugar de 5(es decir, la mitad del período RX CLK (FD)). Luego posedge después de 5 unidades de tiempo (2º ciclo de RX CLK (FD+PD) en caja roja).
Se trataba de un proceso de trabajo de alineación de fases.
Una advertencia…!
¡Hay un problema que no está cubierto por la detección de frecuencia y la alineación de fase! La alineación de fases funciona en la transición en el flujo de datos entrante. Sin embargo, es posible tener un flujo de bits largo idéntico que no tenga ninguna transición en él. En este caso, si el desplazamiento acumulado en una arista se convierte en más de la mitad del período de reloj recuperado (RX CLK(FD)), provocará errores de bits y muestreará los datos incorrectamente.
Para resolver este problema, las secuencias de bits se procesan con varios tipos de codificación antes de transmitirlas por cable. Esto limita el número de bits idénticos consecutivos a un cierto nivel. Esto reduce la probabilidad de acercarse al desplazamiento acumulativo a más de la mitad de RX CLK(FD).
Por ejemplo, en USB 3.0 los bits de datos se procesan con codificación 8B10B antes de transmitirlos por cable.
La siguiente figura describe el diagrama de bloques de comportamiento de CDR
Flujo de datos entrantes pasado como entrada a FD(detector de frecuencia), ED (detector de bordes) y un flip flop D. El detector de frecuencia genera una frecuencia basada en secuencias de entrenamiento. El detector de bordes da salida cada vez que detecta una transición en los datos entrantes. Las salidas del detector de frecuencia y del detector de bordes pasaron como entrada al bloque generador de reloj que genera un reloj para muestrear los datos. Este reloj generado y los datos entrantes pasados a D flip flop para regenerar el flujo de bits.
La siguiente figura muestra el diagrama de flujo para la generación de relojes después de la alineación de fases
RX CLK (FD + PD) se inicializará a 1 o 0. Después de la inicialización, se iniciarán dos procesos paralelos, el temporizador de espera para la mitad del tiempo RX CLK(FD) y la detección de bordes en los datos entrantes. El que se complete primero de los dos procesos paralelos desactivará el otro proceso. Si el temporizador se agota antes de que se detecte cualquier borde, comprobará el nivel actual de RX CLK(FD+PD). Si el nivel de RX CLK(FD+PD) es 1, vaya a la actividad “RX CLK(FD+PD)=0” y restablezca RX CLK(FD+PD) a 0, de lo contrario vaya a la actividad “RX CLK (FD+PD)=1”. Reinicie los dos procesos paralelos de nuevo y espere a que se complete cualquiera de ellos. Si se detecta un borde antes de completar el temporizador de espera, pase a la actividad “RX CLK(FD+PD)=0” y establezca el nivel de RX CLK(FD+PD) en 1.Reinicie los dos procesos paralelos de nuevo y espere a que se complete cualquiera de ellos.
Espero que este artículo ayude a los ingenieros a modelar el reloj y la recuperación de datos.
Autor: Deepak Nagaria con Aditya Mittal