01signal.com

Transcepteurs multi-gigabits : une vue d'ensemble

Cette page est la première d'une série de pages présentant les transcepteurs multi-gigabits (MGT), et donne un aperçu de ce qui vous attend dans cette série.

Introduction

Les MGT jouent un rôle important dans la communication entre les différentes parties d'un ordinateur ou d'un système électronique. Plusieurs interfaces bien connues à l'intérieur d'un ordinateur sont basées sur des MGT, par exemple PCIe et SATA. D'autres interfaces bien connues servent à la communication entre un ordinateur et ses périphériques, par exemple Gigabit Ethernet, SuperSpeed USB, Thunderbolt et DisplayPort.

Les MGT servent aussi à relier des composants électroniques, par exemple deux FPGA. Dans ce cas, la communication est souvent basée sur l'un des protocoles moins connus, voire sur un protocole non standard. Mais il est aussi possible d'utiliser des MGT pour connecter un FPGA à un autre type de composant, ou pour relier d'autres composants entre eux, par exemple avec Xillyp2p.

Par exemple, les transcepteurs à fibre optique sont souvent des modules standard (notamment au format SFP+) qui se connectent directement aux MGT, comme le montre cet exemple de conception. Certains ADC/DAC rapides utilisent aussi des MGT pour transférer les données échantillonnées (généralement sur la base du protocole JESD204). Certains protocoles sont destinés au transfert de données vidéo (par exemple certains protocoles de la couche physique de MIPI).

Même si les MGT sont souvent utilisés pour des protocoles bidirectionnels, chaque MGT est en réalité constitué de deux parties indépendantes : un émetteur et un récepteur. Il est donc possible d'utiliser un MGT pour une transmission unidirectionnelle en désactivant l'une des deux parties. Avec la plupart des MGT de FPGA, il est aussi possible de configurer indépendamment les paramètres de l'émetteur et du récepteur.

En résumé, les MGT sont utilisés dans de nombreuses applications. Souvent, le nom de l'interface ne laisse pas deviner que des MGT sont utilisés (par exemple Gigabit Ethernet, SATA et DisplayPort), mais la couche physique est constituée de MGT.

Il convient de mentionner que Xilinx (puis AMD) donne à ses MGT des noms différents : RocketIO, GTX, GTH, GTY, GTP, GTM, etc. Chaque nom correspond à une implémentation matérielle spécifique du transcepteur ; ce nom renseigne donc sur les débits et autres caractéristiques de performance du MGT.

Cette série de pages explique les bases des MGT et quelques termes techniques couramment utilisés à leur sujet. Le but est de faciliter la lecture de la documentation technique et, en particulier, de vous aider à reconnaître les paramètres pertinents pour votre projet et ceux qui ne le sont pas.

Qu'est-ce qu'un MGT ?

Il est important de comprendre que, derrière toutes ces fonctionnalités compliquées, un MGT n'est qu'un SERDES : un bloc électronique qui reçoit et émet des données. L'interface électrique du MGT avec le monde extérieur est constituée de deux fils formant une paire différentielle. Lorsque la tension sur le premier fil (le fil « plus » ou « positif ») est supérieure à la tension sur l'autre fil (le fil « moins » ou « négatif »), l'état physique correspond à un « 1 ». Sinon, c'est un « 0 ». C'est le même principe que pour les interfaces différentielles telles que LVDS.

Autre similitude avec un SERDES : l'interface du MGT avec la logique applicative se présente sous la forme d'un mot parallèle. Pour chaque cycle de l'horloge de la logique applicative, un certain nombre de bits sont échangés entre la logique applicative et le MGT. Cette disposition est nécessaire, car le débit est bien supérieur à la fréquence d'horloge maximale possible pour un FPGA.

Il y a toutefois quelques différences importantes entre un SERDES ordinaire et un MGT. En voici quelques-unes :

Alors pourquoi un MGT est-il si compliqué ?

Quiconque a déjà tenté de configurer un bloc MGT pour un projet FPGA sait qu'il y a énormément de paramètres et de choix. Pourquoi faut-il que ce soit ainsi ?

En réalité, ce n'est pas forcément compliqué : comme le montre cet exemple de conception, si le MGT est utilisé simplement comme un SERDES, une grande partie de la complexité disparaît.

