DE69837784T2 - Verbessertes fünf-fehler-korrektursystem - Google Patents

Verbessertes fünf-fehler-korrektursystem Download PDF

Info

Publication number
DE69837784T2
DE69837784T2 DE69837784T DE69837784T DE69837784T2 DE 69837784 T2 DE69837784 T2 DE 69837784T2 DE 69837784 T DE69837784 T DE 69837784T DE 69837784 T DE69837784 T DE 69837784T DE 69837784 T2 DE69837784 T2 DE 69837784T2
Authority
DE
Germany
Prior art keywords
roots
determining
polynomial
values
processing
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 - Fee Related
Application number
DE69837784T
Other languages
English (en)
Other versions
DE69837784D1 (de
Inventor
Lih-Jyh Shrewsbury WENG
Ba-Zhong Shrewsbury SHEN
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.)
Maxtor Corp
Original Assignee
Maxtor 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 Maxtor Corp filed Critical Maxtor Corp
Publication of DE69837784D1 publication Critical patent/DE69837784D1/de
Application granted granted Critical
Publication of DE69837784T2 publication Critical patent/DE69837784T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung bezieht sich im Allgemeinen auf Datenverarbeitungssysteme und genauer gesagt auf ein System zum Decodieren und Korrigieren von Fehlern in Daten mit einem Fehlerkorrekturcode.
  • HINTERGRUND DER ERFINDUNG
  • Auf Magnetmedien, wie beispielsweise Magnetplatten, gespeicherte Daten werden typischerweise in codierter Form gespeichert, sodass Fehler in den gespeicherten Daten möglicherweise korrigiert werden können. Die Fehler können zum Beispiel aufgrund von Zwischensymbolinterferenz, einem Defekt der Platte oder Rauschen auftreten. Wenn die Dichte der auf der Platte gespeicherten Daten zunimmt, sind mehr Fehler wahrscheinlich, und vom System wird verlangt, dass es sehr viele Fehler korrigiert, die sehr viele Burst-Fehler aufweisen. Ein Burst-Fehler wird typischerweise als eine zusammenhängende Anzahl von Symbolen festlegt, bei denen das erste Symbol und das letzte Symbol fehlerhaft sind. Die Geschwindigkeit, mit der das System die Fehler, einschließlich die Burst-Fehler, korrigiert, ist für die Gesamtgeschwindigkeit bedeutsam, mit der das System die Daten verarbeitet.
  • Vor dem Aufzeichnen werden Datensymbole mit mehrfachen Bits mit einem Fehlerkorrekturcode (ECC) codiert. Wenn die Datensymbole von der Platte wiederhergestellt und demoduliert werden, wird der ECC benutzt, um, wie der Name impliziert, die fehlerhaften Daten zu korrigieren.
  • Genauer gesagt wird eine Kette von k Datensymbole, bevor sie in eine Platte geschrieben wird, mit einem (n, k) ECC mathematisch codiert, um n – k ECC-Symbole zu bilden. Die ECC-Symbole werden dann an die Datenkette angehängt, um ein n-Symbol-Fehlerkorrektur-Codewort zu bilden, das dann auf die Platte geschrieben oder auf dieser gespeichert wird. Wenn die Daten von der Platte gelesen werden, werden die Codewörter und die ECC-Symbole, die die Datensymbole enthalten, wiederhergestellt und mathematisch decodiert. Während des Decodierens werden Fehler in den Daten erfasst und, falls möglich, durch Bearbeiten der ECC-Symbole korrigiert [für eine ausführliche Beschreibung des Decodierens siehe, Peterson und Weldon, Error Correction Codes, 2nd Ed., MIT Press, 1972].
  • Um mehrfache Fehler in Ketten von Datensymbolen zu korrigieren, verwendet das System typischerweise einen ECC, der effizient und effektiv die verschiedenen mathematischen Eigenschaften von Symbolsätzen benutzt, die als Galois-Felder bekannt sind. Galois-Felder werden durch "GF(PM)" dargestellt, wobei "P" eine Primzahl ist, und "M" für die Anzahl von Stellen zur Basis "P" in jedem Element oder Symbol in dem Feld gehalten wird. P weist gewöhnlicherweise den Wert 2 bei digitalen Computer- und Plattenlaufwerkanwendungen auf, und daher ist M die Anzahl von Bits in jedem Symbol. Die mit den Galois-Feldern üblicherweise verwendeten ECCs sind Reed-Solomon-Codes oder BCH-Codes.
  • Es gibt im Wesentlichen vier Hauptschritte beim Decodieren eines verfälschten Codeworts eines Reed-Solomon-Codes hoher Rate oder eines BCH-Codes. Das System bestimmt zuerst Fehlersyndrome, die auf den Ergebnissen einer Bearbeitung der ECC-Symbole basieren. Als nächstes bestimmt das System mit den Fehlersyndromen ein Fehlerortungs-polynom, das ein Polynom ist, das den gleichen Grad wie die Anzahl von Fehlern aufweist. Das System findet dann die Wurzeln des Fehlerortungs-Polynoms und bestimmt aus jeder Wurzel die Position eines zugeordneten Fehlers in dem Codewort. Schließlich findet das System Fehlerwerte für die Fehlerpositionen.
  • Die Schritte zum Bestimmen der Syndrome und zum Finden der Fehlerpositionen sind die zeitaufwändigsten bei dem Fehlerkorrekturprozess. Diese Erfindung bezieht sich auf den Schritt zum Finden der Fehlerpositionen.
  • Während "schnelle" Verfahren zum Finden von vier oder weniger Fehlern bekannt sind, finden vorbekannte Systeme die Fehlerpositionen für Fehlerortungs-Polgnome fünften Grades durch Durchführen einer zeitaufwändigen Chien-Suche. Die Chien-Suche ist eine systematische Trial-and-Error-Vorgehensweise, die beinhaltet, jedes Element des anwendbaren Galois-Feldes als eine Wurzel der Fehlerortungs-Gleichung auszuprobieren. Falls das Galois-Feld relativ groß ist, benötigt die Chien-Suche eine lange Zeit und verlangsamt somit den Fehlerkorrekturvorgang. Eine Alternative zu der Chien-Suche besteht darin, eine Nachschlagetabelle zu verwenden, in der die Koeffizienten des Fehlerortungs-Polynoms eingetragen sind. Um fünf Fehler zu korrigieren, ist die zugeordnete Nachschlagetabelle untragbar groß, da sie alle möglichen verschiedenen Wurzeln für die Fehlerlokalisierer-Polgnome fünften Grades aufweisen muss. In GF(2M) weist die Nachschlagetabelle (2M)5 Einträge auf. Für Systeme, die 8-Bit-Symbole verwenden, weist die Nachschlagetabelle (28)5 oder 240 Einträge auf, wobei jeder Eintrag fünf 8-Bit-Wurzeln des Fehlerortungs-Polynoms aufweist. Für viele Systeme beansprucht die Nachschlagetabelle zu viel Speicherplatz. Dies gilt insbesondere, wenn größere Galois-Felder verwendet werden, um mehr Daten zu schützen.
  • „Hybrid Methods for Finding Roots of a Polynomial with Application to BCH Coding", R. T. Chien, IEEE Transactions an Information Theory, März 1969, offenbart Hybridverfahren zum Finden von Wurzeln in einem endlichen Feld F von Polynomen über F, wobei die Verfahren eine Tabelle der Ordnung von 2m/2m Einträge für GF(2m) beinhalten.
  • WO 97/24812 offenbart ein Verfahren zum Lokalisieren von vier Fehlern in einem Codewort eines Reed-Solomon- oder BCH-Codes. Ein Fehlerlokalisierer-Polynom vierten Grades wird in eine Form bearbeitet, bei der der Koeffizient des kubischen Gliedes Null ist, von dem zwei quadratische Polgnome erzeugt werden. Die Wurzeln der beiden quadratischen Polgnome werden dann den Fehlerpositionen zugeordnet.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ein Fehlerkorrektursystem transformiert ein Fehlerortungs-Polynom fünften Grades s(x) = x5 + a4x4 + a3x3 + a2x2 + a1x + a0 (1)in w(y) = y5 + b2y2 + b1y + b0 (2)wobei b1 = 0 oder 1 und y = t(x) ist, und bestimmt die Wurzeln von Gleichung 1 basierend auf Gleichung 2. Gleichung 2 weist (2M)2 anstatt (2M)5 Lösungen über GF(2M) auf, da es für jede Lösung mit b2 = h2, b0 = h0 und b1 = 1 keine derartige Lösung mit b2 = h2, b0 = h0 und b1 = 0 gibt. Umgekehrt gibt es, falls es eine derartige Lösung mit b1 = 0 gibt, keine derartige Lösungen mit b1 = 1. Das System kann daher eine Tabelle verwenden, die 22M Einträge aufweist, die durch {b2, b0} adressiert wird. Die Tabelle erzeugt Wurzeln y = ri, i = 0, 1...4, und das System transformiert dann die Wurzeln y = ri in die Wurzeln von Gleichung 1 durch x = t–1(y), wobei t–l( ) das Inverse von t( ) ist. Die Größe der Nachschlagetabelle wurde somit von 25M Einträge auf 22M Einträge verringert. Um die gesamten Tabellenspeicherbedürfnisse weiter zu verringern, kann die Tabelle in jedem Eintrag vier Wurzeln ri, i = 0, 1...3 aufweisen, und das System berechnet dann die zugeordnete fünfte Wurzel r4 durch Addieren der gespeicherten Wurzeln.
  • Die Größe der Nachschlagetabelle kann sogar weiter verringert werden, indem (i) das Galois-Feld (2M) in konjugierte Klassen segmentier wird; (ii) bestimmt wird, welche der Klassen Werte von b0 enthalten, die Lösungen von Gleichung 2 mit fünf verschiedenen Wurzeln entsprechen; (iii) jede dieser Klassen jeweils durch einen einzigen Wert von b2' =
    Figure 00050001
    dargestellt wird; und (iv) in der Tabelle für jede Klasse nur jene Lösungen aufgenommen werden, die den repräsentativen Werten von b0' entsprechen. Wie nachstehend ausführlicher erläutert wird, enthält die Tabelle eine relativ kleine Anzahl von Wurzelsätzen für jede der Klassen, wobei jedem Satz ein bestimmter Wert von b2'=
    Figure 00050002
    zugeordnet ist. Die Wurzeln von Gleichung 2 werden durch Finden des Werts von k bestimmt, der b0' und b2' erzeugt, Eingehen in die Nachschlagetabelle mit {b0', b2'}, Erheben der durch die Tabelle erzeugten Wurzeln ri' in die Potenz –2k, um y = ri zu erzeugen, und dann Transformieren des Ergebnisses in die Wurzeln von Gleichung 1 durch x = t–1(y).
  • Wie nachstehend erläutert wird, kann die Gesamtgröße der Tabelle wiederum durch Verwenden einer Anzahl von aneinander gereihten kleineren Tabellen verringert werden, wobei eine Reihe auf b1' = 1 oder 0 und eine zweite Reihe auf den möglichen Werten von b2' basiert. Die Speicheranforderungen der Tabelle können dann weiter verringert werden, in dem in jedem Tabelleneintrag vier oder weniger Wurzeln gespeichert werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die nachstehende Beschreibung der Erfindung bezieht sich auf die begleitenden Zeichnungen, in denen zeigen:
  • 1 ein Funktionsblockdiagramm eines in Übereinstimmung mit der Erfindung aufgebauten Systems;
  • 2 ein Funktionsblockdiagramm eines in Übereinstimmung mit der Erfindung aufgebauten alternativen Systems;
  • 3 ein Diagramm, das eine zweireihige Nachschlagetabelle veranschaulicht, die bei dem System von 2 verwendet werden kann; und
  • 4 ein Ablaufdiagramm des Betriebs des Systems von 2 und 3.
  • AUSFÜHRLICHE BESCHREIBUNG EINER VERANSCHAULICHENDEN AUSFÜHRUNGSFORM
  • A. Das System
  • In 1 umfasst ein Fehlerkorrektursystem 10 einen Fehlerortungs-Polynom-Prozessor 12, der auf eine herkömmliche Art und Weise arbeitet und ein Codewort bearbeitet, das über GF(2M) codiert ist, um ein Fehlerortungs-Polynom s(x) zu erzeugen. Falls der Grad „e" des Fehlerlokalisierer-Polynoms geringer als 5 ist, verwendet das System einen Prozessor 15, um die Wurzeln der Gleichung mit bekannten „schnellen" Techniken zu finden. Falls das Fehlerortungs-Polynom von Grad 5 ist, dass heißt s(x) = x5 + a4x4 + a3x3 + a2x2 + a1x + a0 (1) liefert der Fehlerortungs-Polynom-Prozessor 12 das Polynom an einen Polynomtransformier-Prozessor 14, der das Fehlerortungs-Polynom in w(y) = y5 + b2y2 + b1y + b0 (2)transformiert, wobei b1 entweder gleich 0 oder 1 und y = t(x) ist. Die Bearbeitungsvorgänge des Transformier-Prozessors werden nachstehend in Abschnitt B erläutert.
  • Bei der in 1 gezeigten Ausführungsform des Systems 10 wird auf eine Nachschlagtabelle mit 22M-Einträgen zugegriffen, die als die Adresse eine Verkettung von b2 und b0 verwendet. Die Nachschlagtabelle erzeugt Wurzelsätze y = ri mit i = 0, 1...4. Die Wurzeln werden an einen Wurzeltransformier-Prozessor 18 geliefert, der die Wurzeln y = ri in x = zi transformiert, wobei x = t–1(y) und t1( ) das Inverse von t( ) ist. Mit den fünf Wurzeln x = zi bestimmt ein Fehlerkorrektur-Prozessor 20 fünf zugeordnete Werte und korrigiert Fehler in den Datensymbolen des Codeworts.
  • Vorzugsweise enthält Tabelle 16 in jedem Eintrag vier Wurzeln y = ri mit i = 0, 1...3. Die fünfte Wurzel wird dann durch einen Addierer 17 bestimmt, der die vier gespeicherten Wurzeln addiert. Für jedes Polynom fünften Grades ist die Summe der Wurzeln gleich dem Koeffizienten des Gliedes y4. Somit ist r0 + r1 + r2 + r3 + r4 = b4 und b4 = 0. Demgemäß ist r4 gleich der Summe von r0 + r1 + r2 + r3.
  • Bei dieser ersten Ausführungsform wird die Größe der Nachschlagtabelle von herkömmlichen 25M Einträgen auf 22M Einträge verringert. Für Systeme, die 8-Bit-Symbole verwenden, d.h. bei denen M = 8 ist, wird die Größe der Tabelle von 240 Einträgen auf 216 Einträge verringert. Die Speicheranforderungen je Eintrag werden ebenfalls verringert, indem lediglich vier M-Bit-Wurzeln je Eintrag gespeichert werden.
  • 2 stellt eine zweite Ausführungsform des Fehlerkorrektursystems 10 dar, das eine Nachschlagtabelle 22 aufweist, die in der Größe auf eine Anzahl von Einträgen verringert wird, die ein kleiner Prozentsatz von 2M ist, und somit bedeutend kleiner als die herkömmliche Tabelle ist, die 25M Einträge aufweist, oder sogar als die Tabelle verringerter Größe 16 (1), die 22M Einträge aufweist.
  • Auf die Nachschlagtabelle wird mit Werten b2' und b0' zugegriffen, die den Koeffizienten b2 und b0 von Gleichung 2 und den konjugierten Klassen von GF(2M) zugeordnet sind, wie nachstehend erläutert wird.
  • Ein Galois-Feld GF(2M) kann in eine Anzahl von konjugierten Klassen getrennt werden, jede mit Elementen
    Figure 00080001
    wobei α das primitive Element des Galois-Felds ist. Als ein Beispiel sind die als Potenzen von α ausgedrückten dreizehn konjugierten Klassen von GF(26):
    α0
    α1 α2 α4 α8 α16 α32
    α3 α6 α12 α24 α48 α33
    α5 α10 α20 α40 α17 α34
    α7 α14 α28 α56 α49 α35
    α9 α18 α36
    α11 α22 α44 α25 α50 α37
    α13 α26 α52 α41 α19 α38
    α15 α30 α60 α57 α51 α39
    α21 α42
    α23 α46 α29 α58 α53 α43
    α27 α54 α45
    α31 α62 α61 α59 α55 α47
  • Eine gegebene konjugierte Klasse kann durch eines ihrer Elemente al dargestellt werden, da jedes Element der Klasse gleich
    Figure 00090001
    für k gleich 1, ..., M – 1 ist und durch das wiederholte Quadrieren von al erzeugt werden kann.
  • Wir sind lediglich an Lösungen von Gleichung 2 interessiert, die fünf verschiedene Wurzeln aufweisen, da diese Lösungen auf korrigierbare Fehler zeigen. Die Werte des Koeffizienten b0, die Gleichungen der Form von Gleichung 2 zugeordnet sind, die fünf verschiedene Wurzeln aufweisen, fallen in eine Untermenge der Gesamtzahl von konjugierten Klassen. Bei dem Beispiel umfasst die Untermenge „C" konjugierte Klassen, wobei C È 13 ist. Die Menge von Werten von b0, die von Interesse sind, kann somit vollständig durch die C konjugierten Klassen dargestellt werden, und jede Klasse kann ihrerseits durch ein einzelnes Element al dargestellt werden, das wir hier als b0' bezeichnen. Das b0' in diesem Beispiel ist das Element der Klasse, die den kleinsten Exponenten aufweist. Das b0' kann stattdessen das Element mit dem kleinsten oder größten Gewicht (Anzahl von Einsen), das Element mit dem kleinsten „Wert", der durch die Platzierung der Einsen in den verschiedenen Symbolen bestimmt wird, oder das Element mit dem größten Exponenten sein. Für jeden der C Werte von b0' gibt es eine begrenzte Anzahl von Werten von b2', die den Gleichungen mit fünf verschiedenen Wurzeln entsprechen. Demgemäß muss die Tabelle lediglich die Wurzeln enthalten, die den Gleichungen entsprechen, die diese bestimmten Werte der Koeffizienten b0' und b2' aufweisen. Es sei eine Gleichung in der Form h(x) = xn + qn–1xn–1 + ... + q1x1 + q0 = 0 (3) mit s Wurzeln ri betrachtet. Einsetzen der Wurzeln in Gleichung 3 h(ri) = ri n + qn–1ri n–1 + ... +q1ri + q0 = 0und Erheben beider Seiten in die Potenz 2k ergibt:
    Figure 00100001
  • Die Wurzeln der Gleichung 3 sind ri' =
    Figure 00100002
    für k = 0, ..., M – 1. Somit weist eine Gleichung der Form von Gleichung 2 w(y) = y5 + b2y2 + b1y + b0 (2) erhoben in die Potenz 2k
    Figure 00100003
  • Wurzeln
    Figure 00100004
    = r1' auf, wobei ri die Wurzeln von Gleichung 2 sind.
  • Die Werte b2' und b0' von Gleichung 5 werden verwendet, um auf die Nachschlagtabelle 22 zuzugreifen und die Wurzeln ri von Gleichung 5 zu extrahieren. Das System erhebt im Wurzeltransformier-Prozessor 24 die Wurzeln ri in die Potenz –2k, um die Wurzeln y = ri von Gleichung 2 zu erzeugen. Der Wurzeltransformier-Prozessor erzeugt dann die Wurzeln von Gleichung 1 als x = t–1(y). Wie nachstehend bei einem Beispiel erläutert wird, ist die Anzahl von Einträgen in der Nachschlagtabelle 22 ein kleiner Prozentsatz von 2M, was bedeutend kleiner als die 25M Einträge einer herkömmlichen Nachschlagtabelle ist.
  • Fortfahrend mit dem Beispiel in GF(26) weist eine Gleichung der Form von Gleichung 2 w(y) = y5 + b2y2 + b1y + b0 = 0fünf verschiedene Wurzeln in GF(26) nur dann auf, wenn b0 zu einer der fünf konjugierten Klassen gehört:
    α0
    α1 α2 α4 α8 α16 α32
    α5 α10 α20 α40 α17 α34
    α13 α26 α52 α41 α19 α38
    α27 α54 α45
  • Diese fünf konjugierten Klassen können beispielsweise durchn ein Satz oder Menge vollständig dargestellt werden, der/die für jede Klasse das Element b0' mit dem kleinsten Exponenten enthält. Die Klassen werden somit durch die Menge S = {α0, α1, α5, α13, α27}dargestellt. Für jeden Wert von b0' in dieser Menge gibt es einen kleine Menge von möglichen Werten für b2', für die die Gleichung w'(y) in der Form von Gleichung 5 fünf verschiedene Lösungen aufweist. Tatsächlich gibt es eindeutige Werte von b2', die jeweils b0' = α0, α1, α5 oder α13 zugeordnet sind, und zwei mögliche Werte für b2', die b2' = α27 zugeordnet sind. Bei diesem besonderen Beispiel gibt es keine Lösungen mit fünf verschiedenen Wurzeln, die b1' = 0 zugeordnet sind. Demgemäß entsprechen alle Tabelleneinträge b1' = 1.
  • Alle Lösungen mit Koeffizienten b0' und b2', die fünf verschiedene Wurzeln aufweisen, sind in der folgenden Tabelle mit sechs Einträgen enthalten:
    b0' b2' ri'
    α0 0 α9, α19, α21, α36
    α1 α23 α22, α27, α43, α47
    α5 α20 α16, α21, α40, α49
    α13 α46 α32, α32, α41, α39
    α27 α0 α9, α14, α23, α49
    α27 α45 α6, α18, α37, α44
    TABELLE 1
  • Die Tabelle listet vier Wurzeln für jede Adresse {b0' b2} auf, und die fünfte Wurzel ist die Summe r0 + r1 + r2 + r3 = r4. Tabelle 1 ist wesentlich kleiner als die Tabelle, die bei herkömmlichen Systemen verwendet wird, die (26)5 oder 230 Einträge aufweist.
  • Um die Tabelle 1 zu verwenden, müssen die Werte von b0' =
    Figure 00120001
    und b2' =
    Figure 00120002
    bestimmt werden, und somit muss der Wert von k bestimmt werden. Der Prozessor 14 quadriert den Koeffizienten b0 von Gleichung 2 und inkrementiert k einmal für jede Quadrieroperation. Die Quadrieroperationen werden fortgesetzt, bis entweder das Ergebnis ein Element der Menge S ist oder k den Wert M–1 überschreitet. Alternativ kann der Koeffizient b0 verwendet werden, um auf eine Tabelle (nicht gezeigt) zuzugreifen, die den Wert entweder in einen Wert von k oder in einen „Keine-Lösung"-Eintrag abbildet, was angibt, dass es keine Lösungen gibt, die fünf verschiedene Lösungen aufweisen, die dem bestimmten Wert von b0 zugeordnet sind. Bei dem Beispiel bildet diese Tabelle b0 = 0 in den Keine-Lösung-Eintrag ab.
  • Unter der Annahme, dass
    Figure 00130001
    = b0' in der Menge S ist, berechnet das System b2' =
    Figure 00130002
    und verwendet die Werte b0' und b2', um auf die Nachschlagtabelle 22 zuzugreifen, die die Tabelle 1 enthält, und daraus die gespeicherten Wurzeln ri' zu extrahieren. Nach Bedarf addiert ein Addierer 23 die gespeicherten Wurzeln, um eine zugeordnete fünfte Wurzel r4' zu erzeugen. Das System erhebt dann in dem Wurzeltransformier-Prozessor 24 die Wurzeln ri' in die Potenz –2k, um die Wurzeln ri' von Gleichung 2 zu bestimmen, wobei y = ri =
    Figure 00130003
    ist. Der Wurzel-Prozessor konvertiert als nächstes die Wurzeln y = ri in die Wurzeln von Gleichung 1, x = zi'.
  • Die Anzahl von Wurzeln, die in jedem Tabelleneintrag enthalten sind, kann auf drei verringert werden, falls das System eine quadratische Gleichung löst, die die beiden unbekannten Wurzeln von Gleichung 5 aufweist. Wenn die fünf Faktoren (y – ri') von Gleichung 5 ausmultipliziert und die Koeffizienten des kubierten Glieds gleich Null gesetzt werden, erzeugt das System: r4'·(r0' + r1' + r2' + r3') + r3'·(r0' + r1' + r2') + r2'·(r1' + r0') + r1'·r0' = 0 (6)wobei „*" Multiplikation darstellt. Mit den Werten von r0', r1' und r2', die von der Tabelle extrahiert werden, kann Gleichung 6 umgeschrieben werden r4'·(A + r3') + r3'·A + B = 0 (7) wobei A und B bekannte Größen und A = r0' + r1' + r2' und B = r2'·(r1' + r0') + r1'·r0' ist. Gleichung 7 kann dann umgeschrieben werden als: r4'·r3' + A·(r4' + r3') + B = 0 (8)Mit r4'·r3'·r2'·r1'·r0' = b0'und c = r0'·r1'·r2', können wir in Gleichung 8
    Figure 00140001
    oder
    Figure 00140002
    einsetzen, um
    Figure 00140003
    zu erzeugen, was gleich
    Figure 00140004
    ist, und somit kann r3' aus
    Figure 00140005
    bestimmt werden, wobei z die einzige Unbekannte ist und r4' dann aus r3' bestimmt werden kann. Das System löst dann die quadratische Gleichung mit bekannten Techniken. Eine andere Art und Weise, die quadratische Gleichung zu erzeugen, besteht darin, Gleichung 5 durch die Faktoren (y + ri) für i = 0, 1, 2 zu dividieren.
  • Die Anzahl von in jedem Tabelleneintrag gespeicherter Wurzeln kann ferner auf eins oder zwei verringert werden, wobei das System die zugeordneten Polgnome dritten und vierten Grades mit bekannten „schnellen" Techniken löst.
  • In 3 kann die Nachschlagtabelle 22 in zwei Schichten oder Reihen 29 und 25 angeordnet sein. Die erste Reihe 29 umfasst zwei „Master"-Tabellen 26a und 26b, die jeweils b1' = 0 und b1' = 1 zugeordnet sind. Mit b1' von Gleichung 5 wählt das System eine Master-Tabelle aus. Es greift dann auf die Master-Tabelle mit b0' zu. Die Master-Tabelle erzeugt einen Zeiger auf die zweite Reihe 25 von Tabellen 28, auf die mit dem Koeffizienten b2' zugegriffen wird. Bei dem Beispiel gibt es eine Master-Tabelle mit einem Eintrag 26b für b1' = 1, die angibt, dass es keine zugeordneten Lösungen gibt, die fünf verschiedenen Wurzeln aufweisen, und eine Master-Tabelle mit sechs Einträgen 26a für b1' = 0, die Zeiger auf fünf Tabellen der zweiten Reihe 28, eine Tabelle für jeden der Werte von b1', die einer Lösung mit fünf verschiedenen Wurzeln entsprechen, aufweist. Die Master-Tabelle 26a umfasst ebenfalls eine Keine-Lösung-Eintrag, der allen anderen Werten von b0' entspricht. Drei dieser Tabellen der zweiten Reihe 28 umfassen jeweils zwei Einträge, nämlich einen für den zugeordneten Wert von b2', für die es fünf verschiedene Wurzeln gibt, und einen, der einem „Keine-Lösung"-Wert zugeordnet ist. Die vierte Tabelle, die b0' = α27 zugeordnet ist, umfasst drei Einträge, zwei, die den beiden möglichen Werten von b2' zugeordnet sind, für die es fünf verschiedene Wurzeln gibt, und einen, der dem Keine-Lösung-Wert zugeordnet ist.
  • In 4 findet das System die Wurzeln eines Polynoms fünften Grades mit den beiden Reihen von Tabellen, indem zuerst das Fehlerlokalisier-Polynom fünften Grades bearbeitet wird, um ein Polynom der Form von Gleichung 2 zu erzeugen (Schritt 400). Falls b0 = 0 ist, bestimmt das System, dass y = 0 eine Wurzel ist, und bestimmt die verbleibenden Wurzeln mit einem Verfahren zum Lösen von Polynomen vierten Grades (Schritt 404). Falls der Koeffizient b0 ungleich Null ist, bestimmt das System einen Wert von k, sodass
    Figure 00160001
    = b0' ist, wobei b0' ein Element der Menge S ist (Schritte 402, 406). Um dies zu tun, greift das System entweder auf eine Nachschlagtabelle (nicht gezeigt) mit b0 zu, um einen zugeordneten Wert von k zu erzeugen, oder es berechnet den Wert von k durch Erheben des Koeffizienten b0 von Gleichung 2 in die Potenz 2k, wobei k = 0, 1...M–1 ist, und Bestimmen, ob das Ergebnis ein Element der Menge S ist. Das System quadriert somit wiederholt den Koeffizienten b0', bis das Ergebnis gleich einem der Elemente von S ist oder alle möglichen Werte von k versucht wurden. Falls
    Figure 00160002
    kein Element von S ist, bestimmt das System, dass es keine Lösungen mit fünf verschiedenen Wurzeln gibt (Schritt 407).
  • Wenn ein Wert für k bestimmt werden kann, verwendet das System den Koeffizienten
    Figure 00160003
    = b1', um eine der Master-Tabellen 26a oder 26b auszuwählen (Schritte 408410). Das System geht dann in die ausgewählte Tabelle mit
    Figure 00160004
    und die Tabelle erzeugt einen Zeiger, der das System zu einer der Tabellen zweiter Reihe 28 lenkt (Schritt 412).
  • Mit dem Koeffizienten b2' greift das System auf die ausgewählte Tabelle zweiter Reihe zu, die eine vorbestimmte Anzahl von Wurzeln ri erzeugt (Schritt 414). Das System verwendet dann nach Bedarf die gespeicherten Wurzeln, um die verbleibenden Wurzeln zu erzeugen (Schritt 416). Wenn vier Wurzeln gespeichert sind, addiert sie das System, um die fünfte Wurzel r4' zu bestimmen. Wenn weniger als vier Wurzeln gespeichert werden, verwendet das System die gespeicherten Wurzeln, um eine Polynom von Grad 5 – j zu erzeugen, wobei j die Anzahl gespeicherter Wurzeln ist, und bestimmt dann die verbleibenden Wurzeln, indem dieses Polynom verringerten Grades mit bekannten Techniken gelöst wird. Beispielsweise kann das System drei Wurzeln r0', r1' und r2' in der Tabelle speichern und eine quadratische Gleichung erzeugen, die es mit bekannten Techniken löst, um r3' und r4' zu erzeugen.
  • Das System berechnet als nächstes die Wurzeln ri aus den Wurzeln ri' durch Erheben der Wurzeln in die Potenz –2k (Schritt 418). Es bestimmt dann die Wurzeln x = zi durch Berechnen von t–1(ri) für i = 0, 1 ...4 (Schritt 420).
  • Statt zwei Reihen von Tabellen zu verwenden, kann die Tabelle 1 neu angeordnet werden, sodass sie durch eine Hash der Koeffizienten b2' and b0' adressiert wird. Die Tabelle wird somit
    b2', b0' Wurzeln
    0, α0 α9, α19, α21, α36
    α23, α1 α22, α27, α43, α47
    α20, α5 α16, α21, α40, α57
    α46, α13 α24, α32, α41, α49
    α0, α27 α9, α14, α23, α49
    α45, α27 α6, α18, α37, α44
    jeder andere b2', b0' keine Lösung
    TABELLE 2
  • Die Koeffizienten b2' und b0' werden als M-Bit-Symbole ausgedrückt, die Potenzen des primitiven Elements α modulo des irreduziblen Polynoms ist, das das Feld GF(2M) erzeugt.
  • Eine Hash-Adresse wird von ausgewählten Bits jedes der in Tabelle 2 aufgelisteten Koeffizientenpaare formuliert. Falls die Paare b2', b0' als 2M Spalten von Bits behandelt werden, verwendet das System vorzugsweise für die Hash-Adresse die Spalten, die eine Anzahl von Einsen enthalten, die gleich eine Hälfte der Größe der Tabelle ist. Bei dem Beispiel werden die Spalten 11, 10 und 1 ausgewählt, und die Hash-Adressen für die Paare b2', b0' sind:
    b2', b0' M-Bit-Symbole Hash-Adresse
    0, α0 000000, 000001 000
    α23, α1 101001, 000010 101
    α20, α5 111100, 100000 110
    α46, α13 110010, 001010 111
    α0, α27 000001, 001110 001
    α45, α27 011001, 001110 011
  • Die Hash-Adressen 010 und 100 sind dem Eintrag "keine Lösung" zugeordnet.
  • Falls eine Hash-Adresse verwendet wird, muss das System prüfen, dass die aus der Tabelle extrahierte Menge von Wurzeln eine Lösung für Gleichung 5 ist. Das System substituiert somit die Wurzeln in die Gleichung.
  • B. Verarbeitungen des Polynomtransformier-Prozessor
  • Wir erläutern nachstehend die Verarbeitungen des Polynomtransformier-Prozessors 14 (1), die auf einer Erläuterung in Berlekamps Buch Algebraic Coding Theory, McGraw-Rill Book Company, 1968, basieren. Der Polynomtransformier-Prozessor 14 bestimmt, wie das Fehlerortungs-Polynom zu verarbeiten ist: s(x) = x5 + a4x4 + a3x3 + a2x2 +a1x + a0 (1) um w(y) = y5 + b2y2 + b1y + b0 (2)basierend teilweise auf den Werten der Koeffizienten a3 und a4 zu erzeugen.
  • Falls a3 und a4 beide Null sind, ist das Fehlerortungs-Polynom in der Form von Gleichung 2, mit x = y. Falls a4 ¿ 0 und a3 = 0, bestimmt das System, ob a1 = a4 4 ist, und falls so, setzt y = a4 + x. Wenn x = y + a4 in das Polynom substituiert wird, dann sind die Koeffizienten von Gleichung 2 b0 = a2 b1 = 0 b0 = a0 + a4 5 + a2·a4 2
  • Falls a1 ¿ a4 und a3 = 0, setzt das System
    Figure 00190001
    und die Koeffizienten von Gleichung 2 sind
    Figure 00200001
    b1 = 0 oder 1
    Figure 00200002
    wobei E = (a1 + a4 4)1/4.
  • Falls a3 ¿ 0, lassen wir
    Figure 00200003
    und Gleichung 1 wird
  • Figure 00200004
  • Falls G = 0, impliziert es, dass
    Figure 00200005
    ein Faktor von Gleichung 2 ist, und somit, dass die verbleibenden Wurzeln durch Lösen eines Polynoms vierten Grades bestimmt werden können.
  • Falls G ¿ 0, lassen wir s = 1 / n und dividieren die Koeffizienten von Gleichung 1* durch G, um
    Figure 00200006
    zu erzeugen, wobei
    Figure 00210001
    ist.
  • Der Koeffizient von s3 in dieser Gleichung ist Null, und die Gleichung kann, wie oben erläutert, basierend auf den Werten der Koeffizienten von s4 und s verarbeitet werden, um einen Ausdruck in der Form von Gleichung 2 zu erzeugen. Das System bestimmt als nächstes die Wurzeln s = rj von Gleichung 1** und transformiert sie zuerst in die Wurzeln von Gleichung 1* und dann in die Wurzeln x = zi von Gleichung 1.
  • C. Finden von Wurzeln von Fehlerortungs-Polynomen des Grades e < 5
  • Das oben erläuterte Verfahren zum Finden der Wurzeln eines Fehlerortungs-Polynoms fünften Grades kann ebenfalls verwendet werden, um die Wurzeln von Polynomen vom Grad e < 5 zu finden. Wie nachstehend erläutert ist, umfassen die Tabellen, die verwendet werden, um diese Wurzeln zu finden, in den Einträgen 5 – e mehrfache Wurzeln, die nicht verwendeten Fehlerpositionen entsprechen.
  • Das Polynom des Grades e kann mit x5–e multipliziert werden, um ein Polynom fünften Grades zu erzeugen. Die Koeffizienten von einem oder mehreren von a0, a1, a2 und a3 sind dann gleich Null, was mehrfache Wurzeln bei x = 0 impliziert. Demgemäß müssen die Nachschlagetabellen expandiert werden, um Wurzeln zu enthalten, die den Gleichungen mit diesen nullwertigen Koeffizienten entsprechen.
  • Das System verarbeitet dieses Polynom fünften Grades, wie oben erläutert ist, und die zugeordneten Koeffizienten b0' und b2' werden verwendet, um in die expandierte Tabelle einzugehen. Das System ignoriert die 5 – e mehrfachen Wurzeln bei x = 0, und verwendet die verbleibenden e Wurzeln, um die Fehlerpositionen zu bestimmen, wie es oben erläutert ist. Im Allgemeinen wird die Position x = 0 nicht als eine Fehlerposition verwendet, es sei denn, dass das System einen erweiterten Code verwendet. Demgemäß geht keine Fehlerpositionsinformation durch Ignorieren der mehrfachen Fehlerpositionen bei x = 0 verloren.
  • In der Tat verwenden die Systeme im Allgemeinen verkürzte Codes, und es gibt somit mehrfache nicht verwendete Fehlerpositionen. Falls ein Code von Länge N verwendet wird, wobei N < M – 1 und 2M – 1 – N° 4, gibt es nicht verwendete Positionen, die a–N, a–(N+1)...
    Figure 00220001
    entsprechen. Demgemäß sollten diese Fehlerpositionen nicht in irgendeiner Lösung des Fehlerortungs-Polynoms aufgenommen werden.
  • Mit einem alternativen Verfahren zum Finden der Wurzeln von Fehlerortungs-Polynomen des Grades e macht das System 10 Gebrauch von diesen ansonsten nicht verwendeten Fehlerpositionen. Das System verarbeitet das Fehlerortungs-Polynom s(x), um g(x) = s(x)·(x + α–n)·(x + α–(n+1))...·(x + α–(n+5–e–1)),zu bilden, das fünf verschiedene Wurzeln über den unverkürzten Code aufweist. Das System verarbeitet dann g(x), wie oben erläutert, bestimmt die zugeordneten Koeffizienten b0' und b2' und greift auf die passende Tabelle zu. Das System ignoriert die 5 – e Wurzeln, die Fehlerpositionen entsprechen, die jenseits der Länge des verkürzten Codes sind, dass heißt die Wurzeln, die den nicht verwendeten Fehlerpositionen entsprechen, und verwendet die verbleibenden Wurzeln, um die Fehlerpositionen zu bestimmen.
  • Die Verarbeitung mit den Systemen zum Bestimmen der Wurzeln des Fehlerortungs-Polynoms mit den erheblich kleineren Nachschlagetabellen beinhalten eine Verarbeitung des Fehlerortungs-Polynoms und eine Transformation der Wurzeln des verarbeiteten Polynoms in die Wurzeln des Fehlerortungs-Polynoms. Diese Verarbeitungen sind unkompliziert und werden ohne Weiteres in Hardware, Software oder einer Kombination von Hardware und Software implementiert. Ferner werden diese Verarbeitungen relativ schnell durchgeführt und verlangsamen somit nicht den Gesamtfehlerkorrekturvorgang.
  • Das System wurde so beschrieben, dass es mehrere Prozessoren aufweist. Einer oder mehrere dieser Prozessoren können kombiniert werden, um eine oder mehrere der verschiedenen Verarbeitungen durchzuführen. Alternativ können die oben erläuterten Prozessoren Kombinationen von einem oder mehreren Prozessoren sein, die die verschiedenen Verarbeitungen zusammen durchführen.

