01signal.com

Transceptores multigigabit: una visión general

Esta página es la primera de una serie de páginas dedicada al transceptor multigigabit (MGT, del inglés Multi-Gigabit Transceiver), además de una visión general de lo que se tratará en esta serie.

Introducción

Los transceptores multigigabit (MGT) desempeñan un papel importante en la comunicación entre distintas partes de un ordenador o de un sistema electrónico. Varias interfaces muy conocidas dentro de un ordenador se basan en MGT, por ejemplo PCIe y SATA. Otras interfaces muy conocidas se utilizan para la comunicación entre un ordenador y sus periféricos, por ejemplo Gigabit Ethernet, SuperSpeed USB, Thunderbolt y DisplayPort.

Los MGT también se utilizan para conectar componentes electrónicos entre sí, por ejemplo dos FPGA. En ese caso, la comunicación suele basarse en uno de los protocolos menos conocidos, o incluso en un protocolo no estándar. Pero también es posible usar MGT para conectar una FPGA con otro tipo de componente, o bien conectar entre sí otros componentes, por ejemplo con Xillyp2p.

Por ejemplo, los transceptores de fibra óptica suelen ser módulos estándar (sobre todo en formato SFP+) que se conectan directamente a los MGT, como se muestra en este diseño de ejemplo. Algunos ADC/DAC de alta velocidad también utilizan MGT para transferir los datos de muestra (normalmente basado en el protocolo JESD204). Algunos protocolos están pensados para transferir datos de vídeo (por ejemplo, algunos de los protocolos de MIPI para la capa física).

Aunque los MGT se usan a menudo en protocolos bidireccionales, cada MGT consta en realidad de dos partes independientes: un transmisor y un receptor. Por eso es posible utilizar un MGT para una transmisión unidireccional apagando una de las dos partes. En la mayoría de los MGT de FPGA, además, se pueden configurar los parámetros del transmisor y del receptor de manera independiente.

En resumen, los MGT se emplean en muchas aplicaciones. A menudo el nombre de la interfaz no revela que se estén usando MGT (por ejemplo, Gigabit Ethernet, SATA o DisplayPort), pero la capa física está formada por MGT.

Conviene mencionar que Xilinx (y posteriormente AMD) da nombres distintos a sus MGT: RocketIO, GTX, GTH, GTY, GTP, GTM, etc. Cada nombre corresponde a una implementación de hardware específica del transceptor, de modo que el nombre indica algo sobre las velocidades de datos y otras prestaciones del transceptor.

Esta serie de páginas explica los fundamentos de los MGT y algunos términos técnicos de uso frecuente en relación con ellos. La idea es facilitar la lectura de la documentación técnica y, en particular, que puedas reconocer qué parámetros son relevantes para tu proyecto y cuáles no.

¿Qué es un MGT?

Es importante darse cuenta de que, tras toda la complejidad, un MGT no es más que un SERDES: un bloque electrónico que recibe y transmite datos. La interfaz eléctrica del MGT con el mundo exterior consiste en dos cables que forman un par diferencial. Cuando la tensión en el primer cable (el positivo, o de signo más) es mayor que la tensión en el otro cable (el negativo, o de signo menos), el estado físico corresponde a un ‘1’. En caso contrario, es un ‘0’. Es el mismo principio que en las interfaces diferenciales, como LVDS.

Otra similitud con un SERDES es que la interfaz del MGT con la lógica de aplicación es una palabra paralela: por cada ciclo del reloj de la lógica de aplicación se transfieren varios bits entre la lógica y el MGT. Esta disposición es necesaria porque la velocidad de datos es muy superior a la frecuencia de reloj máxima que puede alcanzar una FPGA.

Sin embargo, hay algunas diferencias importantes entre un SERDES normal y un MGT. Estas son algunas de ellas:

Entonces, ¿por qué es tan complicado un MGT?

Cualquiera que haya intentado configurar un bloque MGT para un proyecto de FPGA sabe que hay una gran cantidad de parámetros y opciones. ¿Por qué tiene que ser así?

En realidad no tiene por qué ser complicado: como se muestra en este diseño de ejemplo, cuando el MGT se usa simplemente como SERDES, desaparece gran parte de la complicación.

