01signal.com

Multi-Gigabit-Transceiver: Ein Überblick

Diese Seite ist der erste Beitrag einer Artikelserie, die den Multi-Gigabit-Transceiver (MGT) vorstellt, und gibt einen Überblick über das, was in dieser Serie noch behandelt wird.

Einführung

Multi-Gigabit-Transceiver (MGTs) spielen eine wichtige Rolle bei der Kommunikation zwischen verschiedenen Teilen innerhalb eines Computers oder eines elektronischen Systems. Mehrere bekannte Schnittstellen im Inneren eines Computers basieren auf MGTs, zum Beispiel PCIe und SATA. Andere bekannte Schnittstellen dienen der Kommunikation zwischen einem Computer und seinen Peripheriegeräten, etwa Gigabit-Ethernet, SuperSpeed-USB, Thunderbolt und DisplayPort.

MGTs werden auch eingesetzt, um elektronische Komponenten miteinander zu verbinden, beispielsweise zwei FPGAs. In diesem Fall basiert die Kommunikation oft auf einem der weniger bekannten Protokolle oder sogar auf einem nicht standardisierten Protokoll. Man kann MGTs aber auch verwenden, um ein FPGA mit einem anderen Komponententyp zu verbinden, oder andere Komponenten untereinander, etwa mit Xillyp2p.

So sind Glasfaser-Transceiver oft Standardmodule (insbesondere im SFP+-Formfaktor), die direkt an MGTs anschließen, wie in diesem Beispiel-Design gezeigt. Einige Highspeed-ADC/DACs verwenden MGTs ebenfalls, um die Abtastdaten zu übertragen (üblicherweise auf der Grundlage des JESD204-Protokolls). Es gibt auch Protokolle für die Übertragung von Videodaten (z. B. einige MIPI-Protokolle für die physikalische Schicht).

Auch wenn MGTs häufig für bidirektionale Protokolle verwendet werden, besteht ein MGT eigentlich aus zwei unabhängigen Teilen: einem Sender und einem Empfänger. Daher ist es möglich, ein MGT für eine unidirektionale Übertragung zu nutzen, indem man einen der beiden Teile abschaltet. Bei den meisten FPGA-MGTs können die Parameter von Sender und Empfänger unabhängig voneinander konfiguriert werden.

Zusammenfassend: MGTs werden in vielen Anwendungen eingesetzt. Oft geht aus dem Namen der Schnittstelle nicht hervor, dass MGTs verwendet werden (z. B. Gigabit-Ethernet, SATA und DisplayPort), aber die physikalische Schicht besteht aus MGTs.

Erwähnenswert ist, dass Xilinx (und später AMD) ihre MGTs mit verschiedenen Namen bezeichnet: RocketIO, GTX, GTH, GTY, GTP, GTM usw. Jeder Name steht für eine bestimmte Hardware-Implementierung des Transceivers. Der Name sagt also etwas über die Datenraten und andere Leistungsmerkmale aus, die der Transceiver besitzt.

Diese Artikelserie erklärt die Grundlagen der MGTs und einige Fachbegriffe, die in diesem Zusammenhang häufig verwendet werden. Ziel ist es, das Lesen der technischen Dokumentation zu erleichtern und insbesondere zu erkennen, welche Parameter für Ihr Projekt relevant sind und welche nicht.

Was ist ein MGT?

Wichtig ist, sich klarzumachen, dass hinter all den komplizierten Funktionen ein MGT im Grunde nur ein SERDES ist: ein elektronischer Baustein, der Daten empfängt und sendet. Die elektrische Schnittstelle des MGTs zur Außenwelt besteht aus zwei Leitungen, die ein Differenzpaar bilden. Wenn die Spannung auf der ersten Leitung (der „Plus“-Leitung beziehungsweise der positiven Leitung) höher ist als die Spannung auf der anderen Leitung (der „Minus“-Leitung beziehungsweise der negativen Leitung), entspricht der physikalische Zustand einer „1“. Andernfalls liegt eine „0“ vor. Das ist dasselbe Prinzip wie bei Differenzschnittstellen, etwa LVDS.

Eine weitere Ähnlichkeit mit einem SERDES besteht darin, dass die Schnittstelle des MGTs zur Anwendungslogik aus einem parallelen Datenwort besteht: In jedem Taktzyklus der Anwendungslogik wird eine Anzahl von Bits zwischen der Anwendungslogik und dem MGT übertragen. Diese Anordnung ist notwendig, weil die Datenrate weit höher ist als die maximale Taktfrequenz, die bei einem FPGA möglich ist.

Es gibt jedoch einige wichtige Unterschiede zwischen einem gewöhnlichen SERDES und einem MGT. Hier sind einige davon:

Warum also ist ein MGT so kompliziert?

Wer schon einmal einen MGT-Block für ein FPGA-Projekt konfiguriert hat, weiß, dass es zahlreiche Parameter und Wahlmöglichkeiten gibt. Warum muss das so sein?

Eigentlich muss es nicht kompliziert sein: Wie in diesem Beispiel-Design gezeigt, entfällt ein Großteil der Komplexität, wenn der MGT einfach nur als SERDES verwendet wird.