Claims (30)

  1. Verfahren zum Bestimmen von Fehlerpositionen in einem über GF(2M) codierten Daten-Codewort, das fünf Fehler aufweist, wobei das Verfahren umfasst: A. Bestimmen eines Fehlerlokalisierer-Polynoms fünften Grades σ(x), das dem Daten-Codewort zugeordnet ist; B. Verarbeiten des Fehlerlokalisierer-Polynoms fünften Grades σ(x), um ein Polynom zu erzeugen: w(y) = y5 + b2y2 + b1y + b0,wobei b1 = 0 oder 1 und y = t(x) ist; C. Verwenden der Koeffizienten b2 und b0, um auf eine Nachschlagtabelle mit 22M Einträgen (16) zuzugreifen und aus der Tabelle die Wurzeln y = ri von w(y) zu entnehmen; und D. Verarbeiten der Wurzeln y = ri, um die Wurzeln x = zi durch Bestimmen von x = t–1(y) zu erzeugen, wobei t–1() die Inverse von t() ist.
  2. Verfahren gemäß Anspruch 1, ferner mit, bei dem Schritt des Entnehmens der Wurzeln aus der Tabelle: a. Entnehmen von vier Wurzeln r0, r1, r2, r3 aus der Tabelle; und b. Addieren der vier Wurzeln, um eine fünfte Wurzel r4 = r0 + r1 + r2 + r3 zu erzeugen.
  3. Verfahren gemäß Anspruch 1, ferner mit, bei dem Schritt des Entnehmens der Wurzeln aus der Tabelle: a. Entnehmen aus der Tabelle von j Wurzeln ri, i = 0, 1..., j – 1 und j < 5; b. Verarbeiten der Wurzeln ri, um die Wurzeln rj, rj+1, r4 zu bestimmen.
  4. Verfahren gemäß Anspruch 3, ferner mit, bei dem Schritt des Verarbeitens der Wurzeln ri: i. Verarbeiten der Wurzeln ri, um ein Polynom fünften Grades (5 – j) zu bestimmen; und ii. Bestimmen der Wurzeln rj, rj+1..., r4 durch Lösen des Polynoms fünften Grades.
  5. Verfahren zum Bestimmen von Fehlerpositionen in einem über GF(2M) codierten Codewort, das fünf oder weniger Fehler aufweist, wobei das Verfahren umfasst: A. Bestimmen eines Fehlerlokalisierer-Polynoms fünften Grades σ5(x), das dem Daten-Codewort zugeordnet ist; B. Verarbeiten (406) des Fehlerlokalisierer-Polynoms fünften Grades σ5(x), um ein Polynom zu erzeugen: w(y) = y5 + b2y2 + b1y + b0,wobei b1 = 0 oder 1 und y = t(x) ist; C. Bestimmen (406) eines Werts von k, sodass
    Figure 00250001
    = b'0 ein Element eines Salzes S ist, der die Werte von b'0 enthält, die Lösungen von Gleichungen der Form w(y) = y5 + b2y2 + b1y + b0 = 0 zugeordnet sind, die fünf verschiedene Wurzeln aufweisen; D. Verwenden (410, 412, 414) von b'0 und
    Figure 00250002
    = b'2 , um auf eine Nachschlagtabelle (22) einzutreten und Wurzeln r'i =
    Figure 00250003
    zu entnehmen; E. Potenzieren (418) der Wurzeln r'i zu der –2k Potenz, um Wurzeln y = r'i zu erzeugen; und F. Erzeugen (420) von Wurzeln x = zi durch Bestimmen von x = t–1(y), wobei t–1() die Inverse von t() ist.
  6. Verfahren gemäß Anspruch 5, ferner mit: a. bei dem Schritt des Entnehmens der Wurzeln aus der Nachschlagetabelle, Entnehmen (414) von vier Wurzeln r'0 , r'1 , r'2 und r'3 ; und b. Addieren (416) der vier Wurzeln, um eine fünfte Wurzel r'4 = r'0 + r'1 + r'2 + r'3 zu erzeugen.
  7. Verfahren gemäß Anspruch 5, ferner mit: a. bei dem Schritt des Entnehmens der Wurzeln aus der Nachschlagetabelle Entnehmen (414) von j Wurzeln r'i , i = 0, 1..., j – 1 und j < 5; b. Verarbeiten (416) der Wurzeln r'i , um die Wurzeln r'j , r'j+1 ..., r'4 zu bestimmen.
  8. Verfahren gemäß Anspruch 7, ferner bei dem Schritt des Verarbeitens der Wurzeln r'i ,: i. Verarbeiten der Wurzeln r'i , um ein Polynom des Grades (5 – j) zu bestimmen; und ii. Bestimmen der Wurzeln r'j , r'j+1 ..., r'4 durch Lösen des Polynoms des Grades (5 – j).
  9. Verfahren gemäß Anspruch 5, bei dem der Schritt A umfasst: A(i) Bestimmen eines Fehlerlokalisierer-Polynoms σe(x) des Grades e, das dem Daten-Codewort zugeordnet ist; A(ii) falls e < 5 Multiplizieren des Fehlerlokalisierer-Polynoms des Grades e σe(x) mit x5–e, um das Fehlerlokalisierer-Polynom fünften Grades σ5(x) zu erzeugen; und wobei der Schritt F ferner umfasst: G. Ignorieren von mehrfachen Wurzeln bei x = 0.
  10. Verfahren gemäß Anspruch 5, bei dem das Daten-Codewort mit einem verkürzten Code über GF(2M) codiert wird, und wobei der Schritt A umfasst: A(i) Bestimmen eines Fehlerlokalisierer-Polynoms des Grades e σe(x), das dem Daten-Codewort zugeordnet ist; A(ii) falls e < 5, Verarbeiten des Fehlerlokalisierer-Polynoms des Grades e σe(x), um σ5(x) = σe(x)·(x + α–n)·(x + α–(n+1))...·(x + α–(n+5–e–1)) zu erzeugen, wobei n die Länge des verkürzten Codes ist; und wobei der Schritt F ferner umfasst: F(i) Ignorieren von Wurzeln, die den nicht verwendeten Fehlerpositionen entsprechen.
  11. Verfahren zum Erzeugen einer Nachschlagetabelle (22) zum Verwenden beim Bestimmen der Fehlerpositionen in einem über GF(2M) codiert Daten-Codewort mit fünf oder weniger Fehlern, wobei das Verfahren folgende Schritte umfasst: A. Bestimmen für eine Gleichung der Form w(y) = y5 + b2y2 + b1y + b0 = 0,wobei b1 = 0 oder 1 ist, der zugeordneten Werte von b2, b1 und b0, welche Lösungen mit fünf verschiedenen Wurzeln entsprechen; B. Segmentieren von GF(2M) in konjugierte Klasen und Bestimmen einer Untermenge von C Klassen, die die Werte von b0 enthalten, die bei Schritt A bestimmt wurden; C. Auswählen eines entsprechenden Elements b'0 von jeder der C konjugierten Klassen, um die Klassen darzustellen; D. Bestimmen von Werten von b'2 , die den C ausgewählten Werten von b'0 entsprechen und Lösungen von w(y) zugeordnet sind, die fünf verschiedene Wurzeln aufweisen; E. Erzeugen der Tabelle, indem darin bei Positionen, die durch b'0 und b'2 adressiert werden, die Lösungen von w(y), die fünf verschiedene Wurzeln aufweisen, enthalten sind.
  12. Verfahren gemäß Anspruch 11, mit, bei dem Schritt des Erzeugens der Tabelle (22), Aufnehmen der Lösungen in der Tabelle an Positionen, die durch eine Adresse adressiert werden, die ein Hash von b'2 , b'0 ist.
  13. Verfahren gemäß Anspruch 12, ferner mit, bei dem Schritt des Erzeugens der Tabelle, Erzeugen der Adressen durch Verketten der M-Bit-Symbole b'2 und b'0 , um 2M Spalten zu erzeugen, und Auswählen zur Verwendung bei der Adresse der Spalten, die eine Anzahl von binären Einsen enthalten, die ungefähr gleich einer Hälfte der Anzahl von Einträgen in der Tabelle ist.
  14. Verfahren gemäß Anspruch 11, mit, bei dem Schritt des Erzeugens der Tabelle, Aufnehmen der Lösungen in der Tabelle an Positionen, die durch eine Adresse adressiert werden, die ein Verkettung von b'0 und b'2 ist.
  15. Verfahren gemäß Anspruch 11, mit, bei dem Schritt des Erzeugens der Tabelle, Erzeugen der Tabelle als ein Satz von gestuften Untertabellen, wobei eine Stufe (29) den Werten von b'0 entspricht und Zeiger auf die zweite Stufe aufweist, und die zweite Stufe (25) Untertabellen (28) aufweist, die den ausgewählten Werten von b'0 entsprechen und jeweils Einträge aufweisen, die den zugeordneten Werten von b'2 entsprechen.
  16. Vorrichtung zum Bestimmen von Fehlerpositionen in einem über GF(2M) codierten Daten-Codewort, das fünf Fehler aufweist, wobei die Vorrichtung umfasst: A. ein Mittel zum Bestimmen eines Fehlerlokalisierer-Polynoms fünften Grades σ(x), das dem Daten-Codewort zugeordnet ist; B. ein Mittel (14) zum Verarbeiten des Fehlerlokalisierer-Polynoms fünften Grades σ(x), um ein Polynom zu erzeugen: w(y) = y5 + b2y2 + b1y + b0,wobei b1 = 0 oder 1 und y = t(x) ist; C. eine Nachschlagetabelle mit 22M Einträgen (16), die Lösungen für w(y) aufweist, die fünf verschiedene Wurzeln aufweisen; D. ein Adressiermittel zum Verwenden der Koeffizienten b2 und b0, um auf die Nachschlagetabelle mit 22M Einträgen zuzugreifen und aus der Tabelle die Wurzel y = ri von w(y) zu entnehmen; und E. einem Mittel (18) zum Verarbeiten der Wurzeln y = ri, um die Wurzeln x = zi zu erzeugen, durch Bestimmen von x = t–1(y), wobei t–1() die Inverse von t() ist.
  17. Vorrichtung gemäß Anspruch 16, bei der die Nachschlagetabelle (16) vier Wurzeln, r0, r1, r2, r3 gespeichert hat und einen Addierer (17) zum Addieren der vier Wurzeln aufweist, um eine fünfte Wurzel ri = r0 + r1 + r2 + r3 zu erzeugen.
  18. Vorrichtung gemäß Anspruch 16, bei der die Nachschlagetabelle (16) j Wurzeln ri, i = 0, 1..., j – 1 gespeichert hat, wobei j < 5 ist und die Vorrichtung ferner Mittel zum Verarbeiten der gespeicherten Wurzeln ri aufweist, um die Wurzeln rj, rj+1..., r4 zu bestimmen.
  19. Vorrichtung gemäß Anspruch 18, bei der das Mittel zum Verarbeiten der gespeicherten Wurzeln aufweist: i. ein Mittel zum Verarbeiten der Wurzeln ri, um ein Polynom des Grades (5 – j) zu bestimmen; und ii. ein Mittel zum Bestimmen der Wurzeln rj, r+1..., r4 durch Lösen des Polynoms fünften Grades (5 – j).
  20. Vorrichtung zum Bestimmen von Fehlerpositionen in einem über GF(2M) codierten Daten-Codewort, das fünf oder weniger Fehler aufweist, wobei die Vorrichtung umfasst: A. ein Mittel zum Bestimmen eines Fehlerlokalisierer-Polynoms fünften Grades σ5(x), das dem Daten-Codewort zugeordnet ist; B. ein Mittel (14) zum Verarbeiten des Fehlerlokalisierer-Polynoms fünften Grades σ5(x), um ein Polynom zu erzeugen: w(y) = y5 + b2y2 + b1y + b0,wobei b1 = 0 oder 1 und y = t(x) ist; C. ein Mittel (14) zum Bestimmen eines Wertes von k, sodass
    Figure 00300001
    = b'0 ein Element eines Salzes S ist, der die Werte von b'0 enthält, die Lösungen von Gleichungen der Form w(y) = y5 + b2y2 + b2y2 + b1y = 0 zugeordnet sind, die fünf verschiedene Wurzeln aufweisen; D. eine Nachschlagetabelle mit C Elementen (22), wobei C der Anzahl von konjugierten Klassen zugeordnet ist, die Lösungen zu w(y) enthalten, die fünf verschiedene Wurzeln aufweisen; E. ein Adressiermittel zum Zugreifen auf die Nachschlagetabelle, wobei das Adressiermittel b'0 und
    Figure 00310001
    = b'2 verwendet, um auf die Tabelle zuzugreifen und die Wurzeln r'i 'i =
    Figure 00310002
    zu entnehmen; F. ein Mittel (24) zum Potenzieren der Wurzeln r'i zu der –2k Potenz, um Wurzeln y = ri zu erzeugen; und G. ein Mittel (24) zum Erzeugen von Wurzeln x = zi durch Bestimmen x = t–1(y), wobei t–1() die Inverse von t() ist.
  21. Vorrichtung gemäß Anspruch 20, bei der die Nachschlagetabelle (22) für jeden Eintrag vier Wurzeln r'0, r'1 , r'2 und r'3 aufweist, wobei die Vorrichtung ferner einen Addierer (23) aufweist, der die vier Wurzeln addiert, um eine fünfte Wurzel r'4 = r'0 + r'1 + r'2 + r'3 zu erzeugen.
  22. Vorrichtung gemäß Anspruch 20, bei der die Nachschlagetabelle für jeden Eintrag j Wurzeln r'i , i = 0, 1..., j – 1, umfasst, wobei j < 5 ist und die Vorrichtung ferner Mittel zum Verarbeiten der Wurzeln r'i aufweist, um die Wurzeln rj, rj+1..., r4 zu bestimmen.
  23. Vorrichtung gemäß Anspruch 22, bei dem Mittel zum Verarbeiten der Wurzeln r'i die Wurzeln r'i verarbeitet, um ein Polynom des Grades (5 – j) zu bestimmen, und die Wurzeln r'i , r'j+1 ..., r'4 durch Lösen des Polynoms des Grades (5 – j) bestimmt.
  24. Vorrichtung gemäß Anspruch 20, bei der das Mittel zum Bestimmen des Fehlerlokalisierer-Polynoms fünften Grades σ5(x) ferner umfasst: ein Mittel zum Bestimmen eines Fehlerlokalisierer-Polynoms σ5(x) des Grades e, das dem Daten-Codewort zugeordnet ist, wobei das Mittel das Fehlerlokalisierer-Polynom σ5(x) des Grades e mit x5–e multipliziert, um das Fehlerlokalisierer-Polynom fünften Grades σ5(x) zu erzeugen, falls e < 5 ist; und wobei das Mittel zum Erzeugen der Wurzeln x = zi mehrfache Wurzeln bei x = 0 ignoriert.
  25. Vorrichtung gemäß Anspruch 20, bei der das Daten-Codewort mit einem verkürzten Code über GF(2M) codiert wird, und wobei das Mittel zum Bestimmen des Fehlerlokalisierer-Polynoms fünften Grades σ5(x) ferner umfasst: ein Mittel zum Bestimmen eines Fehlerlokalisierer-Polynoms σe(x) des Grades e, das dem Daten-Codewort zugeordnet ist, wobei das Mittel das Fehlerlokalisierer-Polynom σe(x) verarbeitet, um zu erzeugen σ5(x) = σe(x)·(x + α–n)·(x + α–(n+1))...·(x + α–(n+5–e–1))falls e < 5 ist, wobei n die Länge des verkürzten Codes ist; und wobei das Mittel zum Erzeugen der Wurzeln x = zi Wurzeln ignoriert, die nicht benutzten Fehlerpositionen entsprechen.
  26. Vorrichtung zum Erzeugen einer Nachschlagetabelle (22) zum Verwenden beim Bestimmen der Fehlerpositionen in einem über GF(2M) codierten Daten-Codewort mit fünf oder weniger Fehlern, wobei die Vorrichtung umfasst: A. ein Verarbeitungsmittel zum Bestimmen für eine Gleichung der Form w(y) = y5 + b2y2 + b1y + b0 = 0wobei b1 = 0 oder 1, der zugeordneten Werte von b2, b1 und b0, die den Lösungen mit fünf verschiedenen Wurzeln entsprechen; B. ein Mittel zum Segmentieren GF(2M) in konjugierte Klassen und Bestimmen einer Untermenge von C Klassen, die die Werte von b0 enthalten, die durch das Verabeitungsmittel bestimmt wurden; C. ein Mittel zum Auswählen eines entsprechenden Elements b'0 jeder der C konjugierten Klassen, um die Klassen darzustellen; D. ein Mittel zum Bestimmen von Werten von b'0 , die den C ausgewählten Werten von b'0 entsprechen und Lösungen von w(y) zugeordnet sind, die fünf verschiedene Wurzeln aufweisen: E. ein adressiertes Speicherlokalisierungsmittel zum Erzeugen der Tabelle, der bei Positionen, die durch b'0 und b'2 adressiert werden, die Lösungen von w(y) aufgenommen sind, die fünf verschiedene Wurzeln umfassen.
  27. Vorrichtung gemäß Anspruch 26, bei der das adressierte Speicherlokalisierungsmittel die Lösungen in der Tabelle bei Positionen aufweist, die durch einen Hash von b'2 , b'0 adressiert werden.
  28. Vorrichtung gemäß Anspruch 27, bei der das adressierte Speicherlokalisierungsmittel ferner die Lösungen in der Tabelle bei Positionen umfasst, die durch Verketten der M-Bit-Symbole b'2 und b'0 adressiert werden, um 2M Spalten zu erzeugen, und mit Auswählen zum Gebrauch bei der Adresse der Spalten, die eine Anzahl von binären Einsen enthalten, die ungefähr gleich einer Hälfte der Anzahl von Einträgen in der Tabelle ist.
  29. Vorrichtung gemäß Anspruch 26, bei der das adressierte Speicherlokalisierungsmittel ferner die Lösungen in der Tabelle bei Positionen aufweist, die durch eine Verkettung der Symbole b'0 und b'2 adressiert werden.
  30. Vorrichtung gemäß Anspruch 26, bei der das adressierte Speicherlokalisierungsmittel ferner ein Mittel zum Erzeugen der Tabelle (22) als einen Satz von gestuften Untertabellen aufweist, wobei eine Stufe (29) den Werten von b'0 entspricht und Zeiger auf die zweite Stufe (25) aufweist, und wobei die zweite Stufe Untertabellen (28) aufweist, die den ausgewählten Werten von b'0 entsprechen und jeweils Einträge aufweisen, die den zugeordneten Werten von b'2 entsprechen.
