01signal.com

El PMA: señales OOB, reposo eléctrico, etc.

Esta página es la sexta de una serie de páginas dedicada al transceptor multigigabit (MGT), y la segunda página dedicada al PMA.

Introducción

En la página anterior se explicó la transmisión de bits a través del canal físico con ayuda del PMA. Sin embargo, ese flujo de datos no está siempre activo: es posible apagar grandes partes del MGT para ahorrar energía. Esto es especialmente importante cuando el MGT implementa SATA, PCIe o SuperSpeed USB dentro de un ordenador portátil. Cuando se utilizan estos protocolos, mantener activo el enlace físico sin tener datos que transmitir es un derroche de energía.

Por tanto, un MGT debe poder pasar a un estado de bajo consumo. Más importante aún: un MGT debe poder avisar al otro extremo cuando llega el momento de despertarse de ese estado. El PMA se encarga de generar y detectar señales fuera de banda (out-of-band signals, OOB) para este fin (y también para otros).

Las señales fuera de banda (OOB) consisten en patrones sencillos de actividad eléctrica sobre los mismos cables diferenciales que se utilizan para transmitir el flujo de datos. Estas señales OOB solo pueden transmitirse cuando el flujo de datos normal está desactivado. Lo más importante de estas señales es que el receptor puede detectarlas con una lógica muy sencilla. Esto permite que un MGT que recibe una señal OOB la detecte incluso cuando el propio MGT se encuentra en un estado de bajo consumo.

Otra capacidad de los MGT es la posibilidad de que el transmisor detecte si está conectado físicamente a otro MGT (sin que el otro MGT tenga que hacer nada). Esta funcionalidad se denomina receiver detection (detección de receptor).

Esta página presenta estas dos capacidades: las señales fuera de banda (OOB) y la detección de receptor. Por comodidad, se muestra de nuevo el diagrama de bloques de las dos páginas anteriores:

Block diagram of typical Multi-Gigabit Transceiver

Transmisión de señales OOB

La señal fuera de banda (OOB) suele ser una onda cuadrada simple, de frecuencia constante. Esta señal solo puede transmitirse en lugar del flujo de datos normal, y nunca simultáneamente con él.

Cada protocolo impone requisitos distintos sobre la forma de la señal OOB. Normalmente, un MGT de FPGA tiene puertos de entrada que permiten a la lógica de aplicación solicitar señales OOB de acuerdo con los protocolos más habituales (en particular PCIe y SATA).

La nomenclatura y los requisitos de las señales OOB cambian de un protocolo a otro. Por ejemplo:

A veces el MGT no tiene capacidad de generar una señal OOB adecuada para un protocolo concreto. Esto puede resolverse activando el transmisor para enviar datos y alimentando al MGT con un flujo de datos que se corresponda con el patrón de señal deseado. En particular, si las capacidades de codificación del MGT están desactivadas, el MGT se comporta como un simple SERDES. Así, el patrón de señal deseado puede formarse arbitrariamente con los datos de transmisión. Por ejemplo, una onda cuadrada puede generarse transmitiendo secuencias contiguas de ‘0’ y ‘1’. El principal inconveniente de esta solución es que no se utilizan las capacidades de codificación del MGT, por lo que la codificación debe implementarse en la lógica de aplicación.

Reposo eléctrico

Cuando el transmisor de un MGT está apagado o en un modo de bajo consumo, su salida se encuentra normalmente en el estado de reposo eléctrico (electrical idle). Es decir, el transmisor conecta a masa ambos cables de salida diferenciales (D+ y D-). Por tanto, la tensión entre estos dos cables es cero, y además cada cable también tiene tensión cero con respecto a masa.

Cuando el MGT está dormido, el estado de reposo eléctrico es lo contrario de transmitir una señal OOB. O, por resumir, los tres estados posibles de un transmisor son:

Como ya se ha dicho, las señales OOB se utilizan solo de forma ocasional, para despertar al otro extremo de un estado de bajo consumo o como parte del arranque del enlace. Así que, la mayor parte del tiempo, un MGT está transmitiendo datos o bien está dormido en el estado de reposo eléctrico.

Detección de señales OOB

Cuando un MGT está apagado o en un estado de bajo consumo, puede que su receptor deba detectar si el otro extremo transmite una señal OOB. Esto es necesario, en particular, para responder a una solicitud de reanudar el funcionamiento normal.

La mayoría de los protocolos no especifican con precisión la forma de onda de la señal OOB, sino que definen un rango de posibilidades. Por tanto, al receptor no le sirve comparar la señal que llega con una forma de onda esperada. En su lugar, la señal OOB se detecta cuando hay cualquier actividad en los cables diferenciales. En otras palabras, si el flujo de datos está desactivado pero la tensión en los cables diferenciales varía demasiado como para considerarlo reposo eléctrico, la explicación es que el otro extremo está transmitiendo una señal OOB.

