¿Cómo se procesan las señales seriales de alta velocidad?

5

Los enlaces serie de alta velocidad como Gb ethernet, PCIe, Firewire, etc. admiten velocidades de bits que sugieren frecuencias de señalización muy por encima de la velocidad de reloj típica de los chips típicos. Me pregunto cómo se procesan estas señales.

Ejemplo: SATA admite hasta 6 Gb / s en un solo par de líneas de señalización diferencial. Esto sugiere una frecuencia de señalización del orden de 6 GHz, ¿verdad?

Mientras que los procesadores modernos están cerca de esto, no creo que los chips SATA en sí mismos tengan una velocidad tan alta. - ¿Alguien puede ilustrarme sobre los trucos de diseño utilizados para procesar tales señales de alta frecuencia? ¿Se procesan varios bits dentro de cada ciclo de reloj? Si es así, ¿cómo?

    
pregunta ARF

2 respuestas

8

Si bien es difícil que un chip completo se ejecute a frecuencias muy altas (por ejemplo, 6 GHz), puede ejecutar un circuito muy pequeño a frecuencias altas con relativa facilidad. El truco es que tienes el circuito mínimo a 6 GHz.

Para hacer esto, los datos paralelos desde el interior del chip de envío se envían a un serializador, que codifica los datos para el balance de DC y la sincronización (códigos 8b / 10b). Los datos se introducen en un registro de desplazamiento, y el registro de desplazamiento se sincroniza a 6 GHz. En el extremo receptor, el reloj debe recuperarse de la señal enviada a través del cable con un PLL, y el PLL recrea el reloj de 6 GHz que se utilizó para enviar los datos. Usando este reloj, un registro de desplazamiento cambia los datos de la línea serie y luego los datos se decodifican. En este punto, los datos están listos para su uso con la lógica interna del chip. Este proceso a veces se denomina SerDes o SERialize - DESerialize.

Para mostrar cómo puede funcionar esto con un chip que tiene una frecuencia de reloj modesta, simplifiquemos el sistema y asumamos que necesitamos llenar un canal de 6 Gbps con 6 * 10 ^ 9 bits de datos por segundo. Si tenemos un tamaño de palabra de 32 bits en nuestro dispositivo, podríamos cargar nuestro serializador (o descargar nuestro deserializador). Si llenamos un búfer con 32 bits de datos en cada ciclo de reloj, entonces debemos llenarlo a una velocidad de (6,000 Mbps / 32 bits = 187.5 MHz) 187,5 MHz. De nuevo, esto descuida cualquier sobrecarga de protocolo, por lo que en la práctica esto podría ser menor. Esta es una frecuencia de reloj muy razonable para un chip de alto rendimiento (como un transciever SATA o PCIe). Puede operar a una frecuencia de reloj más alta para aumentar la sobrecarga, u operar a una frecuencia más baja utilizando un bus de datos más amplio (64 bits, 128 bits en lugar de 32 bits).

    
respondido por el W5VO
5

Serial ATA utiliza una señal LVDS que se ejecuta a cualquier velocidad de bits deseada (1,5, 3 o 6 Gbps). De lo que recuerdo de la especificación SATA es un par LVDS acoplado de CA (y wikipedia lo confirma).

Para lograr este tipo de velocidades de datos, se emplea un PLL para generar el reloj deseado / requerido y se utiliza un registro de desplazamiento en serie para transmitir los datos a través del cable. Del mismo modo, en el receptor se utiliza un registro de desplazamiento para convertir este flujo de bits en palabras direccionables.

Cuando se diseñan tableros de circuitos para transportar las señales SATA, se debe prestar mucha atención al enrutar las señales. Una de las preocupaciones de mantenimiento es garantizar la coincidencia de impedancia y longitudes iguales para las trazas.

Editar

No mencioné que la falta de énfasis y la ecualización se emplean a menudo para lograr las comunicaciones en serie de alta velocidad de datos. Estas mismas técnicas a menudo se emplean con FPGA que admiten interfaces seriales de alta velocidad de datos, como RocketIO y PCI Express.

Editar 2

Como mng señala los dos bloques lógicos (transmitir y recibir) están cubiertos por el término SerDes (serializador, deserializador ). Uno de estos bloques (serializador) toma una fuente de datos paralela (por ejemplo, un DWORD de 32 bits) y la desplaza un bit a la vez a través del cable. Este proceso ocurre de forma asíncrona con el reloj principal de la CPU (ya que no se utiliza para esto). El reloj utilizado para el proceso de serialización se ejecuta a la velocidad de datos del bus serie (por ejemplo, 6GHz para SATA a 6GBps). Este es un concepto similar (aunque con velocidades de datos completamente diferentes, con el bus más lento que la CPU en la mayoría de los casos) que el que se usa en SPI e I2C. Además, como parte del proceso de serialización, a menudo se emplea relleno de bits . Esto se hace para garantizar que aparezca un número igual de bits altos y bajos en la línea, y para ayudar en el proceso de recuperación del reloj.

    
respondido por el tallganglyguy

Lea otras preguntas en las etiquetas