Allerdings ist die Verwendung eines MGTs meist kompliziert – und dafür gibt es hauptsächlich drei Gründe. Erstens implementiert der MGT-Block viele Funktionsblöcke, die man auch in der Logikstruktur unterbringen könnte, die aber aus Effizienzgründen in den MGT integriert sind. So sind alle MGTs zum Beispiel in der Lage, 8b/10b zu kodieren und zu dekodieren, obwohl diese Aufgabe auch von der Anwendungslogik übernommen werden könnte. Da diese Kodierungstechnik so verbreitet ist, übernimmt der MGT sie stattdessen.

Der zweite Grund hängt mit der Taktversorgung zusammen: Für den ordnungsgemäßen Betrieb eines MGTs sind mehrere Takte erforderlich. Um die Sache noch komplizierter zu machen, sind die Anforderungen an die Taktqualität, insbesondere an den Jitter (jitter), strenger als bei den Takten, die in der Logikstruktur des FPGAs verwendet werden. Und manchmal kommt noch SSC (Spread Spectrum Clocking) hinzu, was die Sache weiter verkompliziert.

Die Taktversorgung also richtig hinzubekommen, ist manchmal nicht weniger schwierig, als die richtigen Parameter für den MGT insgesamt zu wählen.

Der dritte Grund ist, dass MGTs dafür ausgelegt sind, mehrere standardisierte Kommunikationsprotokolle zu unterstützen. Daher stammen die Namen von Funktionen, die ein bestimmtes Protokoll benötigt, oft aus der Spezifikation dieses Protokolls. Für jemanden, der das betreffende Protokoll nicht kennt, sind solche Begriffe bedeutungslos. Das macht es schwierig zu entscheiden, welche Funktionen man aktivieren muss, wenn man einen MGT-Block für ein FPGA einrichtet.

Alle diese Themen werden im weiteren Verlauf dieser Artikelserie ausführlicher behandelt.

Was Sie beachten sollten

In den meisten Anwendungsfällen dienen MGTs als physikalische Schicht für ein anderes etabliertes Protokoll, insbesondere PCIe. In diesen Situationen kümmern sich die FPGA-Tools um die Details, und man muss nicht viel darüber verstehen, was auf der niedrigen Ebene geschieht.

Wenn Sie jedoch vorhaben, Ihre Anwendungslogik direkt mit einem MGT zu verbinden, ist es wichtig, sich einiger Herausforderungen bewusst zu sein, die diese Logik bewältigen muss. Einige dieser Punkte werden von Protokollen für den Einsatz zwischen FPGAs übernommen.

Hier ist eine kurze Liste von Themen, die Sie berücksichtigen sollten. Jedes dieser Themen wird im weiteren Verlauf dieser Artikelserie ausführlicher behandelt.

PMA, PCS und Taktversorgung

Dieses Blockdiagramm zeigt die Bausteine eines MGT sowie seine Interaktion mit der Anwendungslogik:

Overview of Multi-Gigabit Transceiver's components

Die Funktionalität eines MGTs ist üblicherweise in drei Bereiche unterteilt:

Diese Themen werden in dieser Artikelserie weiter behandelt.

Die PIPE-Schnittstelle

Der PIPE-Standard ist erwähnenswert: Er definiert die Verbindungen zwischen einem MGT und der Logik, die PCIe, SuperSpeed USB oder SATA implementiert. Dazu gehören die Ports für die Übertragung von Daten sowie für Steuer- und Statussignale.

In diesem Standard wird der MGT als PHY-Schicht und das Protokoll als MAC-Schicht bezeichnet. Diese Terminologie wird auch von Standards verwendet, die Ethernet, USB 1.x und USB 2.0 definieren. Diese Standards werden üblicherweise mit zwei getrennten Chips umgesetzt. Um zum Beispiel Ethernet auf einem Prozessor-Chip zu implementieren, sitzt die MAC-Schicht in diesem Chip und die PHY-Schicht in einem separaten Chip. Der PIPE-Standard folgt derselben Grundidee, auch wenn PCIe, SuperSpeed USB oder SATA praktisch immer vollständig auf demselben Chip implementiert sind. Die Verbindungen zwischen MAC-Schicht und PHY-Schicht, die der PIPE-Standard definiert, liegen innerhalb des Chips und sind nach außen selten sichtbar.

Eine wichtige Auswirkung des PIPE-Standards ist, dass ein brauchbarer FPGA-MGT die PIPE-Schnittstelle immer so implementiert, wie es für PCIe erforderlich ist. Die PIPE-Schnittstelle für SATA wird oft ebenfalls unterstützt. Das ist bei der Implementierung dieser beiden Protokolle offensichtlich nützlich, hat aber noch einen weiteren wichtigen Vorteil: Verschiedene FPGAs bieten eine ähnliche Schnittstelle zum MGT. Insbesondere gibt es einige funktionale Elemente, die sich in praktisch allen MGTs finden.

Fazit

Auf dieser Seite wurde ein Überblick über den MGT und seine Komplexität gegeben. Im weiteren Verlauf dieser Artikelserie werden viele der oben erwähnten Konzepte erklärt. Zuvor beginnen wir jedoch mit einem kurzen Überblick über Protokolle, die häufig beim Verbinden zweier FPGA-MGTs verwendet werden.

Diese Seite wurde maschinell aus dem Englischen übersetzt. Im Zweifelsfall siehe den Originaltext.
Copyright © 2021-2026. All rights reserved. (dcc38493)