Gleichstromfreiheit - in der Ruhe liegt die Kraft
Die zweite magische Übung bringt uns Ausgeglichenheit. Jeder weise Magier versteht es, nicht zu sehr in die eine noch die andere Richtung zu gehen. Sonst verläuft er sich, und das gilt auch für serielle Verbindungen.
Bei diesen gilt es, das übertragene Signal gleichstromfrei (auf Englisch: DC-balanced) zu halten. Dies bedeutet, dass der Mittelwert des erzeugten Wechselstroms über einen gewissen Zeitraum null ist. Der Wechselstrom entsteht dadurch, dass bei einer differentiellen Verbindung immer einer der Leiter mit einer Stromquelle, der andere mit dem Nullpotential verbunden ist. Verbunden sind sie durch einen Abschlusswiderstand. So fließt ein definierter Strom, dessen Richtung die Bitwerte Null und Eins codiert. Und wo genau ist hier das Problem, das wir mit Gleichstromfreiheit lösen?
Oft werden Sender und Empfänger durch einen Kondensator kapazitiv gekoppelt, um sie elektrisch zu trennen. Solange der Kondensator nicht auf seine volle Kapazität geladen wird, entspricht der Strom an der Empfängerseite dem an der Senderseite. Wird er jedoch voll geladen, fällt der Strom auf der Empfängerseite auf null. Der Empfänger sieht also nicht mehr die Daten, die der Sender sendet - es kommt zu Fehlern. Und zwar so lange, bis die Stromrichtung wieder umgekehrt wird.
Problematisch sind also auch hier Signale mit langen Null- oder Einsfolgen. Die Codierung sorgt für eine statistische Gleichverteilung von Nullen und Einsen im ausgehenden Bitstrom. Erreicht wird dies durch die Verwendung von Codewörtern, in welchen die Anzahl an Einsen entweder gleich der halben Wortlänge oder maximal eins höher oder geringer ist.
Bei zehn Bit Wortlänge kommen also alle Wörter mit fünf Einsen und Nullen, vier Einsen und sechs Nullen sowie sechs Einsen und vier Nullen in Frage. Zusätzlich muss sichergestellt werden, dass nach einem Wort mit vier Einsen eines mit sechs Einsen folgt und umgekehrt.
Damit stehen 462 Codeworte zur Verfügung - mehr als genug, um die 256 möglichen Werte eines Bytes zu codieren. Es bleiben sogar noch welche übrig, um diese geht es im nächsten Abschnitt.
Übrigens: Wer nachrechnet, wird merken, dass eigentlich 672 Codeworte zur Verfügung stehen. Allerdings codieren jeweils ein Wort mit vier Nullen und sechs Einsen sowie eines mit sechs Nullen und vier Einsen denselben 8-Bit-Wert. Das ist erforderlich, um sicherzustellen, dass sich solche Wörter immer abwechseln können - sonst wäre die Gleichstromfreiheit nicht zu gewährleisten.
Ich befehle dir, Geist!
Eines der mächtigsten Rituale ist die magische Kontrolle eines Wesens. Hier stellt der Magier oder die Magierin ein arkanes Band mit einer Wesenheit her und ist fortan in der Lage, deren Verhalten zu kontrollieren.
Ähnliches geschieht oft zwischen Host und Gerät, die über eine Schnittstelle verbunden sind. Üblicherweise existiert neben der seriellen Schnittstelle keine weitere, also müssen auch alle Kontrollinformationen über sie ausgetauscht werden. Beispielsweise muss das Hostsystem einer PCIe-Karte mitteilen können, dass sie in einen Stromsparmodus wechseln soll.
Zwar wäre es denkbar, diese Information in den regulären Datenstrom zu mischen. Dies wird als In-band signalling bezeichnet und erfordert, dass die Empfängerhardware ihn komplett auswertet. PCIe nutzt ein paketbasiertes Schichtenmodell, bei dem die Nutzdaten in Pakete verpackt werden. Kontrollinformationen müssten ebenfalls in solche Pakete verpackt und von den Nutzdaten unterschieden werden.
Der Hardwareaufwand hierfür wäre erheblich, da die Verarbeitung komplexer Protokolle mit Logikkomponenten schlecht umzusetzen ist. Die unteren Protokollschichten benötigen üblicherweise nur sehr grundlegende Kommandos. Hierfür einen komplexen Prozessor vorauszusetzen, wäre übertrieben.
Wesentlich einfacher ist die Verwendung spezieller Codewörter. Dank Codierung stehen wesentlich mehr nutzbare Codewörter zur Verfügung, als benötigt werden. Einige davon können als Kommandos genutzt werden. Da mehr Bits vorhanden sind als benötigt, muss das Datenformat hierfür nicht geändert werden.
Der eingehende Datenstrom wird vom Empfänger ohnehin dekodiert, um die ursprünglichen Bits zurückzugewinnen. Der zusätzliche Schaltungsaufwand zur Erkennung der Kommandos ist gering: Es muss lediglich geprüft werden, ob eines der Codewörter auftaucht. Auch können durch dieses sogenannte Out-of-band signalling Funktionsschichten klar voneinander getrennt werden.
Tatsächlich können je nach Gerät beide Methoden genutzt werden. In-band signalling wird dann für schnittstellenspezifische, Out-of-band signalling für gerätespezifische Kommandos verwendet.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Auftritt: Leitungscodierung | Ausgestrahlt - elektromagnetische Emission |
Seh ich genauso. ich fand den Matapher nicht wirklich hilfreich und irgendwie fehl am Platz.
Jetzt kommt mit der nächsten Gen mal mehr als drei Pegel, ja wahnsinn! Ja ich weiss...
Ich auch. Der war sehr unterhaltsam und lehrreich. Perfekt.
Danke für die Korrektur. Dass elektrische Signale analog sind, ist aus der Sicht ja...