Sin embargo, lo habitual es que el uso de un MGT sea complicado, y hay principalmente tres razones. La primera es que el bloque MGT implementa muchos módulos que podrían implementarse en el tejido lógico, pero que se incluyen dentro del MGT por eficiencia. Por ejemplo, todos los MGT tienen capacidad para codificar y decodificar 8b/10b, aunque la lógica de aplicación podría hacerlo. Pero como esta técnica de codificación se utiliza tanto, el MGT puede encargarse de ello.

La segunda razón tiene que ver con la generación de relojes: para que un MGT funcione correctamente se necesitan varios relojes. Para complicarlo más, los requisitos sobre la calidad del reloj (en particular, la fluctuación de fase o jitter) son más estrictos que en los relojes del tejido lógico de una FPGA. Y a veces se usa también la modulación de reloj por espectro ensanchado (SSC, del inglés Spread Spectrum Clocking), lo que añade aún más complicación.

Hacer bien la parte de los relojes no es, a veces, menos difícil que elegir los parámetros correctos del MGT en general.

La tercera razón es que los MGT se diseñan para dar soporte a varios protocolos de comunicación estándar. En consecuencia, los nombres de las características necesarias para un protocolo concreto suelen salir de la especificación del protocolo. Esa jerga no significa nada para quien no conoce el protocolo correspondiente. Esto hace difícil decidir qué características activar al configurar un bloque MGT para una FPGA.

Todos estos temas se tratan con más detalle en el resto de esta serie de páginas.

Cosas que conviene tener en cuenta

En la mayoría de los casos, los MGT se utilizan como capa física de otro protocolo bien establecido, en particular PCIe. En estas situaciones, las herramientas de FPGA se ocupan de los detalles y no hace falta entender mucho de lo que ocurre a bajo nivel.

No obstante, si pretendes conectar tu lógica de aplicación directamente a un MGT, es importante ser consciente de varios retos que esa lógica deberá afrontar. Algunos de estos problemas los resuelven los protocolos pensados para el uso entre FPGAs.

Esta es una breve lista de temas a tener en cuenta. Cada uno se trata con más detalle en el resto de esta serie de páginas.

PMA, PCS y la generación de relojes

Este diagrama de bloques muestra las partes de un MGT y su interacción con la lógica de aplicación:

Overview of Multi-Gigabit Transceiver's components

La funcionalidad de un MGT se suele dividir en tres partes:

Estos temas se amplían en esta serie de páginas.

La interfaz PIPE

Vale la pena mencionar el estándar PIPE: define las conexiones entre un MGT y la lógica que implementa PCIe, SuperSpeed USB o SATA. Esto incluye los puertos que se usan para comunicar los datos, las señales de control y las señales de estado.

En este estándar, el MGT se denomina capa PHY, y el protocolo se denomina capa MAC. Esta terminología la emplean también los estándares que definen Ethernet, USB 1.x y USB 2.0. Normalmente, esos estándares se implementan con dos chips separados. Por ejemplo, para implementar Ethernet en un chip de procesador, la capa MAC se implementa en ese chip y la capa PHY en un chip aparte. El estándar PIPE está concebido con el mismo espíritu, aunque PCIe, SuperSpeed USB o SATA están prácticamente siempre implementados por completo en el mismo chip. Las conexiones entre la capa MAC y la capa PHY definidas por el estándar PIPE ocurren dentro del chip y rara vez son visibles desde fuera.

Una consecuencia importante del estándar PIPE es que un MGT de FPGA que se precie siempre implementa la interfaz PIPE necesaria para PCIe. La interfaz PIPE para SATA también suele estar implementada. Eso es útil, obviamente, a la hora de implementar esos dos protocolos; pero hay otro beneficio importante: distintas FPGA ofrecen una interfaz similar con el MGT. En particular, hay ciertos elementos funcionales que se encuentran en prácticamente todos los MGT.

Conclusión

En esta página se ha presentado una visión general del MGT y de su complejidad. En el resto de esta serie de páginas se explican muchos de los conceptos mencionados. Pero antes, empezaremos con un breve resumen de los protocolos que se utilizan a menudo al conectar dos MGT de FPGA.

Esta página se ha traducido del inglés mediante traducción automática. En caso de duda, consulta el texto original.
Copyright © 2021-2026. All rights reserved. (dcc38493)