Ich ging durch die SATA3-Spezifikation. Gemäß der Spezifikation werden sowohl Scrambler als auch 8b/10b-Encoder in seinem Design verwendet. Scrambler hilft bei der Randomisierung der Daten, während der 8b/10-Encoder genügend Übergänge für die DC-Balance und die Taktdatenwiederherstellung erzeugt.
Mein Zweifel ist, dass der Scrambler, wenn er die Daten randomisiert, den Zweck des DC-Ausgleichs und der Taktdatenwiederherstellung lösen sollte, da der Scrambler Übergänge von „1“ und „0“ erzeugt. Wozu braucht man dann 8b/10b Encoder?
Ich diskutiere dies basierend auf meinen Kenntnissen über Ethernet und nicht über SATA. Ich kenne den SATA-Standard nicht, aber wenn er LFSR-Scrambling und 8b10b- oder 64b66b-Codierung verwendet, sollte er dort die gleichen Vorteile haben wie bei Ethernet.
Die 8b10b- oder 64b66b-Codierung bietet zwei Funktionen, die beim einfachen Scrambling nicht verfügbar sind:
Blockgrenzen Die Codierung führt Blockgrenzen ein, die eine Synchronisation zwischen Sender und Empfänger ermöglichen. Ohne diese Grenzen würde der Empfänger nicht wissen, wo ein Oktett endet und das nächste beginnt, geschweige denn, wo die Grenzen zwischen Frames oder Paketen in Protokollen höherer Ebene sind.
Fehlererkennung Die Codierung ermöglicht die Erkennung eines beliebigen Einzelbitfehlers in einem Frame und kann statistisch mehrere Bitfehler erkennen. Dadurch kann das Protokoll angemessen reagieren, wenn ein fehlerhafter Block empfangen wird.
Einige Kommunikationsprotokolle senden jedes Datenoktett unter Verwendung von acht Datenbits plus einigen Rahmenbits. Beim Senden von Daten über ein typisches asynchrones Protokoll können bis zu neun aufeinanderfolgende "0"-Bits und eine beliebige Anzahl aufeinanderfolgender "1"-Bits vorhanden sein. Ein einfacher Scrambler kann zehn Bits, von denen die ersten beiden garantiert 10 sind, in zehn Bits abbilden, die garantiert nicht mehr als etwa sechs aufeinanderfolgende übereinstimmende Werte haben.
Die Verwendung eines komplizierteren 8b/10b-Encoders ermöglicht es, die Worst-Case-Anzahl aufeinanderfolgender übereinstimmender Bits weiter zu reduzieren, als dies mit einem einfachen Scrambler möglich wäre, und bietet auch Garantien für den Leitungsausgleich (wodurch sichergestellt wird, dass die Gesamtzahl der Nullen und Einsen übertragen bleiben nahe beieinander). Um diese Vorteile zu erzielen, sind kompliziertere Schaltungen erforderlich, und es muss auch ein Teil der Timing-Flexibilität aufgegeben werden, die ein asynchrones Protokoll bietet. Beispielsweise könnte ein asynchrones Protokoll 100 Bytes über 1100 Bitzeiten liefern, bei einer kontinuierlichen "glatten" Rate von einem Byte alle elf Bitzeiten. Bei Verwendung einer 8b/10b-Codierung wäre es notwendig, ein Byte, dann ein Leerzeichen, dann zehn Bytes, dann ein weiteres Leerzeichen usw. zu senden. Für viele Zwecke wäre das nicht wichtig, aber für einige Zwecke könnte es sein. Wenn ein asynchroner Empfänger mit einem DAC verdrahtet wäre, der jeden Abtastwert sofort ausgibt, wenn er empfangen wird, würde das Durchleiten des Signals durch einen Bit-Synchronisierer und Verwürfeln 0,5 Bitzeiten an Jitter hinzufügen. Das Durchleiten durch einen 8b/10b-Encoder würde 5 Bitzeiten an Jitter hinzufügen.
Tapojyoti Mandal
Finbarr
Toni M
Toni M