DE69632879T2 - Kodeübertragung mit lokaler Parität - Google Patents

Kodeübertragung mit lokaler Parität Download PDF

Info

Publication number
DE69632879T2
DE69632879T2 DE69632879T DE69632879T DE69632879T2 DE 69632879 T2 DE69632879 T2 DE 69632879T2 DE 69632879 T DE69632879 T DE 69632879T DE 69632879 T DE69632879 T DE 69632879T DE 69632879 T2 DE69632879 T2 DE 69632879T2
Authority
DE
Germany
Prior art keywords
deviation
bit
frame
bytes
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69632879T
Other languages
English (en)
Other versions
DE69632879D1 (de
Inventor
Albert X. Widmer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69632879D1 publication Critical patent/DE69632879D1/de
Publication of DE69632879T2 publication Critical patent/DE69632879T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/095Error detection codes other than CRC and single parity bit codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • H03M5/04Conversion to or from representation by pulses the pulses having two levels
    • H03M5/14Code representation, e.g. transition, for a given bit cell depending on the information in one or more adjacent bit cells, e.g. delay modulation code, double density code
    • H03M5/145Conversion to or from block codes or representations thereof

Description

  • BEREICH DER ERFINDUNG
  • Die vorliegende Erfindung betrifft eine Vorrichtung und ein Verfahren zur Erzeugung von codierten Daten aus uncodierten Daten unter Verwendung eines Codes mit lokaler Parität und eines eindeutigen und einzigen Kommas.
  • DER ERFINDUNG ZUGRUNDE LIEGENDER ALLGEMEINER STAND DER TECHNIK
  • Übertragungscodes haben hauptsächlich den Zweck, das Frequenzspektrum eines seriellen Datenstroms so umzusetzen, dass ohne weiteres eine Taktrückgewinnung und eine Wechselspannungskopplung möglich sind. Der Code muss auch Sonderzeichen außerhalb des Datenalphabets für Funktionen wie zum Beispiel Zeichensynchronisation, Rahmenbegrenzer und eventuell für Abbruch-, Rücksetz-, Leerlauf-, Diagnosefunktionen usw. bereitstellen. Oftmals in Verbindung mit Signalformung werden Codes auch verwendet, um das Signalspektrum besser an bestimmte Kanalerfordernisse anzupassen. In den meisten Fällen ist eine Verringerung der Bandbreite durch Einschränkungen sowohl bei den hochfrequenten als auch den niederfrequenten Anteilen wünschenswert, um Verzerrungen im Übertragungsmedium, insbesondere in elektromagnetischen Kabeln, oder im bandbreitenbegrenzten Empfänger zu verringern und die Auswirkungen von Eigen- und Fremdrauschen zu mindern.
  • Ein weiterer Aspekt von Codes ist ihre Beeinflussung durch Rauschen und Fehler bei den Leitungsziffern. Die Redundanz in Verbindung mit Leitungscodes kann ergänzend zu anderen Fehlererkennungsmechanismen oder zur Überwachung der Qualität des Kanals mit geringstmöglichem Schaltungsaufwand verwendet werden.
  • Solche Codes haben im Allgemeinen das unerwünschte Merkmal, dass sie Fehlerbündel (error bursts) in den decodierten Daten noch vergrößern, was eine Erkennung durch zyklische Redundanzprüfung schwieriger macht. Ein guter Übertragungscode sollte diese Auswirkungen auf ein Mindestmaß verringern.
  • Bei Lichtwellenleitern und gebäudeinternen Drahtleitungen konzentriert sich das Interesse aus vielen Gründen auf die Familie der Zweistufencodes. Bei Drahtleitungen werden Codes ohne Gleichspannungs- und mit nur geringem niederfrequenten Anteil bevorzugt, um die Übertragungsleitung von den Treiber- und Empfängerschaltungen galvanisch zu trennen, gewöhnlich durch reaktive Komponenten, und um die Signalverzerrung auf der Leitung zu verringern. Obgleich diese Faktoren nicht für Lichtwellenleiter gelten, sind gute niederfrequente Eigenschaften des Codes aus mehreren Gründen hilfreich.
  • Während der Erörterung von Codierungsfragen für den ANSI Fibre Channel (Sachs, 1994) durch die Arbeitsgruppe X3T9.3 des technischen Ausschusses zum Thema Schnittstellen auf Einheitenebene (Technical Committee on Device Level Interfaces) (1992) waren die wenigsten Teilnehmer der Meinung, dass die physische Verbindung eine Vorwärtsfehlerkorrektur (Forward Error Correction (FEC)) vorsehen sollte. Vier verschiedene Gründe für diese Forderung wurden vorgebracht:
    • • Die tatsächliche Fehlerrate sollte unter 10–15, etwa bei 10–17 liegen.
    • • Optische Komponenten mit weniger strengen Leistungsparametern sind kostengünstiger zu haben, und die Leistungseinbuße kann mit Vorwärtsfehlerkorrektur (FEC) ausgeglichen werden.
    • • Bei langen Leitungen muss das Vorkommnis von Übertragungswiederholungen aufgrund der mit einer Übertragungswiederholung verbundenen langen Verzögerungen verringert werden.
    • • Es ist möglich, dass Echtzeitanwendungen bei Übertragungswiederholungen gegebenenfalls nicht funktionieren.
  • Einige der vorstehenden Punkte wurden von Grover (1988) erörtert, und andere Lösungen, bei denen Polynomcodes verwendet werden, wurden vorgeschlagen.
  • Die Arbeitsgruppe prüfte die Entwürfe eines bestimmten Vorschlags mit Vorwärtsfehlerkorrektur (FEC). Eine ausführlichere Beschreibung findet sich nun in der Literatur (Benz u. a., 1991; McMahon u. a., 1992; Springer 1992). Der Vorschlag enthielt einen 8B/10B-Code für Tabellensuchoperationen und einen gekürzten 8-Bit-Hamming-Code, der bei jedem 8. Informationsbyte auf die codierten Bits angewendet wird. Die FEC-Bits werden Manchester-codiert. Ein Paar dieser codierten Bits wird zwischen die mit dem 8B/10B-Code codierten Bytes eingefügt. Die Datenübertragungsgeschwindigkeit wird von 0,8 auf 0,667 verringert. Ein einzelner Fehler in 8 Datenbytes kann immer korrigiert werden.
  • Andere Lösungsansätze, Fehlerkorrektur mit lauflängen- und gleichspannungsbeschränkten Binärcodes zu kombinieren, werden von French (1989), Blaum (1991), Blaum u. a. (1993), Coetzee u. a. (1990) sowie anderen beschrieben. Diese Studien befassen sich mit den komplexeren Codes für Magnetkanäle, die im Allgemeinen andere Beschränkungen als bei Lichtwellenleiter- oder Metall-Übertragungskanälen erfordern.
  • GB-A-2 232 858 legt ein Verfahren und eine Datencodiervorrichtung zur Codierung von Daten offen, bei der 8-Bit-Datenbytes als 10-Bit-Codeblöcke codiert werden, wobei die Codeblöcke die folgenden Regeln erfüllen: Jeder Codeblock enthält entweder 5 Bits eines ersten vorher festgelegten Binärwerts und 5 Bits eines zweiten vorher festgelegten Binärwerts oder 4 Bits des ersten Binärwerts und 6 Bits des zweiten Binärwerts. Kein Codeblock hat mehr als 4 aufeinanderfolgende Bits des ersten Binärwerts oder mehr als 4 aufeinanderfolgende Bits des zweiten Binärwerts. Jeder Codeblock hat mindestens einen Übergang in seinen ersten drei Bit und mindestens einen Übergang in seinen letzten drei Bits. Jeder Codeblock enthält mindestens vier Übergänge, und jeder Codeblock enthält mindestens zwei Übergänge in seinen ersten sechs Bit und mindestens zwei Übergänge in seinen letzten sechs Bits. Wechselnde ungleiche Codeblöcke, d. h., Codeblöcke, die 4 Bits des ersten Binärwerts und 6 Bits des zweiten Binärwerts enthalten, werden invertiert, um insgesamt ein Gleichgewicht zwischen Einsen und Nullen in den codierten Daten aufrechtzuerhalten. Die 10-Bit-Blöcke 1000011110 und 0111100001 werden als Steuerzeichen verwendet.
  • EP-A-0 097 763 legt ein Verfahren und eine Datencodiervorrichtung zur Erzeugung eines gleichspannungsfreien, lauflängenbeschränkten 8B/10B-Codes aus einem uneingeschränkten Eingangsdatenstrom offen, der eine Vielzahl von 8-Bit-Datenblöcken umfasst. Der 8-Bit-Block wird in zwei Teilblöcke aufgeteilt, die aus 5 und 3 aufeinanderfolgenden Bits bestehen, wobei jeder Teilblock geprüft wird, um festzustellen, ob irgendwelche der einzelnen Bits eine Änderung erforderlich machen. Wenn ja, werden die vorab ermittelten Bits entsprechend dieser Feststellung geändert, um ein wechselndes Codemuster zu erzeugen. Die Abweichung (disparity) des aktuellen Ausgabeteilblocks, der gerade codiert wird, wird festgestellt, und die Abweichung des letzten Teilblock-Codes, der ungleich Null ist, wird ermittelt. Ein erstes Codemuster wird als der aktuelle Ausgabeteilblock für bestimmte der Ausgabeteilblöcke ausgewählt, wenn die letzte Abweichung ungleich Null in dem Ausgabecodemuster eine erste Polarität aufwies, und das Komplement des ersten Codemusters wird zugeordnet, wenn die letzte Abweichung ungleich Null die entgegengesetzte Polarität aufwies. Alle 6B- und 4B-Teilblöcke einzeln und die ganzen 10-Baud-Zeichen haben eine Abweichung von 0 oder aber +/–2, d. h., jedes gültige Zeichen in dem 10B-Alphabet hat entweder 5 Einsen und 5 Nullen oder 6 Einsen und 4 Nullen oder 4 Einsen und 6 Nullen.
  • Schouhammer, Immink, Beenker: "Binary Transmission Codes with Higher Order Spectral Zeroes at Zero Frequency", IEEE Transactions on Information Theory, Mai 1987, Band IT-33, Nr. 3, Seiten 452 bis 454, stellen ein Verfahren vor, mit dem Binärkanalcodes so gestaltet werden können, dass sowohl die Leistungsdichtespektrum-Funktion als auch ihre Derivate niedriger Ordnung bei einer Frequenz von Null verschwinden.
  • Ferreira, h. c. u. a.: "Hamming Distance Preserving Mappings and Trellis Codes with Constrained Binary Symbols", IEEE Transactions on Information Theory, September 1989, Band 35, Nr. 5, Seiten 1009, 1100 bis 1103, beschreiben eine Umwandlung eines linearen Faltungscodes in einen lauflängenbeschränkten oder ausgewogenen Trelliscode mit demselben oder einem größeren freien Abstand, wobei die Umwandlung einen Hamming-Abstand einschließt, der die Abbildung der Gruppe von uneingeschränkten Binärsymbolen des Faltungscodes auf eine Gruppe von geeigneten beschränkten Symbolen beibehält.
  • Bezug nehmend auf 1 verwendet ein klassisches Fehlerkorrekturverfahren eine horizontale Parität (HP) und eine vertikale Parität (VP). Jedes "X" in 1 stellt ein Datenbit dar. Die Zahlen 0 bis 7 in den Bits der Rohdaten stellen die acht Stellen eines Acht-Bit-Bytes dar. In der ersten Spalte stellen B0 bis B(N – 1) unter der Überschrift "Bytes" die N Bytes eines Rahmens 50 dar. Für jede Bitstelle des Rahmens 50 gibt es ein vertikales Paritätsbit, das der vertikalen Parität eines jeden der Bytes in dem Rahmen entspricht. Acht vertikale Paritätsbits bilden das vertikale Paritätsbyte 52. Für jedes der Bytes im Rahmen 50 gibt es eine horizontale Parität. Wenn Daten wie die in 1 gezeigten übertragen werden, werden jedes Byte und seine zugehörige horizontale Parität übertragen, und das Byte 52, das den vertikalen Paritäten für jede einzelne der Bitstellen entspricht, wird mit dem Rahmen übertragen. Der Empfangsrechner führt eine Neuberechnung einer horizontalen Parität für jedes übertragene Byte sowie eine Neuberechnung einer vertikalen Parität für den übertragenen Rahmen durch. Die neu berechnete horizontale Parität wird mit der übertragenen horizontalen Parität verglichen, und die neu berechnete vertikale Parität wird mit der übertragenen vertikalen Parität verglichen. Wenn es eine Abweichung gibt, beispielsweise bei der horizontalen Parität 54 für das übertragene Byte B1 und beispielsweise bei dem vertikalen Paritätsbit 56 für die Bitstelle 5 der vertikalen Parität, weiß man, dass das Bit 58, das sich an der Bitstelle 5 des Bytes B1 befindet, fehlerhaft ist, und der Wert wird in den anderen Binärzustand geändert, das heißt, wenn der Wert "1" ist, wird er in "0" geändert oder umgekehrt.
  • Die binären Rohdaten werden im Allgemeinen nicht übertragen, sondern zuerst in codierte Daten umgewandelt, deren Bytes eine größere Anzahl von Bits als die Bytes der Rohdaten haben. Die Codierung wird aus mehreren Gründen durchgeführt, wie vorstehend kurz beschrieben wurde. Ein Begrenzer ist notwendig, um Wortgrenzen und Rahmengrenzen festzulegen. Ein Begrenzer ist auch notwendig, damit der Empfänger bei der Übertragung von Daten feststellen kann, wo der Datenrahmen, der gerade gesendet wird, beginnt. Ein Komma ist eine einzelne Bitfolge, die die Zeichen- oder Bytegrenzen in einem seriellen Bitstrom angibt. Es ist wünschenswert, dass man einen Code mit einem Komma hat, das auf ein einziges Zeichen beschränkt ist. Ein Kommazeichen dient gewöhnlich sowohl als Begrenzer als auch als Byte-Synchronisierer. Bei der Übertragung von Daten ist es auch wünschenswert, dass die Lauflängen aus fortlaufenden Einsen oder aus fortlaufenden Nullen bestehen und klein sind, weil große Lauflängen die Taktrückgewinnung aus dem empfangenen Datenstrom schwierig und kostspielig machen. Codierte Daten werden zur Begrenzung der Lauflänge auf einen geringeren als einen vorher festgelegten wert verwendet, so dass die relative Zeitsteuerung von Daten und Taktübergängen des Empfängers in häufigen Intervallen verglichen werden kann. Auch ist es wünschenswert, dass die codierten Daten gleichspannungsfrei sind. Die digitale Summenabweichung muss endlich und ihr Wert gering sein. Wenn es viele aufeinanderfolgende Einsen oder Nullen gibt, nehmen die Ladungspegel der Schaltungen, die reaktive Komponenten enthalten, zu, was sich aufgrund von Gleichspannungs- and Niederfrequenzwanderung negativ auf die Wechselspannungskopplung auswirkt.
  • Da codierte Bytes eine größere Anzahl von Bits haben als in dem Byte der Rohdaten enthalten ist, ist es nicht wünschenswert, die klassische horizontale und vertikale Parität mit codierten Daten zu verwenden, da die horizontale Parität für die codierten Daten wahrscheinlich mehr als eine Bitstelle in dem codierten Byte benötigt. Bei einem Rahmen, der viele Bytes enthält, würden durch die horizontale Parität sehr viele zusätzliche Bits hinzugefügt werden, was deutliche Auswirkungen auf die Zahl der Bitstellen hätte, die nützliche Informationen transportieren.
  • Es ist eine Aufgabe der vorliegenden Erfindung, einen Code bereitzustellen, der von sich aus eine Parität für jedes Byte enthält, so dass man nicht extra eine horizontale Parität benötigt, um fehlerhafte Bytes zu lokalisieren.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Allgemeine Erscheinungsformen der Erfindung sind ein Verfahren und eine Vorrichtung zur Codierung eines Rahmens mit N-Bit- Bytes in einen Rahmen mit codierten M-Bit-Bytes, wobei M > N > 0 ist und der Rahmen ein Komma zur Byte- und Rahmenabgrenzung enthält, und zur Bereitstellung eines Codes, der aus einer Gruppe von M-Bit-Bytes besteht, die eine Teilmenge aller möglichen M-Bit-Bytes ist; wobei es für jedes der 2N möglichen N-Bit-Bytes ein entsprechendes Element in der Gruppe gibt; wobei jedes der Elemente des Codes eine Folge von Bits ist, so dass, wenn eines der Bits geändert wird, ein sich daraus ergebendes M-Bit-Byte keines der Elemente des Codes ist; wobei eines der Elemente des Codes ein Komma ist, das zur Kennzeichnung der Byte- und der Rahmengrenze verwendet wird, wobei das Komma eine Folge von Bits hat, deren Binärzustand von einem ersten und einem zweiten Wert so ausgewählt wird, dass die Bitfolge des Kommas auf eines der Elemente des Codes beschränkt ist und nicht über eine Grenze zwischen einer beliebigen Kombination von anderen Elementen des Codes hinweg vorkommt; wobei jedem der N-Bit-Bytes in dem Rahmen das entsprechende Element von dem Code zugeordnet wird, um einen codierten Rahmen zu bilden, der dem Rahmen entspricht; und wobei der codierte Rahmen gespeichert wird.
  • Eine genauere Erscheinungsform der vorliegenden Erfindung sind ein Verfahren und eine Vorrichtung zur Umwandlung aller 256 8-Bit-Bytes in eine Gruppe von codierten 10-Bit-Bytes, wobei ein ungültig codiertes Byte erzeugt wird, wenn ein Fehler an einer Bitstelle eines bestimmten codierten Bytes auftritt, und wobei die Gruppe der codierten Bytes ein Komma enthält, das auf ein einzelnes Byte beschränkt ist, und wobei es die Bitfolge des Kommas nur einmal gibt, das heißt, die Folge der Bits, die dem Komma entsprechen, ist in keiner Bytefolge mit einer anderen Ausrichtung auf die Bytegrenzen zu finden, weder innerhalb der Bytes noch jenseits der Bytegrenzen.
  • In einer bestimmteren Erscheinungsform der vorliegenden Erfindung wird die vertikale Parität verwendet, um die als fehlerhaft bekannte Bitstelle in einem Byte zu kennzeichnen.
  • In einer bestimmteren Erscheinungsform der vorliegenden Erfindung wird der Code auf eine Lauflänge von weniger als 5 oder gleich 5 beschränkt.
  • In einer weiteren bestimmteren Erscheinungsform der vorliegenden Erfindung gibt es keine Lauflängen, die größer als 5 sind und sich über eine Grenze zwischen benachbarten Bytes erstrecken.
  • In einer weiteren bestimmteren Erscheinungsform der vorliegenden Erfindung gibt es keine Lauflängen mit einer aufeinanderfolgenden Bitzahl von 5.
  • In einer weiteren bestimmteren Erscheinungsform der vorliegenden Erfindung sind ein Bitmuster "11011111" und sein Komplement "00100000" eine Synchronisierfolge oder ein Komma, die/das in ein 10-Bit-Kommazeichen "0110111110" beziehungsweise sein Komplement "1001000001" eingebettet sind. Das Komma enthält 4 Übergänge innerhalb des Kommas, und eine Folge von Kommazeichen erzeugt 5 Übergänge pro Kommazeichen.
  • In einer weiteren bestimmteren Erscheinungsform des Codes gemäß der vorliegenden Erfindung enthält der Code 256 Datenzeichen, die der Anzahl der 8-Bit-Datenbytes entsprechen, und 4 Nichtdatenzeichen.
  • In einer weiteren bestimmteren Erscheinungsform der vorliegenden Erfindung kommen die Kommabitfolge und die komplementäre Kommabitfolge in keinem anderen codierten Byte vor und erstrecken sich auch nicht über eine Grenze zwischen benachbarten gültigen codierten Bytes.
  • KURZE BESCHREIBUNG DER FIGUREN
  • Weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden nach der Betrachtung der folgenden ausführlichen Beschreibung der Erfindung sichtbar, wenn diese in Verbindung mit den Figuren gelesen wird, in denen:
  • 1 schematisch die Verwendung der klassischen horizontalen und vertikalen Parität zur Fehlerkorrektur zeigt;
  • 2 einen 8B/10B-Code mit lokaler Parität und einem kurzen Komma zeigt;
  • 3 ein Beispiel für die Zuordnung von Einsen und Nullen zu dem Trellisdiagramm von 2 zeigt, um die Bitfolge der Codezeichen festzustellen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine hier beschriebene Erfindung betrifft ein Verfahren zur Korrektur eines einzelnen fehlerhaften Bytes in einem Rahmen. Das grundlegende Prinzip besteht in der Verwendung einer rechteckigen Anordnung von horizontalen und vertikalen Paritätsbits, wobei die horizontale Parität das fehlerhafte Byte lokalisiert und die vertikale Parität zu dessen Korrektur verwendet wird. Das unverkennbare Merkmal ist, dass die funktionale Gleichwertigkeit der horizontalen Parität von einem speziellen 8B/10B-Übertragungscode mit lokaler Parität bereitgestellt wird.
  • Bei einem Code mit lokaler Parität hat jedes 8-Bit-Byte ein spezielles codiertes 10-Bit-Byte, das ihm entspricht. Die codierten Bytes sind so ausgelegt, dass das gültige codierte Byte in ein ungültiges codiertes Byte umgewandelt würde, wenn irgendeine der Bitstellen fehlerhaft wäre. Nachstehend wird ein Code mit lokaler Parität beschrieben.
  • Eine Gruppe VPAR aus 8 vertikalen Paritätsbits wird von den uncodierten Daten abgeleitet, codiert und in das erste Leerwort (Idle word) gepackt, das auf das Rahmenende (End of Frame) folgt. Nach der Feststellung eines fehlerhaften Bytes am Empfänger werden die VPAR-Bits zu dessen Korrektur verwendet.
  • Zunächst wird das grundlegende rechteckige Fehlerkorrekturschema, das Paritätsbits verwendet, beschrieben. Anschließend wird die Verwendung der horizontalen Parität zur Lokalisierung eines Fehlers beschrieben. Eine verbesserte Version eines 8B/10B-Codes mit einer ihm eigenen lokalen Parität wird vorgestellt. Dann werden die Korrektur eines fehlerhaften Bytes durch vertikale Paritätsbits sowie die Wiederherstellung von fehlerhaften Steuerzeichen beschrieben.
  • Grundlegendes Korrekturschema
  • Das gemäß der vorliegenden Erfindung vorgeschlagene grundlegende Korrekturschema beruht auf der Anordnung von Daten und Paritätsbits, wie sie in 1 gezeigt sind, nach einem rechteckigen oder matrixförmigen Schema. Ein Rahmen wird in kleine Segmente unterteilt, vorzugsweise in Bytes oder Wörter. Eine Parität oder ein anderes Mittel der Fehlererkennung wird an jedes der Segmente angehängt, und zusammen bilden sie eine Matrixzeile. Aufeinanderfolgende Segmente werden in die folgenden Zeilen gestellt. Diese erste Gruppe von Paritätsbits wird als horizontale Parität bezeichnet. Auf mehrere dieser Segmente folgt eine vertikale Paritätsgruppe, wie in der Matrix in 1 angegeben ist. Die vertikale Parität besteht aus einem Paritätsbit für jede Datenbitspalte. Sie dient zur Feststellung und Korrektur des oder der fehlerhaften Bits in dem Segment, das von der horizontalen Parität als fehlerhaft gekennzeichnet wurde.
  • Eine ganze fehlerhafte Zeile kann korrigiert werden. Aus diesem Grund wird die vertikale Parität auf der Grundlage der uncodierten Bits berechnet, da sich eine Fehlerausbreitung durch die Decodierung, die sich auf ein Segment oder ein Byte beschränkt, nicht störend auf die Korrektur auswirkt. Die vertikale Parität hat genügend Bits, um mindestens ein Segment abzudecken. Um längere Fehlerbündel zu korrigieren, können zwei oder mehr vertikale Paritätszeilen angefügt werden; beispielhalber kann eine erste Parität auf der Grundlage von allen geradzahligen Zeilen und eine zweite Parität auf der Grundlage von allen ungeradzahligen Zeilen berechnet werden. Es ist dann möglich, Fehlerbündel, die sich über ein Paar benachbarter Zeilen erstrecken, oder zwei einzelne kürzere Fehlerbündel zu korrigieren, wenn eines von ihnen in einer geradzahligen und das andere in einer ungeradzahligen Zeile vorkommt. Die vertikalen Paritätsbits werden wie Daten codiert. Wenn in einem vertikalen Paritätsbyte ein Fehler auftritt, wird es ignoriert und nicht zur Korrektur von möglichen anderen Fehlern verwendet.
  • Eine notwendige Annahme ist, dass abgesehen von kurzen Fehlerbündeln, die Verbindungsfehlerereignisse zufällig und mit einer so geringen Häufigkeit auftreten, dass meistens nur ein einziges Fehlerereignis innerhalb eines Rahmens stattfindet. Wenn diese Annahme nicht zutrifft, muss die Rahmenlänge verringert werden, oder eine vertikale Parität muss in den Rahmen in festen Intervallen eingefügt werden. Eine andere Annahme ist, dass die meisten Fehler auf eine einzige Matrixzeile beschränkt sind. Die hier gezeigten und beschriebenen Systeme und Verfahren können so ausgelegt werden, dass Fehler, die über Zeilengrenzen hinausgehen, zu Lasten einer höheren Komplexität behandelt werden. Außerdem ist es notwendig, dass bei Vorhandensein von Fehlern der Anfang und das Ende des Rahmens richtig erkannt werden. Eine zyklische Redundanzprüfsumme, die über den Rahmen berechnet wird, stellt letzten Endes die Gültigkeit des korrigierten oder nichtkorrigierten Rahmens fest. Funktionen zur Übertragungswiederholung sind vorzugsweise nach wie vor für den Fall vorhanden, in dem die Fehlerkorrektur fehlschlägt: das Scheitern der horizontalen Parität, bestimmte Mehrfachfehler zu erkennen, ein Fehlerbündel, das länger als die vertikale Parität ist, ausgefallene Bytesynchronisation, mehrere Fehlerbündel, falsche Erkennung des Rahmenanfangs und des Rahmenendes, abgeschnittene oder fehlende Rahmen usw.
  • Horizontale Parität
  • In der gemeinhin verwendeten Paritätsmatrix ist die horizontale Parität ein ganz bestimmtes Bit für jede Matrixzeile.
  • In dem nachstehenden Beispiel wird die horizontale Parität stattdessen von dem Übertragungscode allein geliefert. Übertragungscodes unterliegen mehreren Einschränkungen, um eine zuverlässige, kostengünstige Übertragung weiter zu verbessern. Weitere Einschränkungen können in einen Code aufgenommen werden, so dass eine beliebige ungerade Fehlerzahl in einem Byte oder Wort ein ungültiges Wort erzeugt. Eine solche Eigenschaft des Codes wird als "lokale Parität" (Martin, 1985) bezeichnet. Für allgemeine Anwendungen sind solche Codes weniger wünschenswert, da es die zusätzliche Einschränkung notwendig macht, einige Übertragungsparameter zu verschlechtern und eine komplexere und kostenintensivere Ausführung in Kauf zu nehmen. Andere 8B/10B-Codes, darunter der Fibre-Channel-Standard-(FBS-)Code, weisen meistens auch sofort auf ein ungültiges Byte hin, wenn ein Fehler aufgetreten ist. Eine hohe Fehlerquote erzeugt jedoch nur weiter unten im Bitstrom, in einiger Entfernung von dem Byte, wo der Fehler auftrat, eine Abweichungsverletzung (disparity violation), und folglich kann das Byte, das den/die Fehler enthält, nicht direkt erkannt werden. Für den Entwurf eines gleichspannungsfreien Binärcodes mit lokaler Parität stehen die folgenden Möglichkeiten zur Verfügung:
    • • Es besteht die Möglichkeit, Codes zu entwerfen, die ausschließlich aus ausgewogenen Wörtern bestehen, so dass sich jede ungerade Anzahl von Fehlern in einem solchen Wort als Unausgewogenheit zeigt. Beispielsweise ist es möglich, 16 Bits in 20 Bits umzuwandeln, so dass alle 20-Bit-Wörter ausgewogen sind. Ein solcher 16B/20B-Code ist jedoch schwierig zu realisieren. Auch kann ein einziges falsches Bit ein Fehlerbündel von 16 Fehlern in dem Decodierprozess erzeugen, was eine größere Gruppe von vertikalen Paritätsbits erforderlich macht. Obgleich die 20-Bit-Wörter immer ausgewogen sind, ist das niederfrequente Verhalten des Codes nicht besser als beim aufgeteilten 8B/10B-FCS-Code.
    • • Es gibt 8B/10B-Codes mit lokaler Parität und geringer Abweichung, so dass eine ungerade Anzahl von Fehlern immer ein ungültiges Codewort erzeugt. Ein solcher Code wurde von Martin vorgeschlagen (1985). Codes dieser Art sind im Allgemeinen schwieriger zu realisieren als der aufgeteilte 8B/10B-Code (Widmer, 1983), und sie haben stärkere niederfrequente Spektralanteile, so dass die Zeitkonstanten von Hochpassfiltern um mehr als 40% erhöht werden müssen. Dem von Martin veröffentlichten Code (1985) fehlt auch ein geeignetes auf ein Byte beschränktes Komma. Ein Code mit einem guten Komma wird nachstehend beschrieben.
  • Ein 8B/10B-Code mit lokaler Parität und einem kurzen Komma (2)
  • Bei dem hier beschriebenen 8B/10B-Übertragungscode wurde zugunsten eines höheren niederfrequenten Anteils auf ein integriertes Paritätsmerkmal verzichtet. Jedes 10B-Zeichen dieses Codes, das eine ungerade Anzahl von Bitfehlern aufweist, ist ein ungültiges Zeichen.
  • Der nachstehende Code gemäß der vorliegenden Erfindung setzt 8 Quellenbits in 10 codierte Bits in einer für die serielle Übertragung besser geeigneten Anordnung um. Er verwendet Vektoren aus der Gruppe der 252 ausgewogenen (Null-Abweichung) 10-Bit-Vektoren und den 120 Komplementärvektorpaaren mit einer Abweichung von +/–4, die mit wechselnder Polarität eingefügt werden. Somit erzeugt ein einziger Fehler in einem Zeichen eine Abweichung von 2 oder 6, wobei beides unzulässige Kombinationen sind.
  • Die Lauflänge (RL), bei der es sich um die Anzahl aufeinanderfolgender gleicher Bits handelt, ist auf 5 begrenzt, und fortlaufende definierte Zeichenfolgen (runs) von 5 sind nicht zulässig. Das Bitmuster "11011111" und sein Komplement sind eine Synchronisierfolge oder ein Komma. Es ist in ein Kommazeichen "0110111110" oder dessen Komplement "1001000001" eingebettet. Die serielle Übertragung beginnt links. Das Kommazeichen enthält 4 Innenübergänge, und eine Folge von Kommazeichen erzeugt 5 Übergänge je Zeichen. Neben dem Kommazeichen gibt es noch 4 andere spezielle Nichtdatenzeichen.
  • Alternativ dazu kann die Bitfolge "11111011" und ihr Komplement als ein Komma mit passenden Codevektoren gewählt werden. Die nachstehenden Trellisdiagramme werden dann von rechts nach links und nicht von links nach rechts gelesen. Das erste Bit eines übertragenen Codebytes befindet sich dann rechts.
  • Alle gültigen codierten Zeichen sind in den Trellisdiagrammen "Trellis für einen 8B/10B-Code mit lokaler Parität" von 2 dargestellt, wobei jeder steigende Zweig für ein Bit "1" und jeder fallende Zweig für ein Bit "0" steht. Die Gruppe 3K von 2 beispielsweise, die ein Element hat, ist in 3 nachgebildet. 3 zeigt 11 Knoten: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 und 22. Die steigenden Linien (oder Zweige) 24, 26 und 28 stellen 3 "Einsen" dar. Die folgende Linie oder der folgende Zweig 30 zwischen den Knoten 8 und 10 entspricht einer Null. Die steigenden Zweige 32, 34, 36 und 38 entsprechen 4 "Einsen". Die folgenden Zweige 40 und 42 entsprechen 2 Nullen. Deshalb ist das Zeichen der Gruppe 3K 1110111100". Die Zahlen rechts von jedem Knoten von 2 stehen für die Anzahl der verschiedenen gültigen Pfade vom Eingangsknoten zu diesem Knoten. Jeder mögliche Pfad durch das Trellisdiagramm entspricht einem zulässigen Bitmuster. Die Abweichung eines Bitblocks (wie beispielsweise eines Bytes oder Zeichens) ist der algebraische Unterschied zwischen der Anzahl von Einsen minus der Anzahl von Nullen. Die laufende Abweichung (running disparity (RD)) an einem bestimmten Punkt in dem seriellen Bitstrom ist die Summe der Abweichungen der vorhergehenden Blöcke. Die Abweichung eines Bitblocks ist gleich dem Unterschied zwischen der laufenden Abweichung am Ende des Blocks und der laufenden Abweichung am Anfang des Blocks. Die digitale Summenabweichung ist der algebraische Unterschied zwischen dem Höchstwert und dem Mindestwert der laufenden Abweichung bei einem Block. An der Grenze zwischen Bytes ist die laufende Abweichung RD bei dem vorliegenden Code immer +/–2. Bei 8B/10B-Codes ohne lokale Parität ist die laufende Abweichung an Bytegrenzen gewöhnlich +/–1. Bei dem hier beschriebenen Code beschränken wir die Lauflänge (RL) am Anfang und am Ende auf zwei, mit der Ausnahme, dass die codierten Bytes mit 3 Einsen von RD = –2 oder 3 Nullen von RD = +2 beginnen dürfen; codierte Bytes dürfen mit 3 Nullen bei RD = –2 und mit 3 Einsen bei RD = +2 enden. Die Lauflänge über Zeichengrenzen hinweg wird somit auf 5 beschränkt. Die Nachbarschaft einer jeden möglichen Lauflänge von 5 wird gekürzt, so dass keine falsch ausgerichteten Kommafolgen auftreten können. In 2 könnten alle Vektoren, die die einzelnen mit x gekennzeichneten Punkte durchlaufen, ein falsches Komma oder eine Lauflängenverletzung, einschließlich aufeinanderfolgender definierter Zeichenfolgen von 5, erzeugen.
  • Der Code umfasst drei Hauptgruppen von Vektoren in dem codierten Bereich:
    • • Die 174 abweichungsunabhängigen ausgewogenen Vektoren, die in der Gruppe 1 und 1A/B dargestellt sind, können ungeachtet der Anfangsabweichung eingegeben werden, wie durch RD = +/–2 vorne angegeben ist. Weil sie alle ausgewogen sind, ist die Endabweichung gleich der Anfangsabweichung.
    • • Die 27 ausgewogenen Vektoren der Gruppe 2AC, 2D und 2E sind abweichungsabhängig und können nur eingegeben werden, wenn die laufende Anfangsabweichung –2 beträgt. Bei einer positiven laufenden Anfangsabweichung wird ihr Komplement verwendet.
    • • Die 59 Vektoren in der Gruppe 3, 3F, 3G, 3H, 3J und 3K sind mit einer Abweichung von +4 unausgewogen und können nur mit einer negativen laufenden Anfangsabweichung verwendet werden, wie gezeigt ist, andernfalls werden ihre Komplemente verwendet. Der in der Gruppe 3F fett dargestellte Vektor ist das Komma.
  • Die Hüllkurve enthält alle Vektoren, die für die Codierung von 260 Zeichen für eine Anfangsabweichung von +2 oder aber –2 benötigt werden. Nicht alle Vektoren der Hüllkurve sind tatsächlich zulässig, sondern nur diejenigen, die in den getrennten, vorstehend aufgeführten Gruppierungen gelistet sind, welche alle Einschränkungen angeben. Es gibt einen Zusammenhang zwischen niederfrequenten Spektralanteilen eines Codes und den Strecken durch die Trellis-Hüllkurve. Neben der Grobcharakterisierung durch die maximale digitale Summenabweichung (Digital Sum Variation (DSV)) kann ein normalisierter Offset festgelegt werden, bei dem es sich um ein Maß für den Bereich zwischen der Nullabweichungslinie und einer Vektorstrecke handelt. Je kleiner der maximale Offset ist, desto besser ist das Niederfrequenzverhalten. Wie an der Hüllkurve zu sehen ist, beträgt die maximale DSV dieses Codes 10. Es ist möglich, die DSV auf 8 zu verringern, dies schließt jedoch aufeinanderfolgende definierte Zeichenfolgen von 5 ein. In diesem Zusammenhang ist es von Interesse, dass die obere und die untere Kontur der Hüllkurve keine gültigen Zeichen darstellen. Die einzigen Vektoren durch den höchsten und den niedrigsten Punkt der Hüllkurve sind diejenigen der Gruppe A/B. Die äußersten Konturen der Hüllkurve sind durch die äußerste obere und untere Kontur der Gruppe 1 oder der Gruppe 1A/B gegeben. Mit einer Abweichung von +2 beginnend, können wir 1101010100 oder 1101100010 übertragen und in jedem Fall einen Bereich zwischen der Kontur und der Nullabweichung einschließen, der 33 Bereichseinheiten (Abweichung × Zeit) pro Byte oder einen Durchschnitt von 3,3 pro Bitintervall beträgt und den wir als den normalisierten Offset bezeichnen. Die Komplemente derselben Vektoren, die mit einer negativen Abweichung beginnen, folgen der unteren Kontur. Da der maximale Offset bei den Vektoren, die die Punkte mit einer laufenden Abweichung von +/–5 durchlaufen (Punkte A und B der Gruppe 1A/B), nicht größer als der äußerste, auf eine DSV von 8 begrenzte Vektor ist, ist der Niederfrequenz-Nachteil für die DSV von 10 nicht so gravierend, wie man dies andernfalls bei einer DSV von 10 ohne diese zusätzliche Einschränkung erwarten würde. Simulationen zeigen, dass bei diesem Code die Niederfrequenzbegrenzung eines einzelnen RC-Hochpassfilters nicht höher als 0,055% der Bitrate gesetzt werden darf, wenn der Wert für die Augenschließung bei weniger als 0,25 dB belassen werden soll. Dies ist um nahezu den Faktor 2 geringer als beim FCS-Code (US-Patentschrift 4 486 739). Für die Variante des Codes mit einer DSV von 8, aber aufeinanderfolgenden definierten Zeichenfolgen von 5 kann die Niederfrequenzbegrenzung bei einer gleichen nachteiligen Auswirkung in Form der Augenschließung auf bis zu 0,063% der Bitrate erhöht werden. Aus 2 ist auch leicht zu erkennen, dass die Mindestübergangsdichte 3 pro Zeichen beträgt.
  • Realisierung des 8B/10B-Codes mit lokaler Parität
  • Eine Realisierung mit ganzen oder teilweisen Tabellen ist der einfachste, aber wahrscheinlich der am wenigsten wirtschaftliche Ansatz, wenn man die Kosten für den ursprünglichen Entwicklungsaufwand unberücksichtigt lässt. Eine Ausgestaltung mit vertretbarer Komplexität unter Verwendung von ausschließlich kombinatorischer Logik kann realisiert werden. Auf weit über 200 Vektoren kann verzichtet werden, wenn man Gestaltungsgrundsätze anwendet, die ähnlich denen des FCS-Codes sind: Ändere so wenig Bits wie möglich, und teile die Vektoren in Gruppen ein, die von gewöhnlicher Hardware verarbeitet werden. Bei den letzten 30 oder 40 Vektoren wird es immer schwieriger, Gemeinsamkeiten zu finden und Gruppen mit mehr als ein paar Vektoren festzulegen. Es ist dann hauptsächlich eine Frage des Zeitpunkts, zu dem zu einer einzelnen Vektorumsetzung übergegangen werden muss, um die Aufgabe abzuschließen. Da im Gegensatz zu Tabellensuchoperationen jede Realisierung in hohem Maße von der Zuordnung einzelner Quellenbytes zu einem bestimmten codierten Vektor abhängt, halten wir keine Umsetzungstabelle bereit. Im Vergleich zum aufgeteilten FCS-Code hat jede Realisierung mit kombinatorischer Logik wahrscheinlich mindestens zwei weitere Logikebenen in dem kritischen Pfad, eine höhere Anzahl von Gattern und im Allgemeinen eine höhere Zahl von anschließbaren Eingängen (fan-in).
  • Bewertung des Codes mit lokaler Parität
  • Anwendungen, bei denen keine Fehlerkorrektur erforderlich ist, haben den Nachteil, dass der Codierer und der Decodierer schwieriger zu realisieren sind. In manchen Fällen ist gegebenenfalls eine etwas schnellere Technologie notwendig. Alle Hochpassfilter im seriellen Signalpfad benötigen um den Faktor zwei größere Zeitkonstanten. Andernfalls kann davon ausgegangen werden, dass die Leistung des Codes mit der des FCS-Codes vergleichbar ist. Aus aktueller Sicht ist die Wahl dieses Codes möglicherweise für die folgenden Arten von Verbindungen vorteilhaft:
    • – Systeme, die immer und nicht nur optional mit Vorwärtsfehlerkorrektur arbeiten.
    • – Systeme, die in Verbindung mit sehr kurzen Rahmen oder hohen Fehlerraten, die kurze Fehlerkorrekturblöcke erzwingen, mit Vorwärtsfehlerkorrektur arbeiten. Für solche Fälle wäre die Fähigkeit, mit lediglich 8 vertikalen Paritätsbits pro Block zu arbeiten, ein Vorteil.
    • – Wie von Martin [1985] vorgeschlagen, könnte ein Code mit lokaler Parität für eine Signalerkennung mit höchstmöglicher Wahrscheinlichkeit verwendet werden. Wenn wir beispielsweise von dem erkannten optimalen Abtastpunkt sowohl bei der Zeit als auch der Amplitude einen einzigen Schritt in jede Richtung abweichen, könnten wir leicht 5 bis 9 Abtastwerte pro Bit oder bis zu 90 Abtastwerte pro Byte erreichen. Aus praktischen Gründen ist es dann wichtig, dass ein fehlerhaftes Byte sofort erkannt wird und nicht erst am Ende des Rahmens. Ein solches Verfahren zur Verringerung der Fehlerrate wäre auch bei Echtzeit- und anderen verzögerungskritischen Systemen zu bevorzugen.
  • Vertikale Parität zur Fehlerkorrektur
  • Ein ungerades Paritätsbit wird für jede Spalte der codierten oder uncodierten Matrix abgeleitet und in codierter Form nach dem Ende des Rahmens übertragen. Um eine einfache Realisierung zu erreichen, wird die Parität aufgrund einer besseren Vereinbarkeit mit gängigen Datenformaten, der Breite des Pufferspeichers und dem Verarbeitungsstrom vorzugsweise von den uncodierten Daten abgeleitet. Üblicherweise wird ein Byte mit vertikalen Paritätsbits erzeugt, aber eine größere oder kleinere Aufteilung ist ebenfalls möglich. Auf der Empfangsseite kann der Decodierer einen einzelnen Bitfehler auf ein Fehlerbündel von 8 im decodierten Bereich ausweiten. Das Matrixkorrekturschema wird durch diese Fehlerausbreitung nicht beeinträchtigt.
  • Bei dem Code mit lokaler Parität erzeugt ein einzelner Bitübertragungsfehler immer ein ungültiges Byte. Nachdem das Ende eines Rahmens empfangen wurde, wird jedes Bit des ungültigen Bytes in einer Spalte mit einer Verletzung der vertikalen Parität ergänzt. Wenn mehr als ein Byte in einem Rahmen ungültig ist, wird kein Korrekturversuch unternommen.
  • Gehäuftes Auftreten von durch ein einziges Ereignis hervorgerufenen Fehlern (burst errors)
  • Wenn eine Verbindung mit einer großen Zahl von gehäuft auftretenden Fehlern belastet ist, die sich auf weniger als 10 codierte Bits erstrecken, möchte man Fehler korrigieren können, die sich über beide Seiten einer Byte-Grenze erstrecken. Zu diesem Zweck werden zwei vertikale Paritätsbytes zusätzlich mitverschickt, wobei das erste auf der Grundlage von allen geradzahligen Bytes und das zweite auf der Grundlage von allen ungeradzahligen Bytes berechnet wird.
  • Wiederherstellung von Sonderzeichen
  • Der Fall von Sonderzeichen, die fehlerbehaftet sind, bedarf einer gesonderten Prüfung. Bei Anwendungen, die eine Vielzahl von Sonderzeichen in nichtvorhersagbaren Anordnungen verwenden, wird ein zusätzliches vertikales Paritätsbit für das K-Bit verwendet, das anzeigt, ob ein Byte Daten oder Steuerinformationen darstellt. Bei der FCS-Anwendung wäre dieses Bit nur zur Korrektur von Fehlern im Kommazeichen des Rahmenanfang- und des Rahmenendebegrenzers nützlich, die jedoch auch mit anderen Mitteln vorgenommen werden kann.
  • Erkennung des Rahmenanfangs und des Rahmenendes
  • Es ist sehr wichtig, den Anfang eines Rahmens (Start of Frame (SOF)) und das Ende eines Rahmens (End of Frame (EOF)) richtig zu erkennen, da sonst das Paritätskorrekturschema nicht funktioniert. Auf der Sendeseite ist dies aufgrund dessen, dass keine Fehler vorhanden sind, kein Problem. Unser Ziel besteht darin, die Rahmengrenzen am Empfänger richtig zu erkennen, außer wenn es mindestens zwei Bytes mit Fehlern gibt. Die mit dieser Schrift ebenfalls eingereichte Anmeldung EP-A-0709979 mit dem Titel "Apparatus and Method for Error Correction Based on Transmission Code Violations and Parity" beschreibt ausführlich, wie man die FCS-Rahmenanfang- und -Rahmenendebegrenzer zuverlässig erkennen kann. Eine ähnliche Strategie kann bei dem lokalen Paritätscode dieser Anwendung gewählt werden. Nur ein paar Einzelheiten sind anders, da sich die codierten Wörter einschließlich des Kommazeichens unterscheiden.
  • Fazit
  • Ein Code mit lokaler Parität kann ein fehlerhaftes Byte in einem Rahmen ohne extra Paritätsbits auffinden, aber ein solcher Code ist schwieriger zu realisieren und erzeugt größere niederfrequente Spektralanteile. Dieses Verfahren zum Auffinden von Fehlern macht eine Fehlerkorrektur mittels einfacher vertikaler Parität möglich, und es ist für Verbindungsarchitekturen mit kurzen Rahmen gut geeignet. Es kann für Übertragungsprotokolle oberhalb der Verbindungsebene transparent gemacht werden.
  • Literatur
    • Martin W. Sachs "High Performance Networks, Technology and Protocols", Kapitel II.5, Fibre Channel, Ahmed N. Tantawy, Herausgeber, Kluwer Academic Publishers, Boston, 1994.
    • X3T9 Technical Committee, Fibre Channel, Physical and Signaling Interface (FC-PH); Rev. 3.0, FC-P/92-001R3.0, American National Standards Institute, 1430 Broadway, New York, NY 10018, 1992. Erhältlich bei Global Engineering, 2805 McGaw St., Irvine, CA 92714.
    • Wayne D. Grover "Forward Error Correction in Dispersion-Limited Lightwave Systems", IEEE Journal of Lightwave Technology, 6 (5): 643–654, Mai 1988.
    • C. Benz, M. Gowan und K. Springer "An Error Correcting Encoder and Decoder for a 1 Gbit/s Fiber Optic Link", Proc. IEEE 1991 Custom Integrated Circuits Conference, 7.1.1–7.1.4, San Diego, Mai 1991.
    • D. H. McMahon, A. A. Kirby, B. A. Schofield und K. Springer, US-Patentschrift Nr. 5 144 304 "Data and Forward Error Control Coding Techniques for Digital Signals", 1. September 1992.
    • K. Springer "A Forward Error Correcting Code for Gigabit Fiber Optic Links", Conference on High-Speed Fiber Networks and Channels (1991), Boston, September 1991, Proc. SPIE – Int. Soc. Opt. Eng. (USA), Band 1577, 1992, Seiten 246 bis 253.
    • C. A. French "Distance Preserving Run-Length Limited Codes", IEEE Transactions on Magnetics, MAG-25(5): 4093–4095, September 1989.
    • M. Blaum "Combining ECC with modulation: performance comparisons", IEEE Transactions on Information Theory, 37(3): 945–949, Mai 1991.
    • M. Blaum, S. Litsyn, V. Buskens und C. A. van Tilborg "Error-Correcting Codes with Bounded Running Digital Sum", IEEE Transactions on Information Theory, 39(1): 216–227, Januar 1993.
    • C. S. Coetzee, H. C. Ferreira und P. G. W. van Rooyen "On the Performance and Implementation of a Class of Error and Erasure Control (d, k) Block Codes", IEEE Transactions on Magnetics, 26(5): 2312–2314, September 1990.
    • R. W. Hamming "Coding and Information Theory", 2nd Ed. Prentice Hall Inc., Englewood Cliffs, NJ 07632, 1986.
    • G. N. N. Martin "A Rate 8/10 DC Balanced Code with Local Parity", IBM Technical Disclosure Bulletin, 27(9): 5272–5279, Februar 1985.
    • A. X. Widmer und P. A. Franaszek "A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code", IBM Journal of Research and Development, Band 27, Nr. 5, Seiten 440 bis 451, September 1983.

Claims (31)

  1. Vorrichtung zur Codierung eines Rahmens mit N-Bit-Bytes in einen Rahmen mit M-Bit-Bytes, wobei M > N > 0 und wobei der Rahmen eine Grenze hat und es eine Bytegrenze zwischen den Bytes gibt, wobei die Vorrichtung Folgendes umfasst: ein Mittel zur Bereitstellung eines Codes, der Elemente von M-Bit-Bytes enthält, die eine Teilmenge aller möglichen M-Bit-Bytes sind, wobei es für jedes der 2N möglichen N-Bit-Bytes ein entsprechendes Element in der Teilmenge gibt, wobei eines der Elemente des Codes ein Komma ist, das zur Kennzeichnung der Rahmengrenze und der Bytegrenze verwendet wird, wobei das Komma eine Folge von Bits hat, deren Binärzustand von einem ersten und einem zweiten Wert so ausgewählt wird, dass die Bitfolge des Kommas auf das eine der Elemente des Codes beschränkt ist und nicht über eine Grenze zwischen einer beliebigen Kombination von anderen Elementen des Codes hinweg vorkommt; ein Mittel, um jedem der N-Bit-Bytes in dem Rahmen das entsprechende Element von dem Code zuzuordnen, um einen codierten Rahmen zu bilden, der dem Rahmen entspricht; gekennzeichnet durch ein Mittel, um den Rahmen mit N-Bit-Bytes zu speichern, und ein Mittel, um den codierten Rahmen zu speichern, wobei jedes der Elemente des Codes eine Folge von Bits hat, so dass immer, wenn ein Zustand von einem der Bits geändert wird, ein resultierendes M-Bit-Byte nicht eines der Elemente des Codes ist, wobei N = 8 und M = 10, wobei der Code nur Lauflängen eines Binärzustands von weniger als 5 oder gleich 5 zulässt und die Elemente des Codes einen Anfang und ein Ende mit einer Lauflänge von eins oder zwei haben; wobei eine definierte Zeichenfolge von drei am Anfang eines Elements nur zulässig ist, wenn sich die laufende Abweichung bei den ersten 2 Bits der definierten Zeichenfolge in Richtung Ausgewogenheit bewegt; wobei eine definierte Zeichenfolge von drei am Ende eines Elements nur zulässig ist, wenn sich die laufende Abweichung bei den letzten 2 Bits der definierten Zeichenfolge von der Ausgewogenheit entfernt.
  2. Vorrichtung nach Anspruch 1, die des Weiteren ein Mittel zur Übertragung des codierten Rahmens an eine Empfangsvorrichtung als ein übertragener codierter Rahmen enthält.
  3. Vorrichtung nach Anspruch 2, wobei die Empfangsvorrichtung über ein Mittel zur Feststellung, ob der übertragene codierte Rahmen einen Fehler aufweist, verfügt.
  4. Vorrichtung nach Anspruch 3, die des Weiteren ein Mittel zur Korrektur des Fehlers enthält.
  5. Vorrichtung nach Anspruch 1, wobei der Code ein 10-Bit-Code ist und 10-Bit-Bytes enthält, von denen alle eine digitale Summenabweichung von 0, +4 oder –4 haben.
  6. Vorrichtung nach Anspruch 1, wobei das Komma ein Bitmuster enthält, das aus der Gruppe ausgewählt wird, die aus "11011111" und dessen Komplement "00100000" ausgewählt wird.
  7. Vorrichtung nach Anspruch 1, wobei das Komma in "0110111110" und dessen Komplement "1001000001" eingebettet ist.
  8. Vorrichtung nach Anspruch 1, wobei die Lauflänge an der Anfangsgrenze von einigen der Elemente aus 3 Einsen ("1") besteht, wenn die laufende Anfangsabweichung –2 beträgt, und aus 3 Nullen ("0"), wenn die laufende Anfangsabweichung +2 beträgt.
  9. Vorrichtung nach Anspruch 1, wobei die Lauflänge am Ende von einigen der Elemente aus 3 Nullen besteht, wenn die laufende Abweichung am Ende –2 beträgt, und aus drei Einsen, wenn die laufende Abweichung am Ende +2 beträgt.
  10. Vorrichtung nach Anspruch 1, wobei der Code 174 10-Bit-Bytes enthält, die ausgewogen und abweichungsunabhängig sind, 27 Paare von ausgewogenen und abweichungsabhängigen 10-Bit-Bytes und 59 Paare von 10-Bit-Bytes mit einer Abweichung von ±4, die abweichungsabhängig sind.
  11. Vorrichtung nach Anspruch 1, wobei das Mittel zur Speicherung des Rahmens mit N-Bit-Bytes ein Speicher ist und wobei das Mittel zur Speicherung des codierten Rahmens ein Speicher ist.
  12. Vorrichtung nach Anspruch 3, die des Weiteren ein Mittel zur Feststellung einer Bitstelle des Fehlers enthält.
  13. Vorrichtung nach Anspruch 1, die zur Erzeugung eines lauflängenbeschränkten 8B/10B-Codes für einen uneingeschränkten Eingangsdatenstrom dient und Folgendes umfasst: ein Mittel zur Speicherung eines Rahmens mit einer Vielzahl von 8-Bit-Bytes; ein Mittel zur Zuordnung eines codierten 10-Bit-Bytes zu jedem der 8-Bit-Bytes, um einen codierten Rahmen zu bilden; ein Mittel zur Speicherung des codierten Rahmens; wobei die Gruppe aus codierten 10-Bit-Bytes Folgendes umfasst: eine Gruppe von 162 ausgewogenen abweichungsunabhängigen codierten Bytes mit digitalen Summenabweichungen von 4 oder weniger, die die folgende Form hat: 11001 10100, 11001 10100, 10110 10100, 10101 10100, 10011 10100, 01110 10100, 11001 01100, 11001 01100, 10110 01100, 10101 01100, 10011 01100, 01110 01100, 11001 10010, 11001 10010, 10110 10010, 10101 10010, 10011 10010, 01110 10010, 11001 01010, 11001 01010, 10110 01010, 10101 01010, 10011 01010, 01110 01010, 11001 00110, 11001 00110, 10110 00110, 10101 00110, 10011 00110, 01110 00110, 11001 10001, 11001 10001, 10110 10001, 10101 10001, 10011 10001, 01110 10001, 11001 01001, 11001 01001, 10110 01001, 10101 01001, 10011 01001, 01110 01001, 11001 00101, 11001 00101, 10110 00101, 10101 00101, 10011 00101, 01110 00101, 11001 00011, 11001 00011, 10110 00011, 10101 00011, 10011 00011, 01110 00011, 01101 10100, 01011 10100, 00111 10100, 00101 01011, 00110 01011, 01001 01011, 01101 01100, 01011 01100, 00111 01100, 00101 10011, 00110 10011, 01001 10011, 01101 10010, 01011 10010, 00111 10010, 00101 01101, 00110 01101, 01001 01101, 01101 01010, 01011 01010, 00111 01010, 00101 10101, 00110 10101, 01001 10101, 01101 00110, 01011 00110, 00111 00110, 00101 11001, 00110 11001, 01001 11001, 01101 10001, 01011 10001, 00111 10001, 00101 01110, 00110 01110, 01001 01110, 01101 01001, 01011 01001, 00111 01001, 00101 10110, 00110 10210, 01001 10110, 01101 00101, 01011 00101, 00111 00101, 00101 11010, 00110 11010, 01001 11010, 01101 00011, 01011 00011, 00111 00011, 00101 11100, 00110 11100, 01001 11100, 01010 01011, 01100 01011, 10001 01011, 10010 01011, 10100 01011, 11000 01011, 01010 10011, 01100 10011, 10001 10011, 10010 10011, 10100 10011, 11000 10011, 01010 01101, 01100 01101, 10001 01101, 10010 01101, 10100 01101, 11000 01101, 01010 10101, 01100 10101, 10001 10101, 10010 10101, 10100 10101, 11000 10101, 01010 11001, 01100 11001, 10001 11001, 10010 11001, 10100 11001, 11000 11001, 01010 01110, 01100 01110, 10001 01110, 10010 01110, 10100 01110, 11000 01110, 01010 10110, 01100 10110, 10001 10110, 10010 10110, 10100 10110, 11000 10110, 01010 11010, 01100 11010, 10001 11010, 10010 11010, 10100 11010, 11000 11010, 01010 11100, 01100 11100, 10001 11100, 10010 11100, 10100 11100, 11000 11100, eine Gruppe von 12 ausgewogenen abweichungsunabhängigen codierten Bytes mit einer digitalen Summenabweichung von 6 bei der Gruppe, die die folgende Form hat: 11011 00010, 11011 00001 00100 11101, 00100 11110, 10111 00010, 10111 00001 01000 11101, 01000 11110, 01111 00010, 01111 00001 10000 11101, 10000 11110, eine Gruppe von 3 ausgewogenen abweichungsabhängigen 10-Bit-Bytes, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11011 00100, 10111 00100, 01111 00100, eine Gruppe von 11 ausgewogenen abweichungsunabhängigen 10-Bit-Bytes, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 00100, 11100 10100, 11100 01100, 11100 00110, 11101 00010, 11100 10010, 11100 01010, 11100 00101, 11101 00001, 11100 10001, 11100 01001, eine Gruppe von 13 ausgewogenen abweichungsabhängigen 10-Bit-Bytes, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 01000, 11100 11000, 11001 11000, 11011 01000, 11010 11000, 10101 11000, 10111 01000, 10110 11000, 10011 11000, 01111 01000, 01110 11000, 01101 11000, 01011 11000, eine Gruppe von 32 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 01110, 10111 01110, 11100 11110, 10110 11110, 11101 01101, 10111 01101, 11100 11101, 10110 11101, 11101 01011, 10111 01011, 11100 11011, 10110 11011, 11101 00111, 10111 00111, 11100 10111, 10110 10111, 11011 01110, 01111 01110, 11010 11110, 01110 11110, 11011 01101, 01111 01101, 11010 11101, 01110 11101, 11011 01011, 01111 01011, 11010 11011, 01110 11011, 11011 00111, 01111 00111, 11010 10111, 01110 10111, eine Gruppe von 9 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe eine Form hat, bei der das codierte Byte 01101 11110 das Komma darstellt: 11001 11110, 10101 11110, 01101 11110, 11001 11101, 10101 11101, 01101 11101, 11001 11011, 10101 11011, 01101 11011, eine Gruppe von 4 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 10011 11101, 01011 11101, 10011 11011, 01011 11011, eine Gruppe von 9 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 10110, 11011 10110, 10111 10110, 11101 10101, 11011 10101, 10111 10101, 11101 10011, 11011 10011, 10111 10011, eine Gruppe von 5 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 11010, 11011 11010, 11101 11001, 11011 11001, 1 unausgewogenes abweichungsabhängiges 10-Bit-Byte mit einer Abweichung von +4, das für eine laufende Anfangsabweichung von –2 verwendet wird und bei dem das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei das Byte die folgende Form hat: 11101 11100.
  14. Vorrichtung nach Anspruch 12, wobei das Mittel zur Speicherung des Rahmens ein Speicher ist und das Mittel zur Speicherung des codierten Rahmens ein Speicher ist.
  15. Verfahren zur Codierung eines Rahmens mit N-Bit-Bytes in einen Rahmen mit codierten M-Bit-Bytes, wobei M > N > 0 und wobei der Rahmen eine Rahmengrenze hat und es eine Bytegrenze zwischen den Bytes gibt, wobei das Verfahren die folgenden Schritte umfasst: Bereitstellen eines Codes, der Elemente von M-Bit-Bytes enthält, die eine Teilmenge aller möglichen M-Bit-Bytes sind; wobei es für jedes der 2N möglichen N-Bit-Bytes ein entsprechendes Element in der Teilmenge gibt, wobei eines der Elemente des Codes ein Komma ist, das zur Kennzeichnung der Rahmengrenze und der Bytegrenze verwendet wird, wobei das Komma eine Folge von Bits hat, deren Binärzustand von einem ersten und einem zweiten wert so ausgewählt wird, dass die Bitfolge des Kommas auf das eine der Elemente des Codes beschränkt ist und nicht über eine Grenze zwischen einer beliebigen Kombination von anderen Elementen des Codes hinweg vorkommt, Zuordnen des entsprechenden Elements von dem Code zu jedem der N-Bit-Bytes in dem Rahmen, um einen codierten Rahmen zu bilden, der dem Rahmen entspricht, und dadurch gekennzeichnet ist, dass der Rahmen mit N-Bit-Bytes gespeichert wird und der codierte Rahmen gespeichert wird, wobei jedes der Elemente des Codes eine Folge von Bits hat, so dass immer, wenn ein Zustand von einem der Bits geändert wird, ein resultierendes M-Bit-Byte nicht eines der Elemente des Codes ist, wobei N = 8 und M = 10, wobei der Code nur Lauflängen eines Binärzustands von weniger als 5 oder gleich 5 zulässt und die Elemente des Codes einen Anfang und ein Ende mit einer Lauflänge von eins oder zwei haben; wobei eine definierte Zeichenfolge von drei am Anfang eines Elements nur zulässig ist, wenn sich die laufende Abweichung bei den ersten 2 Bits der definierten Zeichenfolge in Richtung Ausgewogenheit bewegt; wobei eine definierte Zeichenfolge von drei am Ende eines Elements nur zulässig ist, wenn sich die laufende Abweichung bei den letzten 2 Bits der definierten Zeichenfolge von der Ausgewogenheit entfernt.
  16. Verfahren nach Anspruch 15, das des Weiteren die Schritte der Übertragung des codierten Rahmens an eine Empfangsvorrichtung als ein übertragener codierter Rahmen beinhaltet.
  17. Verfahren nach Anspruch 16, wobei die Empfangsvorrichtung feststellt, ob der übertragene codierte Rahmen einen Fehler hat.
  18. Verfahren nach Anspruch 17, das des Weiteren die Korrektur des Fehlers beinhaltet.
  19. Verfahren nach Anspruch 15, wobei der Code ein 10-Bit-Code ist und alle 10-Bit-Bytes enthält, die eine digitale Summenabweichung von 4 oder weniger und eine Lauflängenbeschränkung von 2 an jedem Ende haben.
  20. Verfahren nach Anspruch 15, wobei das Komma ein Bitmuster enthält, das aus der Gruppe ausgewählt wird, die aus "11011111" und dessen Komplement "00100000" ausgewählt wird.
  21. Verfahren nach Anspruch 15, wobei das Komma aus der Gruppe ausgewählt wird, die aus "0110111110" und dessen Komplement "1001000001" besteht.
  22. Verfahren nach Anspruch 15, wobei die Lauflänge an der Anfangsgrenze von einigen der Elemente aus 3 Einsen ("1") besteht, wenn die laufende Anfangsabweichung –2 beträgt, und aus 3 Nullen ("0"), wenn die laufende Anfangsabweichung +2 beträgt.
  23. Verfahren nach Anspruch 15, wobei die Lauflänge am Ende von einigen der Elemente aus 3 Nullen besteht, wenn die laufende Abweichung am Ende –2 beträgt, und aus 3 Einsen, wenn die laufende Abweichung am Ende +2 beträgt.
  24. Verfahren nach Anspruch 15, wobei der Code 174 10-Bit-Bytes enthält, die ausgewogen und abweichungsunabhängig sind, 27 Paare von ausgewogenen und abweichungsabhängigen 10-Bit-Bytes und 59 komplementäre Paare von 10-Bit-Bytes mit einer Abweichung von ±4, die abweichungsabhängig sind.
  25. Verfahren nach Anspruch 15, wobei der Schritt der Speicherung des Rahmens mit N-Bit-Bytes die Speicherung in einem Speicher darstellt und wobei der Schritt der Speicherung des codierten Rahmens die Speicherung in einem Speicher darstellt.
  26. Verfahren nach Anspruch 17, das des Weiteren den Schritt der Feststellung einer Bitstelle für den Fehler beinhaltet.
  27. Verfahren nach Anspruch 15 zur Erzeugung eines lauflängenbeschränkten 8B/10B-Codes für eine uneingeschränkte Eingangsdatenfolge, das Folgendes umfasst: Bereitstellen eines Rahmens mit einer Vielzahl von 8-Bit-Bytes an einem ersten Speicherplatz; Zuordnen eines entsprechenden 10-Bit-Bytes zu jedem der 8-Bit-Bytes; Speichern der entsprechenden codierten 10-Bit-Bytes in Form eines codierten Rahmens an einem zweiten Speicherplatz; wobei der Rahmen mit codierten 10-Bit-Bytes Folgendes umfasst: eine Gruppe von 162 ausgewogenen abweichungsunabhängigen codierten Bytes mit einer digitalen Summenabweichung von 4 oder weniger, die die folgende Form hat: 11010 10100, 11001 10100, 10110 10100, 10101 10100, 10011 10100, 01110 10100, 11010 01100, 11001 01100, 10110 01100, 10101 01100, 10011 01100, 01110 01100, 11010 10010, 11001 10010, 10110 10010, 10101 10010, 10011 10010, 01110 10010, 11010 01010, 11001 01010, 10110 01010, 10101 01010, 10011 01010, 01110 01010, 11010 00110, 11001 00110, 10110 00110, 10101 00110, 10011 00110, 01110 00110, 11010 10001, 11001 10001, 10110 10001, 10101 10001, 10011 10001, 01110 10001, 11010 01001, 11001 01001, 10110 01001, 10101 01001, 10011 01001, 01110 01001, 11010 00101, 11001 00101, 10110 00101, 10101 00101, 10011 00101, 01110 00101, 11010 00011, 11001 00011, 10110 00011, 10101 00011, 10011 00011, 01110 00011, 01101 10100, 01011 10100, 00111 10100, 00101 01011, 00110 01011, 01001 01011, 01101 01100, 01011 01100, 00111 01100, 00101 10011, 00110 10011, 01001 10011, 01101 10010, 01011 10010, 00111 10010, 00101 01101, 00110 01101, 01001 01101, 01101 01010, 01011 01010, 00111 01010, 00101 10101, 00110 10101, 01001 10101, 01101 00110, 01011 00110, 00111 00110, 00101 11001, 00110 11001, 01001 11001, 01101 10001, 01011 10001, 00111 10001, 00101 01110, 00110 01110, 01001 01110, 01101 01001, 01011 01001, 00111 01001, 00101 10110, 00110 10110, 01001 10110, 01101 00101, 01011 00101, 00111 00101, 00101 11010, 00110 11010, 01001 11010, 01101 00011, 01011 00011, 00111 00011, 00101 11100, 00110 11100, 01001 11100, 01010 01011, 01100 01011, 10001 01011, 10010 01011, 10100 01011, 11000 01011, 01010 10011, 01100 10011, 10001 10011, 10010 10011, 10100 10011, 11000 10011, 01010 01101, 01100 01101, 10001 01101, 10010 01101, 10100 01101, 11000 01101, 01010 10101, 01100 10101, 10001 10101, 10010 10101, 10100 10101, 11000 10101, 01010 11001, 01100 11001, 10001 11001, 10010 11001, 10100 11001, 11000 11001, 01010 01110, 01100 01110, 10001 01110, 10010 01110, 10100 01110, 11000 01110, 01010 10110, 01100 10110, 10001 10110, 10010 10110, 10100 10110, 11000 10110, 01010 11010, 01100 11010, 10001 11010, 10010 11010, 10100 11010, 11000 11010, 01010 11100, 01100 11100, 10001 11100, 10010 11100, 10100 11100, 11000 11100, eine Gruppe von 12 ausgewogenen abweichungsunabhängigen codierten Bytes mit einer digitalen Summenabweichung von 6 bei der Gruppe, die die folgende Form hat: 11011 00010, 11011 00001, 00100 11101, 00100 11110, 10111 00010, 10111 00001, 01000 11101, 01000 11110, 01111 00010, 01111 00001, 10000 11101, 10000 11110, eine Gruppe von 3 ausgewogenen abweichungsabhängigen 10-Bit-Bytes, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11011 00100, 10111 00100, 01111 00100, eine Gruppe von 11 ausgewogenen abweichungsabhängigen 10-Bit-Bytes, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 00100, 11100 10100, 11100 01100, 11100 00110, 11101 00010, 11100 10010, 11100 01010, 11100 00101, 11101 00001, 11100 10001, 11100 01001, eine Gruppe von 13 ausgewogenen abweichungsabhängigen 10-Bit-Bytes, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 01000, 11100 11000, 11001 11000, 11011 01000, 11010 11000, 10101 11000, 10111 01000, 10110 11000, 10011 11000, 01111 01000, 01110 11000, 01101 11000, 01011 11000, eine Gruppe von 32 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 01110, 10111 01110, 11100 11110, 10110 11110, 11101 01101, 10111 01101, 11100 11101, 10110 11101, 11101 01011, 10111 01011, 11100 11011, 10110 11011, 11101 00111, 10111 00111, 11100 10111, 10110 10111, 11011 01110, 01111 01110, 11010 11110, 01110 11110, 11011 01101, 01111 01101, 11010 11101, 01110 11101, 11011 01011, 01111 01011, 11010 11011, 01110 11011, 11011 00111, 01111 00111, 11010 10111, 01110 10111, eine Gruppe von 9 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe eine Form hat, bei der das Komma das Byte 01101 11110 ist: 11001 11110, 10101 11110, 01101 11110, 11001 11101, 10101 11101, 01101 11101, 11001 11011, 10101 11011, 01101 11011, eine Gruppe von 5 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 10011 11101, 01011 11101, 10011 11011, 01011 11011, eine Gruppe von 9 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 10110, 11011 10110, 10111 10110, 11101 10101, 11011 10101, 10111 10101, 11101 10011, 11011 10011, 10111 10011, eine Gruppe von 4 unausgewogenen abweichungsabhängigen 10-Bit-Bytes mit einer Abweichung von +4, die für eine laufende Anfangsabweichung von –2 verwendet wird und bei der das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei die Gruppe die folgende Form hat: 11101 11010, 11011 11010, 11101 11001, 11011 11001, 1 unausgewogenes abweichungsabhängiges 10-Bit-Byte mit einer Abweichung von +4, das für eine laufende Anfangsabweichung von –2 verwendet wird und bei dem das Komplement für eine laufende Anfangsabweichung von +2 verwendet wird, wobei das Byte die folgende Form hat: 11101 11100.
  28. Verfahren nach Anspruch 26, wobei der Schritt der Speicherung des Rahmens den Rahmen in einem Speicher ablegt und der Schritt der Speicherung des codierten Rahmens den codierten Rahmen in einem Speicher ablegt.
  29. Vorrichtung nach Anspruch 13, wobei das Komma ein Bitmuster enthält, das aus der Gruppe ausgewählt wird, die aus "11111011" und dessen Komplement "00000100" besteht.
  30. Vorrichtung nach Anspruch 13, wobei das Komma in "0111110110" und dessen Komplement "1000001001" eingebettet ist.
  31. Vorrichtung nach Anspruch 16, die Gruppen von codierten Wörtern verwendet, welche die linken/rechten symmetrischen Bilder der gezeigten Codetabellen sind.
DE69632879T 1995-02-01 1996-01-23 Kodeübertragung mit lokaler Parität Expired - Lifetime DE69632879T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/532,152 US5699062A (en) 1995-02-01 1995-02-01 Transmission code having local parity
US532152 1995-02-01

Publications (2)

Publication Number Publication Date
DE69632879D1 DE69632879D1 (de) 2004-08-19
DE69632879T2 true DE69632879T2 (de) 2005-08-25

Family

ID=24120571

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69632879T Expired - Lifetime DE69632879T2 (de) 1995-02-01 1996-01-23 Kodeübertragung mit lokaler Parität

Country Status (3)

Country Link
US (1) US5699062A (de)
EP (1) EP0725486B1 (de)
DE (1) DE69632879T2 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW362305B (en) * 1996-10-18 1999-06-21 Koninkl Philips Electronics Nv Apparatus and method for converting a sequence of m-bit information words into a modulated signal
WO1998023060A1 (fr) * 1996-11-22 1998-05-28 Sony Corporation Procede et dispositif de transmission des donnees
US5881074A (en) * 1997-03-25 1999-03-09 Level One Communications, Inc. 1000base-t packetized trellis coder
US5835036A (en) * 1997-05-12 1998-11-10 Cisco Systems Co. Method of encoding data for transmission
US6088827A (en) * 1997-08-28 2000-07-11 Level One Communications, Inc. 1000BASE-T packetized trellis coder
US6226269B1 (en) * 1998-05-01 2001-05-01 Emulex Corporation Elimination of invalid data in loop network
US6438728B1 (en) * 1999-12-15 2002-08-20 Intel Corporation Error character generation
KR100384886B1 (ko) * 2000-10-10 2003-05-22 주식회사 케이티 니블 반전 부호 활용 방법 및 그 장치
FR2817683B1 (fr) * 2000-12-05 2003-01-31 Bull Sa Procede de codage/decodage de donnees numeriques transmises sur une liaison serie, notamment du type dit "8b/10b", et dispositif de mise en oeuvre
CN100553150C (zh) * 2001-05-08 2009-10-21 国际商业机器公司 用于高速应用的8b/10b编码和解码
US7389463B2 (en) * 2001-05-29 2008-06-17 Thomson Licensing Hierarchical block coding for a packet-based communications system
US6920604B2 (en) * 2002-04-08 2005-07-19 Galazar Networks, Inc. Systems and methods for high speed serial encoding and decoding for data and control interfaces
WO2004001976A2 (en) * 2002-06-21 2003-12-31 Thomson Licensing S.A. Method of forward error correction
FR2861517B1 (fr) * 2003-10-23 2006-01-27 Thomson Licensing Sa Methode de reconstruction de paquets perdus et appareils implementant la methode
US6876315B1 (en) 2004-03-12 2005-04-05 International Business Machines Corporation DC-balanced 6B/8B transmission code with local parity
US6914545B1 (en) * 2004-10-13 2005-07-05 Seiko Epson Corporation Circuitry and methods for reducing run-length of encoded data
US7292161B2 (en) * 2005-05-31 2007-11-06 International Business Machines Corporation NB/MB coding apparatus and method using both disparity independent and disparity dependent encoded vectors
US7158057B1 (en) 2005-09-07 2007-01-02 Seiko Epson Corporation Circuitry and methods for high speed data encoding
US7405679B1 (en) 2007-01-30 2008-07-29 International Business Machines Corporation Techniques for 9B10B and 7B8B coding and decoding
US9407394B2 (en) * 2014-02-03 2016-08-02 Valens Semiconductor Ltd. Frequent flow control by replacing certain idle words with bitwise complement words
US9887707B2 (en) * 2016-06-30 2018-02-06 Mapper Lithography Ip B.V. Method and device for generating a decoded and synchronized output
CN106776394B (zh) * 2017-01-11 2019-05-14 深圳大普微电子科技有限公司 一种数据转换的硬件系统和存储器
EP4024797A4 (de) * 2019-08-30 2022-10-19 Sony Semiconductor Solutions Corporation Codiervorrichtung, codierverfahren, decodiervorrichtung, decodierverfahren und programm
US20230308210A1 (en) * 2019-08-30 2023-09-28 Sony Semiconductor Solutions Corporation Encoding device, encoding method, decoding device, decoding method, and program

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4365332A (en) * 1980-11-03 1982-12-21 Fairchild Camera And Instrument Corp. Method and circuitry for correcting errors in recirculating memories
US4464747A (en) * 1982-02-18 1984-08-07 The Singer Company High reliability memory
US4486739A (en) * 1982-06-30 1984-12-04 International Business Machines Corporation Byte oriented DC balanced (0,4) 8B/10B partitioned block transmission code
NL8402445A (nl) * 1984-01-20 1985-08-16 Philips Nv Werkwijze voor het coderen van n-bits informatiewoorden naar m-bits codewoorden, inrichting voor het uitvoeren van die werkwijze, werkwijze voor het decoderen van m-bits codewoorden naar n-bits informatiewoorden en inrichting voor het uitvoeren van die werkwijze.
EP0178813B1 (de) * 1984-10-01 1993-08-18 Matsushita Electric Industrial Co., Ltd. Verfahren und Vorrichtung zur numerischen Datenkodierung
JPS63257836A (ja) * 1987-04-16 1988-10-25 Man Design Kk デ−タ伝送方式
WO1992009162A1 (en) * 1990-11-13 1992-05-29 Hewlett-Packard Company Dc-free line code and bit and frame synchronization for arbitrary data transmission
GB8912471D0 (en) * 1989-05-31 1989-07-19 Int Computers Ltd Data transmission code
US5144304A (en) * 1989-07-17 1992-09-01 Digital Equipment Corporation Data and forward error control coding techniques for digital signals
JP3083011B2 (ja) * 1992-12-28 2000-09-04 キヤノン株式会社 データ記録方法及び装置

Also Published As

Publication number Publication date
EP0725486A2 (de) 1996-08-07
EP0725486A3 (de) 1998-05-20
EP0725486B1 (de) 2004-07-14
US5699062A (en) 1997-12-16
DE69632879D1 (de) 2004-08-19

Similar Documents

Publication Publication Date Title
DE69632879T2 (de) Kodeübertragung mit lokaler Parität
DE19781914C2 (de) System zum Implementieren von lauflängenbegrenzten Codes
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE60124443T2 (de) 64b/66b-Dekodierung, für in Paketen geordnete, serielle Daten
DE69931862T2 (de) Vorwärtsfehlerkorrektur für hochratige optische Übertragungssysteme
DE10134472B4 (de) Sende- und Empfangsschnittstelle und Verfahren zur Datenübertragung
DE102006023878A1 (de) Codieren und Decodieren von paketierten Daten
DE602005003728T2 (de) Korrektur von durch Scrambling bedingter Fehlerfortpflanzung mit anschliessender Vorwärtsfehlerkorrektur
DE3123978A1 (de) "verfahren zum decodieren einer uebertragenen digitalen information unter korrektur von fehlern"
CH653504A5 (de) Verfahren zur fehlerkorrektur bei einer pcm-datenuebertragung.
DE2320422A1 (de) Verfahren zur fehlererkennung
DE2263488C2 (de) Einrichtung zur Erkennung und Korrektur von Fehlern in zwei fehlerbehafteten Spuren eines Vielspur-Datensystems
DE69333635T2 (de) 5B6B-Kodierung für Verteiltkanalübertragung
EP0529283A1 (de) Verfahren zur Bitfehlerreduktion in digitalen Kommunikationssystemen
DE69728255T2 (de) Datenübertragungsverfahren und vorrichtung zur kodierung eines signals
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE19927751A1 (de) Vorrichtung und Verfahren zum Vorsehen eines Gleichstromsymmetrischen digitalen Codes
DE102013016694B4 (de) Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE10344340B4 (de) 31/34 Trelliscode mit geringer Fehlerausbreitung
EP0769853A1 (de) Logischer Block für einen Viterbi-Decoder
DE3412986A1 (de) Digitales nachrichtenuebertragungssystem mit integrierter uebertragung einer zusatzinformation mit geringer bitfolgefrequenz
DE2940488C2 (de) Anordnung und Verfahren zur Modifizierung eines Übertragungskanals zwecks Eliminierung von effektiven Gleichspannungskomponenten in einem selbsttaktenden Übertragungssystem zur sequentiellen Übertragung von binären Datenbits in aufeinanderfolgenden getakteten Bit-Zellen eines Übertragungskanals
DE10344375B4 (de) 16/17-Trelliscode mit mehreren Eigenschaften
DE3117221C2 (de)
DE3144263C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7