Cependant, l'utilisation d'un MGT est généralement compliquée, et cela tient principalement à trois raisons. Premièrement, le bloc MGT intègre de nombreux éléments fonctionnels qui pourraient être réalisés dans la logique programmable, mais qui sont intégrés au MGT pour des raisons d'efficacité. Par exemple, tous les MGT sont capables de coder et de décoder le 8b/10b, même si cette tâche pourrait être effectuée par la logique applicative. Mais comme cette technique de codage est très courante, c'est le MGT qui s'en charge.

La deuxième raison est liée à la génération des horloges (clocking) : plusieurs horloges sont nécessaires au bon fonctionnement d'un MGT. Pour compliquer encore les choses, les exigences de qualité des horloges — en particulier la gigue (jitter) — sont plus sévères que pour les horloges de la logique programmable du FPGA. Et il arrive aussi que l'on utilise une horloge à spectre étalé (SSC, Spread Spectrum Clocking), ce qui complique encore plus l'ensemble.

Réussir cette partie n'est donc parfois pas moins difficile que de choisir les bons paramètres du MGT en général.

La troisième raison est que les MGT sont conçus pour prendre en charge plusieurs protocoles de communication standard. Par conséquent, les noms des fonctionnalités nécessaires à un protocole donné proviennent souvent de la spécification de ce protocole. Ce jargon ne signifie rien pour quelqu'un qui ne connaît pas le protocole concerné. Il est donc difficile de décider quelles fonctionnalités activer lors de la configuration d'un bloc MGT pour un FPGA.

Tous ces sujets sont examinés plus en détail dans le reste de cette série de pages.

Ce qu'il faut savoir

Dans la plupart des cas d'utilisation, les MGT servent de couche physique pour un autre protocole bien établi, en particulier PCIe. Dans ces situations, les outils FPGA s'occupent des détails, et il n'est pas nécessaire de bien comprendre ce qui se passe au niveau bas.

Cependant, si vous comptez connecter directement votre logique applicative à un MGT, il est important d'être conscient de plusieurs difficultés que cette logique devra gérer. Certains de ces problèmes sont pris en charge par les protocoles destinés à une utilisation entre FPGA.

Voici une courte liste de sujets à prendre en compte. Chacun d'eux est examiné plus en détail dans le reste de cette série de pages.

PMA, PCS et génération des horloges

Le schéma fonctionnel représente les parties d'un MGT ainsi que son interaction avec la logique applicative :

Overview of Multi-Gigabit Transceiver's components

Le fonctionnement d'un MGT se répartit généralement en trois parties :

Ces sujets sont approfondis dans cette série de pages.

L'interface PIPE

Le standard PIPE mérite d'être mentionné : il définit les connexions entre un MGT et la logique qui implémente PCIe, SuperSpeed USB ou SATA. Cela comprend les ports utilisés pour la communication des données, des signaux de commande et des signaux d'état.

Dans ce standard, le MGT est appelé couche PHY et la partie protocole est appelée couche MAC. On retrouve cette terminologie dans les normes Ethernet, USB 1.x et USB 2.0. Ces normes sont généralement mises en œuvre au moyen de deux puces séparées. Par exemple, pour implémenter Ethernet sur une puce de processeur, la couche MAC est implémentée dans cette puce, et la couche PHY dans une puce séparée. Le standard PIPE a été conçu dans le même esprit, même si PCIe, SuperSpeed USB ou SATA sont pratiquement toujours entièrement implémentés sur la même puce. Les connexions entre les couches MAC et PHY définies par le standard PIPE se font à l'intérieur de la puce et sont rarement visibles de l'extérieur.

Un impact important du standard PIPE est qu'un MGT de FPGA digne de ce nom implémente toujours l'interface PIPE requise pour PCIe. L'interface PIPE pour SATA est aussi souvent prise en charge. C'est évidemment utile pour implémenter ces deux protocoles, mais il y a un autre avantage important : différents FPGA présentent une interface similaire avec le MGT. En particulier, on retrouve certains éléments fonctionnels dans pratiquement tous les MGT.

Conclusion

Cette page a présenté un aperçu du MGT et de sa complexité. Dans le reste de cette série de pages, bon nombre des concepts mentionnés ci-dessus seront expliqués. Mais avant cela, nous commencerons par un court aperçu des protocoles souvent utilisés pour connecter deux MGT de FPGA.

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)