DE69837784T 1997-12-03 1998-12-03 Verbessertes fünf-fehler-korrektursystem Expired - Fee Related DE69837784T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/984,698 US5978956A (en) 1997-12-03 1997-12-03 Five-error correction system
US984698 1997-12-03
PCT/US1998/025758 WO1999029044A1 (en) 1997-12-03 1998-12-03 Improved five-error correction system

Publications (2)

Publication Number Publication Date
DE69837784D1 DE69837784D1 (de) 2007-06-28
DE69837784T2 true DE69837784T2 (de) 2008-02-07

Family

ID=25530782

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69837784T Expired - Fee Related DE69837784T2 (de) 1997-12-03 1998-12-03 Verbessertes fünf-fehler-korrektursystem

Country Status (4)

Country Link
US (1) US5978956A (de)
EP (1) EP0962060B1 (de)
DE (1) DE69837784T2 (de)
WO (1) WO1999029044A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148430A (en) * 1998-05-15 2000-11-14 Quantum Corporation Encoding apparatus for RAID-6 system and tape drives
JP2000124813A (ja) 1998-10-20 2000-04-28 Texas Instr Japan Ltd リードソロモン符号化装置およびその方法とリードソロモン復号装置およびその方法
AU1615100A (en) * 1998-11-09 2000-05-29 Broadcom Corporation Forward error corrector
US6763492B1 (en) * 2000-09-26 2004-07-13 Qualcomm Incorporated Method and apparatus for encoding of linear block codes
CA2325615A1 (en) * 2000-11-10 2002-05-10 Robert F. Enenkel Method and apparatus for evaluating polynomials and rational functions
US7206993B2 (en) * 2003-03-12 2007-04-17 Matsushita Electric Industrial Co., Ltd. Method and device for decoding Reed-Solomon code or extended Reed-Solomon code
US7900121B2 (en) * 2005-05-04 2011-03-01 Siemens Enterprise Communications Gmbh & Co. Kg Method and device for determining indices assigned to correction symbols
JP4891704B2 (ja) * 2006-08-28 2012-03-07 株式会社東芝 半導体記憶装置
US20100107039A1 (en) * 2007-02-01 2010-04-29 Kabushiki Kaisha Toshiba Semiconductor memory with reed-solomon decoder
JP5259343B2 (ja) * 2008-10-31 2013-08-07 株式会社東芝 メモリ装置
US8453038B2 (en) * 2009-06-30 2013-05-28 Apple Inc. Chien search using multiple basis representation

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4099160A (en) * 1976-07-15 1978-07-04 International Business Machines Corporation Error location apparatus and methods
US4567594A (en) * 1983-06-07 1986-01-28 Burroughs Corporation Reed-Solomon error detecting and correcting system employing pipelined processors
US5710782A (en) * 1995-12-28 1998-01-20 Quantum Corporation System for correction of three and four errors
US5905740A (en) * 1997-04-08 1999-05-18 Seagate Technology, Inc. Apparatus and method for error correction

