01signal.com

Le PMA : signaux OOB, repos électrique, etc.

Cette page est la sixième d’une série de pages présentant le transcepteur multi-gigabits (MGT), et la deuxième page consacrée au PMA.

Introduction

Sur la page précédente, la transmission des bits à travers le canal physique à l’aide du PMA a été abordée. Ce flux de données n’est toutefois pas toujours actif : il est possible de désactiver de grandes parties du MGT afin d’économiser de l’énergie. Cela est particulièrement important lorsque le MGT implémente SATA, PCIe ou SuperSpeed USB dans un ordinateur portable. Avec ces protocoles, maintenir la liaison physique active alors qu’il n’y a aucune donnée à transmettre est un gaspillage d’énergie.

Un MGT doit donc pouvoir passer dans un état de faible consommation (low-power state). Plus important encore, il doit pouvoir prévenir l’autre côté lorsqu’il est temps de sortir de cet état. Le PMA est chargé de générer et de détecter les signaux hors bande (out-of-band signals, OOB) à cette fin (et pour d’autres également).

Les signaux hors bande (OOB) consistent en des motifs simples d’activité électrique sur les mêmes fils différentiels que ceux utilisés pour la transmission du flux de données. Ces signaux OOB ne peuvent être transmis que lorsque le flux de données normal est coupé. Leur principal intérêt réside dans le fait qu’ils peuvent être détectés par le récepteur à l’aide d’une logique très simple. Cela permet au MGT qui reçoit un signal OOB de le détecter même lorsqu’il est dans un état de faible consommation.

Une autre capacité prise en charge par les MGT est celle qu’a l’émetteur de détecter s’il est physiquement connecté à un autre MGT (sans que l’autre MGT ait à faire quoi que ce soit). Cette fonctionnalité est appelée détection de récepteur (receiver detection).

Cette page présente ces deux capacités : les signaux OOB et la détection de récepteur. Pour plus de commodité, le schéma fonctionnel des deux pages précédentes est reproduit ci-dessous :

Block diagram of typical Multi-Gigabit Transceiver

Transmission des signaux OOB

Le signal hors bande (OOB) est généralement un simple signal carré à fréquence constante. Ce signal ne peut être transmis qu’à la place du flux de données normal, et jamais simultanément avec lui.

Chaque protocole impose des exigences différentes sur la forme du signal OOB. Un MGT de FPGA comporte généralement des ports d’entrée permettant à la logique applicative de demander des signaux OOB conformément aux protocoles les plus couramment utilisés (notamment PCIe et SATA).

La nomenclature et les exigences relatives aux signaux OOB diffèrent d’un protocole à l’autre. Par exemple :

Il arrive que le MGT ne soit pas capable de générer un signal OOB adapté à un protocole particulier. On peut alors activer l’émetteur comme pour envoyer des données, et alimenter le MGT avec un flux de données correspondant au motif de signal (signal pattern) souhaité. En particulier, si les capacités de codage du MGT sont désactivées, le MGT se comporte comme un simple SERDES. Le motif de signal désiré peut ensuite être façonné librement à l’aide des données à transmettre. Par exemple, un signal carré peut être généré en envoyant des suites contiguës de « 0 » et de « 1 ». Le principal inconvénient de cette solution est que les capacités de codage du MGT ne sont pas utilisées ; il faut alors implémenter le codage dans la logique applicative.

Repos électrique

Lorsque l’émetteur d’un MGT est éteint ou en mode de faible consommation, sa sortie se trouve généralement dans l’état de repos électrique (electrical idle). Cela signifie que l’émetteur relie les deux fils de sortie différentiels (D+ et D-) à la masse. La tension entre ces fils est donc nulle, et chacun des fils est également à zéro volt par rapport à la masse.

Lorsque le MGT dort, l’état de repos électrique est le contraire de la transmission d’un signal OOB. Pour résumer, voici les trois états possibles d’un émetteur :

Comme déjà mentionné plus haut, les signaux OOB ne sont utilisés qu’occasionnellement, pour réveiller l’autre côté d’un état de faible consommation ou dans le cadre de l’établissement de la liaison. La plupart du temps, un MGT transmet donc des données, ou bien il dort en état de repos électrique.

Détection des signaux OOB

Lorsqu’un MGT est éteint ou en état de faible consommation, son récepteur peut être amené à détecter si l’autre côté émet un signal OOB. Cela est notamment nécessaire pour répondre à une demande de reprise du fonctionnement normal.

La plupart des protocoles ne spécifient pas la forme d’onde du signal OOB avec précision, mais définissent plutôt une plage de possibilités. Le récepteur ne peut donc pas comparer le signal reçu avec une forme d’onde attendue. À la place, un signal OOB est détecté lorsqu’il y a une quelconque activité sur les fils différentiels. En d’autres termes, si le flux de données est coupé, mais que la tension sur les fils différentiels varie trop pour être considérée comme du repos électrique, c’est qu’un signal OOB est émis par l’autre côté.