Por esta razón, un MGT de FPGA no tiene un puerto de salida para detectar señales OOB. En su lugar, hay un puerto de salida que se pone a nivel alto cuando el receptor detecta reposo eléctrico. El nombre de ese puerto suele ser algo como “rx_elecidle”.

Por desgracia, el mecanismo de detección de reposo eléctrico del MGT puede ser poco fiable. En particular, cuando el otro extremo transmite un flujo de datos, el comportamiento del detector de reposo eléctrico del receptor cambia de un MGT a otro: es posible que el MGT detecte reposo eléctrico en esa situación. También es posible que el MGT detecte con firmeza que no hay reposo eléctrico. E igualmente es posible que se produzcan detecciones aleatorias. Cada FPGA se comporta de manera distinta.

En teoría, esto no es un problema, porque ¿para qué haría falta comprobar el reposo eléctrico cuando el flujo de datos está activo? Pero en la vida real, un MGT puede transmitir datos incluso cuando el otro extremo no lo espera. Por tanto, la lógica de aplicación debe diseñarse para reaccionar correctamente cuando espera que el otro extremo esté apagado, pero en su lugar llega un flujo de datos normal.

Otro problema de la detección del reposo eléctrico es la sensibilidad al ruido: el reposo eléctrico perfecto se da cuando los dos cables diferenciales tienen tensión cero. Debido al ruido, el receptor podría medir una tensión suficiente como para descartar el reposo eléctrico. La lógica de aplicación corre entonces el riesgo de interpretarlo como una señal OOB.

En conclusión, no existe una solución sencilla para detectar señales OOB de manera fiable. La lógica de aplicación debe diseñarse para cubrir las imperfecciones del detector de reposo eléctrico.

Detección de receptor

Tanto el protocolo PCIe como SuperSpeed USB requieren poder detectar si hay algo conectado al otro extremo del enlace. Esta detección debe hacerse sin intentar iniciar comunicación con el otro extremo. Esta funcionalidad se denomina receiver detection (detección de receptor).

Esto es necesario en SuperSpeed USB, porque el ordenador necesita saber cuándo el dispositivo se desconecta físicamente de él. Si esa desconexión ocurre mientras el enlace está en un estado de bajo consumo, el ordenador no tiene manera de saber que ha ocurrido algo: de todas formas no se espera ninguna actividad en los cables. Por tanto, el protocolo exige que el host haga una detección de receptor cada 100 ms. Esto permite al ordenador comprobar que el dispositivo sigue conectado sin gastar energía.

El protocolo PCIe exige que la detección de receptor se realice en cada ranura PCIe antes de intentar establecer el enlace con el dispositivo que posiblemente esté conectado a esa ranura. Como establecer el enlace implica encender el MGT para transmitir datos (más concretamente, una secuencia de entrenamiento), evitar intentos innecesarios es importante para ahorrar energía.

El transmisor del MGT lleva a cabo la detección de receptor generando un breve pulso de tensión en sus dos cables de salida (D+ y D-). Es un pulso de tensión en modo común, así que se aplica la misma tensión a ambos cables con respecto a masa. Si al otro lado hay un receptor, circulará una corriente medible por las resistencias de terminación del receptor. Esa corriente afecta a la tensión de salida del transmisor. Si no hay receptor al otro lado, la corriente será despreciable. De este modo, el transmisor mide la tensión en su salida poco después del comienzo del pulso y determina si hay o no un receptor al otro lado.

La razón por la que se necesita un pulso (en lugar de una tensión continua simple) es que hay un condensador entre el transmisor y el receptor. Inmediatamente después del pulso, circula una corriente eléctrica porque la tensión del pulso cae sobre las resistencias de terminación del transmisor y del receptor. A medida que el condensador se carga, la corriente disminuye, como en cualquier circuito RC. Si la tensión permanece constante, la corriente acaba siendo cero.

Es importante señalar que la detección de receptor solo funciona si las resistencias de terminación del receptor están conectadas a masa tanto para D+ como para D-. Por ejemplo, el protocolo PCIe exige que esas resistencias de terminación sean de 50 Ω. Es posible lograr la misma impedancia diferencial conectando una resistencia de 100 Ω entre D+ y D-, sin conexión a masa. Si la terminación se hace de este modo, todas las funcionalidades funcionarán correctamente salvo la detección de receptor. La diferencia está en que todas las demás funcionalidades se basan en la tensión diferencial entre D+ y D-, mientras que la detección de receptor se implementa aplicando la misma tensión a los dos cables. Si las resistencias de terminación no tienen una conexión central a masa, no circulará corriente y, por tanto, el receptor no se detectará.

Con esto concluye la sexta página de esta serie sobre los MGT. La página siguiente cierra esta serie con algunas explicaciones sobre la generación de relojes del MGT.

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)