Makros: Serial/De-serial Converter (SerDes)
Unter einem SerDes Makro (Serial/De-serializer) wird allgemein eine logische Schaltung verstanden, die aus einem mehreren Bit breiten Datenstrom (meistens sind es Bytes) einen sequentiellen Bitstrom erzeugt und
versendet (Serializer, Transmitter) und in der Gegenrichtung aus dem versendeten Bitstrom wieder einen entsprechenden parallelen Datenstrom erzeugt (De-serializer, Receiver). Generell unterscheidet man hier zwischen einer
synchronen und einer asynchrone Übertragung. Bei einer synchronen Übertragung wird parallel zu den Daten ein zusätzliches Taktsignal mitgeführt, mit dem man auf der Empfängerseite den seriellen Datenstrom synchron abtasten kann. Dieses Prinzip ist aufgrund der zwei Leitungen und dem problematischen
Skew-Verhalten zwischen Daten- und Taktsignal für hohe Datenraten für weite Übertragungsstrecken nicht geeignet. Bei einer asynchronen Übertragung wird der Sendetakt in Senderichtung nicht mit einer eigenen
Taktleitung übertragen, sondern muß auf der Empfängerseite entweder bekannt sein (mit einer gewissen maximalen Abweichung) oder er aus der Charakteristik des Bitstroms zurückgewonnen werden. Das
erste Prinzip wird z.B. bei der guten alten seriellen Schnittstelle beim PCs verwendet und funktioniert nur mit einem nichtkontinuierlichen Datenstrom, dessen Rahmen mit einem Stop-Bit eingeleitet werden. Der
Empfänger synchronisiert sich so bei jedem übertragenen Rahmen aufs neue auf den jeweils aktuell anliegenden Datenrahmen. Ein entsprechendes Makro ist nicht sehr komplex und benötigt keine analogen Komponenten.
Im Folgenden sollen daher nur die SerDes Makros betrachtet werden, die mit einem kontinuierlichen seriellen Datenstrom und mit deutlich höheren Datenraten von Megabit (Mbps oder Mb/s) aufwärts bis
in den mehrstelligen Gigabit (Gbps oder Gb/s) Bereich arbeiten. Dazu wird i.d.R. der zu sendende Datenstrom nach bestimmten Mechanismen kodiert, z.B. mit einem 8B10B Encoder (der nicht als fester
Bestandteil des SerDes zu sehen ist). Neben anderen Funktionen wie Wortsynchronisierung mit so genannten Komma-Charaktern, Rahmenbildung, Fehlererkennung und der Erzeugung eines
Gleichanteil-freien Signals (durchschnittlich gleich viele Nullen wie Einsen) wandelt dieser vor der Serialisierung die zu übertragenen 8-bit Worte in 10-bit Worte um. Diese enthalten dann für alle 256
möglichen 8-bit Worte mindestens eine Flanke (z.B. "00000000" in "1001110100" bzw.
"0110001011" und "11111111" in "1010110001" bzw. "0101001110"). Auf der Gegenseite werden die 10-bit Worte nach der De-serialisierung entsprechend wieder in die ursprünglichen 8-bit Worte
rückkonvertiert. Mit dieser 8B10B Codierung ist eine Rückgewinnung des Taktes auch bei z.B. gleichförmigen Daten mit langen 0- bzw. 1-Folgen ohne Probleme möglich. Der Empfänger (Rx) eines
SerDes fällt aufgrund der hohen Qualitätsanforderungen zur Rückgewinnung des Taktes (s.u Clock Recovery) ungleich komplexer aus als der Sendeteil (Tx).
Kanäle eines SerDes Makros Einer dieser seriellen Datenströme wird häufig auch als ein Kanal bzw. Datenkanal bezeichnet. Da in
bestimmten Applikationen - insbesondere im Bereich der Kommunikationstechnik - häufig viele solcher Kanäle mit gleicher Übertragungsrate benötigt werden, sind in SerDes Makros mehrere dieser seriellen
Kanäle integriert. Der Vorteil dieses Zusammenschlusses besteht darin, daß bestimmte Teile des Makros von allen Kanälen genutzt werden können und so die Gesamtfläche für mehrere Kanäle insgesamt kleiner
gehalten werden kann. Hier fällt insbesondere die relativ große PLLs ins Gewicht, die neben ihrem reinen Flächenanteil in der Core Area noch eine Anzahl von Pads für die Spannungsversorgung benötigt. Die
Anzahl der Empfangs- bzw. Sendekanäle kann je nach SerDes Konfiguration unterschiedlich sein (s.u.).
IO-Buffer eines SerDes Makros Aufgrund der hohen Datenraten, für die diese Makros ausgelegt sind, werden für die seriellen Datenein-
bzw. -ausgänge i.d.R. keine herkömmlichen IO-Buffer sondern differentielle LVDS (Low Voltage Differential Signal) benutzt, die mit ihren zwei gegeneinander arbeitenden Datenleitungen ein besseres
Übertragungsverhalten aufweisen (Störsicherheit, Signalhub; s. IO-Buffer).
Nutzdaten- und Leitungsrate eines SerDes Makros Neben den naheliegenden 8-bit Worten ist im Bereich der 8B10B Leitungskodierung 10 Bit eine häufig
auftretende Basiswortbreite (s. oben). Dieses ist der Grund dafür, daß die serielle Datenrate entweder aus einem Vielfachen von 8 (ATM: 19,44MBps -> 155,52Mbps) oder aus einem Vielfachen von 10
(SATA: 150MBps -> 1,5Gbps) gebildet wird. Letztere erlaubt daher nur eine Transferrate der Nutzdaten von 80% der angegebenen Leitungsgeschwindigkeit.
Typische Datenraten für SerDes Makros sind im Laufe der Zeit mit den Möglichkeiten der Technologien und den Anforderungen der Applikationen gestiegen. Typische an Standards der Telekommunikation
angelehnte Datenraten sind 155Mbit/s, 622Mbit/s, 1,25Gbit/s, 2,5Gbit/s, 3,125Gbit/s und zahlreiche andere. Eine entsprechende Übersicht gibt es hier.
Arbeitspunkt eines SerDes Makros SerDes-Makros können i.A. abhängig von ihrer Implementation in einem bestimmten Bereich um eine
mittlere Datenrate herum betrieben werden, z.B. zwischen 200Mbit/s und 800Mbit/s und sind nicht auf eine konkrete feste Datenrate fixiert. Der Betriebspunkt wird einerseits durch einen von außen
zugeführten Referenztakt und andererseits durch programmierbare Zähler innerhalb der integrierten PLL definiert.
Details über den Aufbau
In den folgenden Beispielen soll von einem 8-bit breiten Datenstrom ausgegangen werden, der Übertragen werden soll. Eine Umsetzung der jeweiligen Berechnung auf andere Wortbreiten -
insbesondere auf die 8B10B Bedingungen - kann leicht durchgeführt werden.
Transmitter und parallel-zu-seriell Konverter Der Transmitter (s. Bild oben) besteht im Wesentlichen aus einem parallel-zu-seriell Konverter und
benötigt gegenüber dem Bytestrom eine um 8-fach erhöhte Taktfrequenz. Bei der 8B10B Kodierung wird entsprechend der Konvertierung eines Bytes zu einem 10-Bit Wort eine 10-fache erhöhte
Taktfrequenz benötigt. Diese wird bei den meisten Makros bereits durch eine in das Makro integrierte PLL erzeugt und dem Konverter bereitgestellt. Die Referenzfrequenz der PLL ist dabei häufig der Takt,
mit dem die Bytes an den Transmitter nacheinander angelegt werden. Die Multiplikation der PLL-Zählerstruktur ist auf 8 eingestellt, da mit jedem Referenztakt genau 8 Bits anliegen, die einzeln
verschickt werden. Der eigentliche Konverter ist vom Prinzip her ein 8 Bit Schieberegister, das alle 8 Takte ein neues Byte einläd und die Bits nacheinander an seinem Ausgang herausschiebt. Prinzipiell kann
entweder zuerst das niederwertige Bit (LSB, Least Significant Bit) oder das höchstwertige Bit (MSB, Most Significant Bit) hinausgeschoben werden. In der Realität wird die Struktur des Schieberegisters in
mehreren Stufen aufgebaut in der nur die letzte Stufe und damit nur ein einzelnes Fipflop mit der höchsten Frequenz des Datenkanals arbeitet. Die Taktstruktur nach der PLL muß den einzelnen Stufen des
Schieberegisters entsprechend heruntergeteilte Takte zu Verfügung stellen.
Receiver und seriell-zu-parallel Konverter Der Empfänger besteht funktional gesehen ebenso aus einem Schieberegister, das lediglich in der
entgegengesetzten Richtung arbeitet. An seinem Eingang liegt ein kontinuierlicher Bitstrom an, aus dem in einem Schieberegister 8 aufeinanderfolgende Bits zu einem Byte zusammengefaßt. Wie im Sendeteil auch
wird die Struktur des Schieberegisters häufig in mehreren Stufen aufgebaut, damit nur das allererste Flipflop mit der maximalen Frequenz des seriellen Datenstroms läuft. Nach jeweils 8 aufeinander folgenden Bits liegt am Ausgang des seriell-zu-parallel Konverters ein neues Byte an und kann
parallel an die dem Makro nachfolgende Schaltung weitergereicht werden. Allgemein müssen neben dieser Funktion drei weitere Dinge bei dem Empfang eines
asynchronen seriellen Datenstromes in einer seriellen Empfangsschaltung durchgeführt werden:
Wiederherstellung des Sendetaktes aus der Charakteristik des Datenstroms Dieses wird i.d.R. erst mit einer entsprechenden Leitungskodierung ermöglicht (s. 8B10B). Dieser
Punkt ist der weitaus kritischere Vorgang da hier zwecks Fehlervermeidung im Empfänger sehr hohe Maßstäbe bzgl. der Qualität des gewonnenen Taktes gestellt werden (s.u. Clock Recovery).
Wird ein Byte-Strom seriell übertragen, liegen sämtliche Bits aller übertragener Bytes sequentiell hintereinander.
Eintakten der einzelnen Bits möglichst genau in der Mitte eines Bit-Zyklusses Hier liegt der größte Signalabstand zwischen einem Low- und einem High-Pegel vor und damit die
geringste Fehlerwahrscheinlichkeit (s. Augendiagramm unten).
Herausfinden der Grenzen der seriell versendeten Worte (Word Alignment) Aus der Sicht eines Empfängers liegen die Bits an seinem Eingang zwar in der richtigen
Reihenfolge an, jedoch ist die Grenze eines Bytes - also wo ist das erste Bit und wo ist das letzte Bit eines Bytes - zunächst unbekannt. Eine eigene Information zu Bestimmung der Byte-Grenze
liegt nicht vor und kann nur aufgrund der Charakteristik der übertragenen Daten zurückgewonnen werden. Dazu gibt es mehrere Möglichkeiten und Übertragungsstandards, weshalb dieses der
Hauptgrund dafür ist, daß die Funktion des Word Alignment häufig nicht in den SerDes-Makros integriert ist und in einem eigenen nachgeschalteten Funktionsblock realisiert werden muß. Als ein
Beispiel für die Wiederherstellung des Word Alignments kann die bereits erwähnte 8B10B Leitungskodierung angesehen werden. Hier werden über auffällige Bitmuster bestimmter
Synchronisierungsworte (z.B. der Komma-Charakter K28.5, "001111 1010" bzw. "110000 0101") die 10-bit Grenzen und damit letztendlich auch die der übertragenen Byte-Grenzen (nach
der 10-zu-8 Bit Konvertierung) erkannt.
Clock Recovery Ähnlich wie bei den Wortgrenzen wird auch die Frequenz des Datenstromes nicht direkt vom Sender hin
zum Empfänger übertragen und muß erst aus dem am Empfänger anliegenden Datenstrom zurückgewonnen werden. Zwar ist die definierte Datenrate der Übertragung bekannt, z.B 622Mbit/s,
jedoch kann ein Taktgenerator auf der Empfängerseite nie genau mit der exakt gleichen Frequenz laufen wie der Taktgenerator des Senders und damit auch nicht mit dem seriellen Datenstrom. Selbst wenn
diese zu einem bestimmten Zeitpunkt 'ausreichend' identisch sind, kann aufgrund thermischer Prozesse, Schwingverhalten von PLLs und unterschiedlichen Spannungsschwankungen auf Sender- und
Empfangsseite davon ausgegangen werden, daß sich diese zwei Frequenzen früher oder später gegeneinander verschieben werden und damit Übertragungsfehler entstehen. Die Frequenzdifferenz kann
zwar gering sein, ist jedoch prinzipiell unbekannt und muß daher auf der Empfängerseite als asynchroner Datensignal betrachtet und dementsprechend behandelt werden.
Zur Erzeugung einer zum hereinkommenden Datenstrom synchronen Frequenz wird eine abgewandelte PLL-Schaltung benutzt. Diese erzeugt aus einem Referenztakt mit einer passender Multiplikation die
Basisdatenrate des empfangenen Datensignals. Hier ein Beispiel:
Die Datenrate gemäß STM4 Standard aus der Telekommunikation ist 622,08Mbit/s. Die PLL eines SerDes Empfängers kann diesen Basistakt aus einer Referenzfrequenz von 77,76MHz und
einer Multiplikation von 8 erzeugen.
Die Frequenzunterschiede zwischen der Datenrate und dem Basistakt der PLL werden durch kontinuierliche Phasenverschiebungen des generierten Taktes innerhalb der PLL ausgeglichen. Dazu
werden Phasenlage zwischen den hereinkommen Flankenwechseln des Datensignals und des erzeugten
Taktes herangezogen. Liegen die Phasen auseinander wird der PLL Takt entweder erhöht oder erniedrigt, bis der Takt synchron zum Sendetakt liegt und die Bitstrom im SerDes
Empfänger in der Mitte des Augendiagramms (Bild) synchron eingetaktet werden kann. Anhand dieser funktionalen Beschreibung wird jetzt deutlich, daß das Datensignal über eine bestimmte Anzahl von übertragenen Bits Signalwechsel
aufführen muß, damit die Übertragung auch über den Zeitraum "zahlreicher" Bits funktionieren kann. Ohne solche Signalwechsel kann die PLL nicht gegensteuern und die Phasendifferenz zwischen Sender
und Empfänger würde irgendwann zu groß werden. Das Ergebnis wäre ein erhöhter bzw. eine hohe Bitfehlerrate.
SerDes Konfigurationen Von der Sende- und Empfängerkonfiguration her betrachtet gibt es zwei Möglichkeiten eine SerDes Funktion aufzubauen:
SerDes Transceiver Makro Sender und Empfänger sind im gleichen Makro implementiert und können so die gleiche PLL mit
den erzeugten Takten nutzen. Die Sende- und Empfangsdatenraten sind dabei auf die gleichen Werte eingestellt. Die relativ große Fläche, die für die PLL benötigt wird, kann so effizienter genutzt werden.
Häufig ist in einem SerDes Transceiver ein Loop-Back Pfad integriert (LLB, Local Loop Back), über den die serialisierten Daten direkt auf den Eingang des jeweiligen Empfängers zurück
gekoppelt werden. Mit dieser Funktion kann man im Problemfall den seriellen Datenpfad testen, ohne außen ein Kabel anschließen zu müssen. Das Gegenstück zum LLB auf der parallelen Seite
des Transceivers wird Far End Loop Back (FELB) bezeichnet und muß bei vielen SerDes Implementationen in der Core Area außerhalb des Makros quasi “manuell” aufgebaut werden.
Getrennte Serializer- und De-serializer Makros Sind im anderen Fall Sender und Empfänger in zwei verschiedenen Makros implementiert, können
diese entsprechend der ASIC-Struktur an unterschiedlichen Stellen des Chips plaziert werden. Dieses resultiert zwar bezogen auf ein einzelnes Makro in einen Mehrverbrauch an Chipfläche,
kann aber u.U. aufgrund der unabhängigen Plazierungsmöglichkeit an die Datenpfadstruktur des ASICs angepaßt werden und so den Flächenmehrverbrauch wieder wett machen. Ein weiterer
Vorteil separater Makros ist, daß auf einem Chip unterschiedlich viele Sende- und Empfangskanäle integriert werden können . Bezogen auf das PCB und dessen Signalführung
können beide Varianten je nach PCB-Aufbau von Vor- oder von Nachteil sein.
Weiterführende SerDes-Links www.us.design-reuse.com/articles/article10541.html
Zurück zur Makro-Übersicht Weiter zum Aufbau der Chip-Verdrahtung
|
|