C’est pourquoi un MGT de FPGA n’a pas de port de sortie pour la détection d’un signal OOB. Il possède plutôt un port de sortie qui passe au niveau haut lorsque le récepteur détecte le repos électrique. Le nom de ce port est généralement quelque chose comme « rx_elecidle ».

Malheureusement, le mécanisme de détection du repos électrique du MGT peut manquer de fiabilité. En particulier, lorsque l’autre côté transmet un flux de données, le comportement du détecteur de repos électrique du récepteur diffère d’un MGT à l’autre : il est possible que le MGT détecte un repos électrique dans cette situation. Il est tout aussi possible qu’il détecte de façon certaine qu’aucun repos électrique n’est présent. Des détections aléatoires peuvent également se produire. Chaque FPGA se comporte différemment.

Théoriquement, ce n’est pas un problème, car pourquoi faudrait-il vérifier le repos électrique lorsque le flux de données est actif ? Mais dans la réalité, un MGT peut transmettre des données alors que l’autre côté ne s’y attend pas. La logique applicative doit donc être conçue pour réagir correctement lorsqu’elle s’attend à ce que l’autre côté soit éteint, mais qu’un flux de données normal arrive à la place.

Autre problème lié à la détection du repos électrique : la sensibilité au bruit. Le repos électrique parfait correspond à une tension nulle sur les deux fils différentiels. Sous l’effet du bruit, le récepteur peut mesurer une tension suffisante pour exclure le repos électrique. La logique applicative risque alors d’interpréter cela comme un signal OOB.

En conclusion, il n’existe pas de solution simple pour détecter les signaux OOB de manière fiable. La logique applicative doit être conçue pour pallier les imperfections du détecteur de repos électrique.

Détection de récepteur

Le protocole PCIe et SuperSpeed USB exigent la capacité de détecter si quelque chose est connecté à l’autre extrémité de la liaison. Cette détection doit se faire sans chercher à amorcer une communication avec l’autre côté. Cette fonctionnalité est appelée détection de récepteur (receiver detection).

Cette capacité est exigée par SuperSpeed USB parce que l’ordinateur doit savoir quand le périphérique est physiquement débranché. Si un tel débranchement se produit lorsque la liaison est en état de faible consommation, l’ordinateur n’a aucun moyen de savoir que quelque chose s’est passé : aucune activité n’est de toute façon attendue sur les fils. Le protocole exige donc que l’hôte effectue une détection de récepteur toutes les 100 ms. Cela permet à l’ordinateur de vérifier que le périphérique est toujours connecté sans gaspiller d’énergie.

Le protocole PCIe exige qu’une détection de récepteur soit effectuée sur chaque slot PCIe avant de tenter d’établir la liaison avec le périphérique éventuellement connecté à ce slot. Comme l’établissement de la liaison implique de mettre le MGT sous tension pour transmettre des données (une séquence d’entraînement (training sequence), plus précisément), éviter les tentatives inutiles est important pour économiser de l’énergie.

L’émetteur du MGT effectue la détection de récepteur en créant une brève impulsion de tension sur ses deux fils de sortie (D+ et D-). Il s’agit d’une impulsion de tension en mode commun : la même tension par rapport à la masse est appliquée aux deux fils. S’il y a un récepteur à l’autre bout, un courant mesurable circule à travers les résistances de terminaison du récepteur. Ce courant influence la tension en sortie de l’émetteur. S’il n’y a pas de récepteur de l’autre côté, le courant est négligeable. L’émetteur mesure donc la tension à sa sortie peu après le début de l’impulsion et en déduit si un récepteur est présent ou non.

La raison pour laquelle une impulsion est nécessaire (plutôt qu’une simple tension continue) est qu’un condensateur se trouve entre l’émetteur et le récepteur. Immédiatement après l’impulsion, un courant électrique circule, la tension de l’impulsion se répartissant sur les résistances de terminaison de l’émetteur et du récepteur. À mesure que le condensateur se charge, le courant diminue, comme dans tout circuit RC. Si la tension reste constante, le courant finit par devenir nul.

Il est important de noter que la détection de récepteur ne fonctionne que si les résistances de terminaison du récepteur sont reliées à la masse pour D+ comme pour D-. Par exemple, le protocole PCIe exige que ces résistances de terminaison valent 50 Ω. On peut obtenir la même impédance différentielle en reliant une résistance de 100 Ω entre D+ et D-, sans connexion à la masse. Avec une telle terminaison, toutes les fonctionnalités fonctionnent correctement, à l’exception de la détection de récepteur. La différence tient au fait que toutes les autres fonctionnalités reposent sur la tension différentielle entre D+ et D-, alors que la détection de récepteur est mise en œuvre en appliquant la même tension sur les deux fils. Si les résistances de terminaison ne sont pas reliées à la masse en leur point milieu, aucun courant ne circule et le récepteur n’est donc pas détecté.

Ceci clôt la sixième page de cette série consacrée aux MGT. La page suivante termine la série avec quelques explications sur la génération des horloges (clocking) du MGT.

Cette page a été traduite de l’anglais par une machine. En cas de doute, veuillez vous reporter au texte original
Copyright © 2021-2026. All rights reserved. (dcc38493)