Also Published As

Publication number Publication date
WO1999029044A1 (en) 1999-06-10
EP0962060A1 (de) 1999-12-08
US5978956A (en) 1999-11-02
EP0962060B1 (de) 2007-05-16
DE69837784D1 (de) 2007-06-28

Similar Documents

Publication Publication Date Title
DE69919199T2 (de) Vorwärtsfehlerkorrektur
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
DE2834963A1 (de) Verfahren und einrichtung zur fehlerkorrektur von uebertragenen daten
DE69834542T2 (de) Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke
DE2916710C2 (de)
DE60009973T2 (de) Verschachtelungsverfahren, Verschachtelungsgerät, Turbokodierungsverfahren und Turbokodierer
DE69728945T2 (de) Reed-Solomon Dekoder
EP0545498B1 (de) Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen
DE2106314C3 (de) Anordnung zur Fehlererkennung und -korrektur in einem aus b Bits bestehenden Byte eines K Datenbytes enthaltenden Datenblocks
DE69837784T2 (de) Verbessertes fünf-fehler-korrektursystem
DE19922253A1 (de) Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE2262070A1 (de) Mit schieberegistern arbeitendes fehlerkorrektursystem
DE3422461A1 (de) Decoder zum decodieren von codewoertern, die blockweise mittels eines reed-solomon-codes gegen mehrere symbolfehler je block geschuetzt sind, und leseanordnung mit einem derartigen decoder fuer optisch lesbare speicherkoerper
DE602005000251T2 (de) Dekoder zur Fehlerkorrektur mit einem Reed-Solomon Dekoder zur Erasure-Korrektur und einem CRC Dekoder
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE3404417A1 (de) Codierer-pruefschaltungsanordnung
DE60309857T2 (de) Methode zur dekodierung von reed-solomon kodes mittels feinentscheidung
DE602004008150T2 (de) Datenfehlerkorrektur mittels Redundanzblöcke
DE60311764T2 (de) Verfahren und Vorrichtung zur Dekodierung von Reed-Solomon Kodes
DE102004006528A1 (de) Fehlerfassung und Korrektur in einer geschichteten dreidimensionalen Speicherarchitektur
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
DE3702697C2 (de)
DE102021109391B3 (de) Multibytefehler-Erkennung
DE19963687A1 (de) Modulations-Codierer und -Decodierer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee