-
PRIORITÄTSANSPRUCH
-
Diese Anmeldung beansprucht den Vorteil der an dem Anmeldetag vorläufigen US-Patentanmeldung mit Seriennummer
62.739.744 , eingereicht am Montag,
1. Oktober 2018, für „BURST ERROR TOLERANT DECODER AND RELATED SYSTEMS, METHODS, AND DEVICES" und beansprucht den Vorteil der an dem Anmeldetag eingereichten US-Patentanmeldung mit Seriennummer
16/283.634 , eingereicht am Freitag,
22. Februar 2019, für „BURST ERROR TOLERANT DECODER AND RELATED SYSTEMS, METHODS, AND DEVICES", anhängig, deren Inhalte und Offenbarung jeweils hiermit durch Bezugnahme aufgenommen ist.
-
TECHNISCHES GEBIET
-
Ausführungsformen der vorliegenden Offenbarung beziehen sich im Allgemeinen auf serielle Kommunikation und genauer auf Fehler, die während der Kommunikation über einen seriellen Kommunikationskanal eingeführt werden, und auf die Korrektur dieser Fehler.
-
STAND DER TECHNIK
-
In vielen eingebetteten Systemen und anderen Rechensystemen kann die Bewegung von Daten zwischen Peripherievorrichtungen und einem Host oder zwischen Peripherievorrichtungen eine erhebliche Menge an Datenverkehr auf den verschiedenen Bussen sein, die in solchen Systemen vorhanden sein können. Wenn sich Daten durch diese Systeme bewegen, bewegen sie sich manchmal parallel (d. h. mehrere Bits werden gleichzeitig übertragen) und andere Male bewegen sie sich seriell (d. h. es wird ein Bit nach dem anderen übertragen).
-
Bei der herkömmlichen Intersystemkommunikation wird häufig ein Serialisierer-Deserialisierer („SerDes“) an einer Schnittstelle zwischen parallelen und seriellen Kommunikationskanälen verwendet. In einer üblichen Anordnung erzeugt ein SerDes-Sender eine Sequenz logischer 1en und 0en basierend auf Eingangsdaten, wandelt diese in analoge Werte um (z. B. +0,5 V und -0,5 V, ohne Einschränkung), formt das analoge Signal basierend auf dem Medium, das für den seriellen Kommunikationskanal verwendet wird (z. B. Kupferdraht, Leiterbahnen und Kabeln, ohne Einschränkung), erhöht einen parallelen Takt auf eine Frequenz des seriellen Kommunikationskanals und überträgt die Daten über den seriellen Kommunikationskanal nach außen. Der SerDes-Empfänger empfängt serielle Daten von dem seriellen Kommunikationskanal, verlangsamt die Daten, um mit der Frequenz des parallelen Kommunikationskanals übereinzustimmen, und überträgt dann die Daten über den parallelen Kommunikationskanal.
-
Herkömmliche Intersystem-Kommunikationsarchitekturen nehmen an diesen Schnittstellen geringe bis keine Bitfehler an, die Erfinder dieser Offenbarung erkennen jedoch, dass, insbesondere bei hohen Übertragungsgeschwindigkeiten, solche Annahmen nicht gelten. Somit erkennen die Erfinder dieser Offenbarung einen Bedarf für eine robuste Fehlerkorrektur innerhalb von Kommunikationssystemen, die mindestens einige dieser Fehler beheben kann.
-
Figurenliste
-
Obwohl diese Offenbarung mit Ansprüchen endet, die spezifische Ausführungsformen besonders hervorheben und eindeutig beanspruchen, sind verschiedene Merkmale, Vorzüge und/oder Vorteile von Ausführungsformen der Offenbarung für den Fachmann aus der folgenden detaillierten Beschreibung und den beigefügten Zeichnungen ersichtlich, in denen:
- 1 ein Blockdiagramm eines Decodierers zeigt, der gemäß einer oder mehreren Ausführungsformen der Offenbarung Burst-fehlertolerant ist.
- 2A ein Blockdiagramm eines Burst-Fehlerdecodiervorgangs gemäß einer oder mehreren Ausführungsformen der Offenbarung zeigt.
- 2B ein Blockdiagramm eines Burst-Fehlerdecodiervorgangs gemäß einer oder mehreren Ausführungsformen der Offenbarung zeigt.
- 3A einen Entscheidungsbaum zum Auswählen unter Kandidatenkorrekturen gemäß einer oder mehreren Ausführungsformen der Offenbarung zeigt.
- 3B ein Blockdiagramm eines Sortierelements in einem Entscheidungsbaum von
- 3A gemäß einer oder mehreren Ausführungsformen der Offenbarung zeigt.
- 4 eine SerDes-Schnittstelle zeigt, die gemäß einer oder mehreren Ausführungsformen der Offenbarung mindestens einen Decodierer mit Burst-Fehlertoleranz implementiert.
- 5 ein Flussdiagramm einer beispielhaften Fehlerkorrekturverarbeitung gemäß einer oder mehreren Ausführungsformen der Offenbarung zeigt.
- 6 ein Blockdiagramm einer Entscheidungsrückkopplungsentzerrungstechnik, die den Erfindern dieser Offenbarung bekannt ist, zeigt.
-
ARIYEN) DER AUSFÜHRUNG DER ERFINDUNG
-
In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen zur Veranschaulichung spezifische beispielhafte Ausführungsformen gezeigt sind, in denen die vorliegende Offenbarung in die Praxis umgesetzt werden kann. Diese Ausführungsformen werden ausreichend detailliert beschrieben, um es einem Durchschnittsfachmann zu ermöglichen, die vorliegende Offenbarung in die Praxis umzusetzen. Es können jedoch auch andere Ausführungsformen verwendet werden und Änderungen der Struktur, des Materials und des Prozesses können vorgenommen werden, ohne vom Schutzumfang der Offenbarung abzuweichen.
-
Die hierin dargestellten Veranschaulichungen sollen keine tatsächlichen Ansichten eines bestimmten Verfahrens oder Systems oder einer bestimmten Vorrichtung oder Struktur sein, sondern sind lediglich idealisierte Darstellungen, die zur Beschreibung der Ausführungsformen der vorliegenden Offenbarung verwendet werden. Die hierin dargestellten Zeichnungen sind nicht notwendigerweise maßstabsgetreu. Ähnliche Strukturen oder Komponenten in den verschiedenen Zeichnungen können zur Vereinfachung für den Leser die gleiche oder eine ähnliche Nummerierung beibehalten; die Ähnlichkeit in der Nummerierung bedeutet jedoch nicht, dass die Strukturen oder Komponenten notwendigerweise in Größe, Zusammensetzung, Konfiguration oder einer anderen Eigenschaft identisch sind.
-
Es versteht sich von selbst, dass die Komponenten der Ausführungsformen, wie sie hierin allgemein beschrieben und in den Zeichnungen dargestellt sind, in einer großen Vielfalt unterschiedlicher Konfigurationen angeordnet und gestaltet werden können. Somit soll die folgende Beschreibung verschiedener Ausführungsformen den Schutzumfang der vorliegenden Offenbarung nicht einschränken, sondern ist lediglich repräsentativ für verschiedene Ausführungsformen. Während die verschiedenen Gesichtspunkte der Ausführungsformen in Zeichnungen dargestellt werden können, sind die Zeichnungen nicht notwendigerweise maßstabsgetreu gezeichnet, sofern nicht ausdrücklich angegeben.
-
Die folgende Beschreibung kann Beispiele einschließen, um es einem Durchschnittsfachmann zu ermöglichen, die offenbarten Ausführungsformen auszuführen. Die Verwendung der Begriffe „beispielhaft“, „als Beispiel“, „zum Beispiel“ und dergleichen bedeutet, dass die zugehörige Beschreibung erläuternd ist, und während der Schutzumfang der Offenbarung die Beispiele und ihre rechtlichen Äquivalente umfassen soll, ist die Verwendung solcher Begriffe nicht dazu bestimmt, den Schutzumfang einer Ausführungsform oder dieser Offenbarung auf die spezifizierten Komponenten, Schritte, Merkmale, Funktionen oder dergleichen einzuschränken.
-
Des Weiteren sind die gezeigten und beschriebenen spezifischen Implementierungen nur Beispiele und sollten nicht als die einzige Möglichkeit zur Implementierung der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Elemente, Schaltungen und Funktionen können in Blockdiagrammform gezeigt sein, um die vorliegende Offenbarung nicht durch unnötige Details undeutlich werden zu lassen. Umgekehrt sind gezeigte und beschriebene spezifische Implementierungen nur beispielhaft und sollten nicht als die einzige Möglichkeit zur Implementierung der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Außerdem sind Blockdefinitionen und die Aufteilung von Logik zwischen verschiedenen Blöcken beispielhaft für eine spezifische Implementierung. Es ist für den Fachmann ohne Weiteres ersichtlich, dass die vorliegende Offenbarung durch zahlreiche andere Aufteilungslösungen ausgeführt werden kann. Details bezüglich Zeitüberlegungen und dergleichen wurden größtenteils weggelassen, wenn solche Details nicht notwendig sind, um ein vollständiges Verständnis der vorliegenden Offenbarung zu erhalten, und diese innerhalb der Fähigkeiten eines Durchschnittsfachmanns liegen.
-
Es versteht sich, dass jede Bezugnahme auf ein Element hierin unter Verwendung einer Bezeichnung wie „erste/r/s“, „zweite/r/s“ usw. die Menge oder Reihenfolge dieser Elemente nicht einschränkt, es sei denn, eine solche Einschränkung wird ausdrücklich angegeben. Vielmehr werden diese Bezeichnungen hierin als ein zweckmäßiges Verfahren zum Unterscheiden zwischen zwei oder mehr Elementen oder Instanzen eines Elements verwendet. Ein Verweis auf ein erstes und zweites Element bedeutet also nicht, dass nur zwei Elemente eingesetzt werden dürfen oder dass das erste Element dem zweiten Element in irgendeiner Weise vorhergehen muss. Ebenso kann ein Satz von Elementen, sofern nicht anders angegeben, ein oder mehrere Elemente umfassen. Ebenso können manchmal Elemente, auf die in der Singularform Bezug genommen wird, auch eine oder mehrere Instanzen des Elements einschließen.
-
Der Fachmann würde verstehen, dass hierin beschriebene Informationen und Signale unter Verwendung einer Vielfalt verschiedener Technologien und Techniken dargestellt werden können. Zum Beispiel können Daten, Anweisungen, Befehle, Informationen, Signale, Bits und Symbole, auf die in der Beschreibung Bezug genommen werden kann, durch Spannungen, Ströme, elektromagnetische Wellen, Magnetfelder oder -partikel, optische Felder oder Partikel oder eine beliebige Kombination davon dargestellt werden. Einige Zeichnungen können Signale zur Übersichtlichkeit der Darstellung und Beschreibung als ein einzelnes Signal veranschaulichen. Es sollte für einen Durchschnittsfachmann ersichtlich sein, dass das Signal einen Bus von Signalen darstellen kann, wobei der Bus eine Vielfalt von Bitbreiten aufweisen kann und die Offenbarung auf einer beliebigen Anzahl von Datensignalen, einschließlich eines einzelnen Datensignals, implementiert werden kann.
-
Die verschiedenen veranschaulichenden logischen Blöcke, Module und Schaltungen, die in Verbindung mit den hierin offenbarten Ausführungsformen beschrieben werden, können mit einem Allzweckprozessor, einem Spezialprozessor, einem digitalen Signalprozessor (DSP), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem Field Programmable Gate Array (FPGA) oder einer anderen programmierbaren Logikvorrichtung, einer diskreten Gate- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon, die zum Ausführen der hierin beschriebenen Funktionen ausgelegt sind, implementiert oder ausgeführt werden.
-
Ein Allzweckprozessor (der hierin auch als Host-Prozessor oder einfach als Host bezeichnet werden kann) kann ein Mikroprozessor sein, alternativ kann der Prozessor jedoch ein beliebiger herkömmlicher Prozessor, Controller, Mikrocontroller oder Zustandsautomat sein. Ein Prozessor kann auch als eine Kombination von Rechenvorrichtungen, wie eine Kombination aus einem DSP und einem Mikroprozessor, eine Vielzahl von Mikroprozessoren, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder eine beliebige andere derartige Konfiguration implementiert sein.
-
Ein Allzweckprozessor kann Teil eines Allzweckcomputers sein, der als ein Spezialcomputer angesehen werden sollte, wenn er konfiguriert ist, Anweisungen (z. B. Softwarecode) zum Ausführen von Ausführungsformen der vorliegenden Offenbarung auszuführen. Darüber hinaus verbessert ein solcher Spezialcomputer, wenn er gemäß Ausführungsformen der vorliegenden Offenbarung konfiguriert ist, die Funktion eines Allzweckcomputers, da der Allzweckcomputer ohne die vorliegende Offenbarung nicht in der Lage wäre, die Prozesse der vorliegenden Offenbarung auszuführen. Die vorliegende Offenbarung sieht ferner sinnvolle Einschränkungen in einer oder mehreren bestimmten technischen Umgebungen vor, die über einen abstrakten Gedanken hinausgehen. Zum Beispiel stellen Ausführungsformen der vorliegenden Offenbarung Verbesserungen auf den technischen Gebieten der Intersystem-Kommunikation und Fehlerkorrektur bereit.
-
Es wird auch angemerkt, dass die Ausführungsformen in Bezug auf einen Prozess beschrieben werden können, der als ein Flussdiagramm, ein Fließschema, ein Strukturdiagramm oder ein Blockdiagramm dargestellt ist. Obwohl ein Flussdiagramm Betriebsvorgänge als einen sequentiellen Prozess beschreiben kann, können viele dieser Vorgänge in einer anderen Reihenfolge, parallel oder im Wesentlichen gleichzeitig ausgeführt werden. Außerdem kann die Reihenfolge der Vorgänge neu angeordnet werden. Ein Prozess kann ohne Einschränkung einem Verfahren, einem Thread, einer Funktion, einer Prozedur, einer Unterroutine und einem Unterprogramm entsprechen. Des Weiteren können die hierin offenbarten Verfahren in Hardware, Software oder beidem implementiert werden. Bei Implementierung in Software können die Funktionen als eine oder mehrere Anweisungen oder ein Code auf computerlesbaren Medien gespeichert oder übertragen werden. Computerlesbare Medien schließen sowohl Computerspeichermedien als auch Kommunikationsmedien, einschließlich aller Medien, die die Übertragung eines Computerprogramms von einem Ort zu einem anderen unterstützen, ein.
-
Jede Charakterisierung in dieser Offenbarung von etwas als „üblich“, „herkömmlich“ oder „bekannt“ bedeutet nicht notwendigerweise, dass sie im Stand der Technik offenbart ist oder dass die erörterten Gesichtspunkte nach dem Stand der Technik anerkannt werden. Es bedeutet auch nicht notwendigerweise, dass es auf dem betreffenden Gebiet weithin bekannt und wohlverstanden ist oder routinemäßig verwendet wird.
-
Wie hierin verwendet, bedeutet „Bitfehler“ ein empfangenes digitales Informationsbit, das sich von einem entsprechenden übertragenen Bit unterscheidet.
-
Wie hierin verwendet, bedeuten „Symbol“ und „Symbole“ eine Informationseinheit, die durch ein oder mehrere Bits dargestellt wird. Zum Beispiel kann ein bestimmtes Kommunikationssystem Symbole übertragen, und jedes Symbol kann durch m-Bits (d. h. m zusammenhängende Bits) dargestellt werden. Symbole können zum Beispiel für Menschen lesbar, computerlesbar (z. B. codiert) und Kombinationen davon sein, ohne darauf beschränkt zu sein. Ein Beispiel für ein Symbol, das bei offenbarten Ausführungsformen verwendet wird, ist ein Reed-Solomon-Symbol (auch allgemein als „Reed-Solomon-Code“ bezeichnet).
-
Wie hierin verwendet, bedeutet „Symbolfehler“, dass sich ein empfangenes Symbol von einem Benutzersymbol (d. h. einem übertragenen Symbol) unterscheidet. Ein Beispiel für einen Symbolfehler ist ein m-Bit-Symbol, wobei das Symbol irgendwo von 1 bis m Bitfehler enthält.
-
Wie hierin verwendet, bedeutet „Burst-Fehler“ zwei oder mehr Bitfehler in Folge. Es ist nicht erforderlich, dass alle Bits innerhalb eines Burst-Fehlers tatsächlich einen Bitfehler ausmachen. Beispielhaft kann ein Burst-Fehler eine Folge von Bits sein, die mit einem Bitfehler beginnt und mit einem letzten Bitfehler endet, so dass nach dem letzten Bitfehler ausreichend fehlerfreie Bits vorhanden sind, um ein Burst-Fehlerereignis zu „bereinigen“. Ein Burst-Fehlerereignis kann als bereinigt angesehen werden (d. h. es gibt keine Bitfehler mehr in einer Folge von Bits, die einem Burst-Fehlerereignis zugeordnet sind), wenn keine weiteren Bitfehler in einem ausreichend großen Fenster durchlaufener Bits vorhanden sind. Als ein spezielleres Beispiel kann im Fall von DFE-induzierten Burst-Fehlern ein Burst-Fehlerereignis als bereinigt betrachtet werden, wenn alle Bits innerhalb des DFE-Filters korrekt sind, z. B. für einen 4-Tap-DFE, 4 fehlerfreie Bits, nachdem ein letzter Bitfehler erkannt werden würde, um zu bestimmen, dass die Fehlerausbreitung, die dem DFE zugeordnet ist, beendet wurde. Dies wird im folgenden Burst-Fehlerbeispiel mit einem 4-Tap-DFE veranschaulicht, wobei die Zeichenfolge Bitfehleranzeigen sind, wobei der erste auf links zu empfangen ist. Der doppelt unterstrichene Teil der Zeichenfolgen zeigt die Bitfehler an, und der einfach unterstrichene Teil der Zeichenfolgen zeigt fehlerfreie Bits an:
- , ...01110000...': 3-Bit-Burst bereinigt durch 4 aufeinanderfolgende fehlerfreie Bits. Auch in diesem Beispiel kommt es zu einem zusammenhängenden Fehlerereignis, obwohl dies nicht erforderlich ist.
- ,...01010000...': 3-Bit-Burst bereinigt durch 4 aufeinanderfolgende fehlerfreie Bits.
- ,...01000 10000...' 5-Bit-Burst bereinigt durch 4 aufeinanderfolgende fehlerfreie Bits. Die mittleren 3 fehlerfreien Bits (zwischen ,1'en) waren nicht ausreichend, um das DFE von Fehlern zu bereinigen, es muss 4 Bits warten.
-
Offenbarte Ausführungsformen sind nicht auf Systeme beschränkt, die digitale Informationen empfangen, die unter Verwendung eines binären Systems dargestellt werden, und sind auf Systeme anwendbar, die digitale Informationen empfangen, die durch mehr als zwei Informationsebenen dargestellt werden. Zum Beispiel würde ein Fachmann verstehen, dass offenbarte Ausführungsformen an Systeme anpassbar sind, die digitale Informationen empfangen, die unter Verwendung von vier Informationsebenen dargestellt werden, wie PAM4-Sequenzen digitaler Informationen, die als Bitpaare (d. h. zwei digitale Bits pro Übertragung) übertragen werden, wobei jedes Bitpaar einen bestimmten Übertragungsspannungspegel darstellt; sowie PAM5, PAM 8.
-
Übliche SerDes-Schnittstellen, die den Erfindern dieser Offenbarung bekannt sind, waren in der Lage, einen effektiv fehlerfreien Strom digitaler Informationen zu erzeugen. Bei hohen Übertragungsraten werden jedoch Bitfehler und folglich Symbolfehler in die über SerDes-Sender und -Empfänger übermittelten Informationen eingebracht.
-
Eine Ursache für einen Bitfehler (und folglich einen Symbolfehler) ist eine Intersymbolinterferenz (inter-symbol interference, ISI), die eine Form einer Verzerrung eines Signals ist, in dem ein Bit, das verwendet wird, um die Informationen, die kommuniziert werden, darzustellen, mit nachfolgenden Bits, die Informationen, die kommuniziert werden, darstellen, interferiert.
-
Einige herkömmliche Kommunikationssysteme verwenden eine Technik, die als Entscheidungsrückkopplungsentzerrung (Decision Feedback Equalization, DFE) bezeichnet wird, um die Interferenz, die durch ein zuvor empfangenes Bit auf einem aktuell empfangenen Informationsbit erzeugt wird, zu entzerren. 6 zeigt ein Blockdiagramm eines beispielhaften Filters, der eine DFE-Technik implementiert, die den Erfindern der Offenbarung bekannt ist und die in Verbindung mit einer oder mehreren Ausführungsformen dieser Offenbarung verwendet werden kann, wie hierin weiter beschrieben. Bei der in 6 gezeigten Ausführungsform kommt eine Eingabe zu einem Filter von einer Slicer-Ausgabe, bei der es sich um 1en und 0en handelt, die empfangene digitale Informationen darstellen. Die D 1 bis DN-Elemente sind Standard-D-Typ-Flipflop-Elemente (DFF-Elemente), wobei jedes Flipflop eine Verzögerung von 1 Taktzyklus oder ein „Benutzer-Intervall“ (User-Interval, UI) implementiert. Ein Schieberegister solcher DFF-Elemente implementiert eine Verzögerungsleitung, die zuvor empfangene N Werte speichert. Beispielhaft kann in einem üblichen Empfänger N eine beliebige Zahl von 1 bis 15 sein, wobei Werte im Bereich von 5 bis 8 am häufigsten verwendet werden. An jedem Punkt der Verzögerungskette wird der Wert an dieser Stelle mit einem Multiplizierer (d. h. einem DFE-Multiplikationswert) von A1 nach AN multipliziert, wobei DN mit AN multipliziert wird, um eine DFE-Korrektur für jeden Tap eines Filters zu erhalten. Alle gewichteten Taps werden summiert, um eine DFE-Korrektur für ein aktuelles Symbol (D0, das eine nächste Slicer-Ausgabe sein wird) zu erhalten.
-
Ein Fachmann würde verstehen, dass andere DFE-Techniken in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden können, manchmal mit geringfügigen Modifikationen und Anpassungen für die Implementierung.
-
ISI nimmt mit zunehmender Datenübertragungsrate und/oder zunehmender Übertragungsleitungslänge deutlich zu. Darüber hinaus setzt DFE voraus, dass alle vorherigen Bits korrekt sind. Ein Entscheidungsfehler durch ein Slicing-Element, das z. B. eine logische 0 wählt, die eine logische 1 sein sollte, und umgekehrt, wirkt sich jedoch auf die Entzerrung nachfolgender Bits aus, was zu weiteren Bitfehlern führen kann. Somit ist DFE nicht in der Lage, eine völlig fehlerfreie Übertragung über alle Übertragungsraten und -kanäle zu erreichen. Darüber hinaus können Empfangsbitfehler zu fehlerhaften Bits im DFE-Entzerrer führen, die zu weiteren Bitfehlern führen. Eine Reihe solcher Fehler, bei denen ein erstes Fehlerereignis zu weiteren Fehlerereignissen führt, bis zu einem letzten Fehler (nach dem Bits korrekt sind), wird als Burst-Fehler bezeichnet.
-
Einige herkömmliche Kommunikationssysteme verwenden zusätzlich zu DFE Vorwärtsfehlerkorrekturtechniken (Forward Error Correction, FEC-Techniken), um Bitfehler an einem Empfänger zu korrigieren, die nicht durch DFE korrigiert werden. FEC-Techniken beinhalten in der Regel das Implementieren einer Form von Blockcodierung, wie BCH (Bose, Ray-Chaudhuri und Hocquenqhem) oder RS (Reed-Solomon), von denen dem Fachmann bekannt ist, dass sie die Fähigkeit zur Burst-Fehlerkorrektur aufweisen. In einem üblichen Fall werden redundante Daten, wie Paritätssymbole, zu einer Nachricht hinzugefügt und von einem Empfänger verwendet, um eine Nachricht wiederherzustellen, auch wenn mehrere Fehler bei der Übertragung (oder Speicherung) eingeführt wurden. FEC kann einige Bitfehler korrigieren, jedoch sind Blockcodiertechniken wie RS auf das Korrigieren von t Symbolfehlern in jedem n Symbol-FEC-Block beschränkt, wobei 2t=p und p eine Anzahl von Paritätssymbolen ist. Somit kann für jeweils zwei (2) Paritätssymbole, die in einem FEC-Block vorhanden sind, ein zufällig angeordneter Symbolfehler lokalisiert und korrigiert werden. Wenn in einem n Symbol-FEC-Block eine Anzahl von Symbolfehlern größer als t ist, dann liegt der gegebene FEC-Block außerhalb der Korrekturfähigkeiten des Standard-Decodieralgorithmus, und ein ausgegebener „korrigierter“ FEC-Block kann immer noch Fehler einschließen.
-
Dementsprechend können Burst-Fehler, einschließlich derjenigen, die durch DFE verursacht werden, die Fähigkeit herkömmlicher Fehlerkorrekturtechniken überschreiten, die zur Kommunikation über Übertragungsschnittstellen, wie SerDes-Schnittstellen, verwendet werden. Darüber hinaus wird die Rate und Länge der Burst-Fehler mit den Übertragungsraten, der Übertragungsleitungslänge und der Qualität der Übertragungsleitungen zunehmen. Blockcodierungstechniken wie RS verwenden einige Paritätssymbole, um Symbolfehler zu lokalisieren, und andere Paritätssymbole werden verwendet, um die Symbolfehler zu korrigieren (d. h. durch das korrekte Benutzersymbol zu ersetzen).
-
Löschdecodierungstechniken zur Vorwärtsfehlerkorrektur beinhalten in der Regel die Verwendung externer Informationen, um Symbolfehler in einer empfangenen Übertragung zu lokalisieren, und daher können mehr Symbole mit der gleichen Anzahl von Paritätssymbolen korrigiert werden als bei Blockcodierungstechniken wie RS. Löschen ist ein Prozess zum Anzeigen einer Stelle oder von Stellen in einem Informationsblock für Informationen, von denen bekannt ist, dass sie fehlerhaft sind und daher gelöscht werden können. Löschkorrektur ist ein Prozess zum Korrigieren der Stellen des Informationsblocks, die gelöscht wurden.
-
Zum Beispiel kann ein üblicher Löschprozess die folgenden Vorgänge einschließen: (i) Berechnen eines Syndroms (ein Syndrom ist ein Ergebnis des Durchführens eines XOR-Vorgangs eines Paritätssymbols mit übertragenen Datensymbolen); (ii) Tau berechnen (Tau ist ein Polynom, das von den bekannten Fehlerstellen abgeleitet ist); (iii) Berechnen eines Forney modifizierten Syndroms (Forney Modified Syndroms, FMS), wobei das FMS Tau mit dem berechneten Syndrom kombiniert, um ein kombiniertes Syndrom für den Decodiervorgang zu erzeugen); (iv) Berechnen einer Fehlerstelle (z. B. unter Verwendung von Berlekamp-Massey) und Suchen nach Q=(P-E)/2 Fehlern, aber wenn E=P, dann kann der Löschprozess diesen Schritt überspringen; (v) Berechnen eines Errata-Bewerterpolynoms Omega und Kombinieren eines Fehlerlokalisierungspolynoms mit FMS; (vi) Wurzeln der Kombination finden - hier sucht der Löschvorgang nach Q-Wurzeln, aber wenn P=E, dann kann der Löschprozess diesen Schritt überspringen; (vii) Berechnen eines aus dem Fehlerlokalisierungspolynom und tau abgeleiteten Errata-Lokalisierungspolynoms phi; und (viii) Verwenden des Forney-Verfahrens, um die Korrektursymbole für jede Fehlerstelle zu berechnen. In dem vorstehenden Beispiel ist ,P' die Anzahl von Paritätssymbolen, die in dem FEC-Block verfügbar sind. ,Q' ist die Anzahl zufällig lokalisierter Fehler, die korrigiert werden. ,E' ist die Anzahl von Löschsymbolen, die korrigiert werden.
-
Um herkömmliche Löschtechniken mit Blockcodierung zu verwenden, ist eine externe Angabe darüber erforderlich, welches Symbol oder welche Symbole fehlerhaft sind z. B. Stelle des Symbols oder der Symbole, ohne Einschränkung), jedoch ist eine solche Angabe in SerDes-Schnittstellen nicht verfügbar, noch kann sie aufgrund von leistungseffizienten analogen Architekturen, die üblicherweise verwendet werden, leicht hinzugefügt werden.
-
Dementsprechend beziehen sich eine oder mehrere Ausführungsformen der Offenbarung allgemein auf die Verwendung von Löschtechniken mit Blockcodierungstechniken wie RS zur Fehlerkorrektur. In einer oder mehreren Ausführungsformen werden alle möglichen zusammenhängenden Löschmuster in einem FEC-Block ausprobiert. Insbesondere sind für jedes zusammenhängende Löschmuster der möglichen zusammenhängenden Löschmuster die Löschsymbole gemäß der empfangenen Reihenfolge von Bits, die einen FEC-Block bilden, in Sequenz.
-
Für jedes Löschmuster wird eine nominelle Korrekturmaske identifiziert. Nach der Berechnung von Symbollöschdecodierungen für alle möglichen Löschmuster werden die Ergebnisse verglichen, um ein Korrekturmuster (d. h. eine Korrekturmaske) zu identifizieren, das am besten mit der Burst-Fehlerausgabe einer SerDes-Schnittstelle übereinstimmt. Stehen andere Fehlerkorrekturmöglichkeiten zur Verfügung (z. B. Standard FEC unter Verwendung von RS), so werden diese Ergebnisse mit den Ergebnissen der Verwendung des identifizierten Korrekturmusters verglichen, und basierend auf dem Vergleich werden entweder die anderen Fehlerkorrekturergebnisse oder die Ergebnisse der Verwendung des identifizierten Korrekturmusters ausgewählt.
-
Eine oder mehrere Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf Decodierer, die Burst-fehlertolerant sind, und SerDes-Schnittstellen und Empfänger, die diese enthalten. 1 zeigt ein Blockdiagramm eines Decodierers 100 der Burst-fehlertolerant ist, gemäß einer oder mehreren Ausführungsformen der Offenbarung. In einer oder mehreren Ausführungsformen schließt der Decodierer 100 den Standard-RS-Decodierer 114, den Burst-Fehlerdecodierer 104, die Auswahlschaltung 110 und die Decodierauswahllogik 118 ein. Eine oder mehrere Ausführungsformen des Decodierers 100 können in Hardware (z. B. Schaltungen und elektronische Vorrichtungen, ohne Einschränkung), digitaler Logik (z. B. kombinatorische Logikgatter, ohne Einschränkung), einem endlichen Automaten (z. B. kombinatorische Logik und FlipFlops, ohne Einschränkung) und Kombinationen davon implementiert sein.
-
In einer oder mehreren Ausführungsformen ist der Burst-Fehlerdecodierer 104 im Allgemeinen konfiguriert, um alle zusammenhängenden Löschmuster, die in dieser Offenbarung als „Kandidatenlöschmuster“ bezeichnet werden, und jedes solcher Löschmuster, das hierin als „Kandidatenlöschmuster“ bezeichnet wird, auszuprobieren (d. h. zu testen). Eines oder mehrere der Kandidatenlöschmuster können parallel von einem oder mehreren Burst-Decodierermodulen 106 durchgeführt werden, die in 1 als Burst-Decodierer 1 bis N bezeichnet werden. Jedes Burst-Decodierermodul 106 ist konfiguriert, um ein Kandidatenlöschmuster der Kandidatenlöschmuster zu implementieren. In einer oder mehreren Ausführungsformen ist der Burst-Decodierer 104 konfiguriert, um einen kandidatenkorrigierten Übertragungsblock 122 als Reaktion auf eine Testfehlerkorrektur unter Verwendung jedes Kandidatenlöschmusters auszugeben.
-
Jedes solche Ergebnis eines Burst-Decodierermoduls 106 und anschließende Ausgabe des Burst-Decodierers 104 wird hierin als „Kandidatenkorrektur 108“ bezeichnet.
-
In einer oder mehreren Ausführungsformen ist die Auswahlschaltung 110 im Allgemeinen konfiguriert, um alle der Kandidatenkorrekturen 108 von dem Burst-Decodierer 104 zu empfangen (d. h. alle der Ergebnisse aus dem Versuch der Kandidatenlöschmuster) und eine Burst-Kandidatenkorrektur 112 auszuwählen und auszugeben.
-
Die Auswahlschaltung 110 wählt und gibt eine Burst-Kandidatenkorrektur 112 aus, indem sie Kandidatenkorrekturen 108 vergleicht und eine Kandidatenkorrektur 108 auswählt, die am besten zu einem Empfänger „passt“, oder allgemeiner zu einer SerDes-Schnittstelle, die den Decodierer 100 einschließt. Die Auswahlschaltung 110 kann eine Auswahllogik (nicht gezeigt) zum Bestimmen der besten Übereinstimmung basierend auf dem Empfängertyp einschließen, zum Beispiel kann die Auswahlschaltung 110 eine SerDes-Unterscheidungslogik (nicht gezeigt) einschließen, die eine Kandidatenkorrektur 108 identifiziert, die einem kürzesten Burst-Fehler entspricht, da zum Beispiel SerDes-Empfänger selten lange Burst-Fehler erfahren. In einer Ausführungsform kann eine solche Unterscheidungslogik Bewertungskriterien zum Bewerten jedes Korrekturkandidaten 108 hinsichtlich seiner Eignung als Burst-Fehlerkorrekturlösung definieren. Zum Beispiel können Bewertungskriterien eines oder mehrere von Burst-Fehlerlänge, Gewichtungsfaktoren, Gruppierungen von Burst-Fehlern und mehr einschließen. Die Auswahlschaltung 110 kann eine Burst-Kandidatenkorrektur 112 als Reaktion auf Bewertungskriterien auswählen. Im Falle von Gewichtungsfaktoren kann die Bewertung zugunsten von Korrekturen gewichtet werden, die eine bessere (oder nützlichere) Übereinstimmung für die Art der Fehlerprorogation sind, die für ein bestimmtes Übertragungsschema erwartet wird, im Falle von SerDes-Empfängern, DFE-Fehlerfortpflanzung. Im Fall der DFE-Fehlerfortpflanzung kann der Zusammenhang eines gegebenen Korrekturmusters verwendet werden, sowie Informationen über spezifische Tap-Gewichte des DFE.
-
In einer oder mehreren Ausführungsformen können Kandidatenkorrekturen 108 eine binäre Maske sein, die hierin als „Korrekturmaske“ bezeichnet wird, mit einer Länge, die gleich einer Anzahl von Paritätssymbolen oder Bits von Paritätssymbolen ist. Besteht beispielsweise eine Übertragung aus 30 5-Bit-Symbolen (wobei z. B. 26 Benutzersymbole und 4 Paritätssymbole vorhanden sind), so besteht die Übertragung aus 150 Bits (130 Bits von Benutzersymbolen und 20 Bits von Paritätssymbolen), so dass Kandidatenkorrekturmasken eine Länge von 20 Bit aufweisen.
-
Insbesondere ist angesichts der Tatsache, dass „P=E“ gilt, die Burst-Decodiererlogik der offenbarten Ausführungsformen flächeneffizient, da sie im Vergleich zu einer Standard-Löschdecodierer-Implementierung, die Fälle berücksichtigen muss, in denen P≠E ist, nur eine geringere Anzahl von Logikgattern benötigt.
-
Um das Beispiel fortzusetzen, kann beim Analysieren von Kandidatenkorrekturmasken, um eine beste Übereinstimmung gemäß einem kürzesten Burst-Fehler (z. B. für einen SerDes-Empfänger) auszuwählen, die Auswahlschaltung 110 konfiguriert sein, um in der 20-Bit-Korrekturmaske (vier 5-Bit-Symbole) für jede Kandidatenkorrekturmaske, ein erstes Bit, das umzukehren ist, und ein letztes Bit, das umzukehren ist, zu identifizieren und eine Differenz (in Bits) zwischen den Positionen beider solcher Bits zu bestimmen. Diese Differenz kann als Maß für die Burst-Fehlerlänge verwendet werden. Die Burst-Fehlerlängen für die Kandidatenkorrekturmasken können verglichen werden und die kürzeste Burst-Fehlerlänge als Reaktion auf den Vergleich ausgewählt werden.
-
In einer oder mehreren Ausführungsformen kann der Decodierer 100 konfiguriert sein, um den Eingabe-Übertragungsblock 102 als Reaktion auf die Burst-Kandidatenkorrektur 112 zu korrigieren und einen korrigierten Übertragungsblock 122 auszugeben.
-
In anderen Ausführungsformen kann die Decodierauswahllogik 118 konfiguriert sein, um eine Burst-Kandidatenkorrektur 112 und eine Standard-Kandidatenkorrektur 116 zu empfangen, die vom Standard-RS-Decodierer 114 ausgegeben wird, eine der Burst-Kandidatenkorrektur 112 und Standard-Kandidatenkorrektur 116 (in diesem Beispiel eine 2-Zufallssymbol-Korrekturmaske) auszuwählen und eine ausgewählte Korrekturmaske auszugeben. Die Fehlerkorrekturschaltung 120 kann konfiguriert sein, den Eingabe-Übertragungsblock 102 als Reaktion auf eine ausgewählte Korrekturmaske zu korrigieren und den korrigierten Übertragungsblock 122 als Reaktion auf die ausgewählte Kandidatenkorrektur auszugeben. Zum Beispiel kann die Fehlerkorrekturschaltung 120 konfiguriert sein, um eine ausgewählte Korrekturmaske mit dem Eingabe-Übertragungsblock 102 einem XOR-Vorgang zu unterziehen, um einen korrigierten Übertragungsblock 122 zu erhalten. Vor allem schließt eine ausgewählte Korrekturmaske Masken- und Stelleninformationen ein, mit anderen Worten, indem definiert wird, welche Bits für die Löschdecodierung angewendet werden sollen, zeigt die ausgewählte Korrekturmaske implizit Fehlerstellen an.
-
Zur Erläuterung kann in einigen in Betracht gezogenen Übertragungsszenarien der Eingabe-Übertragungsblock 102 anstelle eines Burst-Fehlers zwei oder mehr unabhängige „partielle“ Burst-Fehler einschließen, die auch als „Einzelsymbol“-Burst-Fehler bezeichnet werden können. Ein partieller Burst-Fehler tritt auf, wenn in einem Symbol eine geringe Anzahl zusammenhängender Bits fehlerhaft ist. Zum Beispiel ist in einem 8-Bit-Symbol, das mit RS-FEC verwendet wird, ein Burst-Fehlerereignis mit einer Länge von 1 bis 5 Bitfehlern auf ein einzelnes Symbol beschränkt.
-
Zwei Burst-Fehlerereignisse (partiell oder nicht) sind unabhängig, wenn ein zweiter (in Sendereihenfolge) partieller Burst-Fehler nicht durch einen ersten (in Sendereihenfolge) partiellen Burst-Fehler verursacht wird. Da ein partieller Burst-Fehler in der Bitlänge kürzer sein kann als ein Symbol und da die beiden partiellen Burst-Fehler unabhängig sind, erzeugt der Burst-Fehlerdecodierer 104 möglicherweise keine Kandidatenkorrektur 108, die tatsächlich zwei partielle Burst-Fehler im Eingabe-Übertragungsblock 102 korrigiert. Mit anderen Worten, es traten zwei kleine unabhängige Fehlerereignisse auf, die jeweils nur ein RS-Symbol beschädigten.
-
In einigen Ausführungsformen kann der Burst-Fehlerdecodierer 104 konfiguriert sein, um Kandidatenkorrekturen mit einer ausreichenden Granularität zu analysieren, um partielle Burst-Fehler zu identifizieren, die in einem gegebenen Übertragungsszenario auftreten. In anderen Ausführungsformen kann der Decodierer 100 den Standard-RS-Decodierer 114 einschließen, der konfiguriert ist, um einige Paritätssymbole zu verwenden, um fehlerhafte Symbole mit partiellen Burst-Fehlern zu lokalisieren und den Rest der Paritätssymbole zu verwenden, um diese fehlerhaften Symbole zu korrigieren. In einer oder mehreren Ausführungsformen des Decodierers 100 können der RS-Decodierer 114 und der Burst-Decodierer 104 parallel, gleichzeitig oder unabhängig voneinander arbeiten.
-
Die Decodierauswahllogik 118 kann konfiguriert sein, um zwischen einer Burst-Kandidatenkorrektur 112, die von der Auswahlschaltung 110 bereitgestellt wird, und einer Standard-Kandidatenkorrektur 116, die von dem Standard-RS-Decodierer 114 bereitgestellt wird, auszuwählen. Wenn zum Beispiel Kandidatenkorrekturen 108 Korrekturmasken sind und Standard-Kandidatenkorrektur 116 eine Korrekturmaske ist, kann der korrigierte Übertragungsblock 122 durch einen XOR-Vorgang eines Datenabschnitts des Eingabe-Übertragungsblocks 102 mit einer Korrekturmaske, die der ausgewählten Burst-Kandidatenkorrektur 112 oder der Standard-Kandidatenkorrektur 116 entspricht, erzeugt werden. Beispielsweise führt eine binäre 1 in einer Korrekturmaske zu einer Bitkorrektur an der Ausgabe des Decodierers 100, während eine binäre 0 in einer Korrekturmaske dazu führen würde, dass eine Eingabe (und damit eine Ausgabe) unverändert bleibt.
-
In einer oder mehreren Ausführungsformen kann der korrigierte Übertragungsblock 122 ein oder mehrere Paritätssymbole und Benutzersymbole oder nur Benutzersymbole einschließen.
-
2A zeigt ein Diagramm eines beispielhaften Prozesses 200 zum Testen von Burst-Fehlerkorrekturen an einem Übertragungsblock gemäß einer oder mehreren Ausführungsformen der Offenbarung. Wie in dem in 2A gezeigten Beispiel in Betracht gezogen, schließt der Prozess 200 das Durchführen von Löschungen unter Verwendung von Kandidatenkorrekturmustetn 208 ein, die Kandidatenlöschmuster Burst0-Burst26 sind. Jedes Korrekturmuster 208 umfasst eine gewisse Anzahl von Symbolen in dem Übertragungsblock 202, die als Fehlersymbole angenommen werden und die gelöscht (und anschließend korrigiert) werden. In einer Ausführungsform ist eine Anzahl gelöschter Symbole in einem Kandidatenkorrekturmuster 208 gleich einer Anzahl von Paritätssymbolen in einem Übertragungsblock. In diesem Beispiel schließt der Übertragungsblock 202 vier Paritätssymbole 206 (P0, P1, P2 und P3) ein, so dass jedes Kandidatenkorrekturmuster 208 vier zusammenhängende Symbole löscht.
-
In einer oder mehreren Ausführungsformen kann eine Sequenz gelöschter Symbole für Kandidatenkorrekturmuster 208 verwendet werden, die zu einem Übertragungsschema und einem Fehlerprofil passen. Da zum Beispiel Burst-Fehler (und partielle Burst-Fehler), die durch DFE verursacht werden, zusammenhängende Bits und Symbole beeinflussen werden, sind die gelöschten Symbole in jedem Kandidatenkorrekturmuster 208 zusammenhängend (d. h. unmittelbar benachbart zueinander an der Symbolstelle des Übertragungsblocks 202). Andere Anzahlen von Paritätssymbolen und gelöschten Symbolen und Anordnungen davon als die in 2A und 2B beschriebenen können verwendet werden, die zu einem bestimmten Übertragungsschema und/oder Fehlerprofil von Interesse passen.
-
Für das in 2A gezeigte Beispiel nimmt das Burst0-Kandidatenkorrekturmuster an, dass S0, S1, S2 und S3 Fehler aufweisen, nimmt das Burst1-Kandidatenkorrekturmuster an, dass S1, S2, S3 und S4 Fehler aufweisen, nimmt das Burst2-Kandidatenkorrekturmuster an, dass S2, S3, S4 und S5 Fehler aufweisen und so weiter, wobei das Burst26-Kandidatenkorrekturmuster annimmt, dass P0, P1, P2 und P3 Fehler aufweisen.
-
2B zeigt ein Diagramm eines beispielhaften Prozesses 210 für einen Burst-Fehlerdecodiervorgang eines Übertragungsblocks 212 unter Verwendung von Kandidatenkorrekturmustern 214 gemäß einer oder mehreren Ausführungsformen. In dem in 2B gezeigten Beispiel sind die Paritätssymbole P0 bis P3 mit den Benutzersymbolen So bis S25 in dem Übertragungsblock 212 verglichen mit dem Übertragungsblock 202 von 2A, in dem die Paritätssymbole zusammenhängend sind, untereinander vermischt. In einer oder mehreren Ausführungsformen kann die Paritätssymbolposition aus einer Reihe von Gründen ausgewählt werden und kann von dem variieren, was in den 2A und 2B gezeigt ist. Zum Beispiel basieren in dem in 2B gezeigten Beispiel die Stellen der Paritätssymbole P0, P1, P2 und P3 in dem Übertragungsblock 212 auf dem SAS 4-Protokoll und insbesondere, um Grundlinienschwankungen innerhalb der Empfänger zu berücksichtigen. Diese Offenbarung ist nicht auf eine bestimmte Stelle oder ein bestimmtes Anordnungsschema für Paritätssymbole in Übertragungsblöcken beschränkt.
-
3A ist ein Diagramm eines Entscheidungsbaums 300 für einen Kandidatenkorrekturauswahlprozess zum Auswählen unter den Kandidatenkorrekturmustern 208 gemäß einer oder mehreren Ausführungsformen der Offenbarung. Zum Beispiel wird, zurückkehrend zu 1, für die Auswahlschaltung 110, um die Burst-Kandidatenkorrektur 112 aus den Kandidatenkorrekturen 108 auszuwählen, eine kürzeste Burst-Fehlerlänge identifiziert, die durch die Burst-Decodierermodule 106 korrigiert wird. In einem beispielhaften Fall wird unter Verwendung des Entscheidungsbaums 300 unter 27 Möglichkeiten die beste Punktzahl identifiziert. 3A zeigt ein vollständiges binäres Layout des Entscheidungsbaums 300, wobei L1 bis L5 5 Ebenen binärer Sortierung darstellen. In diesem Beispiel sortiert der Entscheidungsbaum 300 die Punktzahlen für Kandidatenkorrekturmuster 208 jeweils zwei gleichzeitig in einem Baumelement 302, wobei in jeder Stufe eine Kandidatenkorrektur mit einer niedrigsten Punktzahl ausgewählt und an die nächste Stufe weitergeleitet wird.
-
In einer Ausführungsform wird das Sortieren parallel durchgeführt, wobei die Ergebnisse aus den vorherigen Ebenen an die Baumsortierelemente 310 (siehe 3B) der Baumelementen 302 der nächsten Ebene weitergeleitet werden, bis eine niedrigste Punktzahl gefunden wird, wobei die niedrigste Punktzahl der Burst-Kandidatenkorrektur 112 entspricht. In einer oder mehreren Ausführungsformen kann eine letzte Ausgabe aus dem Baum eine Punktzahl, Informationen zur Fehlerstelle und/oder eine beste Kandidatenkorrektur (z. B. eine binäre Korrekturmaske) sein. Ein Fachmann wird verstehen, dass jeder aus einer Reihe geeigneter Sortierprozesse verwendet werden kann, einschließlich Mischsortieren, Auswahlsortieren, Einfügesortieren, Austauschsortieren und Kombinationen davon.
-
3B zeigt ein Baumsortierelement 310, das konfiguriert ist, um gemäß einer oder mehreren Ausführungsformen anhand von Vergleichskriterien zwischen Kandidatenkorrekturen zu entscheiden. In einer oder mehreren Ausführungsformen kann ein Baumsortierelement 310 einen digitalen Komparator 312, einen Multiplexer (MUX) 316, einen MUX 320 und einen MUX 324 einschließen. Der digitale Komparator 312 kann konfiguriert sein, um mit digitalen Werten zu vergleichen, hier Punktzahlen für zwei Kandidatenkorrekturen ScoreL und ScoreR, und ein Auswahlsignal SEL 314 als Reaktion auf ein Vergleichsergebnis auszugeben, d. h. welche Punktzahl kleiner oder größer ist, entsprechend der Konfiguration. MUX 316 kann konfiguriert sein, um zwei Kandidatenkorrekturen, CorrL und CorrR, zu empfangen und eine der zwei Kandidatenkorrekturen als Reaktion auf das Auswahlsignal SEL 314 auszugeben, das durch den digitalen Komparator 312 bereitgestellt wird. MUX 320 kann konfiguriert sein, um zwei Indexreferenzwerte, IndexL und IndexR, zu empfangen und einen der zwei Indexreferenzwerte als Reaktion auf ein Auswahlsignal SEL 318 auszugeben, das von MUX 316 oder dem digitalen Komparator 312 bereitgestellt wird. In einer oder mehreren Ausführungsformen stellen IndexL und IndexR Positionsinformationen dafür bereit, wo eine Korrektur anzuwenden ist, zum Beispiel das Bereitstellen von Startsymbolnummern für eine gegebene Korrekturmaske. MUX 324 kann konfiguriert sein, um die zwei Punktzahlen ScoreL und ScoreR zu empfangen und eine der zwei Punktzahlen als Reaktion auf das Auswahlsignal SEL 314 auszugeben. Die Ausgaben der verschiedenen vorstehend beschriebenen Elemente IndexO, CorrO und ScoreO können als Eingaben für ein nächstes Baumsortierelement bereitgestellt werden oder, wenn alle Kandidatenkorrekturen verglichen wurden, als eine Burst-Kandidatenkorrektur (z. B. die beste Kandidatenkorrektur gemäß den verwendeten Vergleichskriterien) ausgegeben werden. Das Baumsortierelement 310 verwendet die Punktzahl(en), um einen Gewinner innerhalb jedes Baumelements (BE) 302 auszuwählen. Die ausgewählte Ausgabe schließt einen Index, eine Punktzahl und eine Kandidatenkorrektur ein. Die Indizes, Korrekturen und Punktzahlen werden hierin lediglich der Einfachheit halber als links und rechts oder „L“ und „R“ bezeichnet und andere Konventionen können verwendet werden.
-
In einer oder mehreren Ausführungsformen wird das Auswählen zwischen der Standard-Kandidatenkorrektur 116 und der Burst-Kandidatenkorrektur 112 durchgeführt, indem eine Punktzahl für die Standard-Kandidatenkorrektur 116 berechnet wird und dann diese Standard-Punktzahl mit der Punktzahl verglichen wird, die der Burst-Kandidatenkorrektur 112 zugeordnet ist, und die niedrigste Punktzahl ausgewählt wird, um die endgültige Decodiererausgabe durch die Decodierauswahllogik 118 zu bestimmen.
-
Beispielhafte Bedingungen für Ausführungsformen der Auswahl zwischen einem Standard-Decodiererverfahren und einem Burst-Decodierergebnisverfahren sind nachstehend in Tabelle 2 dargestellt. Wenn ein Standard-Decodierer nicht decodiert und anzeigt, dass er keinen Decodiervorgang durchführen kann, dann wird eine Burst-Fehlerdecodiererausgabe als Decodierverfahren ausgewählt, d. h. die beste Burst-Fehlerdecodierer-Korrekturmaske wird als Korrekturmaske für einen aktuellen FEC-Block ausgewählt. Meldet der Standard-Decodierer, dass nur ein einziges Fehlersymbol korrigiert wurde, wird der Standard-Decodierer ausgewählt. Meldet ein Standard-Decodierer, dass er 2 Fehlersymbole korrigiert hat, wird eine Decodiererauswahl durchgeführt, indem die Punktzahlen der beiden Methoden verglichen werden. Für einen Burst-Decodierer kann eine Punktzahl einfach eine Länge einer vorgeschlagenen Burst-Fehlerkorrekturlösung sein. Eine Punktzahl für einen Standard-Decodierer kann durch Berechnen einer Burst-Länge für jede Symbolkorrektur, Nachschlagen von Punktzahlwerten für jede Burst-Länge (z. B. eine Nachschlagetabelle, die vorbestimmte Punktzahlen als Reaktion auf Burst-Längen zurückgibt - tatsächliche oder interpolierte) und dann Summieren der zwei Punktzahlen, um eine Gesamt-Standard-Decodiererpunktzahl zu erhalten, bestimmt werden.
Tabelle 1: Auswahl eines Decodiererverfahrens.
Standard-FEC-Fehler | Anzahl der Standard-Symbolkorrekturen | Relative Punktzahl | Ausgewähltes Decodierverfahren |
Fehlgeschlagen | X | X | Burst-Decodierer |
Erfolgreich | 1 | X | Standard-Decodierer |
Erfolgreich | 2 | Standard < Burst | Standard-Decodierer |
Erfolgreich | 2 | Standard >=Burst | Burst-Decodierer |
-
In einer oder mehreren Ausführungsformen können drei Konstanten verwendet werden, um dabei zu helfen, eine Punktzahl für eine Standard-Decodiererausgabe zu bestimmen, d. h. eine Standard-Kandidatenkorrektur 116, eine für Einzelbitfehlersymbolkorrekturen (S1), eine für 2-Bitfehlerkorrektursymbole (S2) und eine andere für Symbolkorrekturen von mehr als 2 Bits (Sn). Beispieleinstellungen für S0, S1 und Sn sind S0=2, S1=4 und Sn=8, obwohl diese Werte durch Registerwerte in jeder Implementierung konfigurierbar gemacht werden können, was eine Feinabstimmung basierend auf einem Vorgang im Feld ermöglicht, wenn mit einem SerDes-Empfänger gearbeitet wird. In einer oder mehreren Ausführungsformen können die Werte für S0 bis Sn ausgewählt werden, um eine relative Wahrscheinlichkeit darzustellen, dass eine Standard-Decodierer-Korrekturmaske einem Burst-Fehlerdecodierer überlegen ist, beispielsweise basierend auf einem Profil von DFE-Burst-Fehlern. Insbesondere verursachen solche DFE-Burst-Fehler oft einen Einzelbitfehler oder ein 2-Bit-Fehlerereignis, so dass längere Bursts zunehmend weniger wahrscheinlich werden. So kann einer Zwei-Einzelbit-Korrekturmaske von dem Standard-Decodierer eine niedrige Punktzahl gegeben werden, einer Zwei-Doppelbit-Korrektur kann eine mittlere Punktzahl gegeben werden und alles andere kann eine schlechte Punktzahl gegeben werden (zwei unabhängige Fehlerereignisse von jeweils 3 Bits, die noch jeweils in ein einziges RS-Symbol passen, sind kein guter Korrekturkandidat). Die gegebene Punktzahl wird mit einer Burst-Länge der Burst-Decodiererausgabe verglichen, um den besten Kandidaten zu bestimmen.
-
Ein Beispiel für die Abbildung von Korrektursymbolen auf eine Auswahl von Punktzahlwerten für einen Standard-Decodierer ist in Tabelle 2 angegeben.
Tabelle 2: Punktzahlauswahltabelle
Korrekturmaske (binäres 5-Bit-Symbol) | Punktzahlkonstante |
00001 | S1 |
00010 | S1 |
00100 | S1 |
01000 | S1 |
10000 | S1 |
00011 | S2 |
00110 | S2 |
01100 | S2 |
11000 | S2 |
Andere | Sn |
-
In einer oder mehreren Ausführungsformen kann eine Begrenzung für die von dem Burst-Decodierer unterstützte Burst-Länge festgelegt werden, so dass sehr lange Burst-Korrekturen nicht durchgeführt werden können und stattdessen ein Decodierfehler angezeigt wird. Zum Beispiel kann in einem Fall von SAS 4 eine Begrenzung auf Burst-Länge = 12 festgelegt werden, so dass jede Burst-Decodiererausgabe, die länger als 12 Bits ist, als Decodierfehler gekennzeichnet werden würde.
-
Eine oder mehrere Ausführungsformen beziehen sich auf SerDes-Schnittstellen (und/oder SerDes-Empfänger), die gemäß einer oder mehreren Ausführungsformen der Offenbarung Burst-fehlertolerante Decodierer enthalten. 4 zeigt ein Blockdiagramm einer beispielhaften SerDes-Schnittstelle 400 gemäß einer oder mehreren Ausführungsformen der Offenbarung. Die SerDes-Schnittstelle 400 kann beispielsweise ein SerDes-Übertragungssystem sein. In einer oder mehreren Ausführungsformen schließt die SerDes-Schnittstelle 400 eine Senderstufe 410, eine Empfängerstufe 420 und einen Kanal 416 ein, der funktionsfähig dazwischen gekoppelt ist. In einer oder mehreren Ausführungsformen schließt die Senderstufe 410 Blockcodierer 412 und Sender (TX) 414 ein.
-
Der Blockcodierer 412 ist im Allgemeinen konfiguriert, um eine Datenübertragung blockweise zu codieren, beispielsweise unter Verwendung einer Blockcodiertechnik wie RS. TX 414 ist im Allgemeinen konfiguriert, um blockcodierte Informationsbits, die über die parallele Schnittstelle 402 empfangen werden, zu „serialisieren“ (d. h. einen parallelen Bus von Eingangsbits zu nehmen und seriell auf das physische Übertragungsmedium des Kanals 416 zu treiben, wie z. B. einen physischen Draht, ein „differentielles Paar“ von Drähten, Glasfaserleitung und elektrische Kabel, ohne Einschränkung) und einen seriellen Datenstroms für Kanal 416 bereitzustellen. Obwohl nicht gezeigt, können auch andere Senderfunktionen in der Senderstufe 410 eingeschlossen sein, wie beispielsweise Senderbetonung (z. B. ein 3-Tap-FIR-Filter, der 3 sequentielle Bits zusammen mit konfigurierbaren Gewichtungswerten gewichtet, um die gewünschte Übertragungsspannung zu erhalten) und Sendeskalierung (z. B. ± Skalierungsspannung wird hinzugefügt, um das Übertragungsmedium mit einer ausgewählten Spannung anzutreiben).
-
Kanal 416 ist das physische Medium zum Übertragen des seriellen Datenstroms zur Empfängerstufe 420. In einer oder mehreren Ausführungsformen schließt die Empfängerstufe 420 Entzerrungsfilter und Slicer 422, Blockformatierer 424 und Burst-fehlertolerante Decodierer 426 ein. Der Entzerrungsfilter und Slicer 422 ist konfiguriert, um eine entscheidungsbasierte ISI-Löschung an der empfangenen Übertragung durchzuführen und dann das Übertragungssignal in 1en und 0en „aufzuteilen“ (die in den Entzerrer zurückgeführt werden, um das nächste Bit zu korrigieren), wie vorstehend in Bezug auf DFE-Korrektur beschrieben. Der Blockformatierer 424 ist konfiguriert, um die 1en und 0en der Übertragung gemäß der vom Blockcodierer 412 verwendeten Konvention in Übertragungsblöcke zu stückeln. Der Burst-fehlertolerante Decodierer 426 ist konfiguriert, um eine Fehlerkorrektur gemäß einer oder mehreren Ausführungsformen der Offenbarung durchzuführen, einschließlich zum Beispiel Implementieren von hierin beschriebenen Burst-Fehlerdecodierern.
-
Eine oder mehrere Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf Kommunikationssysteme, die eine oder mehrere Übertragungsschemaschnittstellen, wie beispielsweise SerDes-Schnittstelle 400, und Intersystemkommunikation, die eine hierin beschriebene Burst-Fehlerdecodierung implementiert, implementieren.
-
5 zeigt ein Flussdiagramm eines Prozesses 500 zur Burst-Fehlerkorrektur gemäß einer oder mehreren Ausführungsformen der Offenbarung. In Schritt 502 wird ein empfangener Block übertragener Informationen unter Verwendung eines oder mehrerer Kandidatenkorrekturmuster testweise fehlerkorrigiert. In einer Ausführungsform kann der empfangene Block von Übertragungsinformationen FEC-codiert sein. Das eine oder die mehreren Kandidatenkorrekturmuster können Löschmuster sein, d. h. eine Anzahl von zusammenhängenden Symbolen oder Bits des empfangenen Blocks mit einer bekannten Startposition und einer Endposition innerhalb des empfangenen Blocks. In Schritt 504 werden die Kandidatenkorrekturen, die als Reaktion auf die Testfehlerkorrektur von Schritt 502 ausgegeben wurden, anhand von Bewertungskriterien verglichen. Jede Kandidatenkorrektur kann einem der Kandidatenkorrekturmuster entsprechen, die für die Testfehlerkorrektur verwendet werden. In einer Ausführungsform können Kandidatenkorrekturen Bitmasken sein, die eine vorbestimmte Konvention verwenden, um die Bits anzuzeigen, die innerhalb des empfangenen Blocks umgekehrt werden sollen, und die Bits, die gleich bleiben sollen (z. B. zeigt „1“ eine Umkehrung an, „0“ zeigt an, dass sie gleich bleiben). In Schritt 506 wird eine Burst-Kandidatenkorrektur als Reaktion auf den Vergleich der Kandidatenkorrekturen von Schritt 504 bestimmt. In einer Ausführungsform können Burst-Fehlerlängen, die gemäß einer oder mehreren Ausführungsformen dieser Offenbarung für die Kandidatenkorrekturen berechnet werden, verglichen werden, und ein Vergleichskriterium (z. B. Auswählen der kleineren Burst-Fehlerlänge) kann verwendet werden, um die Burst-Kandidatenkorrektur auszuwählen. In Schritt 508 wird der empfangene Block übertragener Informationen unter Verwendung der ausgewählten Burst-Kandidatenkorrektur fehlerkorrigiert. Der korrigierte Block übertragener Informationen kann ausgegeben, einem anderen Funktionsblock zur Weiterverarbeitung zur bereitgestellt oder anderweitig verwendet werden.
-
Obwohl ein einzelner Duplexvorgang in Verbindung mit einer oder mehreren Ausführungsformen beschrieben werden kann, ist die Offenbarung nicht darauf beschränkt. In einer oder mehreren Ausführungsformen können SerDes-Schnittstellen einen Vollduplexvorgang implementieren (z. B. findet eine Datenumwandlung in beiden Richtungen gleichzeitig statt) und können zwischen einem Einzel- und einem Vollduplexvorgang umschalten.
-
Obwohl SerDes-Schnittstellen möglicherweise zum Umwandeln von paralleler Übertragung in serielle Übertragung und zurück in parallele Übertragung beschrieben wurden, ist die Offenbarung nicht darauf beschränkt. Ausführungsformen von hierin beschriebenen Burst-Decodierern und zugehörigen Decodiertechniken können in Schnittstellen zum Umwandeln von serieller Übertragung in parallele Übertragung und zurück in serielle Übertragung verwendet werden. Ausführungsformen von hierin beschriebenen Burst-Decodierern und zugehörigen Decodier- und Fehlerkorrekturtechniken können auch in Schnittstellen zum Umwandeln von paralleler Übertragung in eine höhere/niedrigere Bandbreite und zurück verwendet werden. Ausführungsformen von hierin beschriebenen Burst-Decodierern und zugehörigen Decodier- und Fehlerkorrekturtechniken können auch in Schnittstellen zwischen rein seriellen Kanälen verwendet werden.
-
Darüber hinaus ist diese Offenbarung nicht auf SerDes-Schnittstellen beschränkt. Burst-Decodierer und zugehörige Decodier- und Fehlerkorrekturtechniken können in anderen Übertragungsschemaschnittstellen verwendet werden, einschließlich denen, die bisher Burst-Fehler gemeinhin als unvermeidlich akzeptiert haben.
-
Ein Fachmann wird viele Vorteile und Vorzüge aus den Ausführungsformen dieser Offenbarung erkennen. Zum Beispiel eine höhere Fehlertoleranz, Unterstützung für längere Übertragungsstrecken und einen robusteren Betrieb. Da ferner Decodierer gemäß Ausführungsformen der Offenbarung mehr Fehler korrigieren können als herkömmliche Decodierer, können Konstruktionsbeschränkungen einer SerDes-Schnittstelle gelockert werden, da Fehler korrigiert werden können. Beispielsweise können Konstruktionsbeschränkungen eine Länge eines Übertragungsmediums, Materialien, die für Übertragungsmedien verwendet werden, Abschirmung gegen Fremdgeräuschen und dergleichen einschließen.
-
Ein weiterer Vorteil von Ausführungsformen von Burst-Fehlerkorrekturtechniken dieser Offenbarung besteht darin, dass sie in Verbindung mit anderen Fehlerkorrekturtechniken implementiert werden können, wie beispielsweise einer Standard-Fehlerkorrekturtechnik (z. B. einer in einem Standard spezifizierten Technik).
-
Ein Fachmann wird erkennen, dass die Burst-Fehlerdecodiertechniken und Burst-Fehlerdecodierer zusätzlich zu den hierin beschriebenen weite Anwendungen aufweisen. Zum Beispiel können Burst-Fehlerdecodierer, die in dieser Offenbarung beschrieben sind, in Speicheranwendungen implementiert sein, zum Beispiel Schnittstellen, die in seriellen Punkt-zu-Punkt-Protokollen implementiert sind, wie seriell angebundenem SCSI (z. B. SAS 1, 2, 3 und 4), die Daten zu und von Computerspeicherelementen, wie Festplatten, Bandlaufwerken und Solid-State-Laufwerken, bewegen; serielle ATA, die eine Computerbusschnittstelle ist, die Host-Busadapter mit Massenspeichervorrichtungen wie Festplatten, Solid-State-Laufwerken und Bandlaufwerken verbindet; und PCI und PCI-Express, die eine Schnittstelle für separate serielle Verbindungen sind, die Vorrichtungen mit einem Host verbinden. Darüber hinaus können Burst-Fehlerdecodierer, die in dieser Offenbarung beschrieben sind, in Netzwerk-Switches (z. B. Ethernet-Switches), drahtlosen Routern, faseroptischen Kommunikations-Switches und mehr implementiert sein.
-
Die Merkmale der verschiedenen hierin beschriebenen Ausführungsformen schließen sich nicht gegenseitig aus und können in verschiedenen Kombinationen und Permutationen vorliegen, selbst wenn solche Kombinationen oder Permutationen hierin nicht ausdrücklich beschrieben sind, ohne vom Schutzumfang der Offenbarung abzuweichen. Vielmehr werden einem Fachmann, ohne vom Schutzumfang der Offenbarung abzuweichen, Variationen, Modifikationen und andere Implementierungen des hierin beschriebenen in den Sinn kommen. Daher ist die Erfindung nicht nur durch die vorhergehende veranschaulichende Beschreibung, sondern nur durch die folgenden Ansprüche und gesetzliche Äquivalente davon zu definieren.
-
Zusätzliche, nicht einschränkende Ausführungsformen der Offenbarung schließen ein:
- Ausführungsform 1: Ein Decodierer, der konfiguriert ist, um eine Fehlerkorrektur an einem Informationsblock, einschließlich Benutzersymbolen und mindestens einem Paritätssymbol, durchzuführen, wobei der Decodierer Folgendes umfasst: eine erste Fehlerkorrekturschaltung, die konfiguriert ist, um Kandidatenkorrekturen als Reaktion auf eine Testfehlerkorrektur eines Informationsblocks unter Verwendung jeweiliger Kandidatenkorrekturmuster auszugeben; eine Auswahlschaltung, die konfiguriert ist, um eine Burst-Kandidatenkorrektur aus den Kandidatenkorrekturen auszuwählen; und eine zweite Fehlerkorrekturschaltung, die konfiguriert ist, um den Informationsblock als Reaktion auf die ausgewählte Burst-Kandidatenkorrektur zu fehlerkorrigieren.
- Ausführungsform 2: Der Decodierer nach Ausführungsform 1, wobei die erste Fehlerkorrekturschaltung konfiguriert ist, um die Fehlerkorrektur des Informationsblocks als Reaktion auf die Kandidatenkorrekturmuster zu testen, durch: Ausgeben einer ersten Kandidatenkorrektur als Reaktion auf eine erste Testfehlerkorrektur des Informationsblocks unter Verwendung eines ersten Kandidatenkorrekturmusters von den Kandidatenkorrekturmustern; und Ausgeben einer zweiten Kandidatenkorrektur als Reaktion auf eine zweite Testfehlerkorrektur des Informationsblocks unter Verwendung eines zweiten Kandidatenkorrekturmusters von den Kandidatenkorrekturmustern. Ausführungsform 3: Der Decodierer nach einer der Ausführungsformen 1 und 2, wobei die Auswahlschaltung konfiguriert ist, um die Burst-Kandidatenkorrektur aus den Kandidatenkorrekturen auszuwählen, durch: Vergleichen von Fehlerlängen der Kandidatenkorrekturen; und Auswählen einer Kandidatenkorrektur, die einer kürzesten Fehlerlänge entspricht, um die Burst-Kandidatenkorrektur zu erhalten.
- Ausführungsform 4: Der Decodierer nach einer der Ausführungsformen 1 bis 3, wobei die Auswahlschaltung für eine gegebene Kandidatenkorrektur konfiguriert ist zum: Identifizieren eines ersten zu korrigierenden Bits und eines zweiten zu korrigierenden Bits in dem Informationsblock gemäß den gegebenen Kandidatenkorrekturen; und Bestimmen eines Abstands in Bits zwischen dem ersten zu korrigierenden Bit und dem zweiten zu korrigierenden Bit.
- Ausführungsform 5: Der Decodierer nach einer der Ausführungsformen 1 bis 4, wobei die zweite Fehlerkorrekturschaltung konfiguriert ist, um den Informationsblock als Reaktion auf die ausgewählte Burst-Kandidatenkorrektur zu fehlerkorrigieren, durch: Fehlerkorrektur des Informationsblocks als Reaktion auf die ausgewählte Burst-Kandidatenkorrektur.
- Ausführungsform 6: Der Decodierer nach einer der Ausführungsformen 1 bis 5, wobei die erste Fehlerkorrekturschaltung konfiguriert ist, um die Fehlerkorrektur des Informationsblocks als Reaktion auf die Kandidatenkorrekturmuster zu testen, durch: Testfehlerkorrektur des Informationsblocks als Reaktion auf ein oder mehrere Kandidatenlöschmuster, wobei das eine oder die mehreren Kandidatenlöschmuster zusammenhängend sind.
- Ausführungsform 7: Der Decodierer nach einer der Ausführungsformen 1 bis 6, wobei die zweite Fehlerkorrekturschaltung konfiguriert ist, um den Informationsblock als Reaktion auf das eine oder die mehreren Kandidatenlöschmuster zu fehlerkorrigieren, durch: Löschen und Decodieren eines oder mehrerer Bits oder Symbole des Informationsblocks unter Verwendung einer Korrekturmaske, die der ausgewählten Burst-Kandidatenkorrektur entspricht, wobei eine Korrekturmaske der einen oder mehreren Korrekturmasken Folgendes aufweist: eine Länge gleich einer Anzahl von Paritätssymbolen, die dem Informationsblock zugeordnet sind, oder eine Länge gleich einer Anzahl von Bits von Paritätssymbolen, die dem Informationsblock zugeordnet sind. Ausführungsform 8: Der Decodierer nach einer der Ausführungsformen 1 bis 7, wobei die erste Fehlerkorrekturschaltung konfiguriert ist, um die Fehlerkorrektur des Informationsblocks als Reaktion auf das eine oder die mehreren Kandidatenlöschmuster zu testen, durch: Berechnen einer oder mehrerer Symbollöschdecodierungen als Reaktion auf das eine oder die mehreren Kandidatenlöschmuster.
- Ausführungsform 9: Der Decodierer nach einer der Ausführungsformen 1 bis 8, ferner umfassend eine Standard-Fehlerkorrekturschaltung, die konfiguriert ist, um eine Standard-Kandidatenkorrektur als Reaktion auf eine Standard-Fehlerkorrektur des Informationsblocks unter Verwendung eines Standard-Fehlerkorrekturprotokolls auszugeben.
- Ausführungsform 10: Der Decodierer nach einer der Ausführungsformen 1 bis 9, wobei die Auswahlschaltung konfiguriert ist, um eine von der Standard-Kandidatenkorrektur und der Burst-Kandidatenkorrektur auszuwählen.
- Ausführungsform 11: Der Decodierer nach einer der Ausführungsformen 1 bis 10, wobei die zweite Fehlerkorrekturschaltung konfiguriert ist, um den Informationsblock als Reaktion auf die ausgewählte Kandidatenkorrektur zu fehlerkorrigieren, durch: Fehlerkorrektur des Informationsblocks als Reaktion auf die ausgewählte der Standard-Kandidatenkorrektur und der Burst-Kandidatenkorrektur.
- Ausführungsform 12: Der Decodierer nach einer der Ausführungsformen 1 bis 11, wobei die Auswahlschaltung konfiguriert ist, um eine von der Standard-Kandidatenkorrektur und der Burst-Kandidatenkorrektur auszuwählen, durch: Auswählen der Burst-Kandidatenkorrektur als Reaktion auf ein Ergebnis der Standard-Fehlerkorrektur des Informationsblocks, das ein Fehlschlagen der Decodierung oder Fehlerkorrektur des Informationsblocks anzeigt; Auswählen der Standard-Kandidatenkorrektur als Reaktion auf das Ergebnis der Standard-Fehlerkorrektur des Informationsblocks, das nur ein einziges korrigiertes oder korrigierbares Fehlersymbol anzeigt; Auswählen der Burst-Kandidatenkorrektur als Reaktion auf das Ergebnis der Standard-Fehlerkorrektur des Informationsblocks, das zwei oder mehr korrigierte oder korrigierbare Fehlersymbole anzeigt und dass eine Punktzahl der Burst-Kandidatenkorrektur größer oder gleich einer Punktzahl eines Standard-Decodierers ist; und Auswählen der Standard-Kandidatenkorrektur als Reaktion auf das Ergebnis der Standard-Fehlerkorrektur des Informationsblocks, das zwei oder mehr korrigierte oder korrigierbare Fehlersymbole anzeigt und dass die Punktzahl der Standard-Kandidatenkorrektur größer als die Punktzahl des Standard-Decodierers ist.
- Ausführungsform 13: Der Decodierer nach einer der Ausführungsformen 1 through 12, wobei die Auswahlschaltung konfiguriert ist zum: Bestimmen der Punktzahl der Burst-Kandidatenkorrektur als Reaktion auf eine Länge der Burst-Kandidatenkorrektur; und Bestimmen der Punktzahl der Standard-Kandidatenkorrektur, durch: Bestimmen einer oder mehrerer Standard-Kandidatenlängen, wobei jede der einen oder mehreren Standard-Kandidatenlängen einer Symbolkorrektur der Standard-Kandidatenkorrektur entspricht; Identifizieren von Punktzahlen, die der einen oder den mehreren Standard-Kandidatenlängen zugeordnet sind, in Abhängigkeit von einer Nachschlagetabelle, wobei die Nachschlagetabelle Punktzahlwerte umfasst, die den Standard-Kandidatenlängen zugeordnet sind; und Bestimmen der Punktzahl der Standard-Kandidatenkorrektur als Reaktion auf die identifizierten Punktzahlen.
- Ausführungsform 14: Der Decodierer nach einer der Ausführungsformen 1 bis 13, wobei die Standard-Fehlerkorrekturschaltung konfiguriert ist, um eine Standard-Fehlerkorrektur des Informationsblock durch Vorwärtsfehlerkorrektur des Informationsblocks durchzuführen.
- Ausführungsform 15: Der Decodierer nach einer der Ausführungsformen 1 bis 14, wobei die Vorwärtsfehlerkorrektur des Informationsblocks das Durchführen einer Reed-Solomon-Fehlerkorrektur umfasst.
- Ausführungsform 16: Der Decodierer nach einer der Ausführungsformen 1 bis 15, wobei der Informationsblock ein vorwärtsfehlerkorrekturcodierter Informationsblock ist.
- Ausführungsform 17: Eine Übertragungsschnittstelle, die Burst-fehlertolerant ist, wobei die Übertragungsschnittstelle Folgendes umfasst: einen Sender, der konfiguriert ist, um sequentiell Bits eines vorwärtsfehlerkorrekturcodierten (FEC-codierten) Übertragungsblocks an eine physische Übertragungsleitung bereitzustellen; und einen Empfänger, der konfiguriert ist zum: Empfangen übertragener Bits des FEC-codierten Übertragungsblocks von der physischen Übertragungsleitung; Erkennen von Bits der übertragenen Bits, die Eigenschaften aufweisen, die Burst-Fehler anzeigen, die in dem FEC-codierten Übertragungsblock während der Übertragung über die physische Übertragungsleitung induziert werden; und Ändern mindestens einiger der erkannten Bits. Ausführungsform 18: Die Übertragungsschnittstelle nach einer der Ausführungsformen 17, wobei der Empfänger einen Burst-Fehlerdecodierer umfasst, wobei der Burst-Fehlerdecodierer konfiguriert ist, um Korrekturmuster zum Korrigieren von Fehlern in zusammenhängenden Bits der empfangenen übertragenen Bits des FEC-codierten Übertragungsblocks zu testen.
- Ausführungsform 19: Die Übertragungsschnittstelle nach einer der Ausführungsformen 17 und 18, wobei der Empfänger eine Standard-Fehlerkorrekturschaltung umfasst, die konfiguriert ist, um ein Standard-Fehlerkorrekturprotokoll an den empfangenen übertragenen Bits des FEC-codierten Übertragungsblocks durchzuführen, und wobei der Empfänger konfiguriert ist, um eines von einem Ergebnis der Standard-Fehlerkorrekturschaltung und einem Ergebnis des Burst-Fehlerdecodierers auszuwählen.
- Ausführungsform 20: Die Übertragungsschnittstelle nach einer der Ausführungsformen 17 bis 19, wobei die Bits, die Burst-Fehler anzeigen, partielle Burst-Fehler anzeigen.
- Ausführungsform 21: Ein Verfahren zur Fehlerkorrektur eines Informationsblocks, der vorwärtsfehlerkorrekturcodiert (FEC-codiert) ist, wobei das Verfahren Folgendes umfasst: Erzeugen von Kandidatenkorrekturen als Reaktion auf eine Testfehlerkorrektur eines Informationsblocks als Reaktion auf die Verwendung von Kandidatenkorrekturmustern; Auswählen einer Burst-Kandidatenkorrektur aus den Kandidatenkorrekturen; und Fehlerkorrektur des Informationsblocks als Reaktion auf die ausgewählte Burst-Kandidatenkorrektur.
- Ausführungsform 22: Das Verfahren nach einer der Ausführungsformen 21, ferner umfassend: Erzeugen einer ersten Kandidatenkorrektur als Reaktion auf eine erste Testfehlerkorrektur des Informationsblocks unter Verwendung einer ersten Kandidatenkorrektur von den Kandidatenkorrekturen; und Erzeugen einer zweiten Kandidatenkorrektur als Reaktion auf eine zweite Testfehlerkorrektur des Informationsblocks unter Verwendung einer zweiten Kandidatenkorrektur von den Kandidatenkorrekturen.
- Ausführungsform 23: Das Verfahren nach einer der Ausführungsformen 21 und 22, wobei das Auswählen der Kandidatenkorrektur von den Kandidatenkorrekturen das Auswählen einer Burst-Kandidatenkorrektur als Reaktion auf die erste Kandidatenkorrektur und die zweite Kandidatenkorrektur umfasst.
- Ausführungsform 24: Das Verfahren nach einer der Ausführungsformen 21 bis 23, wobei das Auswählen der Burst-Kandidatenkorrektur als Reaktion auf die erste Kandidatenkorrektur und die zweite Kandidatenkorrektur das Auswählen einer von der ersten Kandidatenkorrektur und der zweiten Kandidatenkorrektur als Reaktion auf das Vergleichen einer ersten Fehlerlänge, die der ersten Kandidatenkorrektur entspricht, und einer zweiten Fehlerlänge, die der zweiten Kandidatenkorrektur entspricht, umfasst.
- Ausführungsform 25: Das Verfahren nach einer der Ausführungsformen 21 bis 24, wobei das Auswählen der Burst-Kandidatenkorrektur als Reaktion auf die erste Kandidatenkorrektur und die zweite Kandidatenkorrektur ferner Folgendes umfasst: Bestimmen der ersten Fehlerlänge oder der zweiten Fehlerlänge, durch: Identifizieren eines ersten zu korrigierenden Bits und eines zweiten zu korrigierenden Bits in dem Informationsblock; und Bestimmen eines Abstands in Bits zwischen dem ersten zu korrigierenden Bit und dem zweiten zu korrigierenden Bit.
- Ausführungsform 26: Das Verfahren nach einer der Ausführungsformen 21 bis 25, wobei das Auswählen einer von der ersten Kandidatenkorrektur und der zweiten Kandidatenkorrektur als Reaktion auf das Vergleichen der ersten Fehlerlänge, die der ersten Kandidatenkorrektur entspricht, und der zweiten Fehlerlänge, die der zweiten Kandidatenkorrektur entspricht, Folgendes umfasst: Auswählen der ersten Kandidatenkorrektur als Reaktion darauf, dass die erste Fehlerlänge kürzer ist als die zweite Fehlerlänge; und Auswählen der zweiten Kandidatenkorrektur als Reaktion darauf, dass die zweite Fehlerlänge kürzer ist als die erste Fehlerlänge.
- Ausführungsform 27: Das Verfahren nach einer der Ausführungsformen 21 bis 26, wobei die Testfehlerkorrektur des Informationsblocks als Reaktion auf die Kandidatenkorrekturmuster Testfehlerkorrektur des Informationsblocks als Reaktion auf Kandidatenlöschmuster umfasst, wobei die Kandidatenlöschmuster innerhalb des Informationsblocks zusammenhängend sind.
- Ausführungsform 28: Das Verfahren nach einer der Ausführungsformen 21 bis 27, wobei die Fehlerkorrektur des Informationsblocks als Reaktion auf die Kandidatenlöschmuster Folgendes umfasst: Definieren von Korrekturmasken, die den Kandidatenlöschmustern entsprechen, wobei eine Korrekturmaske der Korrekturmasken eine Länge aufweist, die gleich einer Anzahl von Paritätssymbolen, die dem Informationsblock zugeordnet sind, oder Bits von Paritätssymbolen, die dem Informationsblock zugeordnet sind, ist.
- Ausführungsform 29: Das Verfahren nach einer der Ausführungsformen 21 bis 28, wobei die Testfehlerkorrektur des Informationsblocks als Reaktion auf die Kandidatenlöschmuster das Berechnen von Symbollöschdecodierungen als Reaktion auf die Kandidatenlöschmuster umfasst.
- Ausführungsform 30: Das Verfahren nach einer der Ausführungsformen 21 bis 29, wobei die Testfehlerkorrektur des Informationsblocks als Reaktion auf die Kandidatenkorrekturmuster ferner die Standard-Fehlerkorrektur des Informationsblocks als Reaktion auf ein Standard-Fehlerkorrekturprotokoll umfasst.
- Ausführungsform 31: Das Verfahren nach einer der Ausführungsformen 21 bis 30, wobei das Auswählen der Kandidatenkorrektur von den Kandidatenkorrekturen das Auswählen einer von der Standard-Kandidatenkorrektur oder der Burst-Kandidatenkorrektur umfasst.
- Ausführungsform 32: Das Verfahren nach einer der Ausführungsformen 21 bis 31, wobei die Fehlerkorrektur des Informationsblocks als Reaktion auf die ausgewählte Kandidatenkorrektur Fehlerkorrektur des Informationsblocks als Reaktion auf die ausgewählte von der Standard-Kandidatenkorrektur und der Burst-Kandidatenkorrektur umfasst.
- Ausführungsform 33: Das Verfahren nach einer der Ausführungsformen 21 bis 32, wobei das Auswählen einer von der Standard-Kandidatenkorrektur und der Burst-Kandidatenkorrektur Folgendes umfasst: Auswählen der Burst-Kandidatenkorrektur als Reaktion auf ein Ergebnis der Standard-Fehlerkorrektur des Informationsblocks, das ein Fehlschlagen der Decodierung oder Fehlerkorrektur des Informationsblocks anzeigt; Auswählen der Standard-Kandidatenkorrektur als Reaktion auf das Ergebnis der Standard-Fehlerkorrektur des Informationsblocks, das nur ein einziges korrigiertes oder korrigierbares Fehlersymbol anzeigt; Auswählen der Burst-Kandidatenkorrektur als Reaktion auf das Ergebnis der Standard-Fehlerkorrektur des Informationsblocks, das zwei oder mehr korrigierte oder korrigierbare Fehlersymbole anzeigt und dass eine Punktzahl der Burst-Kandidatenkorrektur größer oder gleich einer Punktzahl eines Standard-Decodierers ist, oder Auswählen der Standard-Kandidatenkorrektur als Reaktion auf das Ergebnis der Standard-Fehlerkorrektur des Informationsblocks, das zwei oder mehr korrigierte oder korrigierbare Fehlersymbole anzeigt und dass die Punktzahl der Standard-Kandidatenkorrektur größer als die Punktzahl des Standard-Decodierers ist.
- Ausführungsform 34: Das Verfahren nach einer der Ausführungsformen 21 bis 33, wobei das Auswählen einer von der Standard-Kandidatenkorrektur oder der Burst-Kandidatenkorrektur ferner Folgendes umfasst: Bestimmen der Punktzahl der Burst-Kandidatenkorrektur als Reaktion auf eine Länge der Burst-Kandidatenkorrektur; und Bestimmen der Punktzahl der Standard-Kandidatenkorrektur, durch: Bestimmen von Längen, wobei jede der Längen einer Symbolkorrektur der Standard-Kandidatenkorrektur entspricht; Identifizieren von Punktzahlen, die den Längen zugeordnet sind, in Abhängigkeit von einer Nachschlagetabelle, wobei die Nachschlagetabelle Punktzahlwerte umfasst, denen Längen zugeordnet sind; und Bestimmen der Punktzahl der Standard-Kandidatenkorrektur als Reaktion auf die identifizierten Punktzahlen.
- Ausführungsform 35: Das Verfahren nach einer der Ausführungsformen 21 bis 34, wobei die Standard-Fehlerkorrektur des Informationsblocks als Reaktion auf die Standard-Kandidatenkorrektur die Vorwärtsfehlerkorrektur des Informationsblocks umfasst.
- Ausführungsform 36: Das Verfahren nach einer der Ausführungsformen 21 bis 35, wobei die Vorwärtsfehlerkorrektur des Informationsblocks eine Reed-Solomon-Fehlerkorrektur des Informationsblocks umfasst.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 62739744 [0001]
- US 16/283634 [0001]
-
Zitierte Nicht-Patentliteratur
-
- 1. Oktober 2018, für „BURST ERROR TOLERANT DECODER AND RELATED SYSTEMS, METHODS, AND DEVICES" [0001]
- 22. Februar 2019, für „BURST ERROR TOLERANT DECODER AND RELATED SYSTEMS, METHODS, AND DEVICES" [0001]