DE69424877T2 - Reed-solomon-dekoder - Google Patents

Reed-solomon-dekoder

Info

Publication number
DE69424877T2
DE69424877T2 DE69424877T DE69424877T DE69424877T2 DE 69424877 T2 DE69424877 T2 DE 69424877T2 DE 69424877 T DE69424877 T DE 69424877T DE 69424877 T DE69424877 T DE 69424877T DE 69424877 T2 DE69424877 T2 DE 69424877T2
Authority
DE
Germany
Prior art keywords
registers
register
syndrome
iteration
phase
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
DE69424877T
Other languages
English (en)
Other versions
DE69424877D1 (de
Inventor
P. Zook
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.)
Cirrus Logic Inc
Original Assignee
Cirrus Logic Inc
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 Cirrus Logic Inc filed Critical Cirrus Logic Inc
Publication of DE69424877D1 publication Critical patent/DE69424877D1/de
Application granted granted Critical
Publication of DE69424877T2 publication Critical patent/DE69424877T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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
    • 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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics

Landscapes

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

Description

    Querverweis auf verwandte Anmeldungen
  • Diese Anmeldung ist eine Continuation-Anmeldung der U. S. -Patentanmeldung 08/147650, angemeldet am 4. November 1993, nun aufgegeben. Gleichzeitig mit dieser Patentanmeldung eingereichte Patentanmeldungen (Erfinder: Christopher P. Zook) beinhalten die U. S. -Patentanmeldung 08/325717 mit dem Titel "Cyclic Redundancy Check Method and Apparatus", die U. S. -Patentanmeldung 08/325850 mit dem Titel "Burst Error Corrector", die U. S. -Patentanmeldung 08/325831 mit dem Titel "Finite Field Inversion" und die U. S. -Patentanmeldung 08/326126 mit dem Titel "Error Correction Method and Apparatus". Gemeinsam mit der U. S. -Patentanmeldung 08/147650 eingereichte Patentanmeldungen umfassen die U. S. -Patentanmeldung 08/147865 mit dem Titel "Dual Purpose Cycling Redundancy Check", U. S. Patentanmeldung 08/148068, nun aufgegeben, mit dem Titel "Burst Error Corrector" und die U. S. -Patentanmeldung Nr. 08/147758, nun aufgegeben, mit dem Titel "Finite Field Inversion".
  • Hintergrund 1. Gebiet der Erfindung
  • Diese Erfindung betrifft allgemein digitale Datenkommunikationssysteme, insbesondere zum Codieren und Decodieren von Fehlerkorrekturcodes.
  • 3. Verwandte Technik und andere Erwägungen
  • Bei einem digitalen Datenkommunikationssystem (einschließlich optischen oder magnetischen Medien zum Speichern und Wiederherstellen) werden typischerweise Fehlersteuersysteme eingesetzt, um die Informationsübertragungsrate zu steigern und gleichzeitig die Fehlerrate beliebig abzusenken. Bei festen Signal/- Rausch-Verhältnissen und festen Bandbreiten können durch die Verwendung von Fehlerkorrekturcodes Verbesserungen erreicht werden.
  • Bei der Fehlerkorrekturcodierung werden zu übertragende oder zu speichernde Daten verarbeitet, um zusätzliche Datensymbole (als Prüfsymbole oder Redundanzsymbole bezeichnet) zu erhalten. Die Daten- und Prüfsymbole ergeben gemeinsam ein Codewort. Nach dem Übertragen oder Wiedergewinnen wird das Codewort mathematisch verarbeitet, um Fehlersyndrome zu erhalten, die Informationen über den Ort und die Werte von Fehlern enthalten.
  • Die Reed-Solomon-Codes sind eine Klasse von Mehrfehler-Korrektur-Codes. Eine der am weitest verbreiteten Decodierverfahren besteht darin, das Fehlerlokalisierungspolynom σ(x) [d. h. das Verbindungspolynom unter Verwendung des Berlekamp-Massey-Algorithmus] zu erzeugen; das Fehlerbeweriungspolynom ω(x) des Fehlerlokalisierungspolynoms zu erzeugen, für das Fehlerlokalisierungspolynom eine Wurzelsuche durchzuführen, um die Fehlerorte zu finden, und dann das Fehlerbewertungspolynom an der Wurzel des Fehlerlokalisierungspolynoms zu bewerten, um den Fehlerwert zu berechnen. Die meisten Schaltungen zur Fehlererfassung und -korrektur implementieren den Berlekamp-Massey-Algorithmus. Jede Iteration des Berlekamp-Massey-Algorithmus verfügt über zwei Teile oder Stufen:
  • 1. berechne dn: dn = Σ σk Sn-k
  • 2. aktualisiere σ: σ(n+1) (x) = σ(n) (x) - dndr&supmin;¹ xτ(n) (x)
  • aktualisiere τ: τ(n+1) (x) = xτ(n) (X) oder σ(n) (x)
  • Wie im folgenden verwendet, bezeichnen dn eine Diskrepanzzahl und τ ein für die Berechnung von σ verwendetes Zwischenpolynom. Die Wahl der beiden alternierenden Ausdrücke für τ hängt davon ab, ob oder ob nicht die Aktualisierung von σ(x) zu einem Anstieg der Größenordnung von σ(x) führt. Wenn sich ein Anstieg ergibt, wird τ(x) auf σ(x) gesetzt und dr wird auf dn gesetzt. Wenn andererseits τ(x) auf dn&supmin;¹xσ(x) gesetzt wird, dann kann dr eliminiert werden und es ergeben sich die folgenden Rekursionen:
  • GLEICHUNGEN 1
  • 1. berechne dn: dn = Σ σk Sn-k
  • 2. aktualisiere σ: σ(n+1) (x) = σ(n) (x) - dn τ(n) (x)
  • aktualisiere τ: τ(n+1) (x) = xτ(n) (x) oder
  • τ(n+1) (x) = dn&supmin;¹ x σ(n) (x)
  • und dr = dn
  • Die zweite Stufe benötigt das Ergebnis der ersten Stufe. Um die Größe der Schaltung zu minimieren, ist es zweckmäßig, alle Berechnungen seriell durchzuführen und Aktualisierungen seriell vorzunehmen (und nicht parallel, was platzverbrauchende Parallelbusse erfordert). Angenommen, das verwendete Feld ist GF(2m), dann beträgt die minimale Zahl von Taktzyklen, die für eine serielle Implementierung benötigt werden, 2m Takte pro Iteration, d. h. m Takte pro Stufe.
  • Das U. S. -Patent Nr. 4,845,713, herausgegeben am 4. Juli 1989 für Zook, zeigt ein Verfahren, welches 2m+1 Takte pro Iteration und Bit-serielle Multiplizierer und Addierer verwendet. Es verwendet jedoch 4t+1 m-Bit-Register und eine 2m x m ROM-Nachschlagtabelle für die Inversion (t = Anzahl korrigierbarer Fehler). Darüber hinaus erfolgt die Aktualisierung für τ(n+1) (x) in paralleler Weise.
  • In Whiting's Doktorarbeit für das California Institute of Technology mit dem Titel "Bit-Serial Reed-Solomon Decoders in VLSI", 1984, benutzt Whiting's bevorzugte Implementierung den folgenden modifizierten Satz von Rekursionsgleichungen:
  • GLEICHUNGEN 2:
  • 1. berechne dn: dn = Σ σk Sn-k
  • 2. aktualisiere σ: σ(n+1) (x) = σ(n) (x) oder
  • σ(n+1) (x) = dn&supmin;¹ σ(n) (x) - x τ(n) (x)
  • aktualisiere τ: τ(n+1) (x) = xτ(n) (x) oder
  • τ(n+1) (x) = dn&supmin;¹ σ(n) (x)
  • Whiting's Implementierung kann eine Iteration in 2m Takten ausführen, falls eine 2m x m ROM-Nachschlagtabelle für die Inversion verwendet wird. Die Aktualisierungen können seriell erfolgen, jedoch muss dn&supmin;¹ mittels eines parallelen Bus an jeden Multiplizierer angelegt werden. Whiting's Gesamtimplementierung würde 5(t + 1) m-Bit-Register verwenden. Der Grund dafür, dass die Anzahl an Registern proportional zu t + 1 anstelle von zu t ist, liegt darin, dass σ0 nicht identisch gleich 1 ist, d. h. die durch die GLEICHUNGEN 2 erzeugte Funktion σ(x) ist die durch die GLEICHUNGEN 1 erzeugte Funktion σ(x) multipliziert mit einer Konstanten. Whiting erwähnt ferner die Verwendung des folgenden multiplizierten Satzes von Rekursionsgleichungen:
  • GLEICHUNGEN 2A.
  • 1. berechne dn: dn = Σ σk Sn-k
  • 2. aktualisiere σ: σ(n+1) (x) = dtσ(n) (x) - x dnτ(n) (x)
  • aktualisiere τ: τ(n+1) (x) = xτ(n) (x) oder
  • τ(n+1) (x) = σ(n) (x)
  • Whiting's zweites Verfahren verwendet keine Inversionen, jedoch werden für serielle Aktualisierungen 6(t + 1) + 2 m-Bit-Register benötigt und dn und dr müssen mit Parallelbussen jedem Multiplizierer zugeführt werden.
  • Alle bekannten Implementierungen des Berlekamp-Massey-Algorithmus verwenden eine Kombination aus einem 2m x m ROM, symbolbreiten Signalwegen und einer übermäßigen Anzahl von m-Bit-Registern, um eine Iteration in 2 m-Taktzyklen auszuführen. Ein inhärentes Problem mit allen der obigen Sätze von Iterationsgleichungen besteht darin, dass σ(n+1) (x) von τ(n) (x) abhängt und τ(n+1) (x) wiederum von σ(n)(x) abhängt. Da eine oder beide derselben von dn abhängt, muss folglich dn während den ersten m Taktzyklen berechnet werden und dann müssen σ(n+1) (x) und τ(n+1) (x) beide während den zweiten m Taktzyklen berechnet werden. Das bedeutet, dass temporärer Speicherplatz für σ(n)(x) und/oder τ(n) (x) vorhanden sein muss, wenn diese bei Multiplikationen verwendet werden, um σ(n+1) (x) oder τ(n+1) (x) zu erzeugen. Daher besteht Bedarf für ein effizienteres Verfahren.
  • Zusammenfassung
  • Gemäß der vorliegenden Erfindung, wie sie im Detail in den beigefügten unabhängigen Ansprüchen definiert ist, wird ein Reed-Solomon Decoder offenbart, der ein Codewort, welches n m-Bit-Symbole beinhaltet verarbeitet, um Koeffizienten eines Fehlerlokalisierungspolynoms σ(x) zu erhalten, und der anschließend ein Fehlerbewertungspolynom ω(x) erzeugt. Der Decoder umfasst eine Reihe von Svndromregistern zum Speichern von Syndromwerten, eine Reihe von Fehlerlokalisierungsregistern zum Ansammeln von Koeffizienten eines Fehlerlokalisierungspolynoms σ(x), einer Reihe von Zwischenregistern zum Ansammeln von Koeffizienten eines Zwischenpolynoms τ(x). Der Decoder umfasst ferner eine Registeraktualisierungsschaltung, die für ein gegebenes Codewort eine Anzahl t von Fehlerlokalisierungsiterationen durchführt, um Werte in den Fehlerlokalisierungsregistern und den Zwischenregistern zu aktualisieren. Jede Fehlerlokalisierungsiteration umfasst zwei Phasen, insbesondere eine erste Phase oder Phase A und eine zweite Phase oder Phase B. Jede Phase umfasst m Taktzyklen. Nach Beendigung der Fehlerlokalisierungsiterationen werden zweiphasige Fehlerbewertungsiterationen durchgeführt, um Koeffizienten des Fehlerbewertungspolynom ω(x) zu erhalten, die in den Zwischenregistern gespeichert werden.
  • Im Gegensatz zu bekannten Techniken, bei welchen Koeffizienten des Fehlerlokalisierungspolynoms τ(x) und Koeffizienten des Zwischenpolynoms τ(x) beide während der gleichen Phase aktualisiert werden (z. B. der zweiten Phase einer Fehlerlokalisierungsiteration), aktualisiert die Registeraktualisierungsschaltung nach der vorliegenden Erfindung Koeffizienten des Zwischenpolynoms τ(x) während der ersten Phase jeder Fehlerlokalisierungsiteration und aktualisiert Koeffizienten des Fehlerlokalisierungspolynoms σ(x) während der zweiten Phase jeder Fehlerlokalisierungsiteration. Darüber hinaus wird während der ersten Phase jeder Fehlerlokalisierungsiteration ein aktueller Diskrepanzwert dn erhalten, der zum Aktualisieren der Koeffizienten des Fehlerlokalisierungpolynoms σ(x) benötigt wird.
  • Der Decoder nach der vorliegenden Erfindung implementiert somit die folgenden Rekursionsregeln:
  • PHASE A: aktualisiere τ:
  • τ(n) (x) = xτ(n 1) (x)
  • oder
  • τ(n) (x) = x(τ(n-1) (x) + dn-1&supmin;¹ σ(n) (x)
  • aktualisiere dn:
  • dn = Σ σk Sn-k
  • PHASE B: aktualisiere σ:
  • σ(n+1) (x) = σ(n) (x) - dnτ(n) (x)
  • Die Registeraktualisierungsschaltung umfasst eine Schaltung zum Bestimmen von Diskrepanzen zum Bestimmen der jeweiligen Diskrepanz dn während der ersten Phase jeder Fehlerlokalisierungsiteration.
  • Die Schaltung zum Bestimmen von Diskrepanzen addiert multiplikative Produkte aus einer Mehrzahl von Prozessorelementen (sog. slices), um die aktuelle Diskrepanz dn zu erhalten. Jedes Prozessorelement umfasst eines der Syndromregister, eines der Fehlerlokalisierungsregister, eines der Zwischenregister und ein modifiziertes Syndromregister.
  • Das multiplikative Produkt von jedem Prozessorelement wird mittels einer Diskrepanzen erzeugenden Schaltung zum Erzeugen innerer Produkte erzeugt. Die Diskrepanzen beitragende Schaltung zum Erzeugen innerer Produkte eines Prozessorelements nimmt das innere Produkt des modifizierten Syndromregisters des Prozessorelements (in zweiter oder β-Basisdarstellung) sowie die Inhalte des Zwischenregisters des Prozessorelements (in erster oder α-Basisdarstellung). Das Produkt von zwei Elementen von GF (2m), wobei ein Element in der Standard- oder α-Basis dargestellt ist und ein Element in der Dual- oder β-Basis dargestellt ist, kann seriell erzeugt werden, d. h. ein Ausgangsbit pro Takt, in dem das innere Produkt der zwei Elemente genommen wird und eines der Elemente zu jedem Takt mit α multipliziert wird. In Verbindung mit dem inneren Produkt, welches durch die Diskrepanzen beitragende Schaltung zum Erzeugen von inneren Produkten erzeugt wurde, erhält somit das modifizierte Syndromregister anfänglich den Syndromwert von seinem entsprechenden Syndromregister, wird jedoch aktualisiert, um ein α-Mehrfaches des Syndromwertes zu beinhalten, wobei dies mittels einer Multipliziererrückkopplungsschaltung erfolgt, die um jedes modifizierte Syndromregister angeschlossen ist. Somit wird jedes multiplikative Produkt (d. h. das von einem Prozessorelement erzeugte multiplikative Produkt) von einem ersten Term (dem Koeffizienten des Fehlerlokalisierungregisters des Prozessorelements) und einem zweiten Term (einem α-Mehrfachen des Syndromwerts des Prozessorelements [dem in dem modifizierten Syndromregister gespeicherten α-Mehrfachen]) abgeleitet. Diese ersten und zweiten Terme werden durch die in dem Prozessorelement vorgesehene Diskrepanzen beitragende innere Produktschaltung multipliziert.
  • Die Registeraktualisierungsschaltung umfasst ferner eine Diskrepanzinversionsschaltung, die ein Inverses der vorliegenden Diskrepanz (d. h. dn&supmin;¹) in der ersten Basisdarstellung bestimmt. Dieses Inverse wird das Inverse einer vorherigen Diskrepanz (d. h. dn-1&supmin;¹ einer direkt vorhergehenden Fehlerlokalisierungsiteration). Die Diskrepanzinversionsschaltung verwendet keine in einem ROM gespeicherte Nachschlagtabelle, sondern erhält seriell die Diskrepanz in der zweiten Basisdarstellung und erzeugt deren Inverses.
  • Die Registeraktualisierungsschaltung umfasst ferner ein Diskrepanzregister DM, in welchem das Inverse der früheren Diskrepanz (d. h. dn-1&supmin;¹) während der ersten Phase jeder Fehlerlokalisierungsiteration sowie die derzeit vorliegende Diskrepanz (dn) während der zweiten Phase jeder Fehlerlokalisierungsiteration selektiv gespeichert sind. Sowohl das Inverse der vorherigen Diskrepanz (d. h. dn-1&supmin;¹) als auch die derzeit vorliegende Diskrepanz (dn) werden in dem Diskrepanzregister in der ersten Basisdarstellung (d. h. α-Basisdarstellung) gespeichert, wobei die vorherige Diskrepanz (d. h. dn-1&supmin;¹) in der ersten Basisdarstellung durch die Diskrepanzinversionsschaltung erzeugt wurde und die derzeitige Diskrepanz (dn) von der zweiten Basisdarstellung (d. h. (β-Basisdarstellung) in die erste Basisdarstellung mittels einer Umwandlungsschaltung zum Umwandeln von dn von einer zweiten Basisdarstellung in eine erste Basisdarstellung umgewandelt wurde.
  • Die Registeraktualisierungsschaltung umfasst ferner einen aktualisierenden Multiplizierer oder eine innere Produktschaltung, die während der ersten Phase jeder Fehlerlokalisierungsiteration einen von den Inversen der vorherigen Diskrepanz (dn-1&supmin;¹), z. B. ein α-Mehrfaches von dn-1&supmin;¹ [das während der ersten Phase der Fehlerlokalisierungsiteration in dem Diskrepanzregister gespeichert ist] mit den Koeffizienten in den Fehlerlokalisierungsregistern selektiv multipliziert, um Werte zur Verwendung beim Aktualisieren der in den Zwischenregistern gespeicherten Koeffizienten zu erhalten. Anschließend (z. B. während der zweiten Phase jeder Fehlerlokalisierungsiteration) multipliziert die Aktualisierungsmultiplizierschaltung einen von der derzeitigen Diskrepanz dn abgeleiteten Wert, z. B. ein α-Mehrfaches von dn [welches während der zweiten Phase der Fehlerlokalisierungsiteration in dem Diskrepanzregister gespeichert ist] mit den Koeffizienten in dem Zwischenregister, um Werte zum Aktualisieren der in den Fehlerlokalisierungsregistern gespeicherten Werte zu erhalten. Das α-Mehrfache der derzeitigen Diskrepanz dn wird von einer mit dem Diskrepanzregister verbundenen Multipliziererrückkopplungsschaltung erhalten, um den Wert in dem Diskrepanzregister wiederholt mit dem Feldelement α zu multiplizieren.
  • Was wichtig ist, ist das im Gegensatz zu bekannten Techniken der Decoder nach der vorliegenden Erfindung nur eine Reihe von Fehlerlokalisierungsregistern und eine Reihe von Zwischenregistern benötigt. Bekannte Techniken beinhalteten notwendigerweise zwei Reihen von Fehlerlokalisierungsregistern: eine erste Reihe zum Erhalten der aktualisierten (neuen) Koeffizienten des Fehlerlokalisierungspolynoms sowie eine zweite Reihe zum Speichern der alten Koeffizienten des Fehlerlokalisierungspolynoms (die zum Aktualisieren der Koeffizienten des Zwischenpolynoms benutzt wurden). In ähnlicher Weise wurden bei der bekannten Technik zwei Reihen von Zwischenregistern eingesetzt: Eine erste Reihe zum Erhalten der neuen (aktu alisierten) Koeffizienten des Zwischenpolynoms und eine zweite Reihe zum Speichern der alten Koeffizienten des Zwischenpolynoms (die zum Aktualisieren der Koeffizienten des Fehlerlokalisierungspolynoms benutzt wurden). Somit eliminiert der Decoder nach der vorliegenden Erfindung in vorteilhafter Weise zwei Reihen von Registern. Außerdem erleichtert der Decoder nach der vorliegenden Erfindung das serielle Verschieben von Daten statt einem parallelen Datentransfer, wodurch der von der Schaltung belegte Raum verringert wird, der anderenfalls aufgrund der parallelen Gussstruktur vergrößert werden müsste.
  • Kurze Beschreibung der Zeichnungen
  • Die vorgenannten und weitere Aufgaben, Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden spezielleren Beschreibung bevorzugter Ausführungsformen, die in den beigefügten Zeichnungen unter Zuhilfenahme von Bezugszeichen veranschaulicht sind, die in den verschiedenen Ansichten jeweils die gleichen Teile bezeichnen. Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu, vielmehr wird Wert darauf gelegt, die Prinzipien der Erfindung zu veranschaulichen.
  • Fig. 1 ist eine schematische Ansicht, die generell ein Blockdiagramm zeigt, welches ein Fehlerkorrektursystem gemäß einer Ausführungsform der Erfindung darstellt.
  • Fig. 2 ist eine schematische Ansicht, die ein Blockdiagramm zeigt, welches einen Decoder des Systems aus Fig. 1 darstellt.
  • Fig. 2A ist eine schematische Ansicht einer Dekodierschaltung gemäß einer Ausführungsform der Erfindung (die in einem Fehler- und Löschmodus arbeitet) sowie eines Syndromgenerators und eines Pufferspeichers, wobei hierbei keine Löschkorrektur ausgeführt wird.
  • Fig. 2B ist eine schematische Ansicht einer Dekodierschaltung gemäß einer Ausführungsform der Erfindung (die in einem Nur-Fehler-Modus arbeitet) sowie eines Syndromgenerators, eines Fehler/- Lokalisierungsgenerators und eines Pufferspeichers, wobei hierbei keine Löschkorrektur ausgeführt wird.
  • Fig. 3A ist eine schematische Ansicht eines Prozessorelements einer Dekodierschaltung gemäß einer Ausführungsform der Erfindung.
  • Fig. 3B ist eine schematische Ansicht eines Prozessorendelements einer Dekodierschaltung (Fehler- und Löschmodus) gemäß einer Ausführungsform der Erfindung.
  • Fig. 3C ist eine schematische Ansicht einer kollektiven Prozessorelementschaltung einer Dekodierschaltung (Nur-Fehler-Modus) gemäß einer Ausführungsform der Erfindung.
  • Fig. 3D ist eine schematische Ansicht eines Prozessorendelements einer Dekodierschaltung (Nur-Fehler- Modus) gemäß einer Ausführungsform der Erfindung.
  • Fig. 4 ist eine schematische Ansicht einer Schaltung zum Berechnen multiplikativer Inverse in GF(2&sup8;).
  • Fig. 5 ist eine schematische Ansicht einer Schaltung zum Erzeugen innerer Produkte.
  • Fig. 6 ist eine schematische Ansicht einer Schaltung zum Multiplizieren modifizierter Syndrome gemäß einer Ausführungsform der Erfindung.
  • Fig. 7 ist eine schematische Ansicht von Bereichen eines Steuergeräts gemäß einer Ausführungsform der Erfindung.
  • Fig. 8 ist eine schematische Ansicht einer Schaltung, die für eine Übersetzung von der dualen (d. h. zweiten) Basis zu der Standardbasis (d. h. ersten Basis) sorgt.
  • Fig. 9 ist ein Flussdiagramm, welches allgemeine Schritte zeigt, die bei einer Fehlerkorrektur gemäß einer Ausführungsform der Erfindung ausgeführt werden.
  • Detaillierte Beschreibung der Zeichnungen
  • Fig. 1 veranschaulicht schematisch die beim Dekodieren von Informationen gemäß einer Ausführungsform der Erfindung beteiligte Struktur. Fig. 1 veranschaulicht eine Datenakquisationsvorrichtung 190, die ein m-Bit Datensignal an einem Eingangsdatenbus 191, ein Fehlerzeigersignal an einer Leitung 192 und ein Codewort Rücksetzsignal an einer Leitung 193 erzeugt.
  • Das Fehlerkorrektursystem nach Fig. 1 weist einen Pufferspeicher 194 (RAM), ein 1-Bit-Register 195, einen Wurzelsuch- und Fehler-/Löschpegelerzeuger 196, einen Löschstellenwertgenerator 197, ein Zeitgeber/Steuergerät 198, eine Dekodierschaltung 199, einen Syndromgenerator 200, einen Datenpufferspeicher 201 und einen Addierer 202. Die Datenakquisitionsvorrichtung 190 legt die m-Bit Daten auf dem Bus 191 sowohl an dem Syndromgenerator 200 als auch auf einen Systembus 203. Die Datenakquisitionsvorrichtung 190 liefert ferner das Codewortrücksetzsignal auf Leitung 193 an den Syndromgenerator 200, den Fehlerstellenwertgenerator 197 und das Zeitgeber/Steuergerät 198. Ferner erhält der Fehlerstellenwertgenerator 197 das Fehlerzeigersignal auf Leitung 192.
  • Der Systembus 203 ist mit dem Pufferspeicher 194, dem Eingangsdatenbus 191, einem Eingangsanschluss des Registers 195, einem Ausgangsanschluss des Addierers 202 und einen mit einem Hostrechner verbundenen Ausgangsbus 204 verbunden.
  • Wie in der gleichzeitig eingereichten US Patentanmeldung 08/326,126 ("Error Correction Method and Apparatus") beschrieben ist, sind in dem Pufferspeicher 194 eine Mehrzahl von Datenblöcken gespeichert, wobei jeder Datenblock eine Mehrzahl von Codewörtern umfasst. Drei Operationen werden in asynchroner Weise ausgeführt, nämlich unkorrigierte Datenblöcke von der Akquisitionsvorrichtung 190 füllen den Pufferspeicher 194, unkorrigierte Datenblöcke innerhalb des Pufferspeichers 194 werden mittels der hier beschriebenen Erfindung korrigiert und bereits korrigierte Datenblöcke innerhalb des Pufferspeichers 194 werden über den Ausgangsbus 204 auf den Hostrechner entleert. Diese drei Operationen werden gleichzeitig an unterschiedlichen Sektoren in einer asynchron überlappenden Weise ausgeführt.
  • Die hier beschriebene Erfindung betrifft das Dekodieren eines Codewortes und sollte nicht so ausgelegt werden, dass sie auf das spezielle, hier veranschaulichte Pufferungsschema begrenzt ist. In Verbindung mit dem Dekodieren eines Codewortes erhält die Dekodierschaltung 199 t m-Bit-Syndrome von dem Syndromgenerator 200 und m-Bit-Löschstellenwerte von dem Löschstellengenerator 197. Ferner wird der Betrieb der Dekodierschaltung 199 durch an diese von dem Zeitgeber/Steuergerät 198 angelegte Signale sequenziell geordnet. Nach einer Reihe von Fehlerlokalisierungsiterationen erhält die Dekodierschaltung 199 Endwerte für die t m-Bit-Koeffizienten des Fehlerlokalisierungspolynoms σ. Nach Beendigung der Reihen von Fehlerlokalisierungsiterationen für ein Codewort führt die Dekodierschaltung 199 eine Reihe von Fehlerpegel iterationen aus, um ein Fehlerbewertungspolynom ω für das Codewort zu erzeugen. Die Koeffizienten des Fehlerbewertungspolynoms ω werden an den Wurzelsuch- und Fehler-/Löschpegelgenerator 196 übertragen, wo der Fehlerpegel E berechnet wird. Nach der Berechnung des Fehlerpegels E wird der Fehlerpegel E bei einem Addierer 202 zu den ursprünglichen Daten addiert, woraus sich das korrigierte Byte ergibt. Bei dem hier veranschaulichten Pufferschema wird das korrigierte Byte dann an den Pufferspeicher 194 zurückgeführt.
  • Das Produkt der zwei Elemente von GF(2m), wobei ein Element in der Standard- oder α-Basis und ein Element in der Dual- oder β-Basis dargestellt wird, kann seriell erzeugt werden, d. h. ein Ausgangsbit pro Takt, indem das innere Produkt der beiden Elemente genommen und eines der Elemente bei jedem Takt mit α multipliziert wird. Entsprechend werden, wie hier benutzt, Werte wie die Syndrome die derzeitige Diskrepanz dn und die vorherige Diskrepanz dn-1 in der α-Basis dargestellt, wohingegen solche Werte wie die Koeffizienten von σ(x) und τ(x) in der β-Basis dargestellt werden. Eine derartige Darstellung erlaubt es, alle Multiplikationen der GLEICHUNGEN 3 (die im folgenden erläutert werden) unter Verwendung innerer Produkte seriell auszuführen.
  • Fig. 2 ist ein Blockdiagramm einer Dekodierschaltung 199. Die Dekodierschaltung 199 umfasst eine Reihe B101 von Fehlerstellen- oder σ-Registern, eine Reihe B102 von Zwischen- oder τ-Registern, eine Reihe B103 von Syndromregistern und eine Registeraktualisierungsschaltung 50. Details unterschiedlicher Ausführungsformen der Dekodierschaltung 199 folgen unter Bezugnahme auf die Fig. 2A und 2B. Man wird nachfolgend sehen, dass Bereiche der Dekodierschaltung 199 eine Mehrzahl von "Prozessorelementen" 207&sub1;, 207&sub2;, ... 207t-1, 208A bilden. Die Prozessorelemente werden nachstehend insbesondere mit Bezugnahme auf die Fig. 3A, 3B, 3C und 3D detaillierter erläutert.
  • Die Dekodierschaltung 199 kann in einem von zwei Modi betrieben werden: Dekodierung von Fehlern und Löschungen (Fehler- und Löschmodus) oder Dekodierung nur von Fehlern (Nur-Fehler-Modus). Fig. 2A zeigt Details der Dekodierschaltung für den Fehler- und Löschmodus; Fig. 2B zeigt Details der Dekodierschaltung für den Nur-Fehler-Modus. Die Dekodierschaltung 199 gemäß Fig. 2A kann simultan u Fehler und v Löschungen (Fehler deren Stellen bekannt sind) korrigieren, sofern 2u+v nicht größer als t ist.
  • Fig. 2A zeigt Signale, die in die Prozessorelemente 207 und 208A in einem Fehler- und Löschmodus eingegeben und von diesen ausgelesen werden. Diese Signale beinhalten die folgenden m-Bit-Signale: Syndromdatensignal SYN, ein "Syndrom nach hinten verschoben"-Ausgangssignal SBO, ein "Syndrom nach hinten verschoben"-Eingangssignal SBI, ein "verschiebe Syndrom vorwärts"-Eingangsignal SFI, ein "verschiebe Syndrom vorwärts"-Ausgangssignal SFO, ein τ-Eingangsignal TI, ein τ-Ausgangssignal TO und ein Diskrepanz bezogenes Eingangssignal M. Ein Diskrepanz bildendes 1-Bit-Eingangsignal DNI wird in jedes Prozessorelement 207, 208A eingegeben, während ein Diskrepanz bildendes 1-Bit-Ausgangssignal DNO aus jedem Prozessorelement 207, 208A ausgelesen wird. Zusätzlich ist eine 1-Bit-Koeffizientenausgangsleitung SIG zwischen jedem Prozessorelement und dem Fehlerlokalisierungsgenerator 208 angeschlossen, so dass Ausgangssignale von dem Fehlerlokalisierungsregister 101 seriell ausgelesen werden können.
  • Fig. 2A zeigt manche der in der Registeraktualisierungsschaltung 50 vorgesehenen Elemente. Diese Elemente beinhalten eine innere Produktschaltung 209, ein Diskrepanz bezogenes Register DM 210, ein DM- Register-Steuer MUX 211, eine Diskrepanzinversionsschaltung 212, ein Steuergerät 213, eine α-zu-β- Basiswandlerschaltung 214, ein TI Eingangssteuer MUX 215, ein UND-Gatter 216 zum Rückwärtsfüllen von Nullen, einer Multipliziererrückkopplungsschaltung 218 und einem UND-Gatter 219 für die erste Prozessoreinheit τ. Noch weitere in der Registeraktualisierungsschaltung 50 vorgesehene Elemente beinhalten die Komponenten der Prozessorelemente 207 und 208A, die nicht Teil der Register sind und die nachfolgend erläutert werden.
  • Wie in Fig. 2A dargestellt ist, wird ein Ausgangssignal DNO von dem Prozessorelement 208A sowohl an einen Eingang einer Diskrepanzinversionsschaltung 212 als auch an einen ersten Eingangsanschluss des MUX 215 angelegt. Die Diskrepanzinversionsschaltung 212 verfügt über zwei m-Bit-Ausgangsanschlüsse, wobei ein erster Ausgangsanschluss mit ACC und ein zweiter Ausgang mit INV bezeichnet ist. Wie nachfolgend erläutert wird, wird während der ersten Phase einer Fehlerlokalisierungsiteration von dem Anschluss ACC ein Wert dn für die derzeitige Diskrepanz (in β-Basis Darstellung) ausgegeben. Von dem Anschluss ACC wird der derzeitige Diskrepanzwert dn sowohl an einen Eingangsanschluss DN des Steuergeräts 213 als auch an die β-zu-α-Basiskonversionsschaltung 214 angelegt. Nach Beendigung einer zweiten Phase einer Fehlerlokalisierungsiteration gibt die Diskrepanzinversionsschaltung 212 einen invertierten Wert der Diskrepanz (dn&supmin;¹) aus, der während der ersten Phase bestimmt wurde, wobei der invertierte Wert dann während der ersten Phase der nächsten Iteration zu einer invertierten früheren Diskrepanz (z. B. dn-1&supmin;¹) wird.
  • Das Steuergerät 213 benutzt den nicht konvertierten derzeitigen Diskrepanzwert dn, der von der Schaltung 212 erhalten wurde, um Signale G und CHANGE_L zu erzeugen, wie dies in Fig. 7 dargestellt ist. Das Signal CHANGE_L wird an einen ersten Eingangsanschluss des UND Gatters 219 und an die Prozessorelemente 207 und 208 angelegt, wie dies in den Fig. 3A, 3B und 3C dargestellt ist. Das Signal CHANGE_L bezeichnet eine Veränderung der Länge des Verbindungspolynoms, wie dies dem Fachmann geläufig ist.
  • Der das DM-Register steuernde MUX 211 erhält eine Mehrzahl wählbarer m-Bit-Signale, einschließlich der derzeitigen Diskrepanz (in α-Basis Darstellung von der Basiskonversionsschaltung 214), der invertierten früheren Diskrepanz dn-1&supmin;¹ (von der Inversionsschaltung 212), dem Wert α&sup0;, Löschstellenwerten (von dem Löschstellenwertgenerator 197) und ein α-Vielfaches des Inhalts des DM-Registers 210 (von der Multipliziererrückkopplungsschaltung 218). Der das DM-Register steuernde MUX 211 wird wiederum von dem Zeitgeber/Steuergerät 198 gesteuert, der bzw. das beispielsweise gemäß der Iterationsphase unter den möglichen Eingängen auswählt.
  • Ein Ausgangsanschluss des das DM-Register steuernden MUX 211 ist mit einem Eingangsanschluss des DM-Registers 210 verbunden. Ein Ausgangsanschluss des DM-Registers 210 ist mit der Multipliziererrückkopplungsschaltung 218 verbunden, einem ersten Eingang der inneren Produktschaltung 209 und mit den Prozessorelementen 207 und 208A, wie dies in den Fig. 3A und 3B veranschaulicht ist. Die innere Produktschaltung 209 erhält α&sup0; als ein zweites Eingangssignal und sie erzeugt ein Ausgangssignal zum Anlegen an einen zweiten Anschluss des UND-Gatters 219 der ersten Prozessoreinheit τ.
  • Die Nur-Fehler-Dekodierschaltung gemäß Fig. 2B unterscheidet sich geringfügig von der Fehler- und Löschdekodierschaltung gemäß Fig. 2A insbesondere bilden für den Nur-Fehler-Modus gemäß Fig. 2B die Prozessorelemente 207 (t/2)-1 bis 207t-1 eine gemeinsame Prozessorelementschaltung 217 und der das DM- Register steuernde MUX 211 erhält keine Fehlerstellenwerte.
  • Es versteht sich aus Fig. 2 und 2A, dass beispielsweise die Dekodierschaltung 199 eine Anzahl t von Prozessorelementen, insbesondere nominelle Prozessorelemente 207 und ein Prozessorendelement 208A aufweist. Die Prozessorelemente 207 und 208A sind miteinander in deren Fig. 2A für den Fehler- und Löschmodus gezeigten Weise und in der Fig. 2B für den Nur-Fehler-Modus gezeigten Weise miteinander verbunden. In beiden Modi stellt das Prozessorelement 207k das Prozessorelement k für k = 1, 2, ..., t-1 dar, während 208 Adas Prozessorelement t darstellt.
  • Fig. 3A zeigt Einzelheiten der Prozessorelemente 207 für den Fehler- und Löschmodus, während Fig. 3B Einzelheiten des Prozessorelements 208A für den Fehler- und Löschmodus darstellt. Bei dem Nur-Fehler- Modus, für den eine Dekodierschaltung in Fig. 2B gezeigt ist, sind die Prozessorelemente 207&sub1; bis einschließlich Prozessorelement 207t/2 mit den in Fig. 3A veranschaulichten Prozessorelementen 207 identisch. Für den Nur-Fehler-Modus bilden jedoch die Prozessorelemente 207(t/2)-1 bis 207t-1 die gemeinsame Prozessorelementschaltung 217 (gezeigt in Fig. 3C), während das Prozessorelement 208B wie in Fig. 3D gezeigt ausgelegt ist.
  • Wie zuvor erläutert zeigt Fig. 3A, dass die Prozessorelemente 207 Register 101, 102 und 103 aufweisen. Wie ebenso in Fig. 3A gezeigt ist, wird das Syndromregister 103 über einen MUX 104 mit Syndromdaten von entweder einem Syndromgenerator 200 (Signal SYN) oder von einem Syndromregister in einem von zwei benachbarten Prozessorelementen (unter Verwendung entweder eines Signals SFI oder eines Signals SBI) beladen. Ein zweiter Anschluss des MUX 104 wird gemäß der Iterationszahl, in der Iterationsphase und der Art der Iteration von dem Zeitgeber/Steuergerät 198 gesteuert. Die Fehlerlokalisierungsregister 101 und die Zwischenregister 102 werden alle auf null initialisiert.
  • Andere Komponenten der Prozessorelemente 207 sind in der Registeraktualisierungsschaltung 50 vorgesehen, insbesondere: eine modifizierte Syndrommultiplikationsschaltung 105, ein Addierer 106, eine Diskrepanzen beitragende innere Produktschaltung 107, ein Addierer 108, ein τ-Ausgangs UND-Gatter 109, eine Aktualisierungsmultiplizier- oder innere Produktschaltung 110, ein Koeffizientenwähl-MUX 111 und ein Addierer 112. Wie bei den anderen hier beschriebenen MUXn wird der Koeffizientenwähl-MUX 111 gemäß der Iterationszahl, der Iterationsphase und der Art der Iteration durch den Zeitgeber/Steuergerät 198 gesteuert.
  • Ein multiplikatives Produkt jedes Prozessorelements wird von der Diskrepanz erzeugenden inneren Produktgenerationsschaltung 107 erzeugt. Die Diskrepanz beitragende innere Produktgeneratorschaltung 107 eines Prozessorelements nimmt das innere Produkt des modifizierten Syndromregisters 100 des Prozessorelements (in erster oder α-Basis Darstellung) und die Inhalte des Zwischenregisters 102 des Prozessorelements (in zweiter oder β-Basis Darstellung). Das Produkt der zwei Elemente von GF(2m) wobei ein Element in der Standard oder α-Basis und ein Element in der Dual- oder β-Basis dargestellt ist, kann seriell erzeugt werden, d. h. kein Ausgangsbit pro Takt indem das innere Produkt der zwei Elemente genommen wird und eines der Elemente bei jedem Takt mit α multipliziert wird. In Verbindung mit dem inneren Produkt, welches von der Diskrepanz beitragenden inneren Produkterzeugungsschaltung 107 erzeugt wurde, erhält das modifizierte Syndromregister 100 anfänglich den Syndromwert seines entsprechenden Syndrom registers 103, wird jedoch aktualisiert, um ein α-Mehrfaches des Syndromwertes zu enthalten, wobei dies mittels der Multipliziererrückkopplungsschaltung 105 erfolgt.
  • Ausgangsanschlüsse des Fehlerlokalisierungsregisters 101 sind sowohl mit einem ersten Anschluss einer inneren Produktschaltung 107 und mit einem ersten Anschluss eines Koeffizientenwähl-MUX 111 verbunden. Ein zweiter Anschluss einer inneren Produktschaltung 107 ist mit einer modifizierten Syndrommultiplikationsschaltung 105 verbunden. Wie in Fig. 3A gezeigt ist, beinhaltet die modifizierte Syndrommultiplikationsschaltung 105 ein modifiziertes Syndromregister 100, welches einen Syndromwert von dem mit diesem gepaarten Syndromregister 103 erhält. Das modifizierte Syndromregister 100 verfügt über eine damit verbundene α-Mehrfach Rückkopplungsschaltung 120, so dass der Ausgang des modifizierten Syndromregisters 100 ein α-Mehrfaches des in dem Register 103 gespeicherten Syndromwerts ist. Fig. 6 ist ein schematisches Diagramm von Einzelheiten, der modifizierten Syndrommultiplikationsschaltung 105 für das Beispielfeld GF(28).
  • Während einer ersten Phase einer Fehlerlokalisierungsiteration nimmt die innere Produktschaltung 107 das innere Produkt der m-Bit-Quantität σ(n) (von dem Fehlerlokalisierungskoeffizientenregister 101) und die m- Bit-Quantität, die ein α-Mehrfaches des in dem Register 103 gespeicherten Syndromwerts ist (von dem modifizierten Syndromregister 100) um ein Bit zum Anlegen an den Addierer 106 zu erzeugen. Der Addierer 106 addiert das resultierende Bit von der inneren Produktschaltung 107 zu einem Signaleingang (von einer stromaufliegenden Prozessoreinheit) an der Leitung DNI, um ein Ausgangssignal DNO zu ergeben (zum Anlegen an einen stromabliegende Prozessoreinheit).
  • Der zweite Eingangsanschluss des Koeffizientenwähl-MUX 111 ist mit einem Ausgangsanschluss des Zwischenregisters 102 verbunden. Ein Ausgangsanschluss von MUX 111 ist mit einem ersten Eingangsanschluss eines inneren Produktregisters 110 verbunden. Ein zweiter Eingangsanschluss des inneren Produktregisters ist mittels einer Leitung M mit dem DM-Register 210 verbunden, wie dies bereits erläutert wurde. Ein Ausgangsanschluss des inneren Produktregisters 110 ist sowohl mit einem ersten Eingangspin eines UND Gatters 109 und mit einem ersten Eingang eines Addierer 112 verbunden. Ein Ausgangsanschluss des Addierers 112 ist mit einem Eingangsanschluss des Fehlerlokalisierungsregisters 101 verbunden. Ein serieller Ausgangsanschluss des Fehlerlokalisierungsregisters 101 ist sowohl mit einem zweiten Eingang des Addierer 112 und mittels einer seriellen Leitung SIG mit dem Wurzelsuch- und Fehler- /Löschpegelgenerator 196 verbunden (siehe Fig. 2A). Ein zweiter Ausgangsanschluss des Zwischenregisters 102 ist mit einem ersten Eingangsanschluss des Addierers 108 verbunden. Ein zweiter Eingangsanschluss des Addierers 108 ist mit einem Ausgangsanschluss des UND Gatters 109 verbunden. Der erste Eingangsanschluss des UND Gatters 109 ist mit dem Ausgangsanschluss der inneren Produktschaltung 110 verbunden und sein zweiter Eingangsanschluss ist mittels der Leitung CHANGE_L in der bereits beschriebenen Weise mit dem Steuergerät 213 verbunden.
  • Das Prozessorelement 208A aus Fig. 3B (Fehler- und Löschmodus) unterscheidet sich geringfügig von den Prozessoreinheiten 202, wie sich dies aus einem Vergleich der Fig. 3A (Prozessoreinheiten 207) mit der Fig. 3B (Prozessoreinheit 208A) ergibt. Insbesondere sind bei der Prozessoreinheit 208A der MUX 111, der Addierer 108, das UND-Gatter 109 und der Addierer 112 weggelassen. Der Ausgangsanschluss des Fehlerlokalisierungsregisters 101 ist nur mit einer Koeffizientenausgangsleitung SIG verbunden. Die Diskrepanzen beitragende innere Produktschaltung 107 der Prozessoreinheit 208A erhält an ihrem ersten Ein gang den Wert α&sup0;, wobei deren zweiter Eingang mit der modifizierten Syndrommultiplikationsschaltung 105 verbunden ist. Der Eingangsanschluss der inneren Produktschaltung 110 ist mit dem Ausgangsanschluss des Zwischenregisters 102 verbunden. Der Ausgang der inneren Produktschaltung 110 ist nur (und direkt) mit dem Eingangsanschluss des Lokalisierungskoeffizientenregisters 101 verbunden. Der Ausgangsanschluss des Zwischenregisters 102 ist mit der Leitung TO verbunden.
  • Die Prozessoreinheit 208A gemäß Fig. 3D (Nur-Fehler-Modus) unterscheidet sich von der Prozessoreinheit 208A gemäß Fig. 3C (Fehler- und Löschmodus) dadurch, dass das Lokalisierungskoeffizientenregister 101, das zwischen Koeffizientenregister 102 und die innere Produktschaltung 110 eliminiert sind.
  • Die Struktur der Diskrepanzinversionsschaltung 212 ergibt sich aus der US Patentanmeldung 08/147,758, eingereicht am 4. November 1993, nun aufgegeben, und deren US-Continuation Patentanmeldung 08/325,831 mit dem Titel "Finite Field Inversion".
  • Fig. 5 zeigt ein schematisches Diagramm der inneren Produkterzeugungsschaltung 107 für ein anschauliches Beispiel der Erfindung. Bei dem anschaulichen Beispiel gemäß Fig. 5 wird angenommen, dass das Feld GS (2&sup8;) ist, wobei als Felderzeuger x&sup8; + x&sup4; + x³ + x² + 1 benutzt wird. Gemäß den Lehren der US Patentanmeldung Nr. 08/147,758, angemeldet am 4. November 1993, nun aufgegeben, und deren US Continuation Patentanmeldung Nr. 08/325,831 mit dem Titel "Finite Field Inversion" wird die β-Darstellung eines Elements durch die Wahl von α&sub0; bestimmt. Für das anschauliche Beispiel wird angenommen, dass α&sub0; α&supmin;&sup4; ist.
  • Betrieb: Überblick
  • Fig. 9 zeigt die generellen Schritte, die bei der Fehlerkorrektur eines Codeworts gemäß der vorliegenden Erfindung beteiligt sind, wobei diese mit der Erzeugung von Syndromen S&sub0;, S&sub1;, ... S&sub7; für ein Codewort durch den Syndromgenerator 200 bei Schritt 900 beginnt. Bei Schritt 901 wird die Dekodierschaltung 199 initialisiert. Nach dem Initialisieren führt die Dekodierschaltung eine Mehrzahl von Fehlerlokalisierungsiterationen aus (Schritte 902 (1) bis 902 (8)) gefolgt von einer Mehrzahl von Fehlerbewertungsiterationen (Schritte 903 (1) bis 903 (8)). Die Zahl der Iterationen hängt von der Zahl der Prüfsymbole in dem Codewort ab und bei der vorliegenden Erfindung ist sie als Acht veranschaulicht. Wie nachstehend erläutert gibt die Tabelle 1 Operationen wieder, die während einer Fehlerlokalisierungsiteration 1 [Schritt 902 (1)] erfolgen, Tabelle gibt die während der Fehlerlokalisierungsiteration 2 [Schritt 902 (2)] erfolgenden Operationen wieder und Tabelle 3 zeigt die Operationen, die während einer Fehlerlokalisierungsiteration 8 [Schritt 902 (8)] auftreten.
  • Ein Ziel der Fehlerlokalisierungsiterationen besteht darin, Koeffizienten des Fehlerlokalisierungspolynoms σ(x) zu erhalten, um diese dann in den Fehlerlokalisierungsregistern 101 einzuspeichern. Ein Ziel der Fehlerbewertungsiterationen besteht darin, Koeffizienten des Fehlerbewertungspolynoms ω(x) in den Zwischenregistern (τ-Registern) 102 zu erhalten. Nachdem die Endwerte für die Koeffizienten erhalten wurden, werden bei Schritt 904 die Koeffizienten des Fehlerlokalisierungspolynoms σ(x) [in den Fehlerlokalisierungsregistern 101] seriell zu dem Wurzelsuch- und Fehler-/Löschpegelgenerator 196 übertragen (an den Leitungen SIG), und die Koeffizienten des Fehlerbewertungspolynoms ω(x) [in den Zwischenregistern (τ- Register) 102] werden (an Leitungen TO) seriell zu dem Wurzelsuch- und Fehler-/Löschpegelgenerator 196 übertragen.
  • Wie näher erläutert werden wird, umfasst jede Fehlerlokalisierungsiteration zwei Phasen oder Stufen: Eine erste Phase (auch als Phase A bezeichnet) und eine zweite Phase (auch als Phase B bezeichnet). Während der Phase A jeder Fehlerlokalisierungsiteration wird die derzeitige Diskrepanz dn erzeugt und die Koeffizientenwerte in den Zwischenregistern (τ-Registern) 102 werden aktualisiert. Während der Phase B jeder Fehlerlokalisierungsiteration werden die Werte in den Fehlerlokalisierungsregistern (σ-Registern) 101 aktualisiert und am Ende der Phase B steht das Inverse der Diskrepanz dn&supmin;¹ zur Verfügung (das während der nächsten Fehlerlokalisierungsiteration als das Inverse der vorherigen Diskrepanz oder dn-1&supmin;¹ bezeichnet wird).
  • Die Fehlerlokalisierungsiterationen gemäß der vorliegenden Erfindung beinhalten eine Implementierung des Berlekamp-Massey Algorithmus basierend auf den folgenden Rekursionsregeln:
  • 1. aktualisiere τ:
  • τ(n) (x) = xτ(n-1) (x) oder x(τ(n-1) (x) + dn-1&supmin;¹ σ(n) (x)
  • berechne dn:
  • dn = Σ σk Sn-k
  • 2. aktualisiere σ:
  • σ(n+1) (x) = σ(n) (x) - dnτ(n) (x)
  • Während den ersten m Takten (z. B. Phase A) einer Fehlerlokalisierungsiteration wird τ(x) der vorherigen Iteration berechnet, d. h. τ(n) (x) wird berechnet und nicht τ(n+1) (x). Gemäß der vorliegenden Erfindung müssen die Koeffizienten der Polynome τ(x) und σ(x) nicht gleichzeitig aktualisiert werden, da sie nicht von einander abhängen, d. h. σ (n+1) (x) hängt von τ (n) (x) ab und τ (n) (x) hängt von σ(n) (x) ab und nicht von σ (n- 1) (x). Daher kann τ(x) unter Verwendung von σ(x) aktualisiert werden, und dann kann σ(x) unter Verwendung der bereits aktualisierten Funktion τ(x) aktualisiert werden. Die endgültige Aktualisierung von τ(x) wird nie durchgeführt (was akzeptierbar ist, da τ(x) nur zum Aktualisieren von σ(x) nützlich ist und darüber hinaus die endgültige Aktualisierung für τ(x) nicht benötigt wird, sobald die endgültige Aktualisierung für σ(x) erfolgt ist).
  • Die Rekursionsgleichung für τ(x) kann geschrieben werden als:
  • τ(n+1) (x) = xτ(n) (x) oder xτ(n) (x) + xdn&supmin;¹ σ(n+1) (x)
  • Um zu zeigen, dass diese Gleichungen gültig sind, wird die Rekursionsgleichung für σ(n+1) (x) in die Rekursionsgleichung für τ(x)(n+1) substituiert, woraus sich ergibt:
  • τ(n+1) (x) = xτ(n) (x) oder xτ(n) (x) + xdn&supmin;¹ (σ(n) (x) - dnτ(n) (x))
  • = xτ(n) (x) oder xdn&supmin;¹ σ(n) (x)
  • was identisch zu den GLEICHUNGEN 1 ist.
  • Während den ersten m Takten einer Fehlerlokalisierungsiteration wird das Inverse der Diskrepanz der vorherigen Iteration (d. h. dn-1&supmin;¹) verwendet. Gemäß einem Vorteil der vorliegenden Erfindung kann anstelle des gewöhnlichen 2m X m ROM ein sequentielles Verfahren benutzt werden, um dn-1&supmin;¹ zu erhalten. Dieses sequentielle Verfahren wird mittels der Diskrepanzinversionsschaltung 212 implementiert, was in der am 4.
  • November 1993 eingereichten, nun aufgegebenen US Patentanmeldung Nr. 08/147,753 und deren US Continuation Anmeldung Nr. 08/325,831 mit dem Titel "Finite Field Inversion" näher erläutert ist.
  • In der Aktualisierungsgleichung für τ(n) (x) wird die erste Wahlmöglichkeit genommen, wenn die Größenordnung von σ(x) nicht geändert wird, während die zweite Wahl gewählt wird, wenn die Größenordnung von σ(x) geändert wird. Falls das Signal CHANGE_L benutzt wird, um jene Iterationen anzuzeigen, während welchen die Größenordnung von σ(x) geändert wird, können die Rekursionsgleichungen gemäß den GLEICHUNGEN 3 geschrieben werden.
  • GLEICHUNGEN 3:
  • 1. aktualisiere τ:
  • τ(n) (x) = x(τ(n-1) (x) + dn-1&supmin;¹ σ(x) * CHANGE_L)
  • berechne dn:
  • dn = σk(n)Sn-k
  • 2. aktualisiere σ:
  • σ(n+1) (x) = σ(n) (x) - dnτ(n) (x)
  • Betrieb: Syndrom Erzeugung
  • Der Syndromerzeugungsschritt 900 aus Fig. 9 ist konventionell und dem Fachmann geläufig. Es sei angenommen, dass das Reed-Solomon Codewort Generatorpolynom lautet:
  • G(x) = (x + α L+k)
  • Dann wird eine Datensequenz D(x) als Codewort C(x) auf folgende Weise kodiert: C(x) = D(x) xt - (D(x) xt) mod G(x). Wenn ein möglicherweise korruptes Codewort R(x) = C(x) + E(x) erhalten wird, wird es in dem Pufferspeicher 194 gespeichert und zu dem Syndromgenerator 200 geschickt. Zu einem späteren Zeitpunkt, der durch die asynchrone Steuerung des Pufferspeichers 194 bestimmt wird, wird ein zu korrigierendes Byte in dem Codewort R(x) zu dem Register 195 in Fig. 2 geschickt. Die Syndrome werden wie folgt berechnet:
  • Sk = R(x) mod (x + α1+k) für k = 0, 1, ..., t-1.
  • Betrieb: Initialisierung
  • In dem Initialisierungsschritt 901 (siehe Fig. 9) werden Syndromwerte S&sub0;, S&sub1;, ... S&sub7; in die Syndromregister 103 geladen. Zusätzlich werden die Fehlerlokalisierungsregister 101, Zwischenregister 102 und andere Werte initialisiert.
  • Beim Laden von Syndromwerten wird ein Syndrom Sk in das Prozessorelement 207t-k für K = 1, 2, ..., t-1 verschoben, und S&sub0; wird in das Prozessorelement 208A verschoben. Innerhalb jedes Prozessorelements, wie es beispielsweise in Fig. 3A gezeigt ist, wird mittels des MUX 104 ein Syndrom in das S-Register 103 ver schoben. So wird anfänglich das Syndrom S&sub0;, in das Syndromregister 103 des Prozessorelements 208A geschoben, während Syndromwerte S&sub1;, S&sub2;, ... S&sub7; in Syndromregister der Prozessorelemente 207&sub7;, 207&sub6;, ... 207&sub1; geladen werden. Die Syndromwerte werden seriell (ein Bit pro Zeiteinheit) von dem Syndromgenerator 200 in die jeweiligen Register 103 geladen.
  • Nachdem die Syndrome anfänglich in die S-Register 103 verschoben wurden, werden anschließend die Syndrome nach vorne verschoben, wobei der Inhalt jedes S-Registers 103 seriell auf den SFI-Eingang des nächsten Prozessorelements herausgeschoben wird (von dem SFO Ausgang jedes Prozessorelements) und dann mittels des MUX 104 in das S-Register 103 des nächsten Prozessorelements gegattert wird. Bei dieser Initialisierungsverschiebung versorgt der Ausgang des Prozessorelements t (Block 208A) den Eingang des Prozessorelements 207&sub1;, so dass sich eine kreisförmige Verschiebung ergibt. Während dieser kreisförmigen Verschiebung wird der Ausgang des S-Registers 103 jedes Prozessorelements ebenso in dessen zugehöriges SM-Register 100 geschoben.
  • Die Fehlerlokalisierungsregister 101 und die Zwischenregister 102 des Prozessorelements 208A und der Prozessorelemente 207&sub1;, 207&sub2;, ... 207&sub7; werden auf Null gesetzt (mittels des Zeitgebers/Steuergeräts 198) bevor die erste Phase der ersten Fehlerlokalisierungsiteration für das Codewort beginnt.
  • Das Steuergerät 213 (siehe beispielsweise Fig. 2A) gibt das CHANGE_L Signal an die CHG Eingänge jedes Prozessorelements aus. Das CHANGE_L Signal wird auf "1" initialisiert, bevor mit der ersten Iteration begonnen wird. Das Steuergerät 213 hält ferner zwei Variablen LN und LM, die auf 0 bzw. 1 initialisiert werden. Ferner wird das DM-Register 210 auf die Alpha Basisdarstellung von α&sup0; mittels des MUX 211 initialisiert, wobei es sich hierbei um den Anfangswert für dn-1&supmin;¹ handelt.
  • Betrieb: Diskrepanzerzeugung
  • Diese kurze Beschreibung der Erzeugung der derzeitigen Diskrepanz dn stellt einen Vorspann für die Erläuterung der tatsächlichen Fehlerlokalisierungsiterationen dar. Unter Verwendung des Ausdrucks für dn aus GLEICHUNG 3
  • dn = σk(n)Sn-k
  • ist zu sehen, dass die Diskrepanz dn von Werten in den Lokalisierungskoeffizientenregistern 101 (d. h. den σ-Registern) und den Syndromen abgeleitet wird. Während die in den Lokalisierungskoeffizientenregistern 101 gespeicherten Werte in Beta oder zweiter Basisdarstellung vorliegen sind die Syndromwerte in der Alpha oder ersten Basisdarstellung. Um diese beiden Werte miteinander zu multiplizieren, muss daher einer der Werte wiederholt mit α multipliziert werden. Bei der veranschaulichten Ausführungsform werden die Syndrome unter Verwendung der Schaltung 105 zum Multiplizieren modifizierter Syndrome mit α multipliziert, wie dies zuvor erläutert wurde.
  • Die Multiplikation, welche die derzeitige Diskrepanz ergibt, wird zum Teil unter Verwendung der inneren Produktschaltung 107 erreicht (die für ein Beispielfeld in Fig. 5 detaillierter gezeigt ist). Die innere Produktschaltung 107 ist Teil eines Multiplizierers, der einen Teil eines größeren inneren Produkts bildet (einen Term der derzeitigen Diskrepanz dn). Insbesondere umfasst die innere Produktschaltung 107 (zusammen mit dem σ-Register 101 und der Schaltung 105 zum Multiplizieren modifizierter Syndrome) eine Multipliziererstruktur auf, die für jeden Taktimpuls ein serielles Ausgangssignal erzeugt, welches dem Addierer 106 zugeführt wird.
  • Der Addierer 106 summiert die seriellen Ausgänge vergleichbarer Multiplizierer anderer Prozessorelemente, um ein inneres Produkt der Syndrome mit den derzeitigen Koeffizienten des Fehlerlokalisierungspolynoms zu erhalten. Es versteht sich daher, dass alle Prozessorelemente gleichzeitig eine Multiplikation durchführen und pro Taktzyklus ein 1-Bit Ausgangssignal erzeugen, welches (mittels der Addierer 106) zu den Ausgangssignalen anderer Prozessorelemente addiert wird, um ein Bit der derzeitigen Diskrepanz zu erhalten. Darüber hinaus wird während des Taktzyklus, in welchem ein Bit der Diskrepanz dn erzeugt wird, dieses Bit an die Diskrepanzinversionsschaltung 212 übertragen.
  • Betrieb: Fehlerlokalisierungsiteration (Phase A)
  • Der Betrieb der Dekodierschaltung 199 während der Fehlerlokalisierungsiterationen ergibt sich aus Tabelle 1, Tabelle 2 und Tabelle 3. Die Tabellen geben den Betrieb während den Fehlerlokalisierungsiterationen 1, 2 bzw. 8 wieder (siehe Schritte 902 (1), 902 (2), bzw. 902 (8)). Wie zuvor erwähnt wurde, beinhaltet jede Fehlerlokalisierungsiteration eine erste Phase (auch Phase A genannt) sowie eine zweite Phase (auch Phase B genannt).
  • Während der ersten Fehlerlokalisierungsiteration für jedes Codewort wurden alle Prozessorelemente 207&sub1; - 207&sub7; und 208A in den Fehlerlokalisierungsregistern (d. h. σ-Registern) 101 auf Null initialisiert. Folglich tragen die Prozessorelemente 207&sub1; - 207&sub7; nichts zu der Diskrepanzsumme während der Phase A der ersten Iteration bei. Während der ersten Fehlerlokalisierungsiteration wird jedoch das Prozessorelement 208A (welches mit dem Syndrom S&sub0; und mit α&sup0; als dem anderen Eingang für die innere Produktschaltung 107 initialisiert wurde) ein Ausgangssignal erzeugen, welches nicht Null ist (im Grunde S&sub0;α&sup0;=S&sub0;. Während des ersten Taktes von Phase A gibt daher die innere Produktschaltung 107 der Prozessorelemente 207 ein Bit von Null als deren Produkt aus. Diese Bitnullen werden von den Addierern 106 zu dem von Null unterschiedlichen Ausgang des Prozessorelements 208 addiert, wobei diese Summe das Bit 0 der derzeitigen Diskrepanz dn ist. Das so erhaltene Bit 0 der derzeitigen Diskrepanz dn wird während des gleichen Taktzyklus zu der Diskrepanzinversionsschaltung 212 (siehe Fig. 4) verschoben, die sofort mit ihrer Inversion beginnt.
  • Während jedes Taktzyklus der ersten Fehlerlokalisierungsiteration wird ein weiteres Bit des ersten Terms der derzeitigen Diskrepanz erhalten (von Prozessorelement 208A ausschließlich während der ersten Iteration) und an die Diskrepanzinversionsschaltung 212 angelegt.
  • Während Phase A der ersten Iteration wurden die Zwischenregister (d. h. τ-Register) 102 alle auf Null initialisiert. Während der ersten Iteration wird τ&sub0; (Register 102 in Prozessorelement 207&sub1;) dadurch auf α&sup0; initialisiert, dass das DM-Register 210 auf α&sup0; initialisiert wurde und CHANGE_L auf 1 initialisiert wurde.
  • Während den von der ersten Iteration verschiedenen Fehlerlokalisierungsiterationen für ein Codewort werden die Werte in den Zwischenregistern (τ-Registern) 102 aktualisiert. Die Art und Weise, in welcher die Aktualisierung der τ-Register 102 aktualisiert wird, hängt von den Ergebnissen der vorherigen Iteration ab (z. B. ob es zu einer Längenänderung kam, wie sie durch das Signal CHANGE_L angezeigt wird).
  • Um die Werte in den Zwischenregistern (τ-Registern) 102 während der Phase A zu aktualisieren, multipliziert die Dekodierschaltung 199 Werte in den Fehlerlokalisierungsregistern 101 (z. B. σ-Registern) mit dn-1&supmin; ¹. Dies implementiert die GLEICHUNGEN 3, die zum Teil lauten
  • τ(n) (x) = x(τ(n-1) (x) + dn-1&supmin;¹ σ(x) * CHANGE_L)
  • Der Wert dn-1&supmin;¹ wird in dem DM-Register 210 für die erste Iteration auf α&sup0; initialisiert und anschließend durch die Diskrepanzinversionsschaltung 212 erzeugt und über den MUX 211 in das DM-Register 210 geladen.
  • Beschreibt man insbesondere die Aktualisierung des Zwischenregisters 102, so wird während der Phase A der Inhalt des Fehlerlokalisierungsregisters 101 über den MUX 111 an den ersten Anschluss der inneren Produktschaltung 110 übertragen. Der zweite Eingangsanschluss des inneren Produktregisters ist über eine Leitung M mit dem DM-Register 210 verbunden, um ein α-Mehrfaches von dn-1&supmin;¹ zu erhalten. Das Ausgangssignal der inneren Produktschaltung 110 wird an das UND Gatter 109 angelegt und (falls durch das Signal CHANGE_L erfordert) (mittels des Addierers 108) zu dem Inhalt des Zwischenregisters 102 (d. h. τ- Register) addiert, um auf der Leitung TO an das τ-Register 102 des auf der rechten Seite benachbarten Prozessorelements angelegt zu werden. Wenn es das Signal CHANGE_L nicht erfordert, wird der Inhalt des Zwischenregisters 102 (d. h. τ-Registers) direkt auf der Leitung TO an das τ-Register 102 des rechts benachbarten Prozessorelements angelegt, ohne dass eine Addition des Ausgangssignals der inneren Produktschaltung 110 erfolgt. Daher werden zur Aktualisierung der Zwischenregister 102 (d. h. τ-Register) aller Prozessorelemente alle Takte von Phase A benötigt.
  • Die Werte der Fehlerlokalisierungsregister (z. B. σ-Register) 101 ändern sich während der ersten Phase einer Fehlerlokalisierungsiteration nicht. Jedoch wird der Wert des Registers SM 100 (welches anfänglich mit dem Syndrom beladen ist) während jedes Taktzyklus mit α-Rückkopplung getaktet. Der ursprüngliche Syndromwert bleibt während der ersten Phase jeder Iteration in dem Register 103.
  • Am Ende von Phase A wurden alle 8 Bits der derzeitigen Diskrepanz (in zweiter oder β-Basis Darstellung) in die Diskrepanzinversionsschaltung 212 verschoben, wurden (mittels der Umwandlungsschaltung 214) in erste oder α-Basis Darstellung umgewandelt, und wurden zur Verwendung während der Phase B mittels Multiplexern in die DM-Register 210 übertragen. Am Ende von Phase A benötigt jedoch die Diskrepanzinversionsschaltung 212 weitere 8 Taktzyklen (z. B. die Dauer von Phase B), um das Inverse von dn zu erzeugen.
  • Das Ausführen der Phase A der Dekodierschaltung 199 unterscheidet sich von Iteration zu Iteration in ersten Linie durch die Tatsache, dass die Register 103 (und damit die Register 100) und die σ-Register 101 mit unterschiedlichen Werten beladen/aktualisiert wurden. Wie nachfolgend erläutert wird, werden während der Phase B Syndromwerte zirkulär verschoben und σ-Registerwerte werden aktualisiert. Während einer zweiten Fehlerlokalisierungsiteration für ein Codewort werden daher zwei Prozessorelemente (z B Prozessorelement 208A und Prozessorelement 207&sub1;) betrieben, um die derzeitige Diskrepanz dn zu erhalten. In ähnlicher Weise werden bezüglich der Diskrepanzerzeugung während einer dritten Iteration drei Prozessorelemente betätigt, vier Prozessorelemente während einer vierten Iteration usw., bis während der achten (letzten) Fehlerlokalisierungsiteration alle Prozessorelemente betätigt werden. Am Ende jeder Ausführung von Phase A hat die Dekodierschaltung 199 dn erzeugt, hat dn in die Diskrepanzinversionsschaltung 212 verschoben und hat die Zwischenregister 102 (τ-Register) aller Prozessorelemente aktualisiert.
  • Betrieb: Fehlerlokalisierungsiteration, Phase B
  • In der veranschaulichten Ausführungsform verfügt Phase B ebenfalls über acht Taktzyklen. Während Phase B geschehen drei hauptsächliche Aktionen: Die Syndrome werden seriell in ein benachbartes Prozessorelement verschoben, die Erzeugung des Inversen von dn (welches während der nächsten Fehlerlokalisierungsiteration als dn-1&supmin;¹ bezeichnet wird) wird abgeschlossen, und die Werte in den Fehlerlokalisierungsregistern (σ-Registern 101) werden unter Verwendung der Werte in den Zwischenregistern 102 und dem Wert von dn, der während der Phase A gerade erzeugt wurde, aktualisiert.
  • Während der Phase B jeder Fehlerlokalisierungsiteration verschiebt die Dekodierschaltung 199 seriell die Syndromwerte in Vorbereitung auf die nächste Phase A, so dass ein neues dn während der nächsten Phase A erzeugt werden kann. Diesbezüglich wird eine Vorwärtsverschiebung der Syndrome ausgeführt, bei welcher der Inhalt jedes S-Registers 103 aus dem Ausgang SFO des Prozessorelements zu dem Eingang SFI des nächsten Prozessorelements und in das S-Register 103 des nächsten Prozessorelements verschoben wird (über MUX 104). Der Ausgang des Prozessorelements 208A speist den Eingang des Prozessorelements 207&sub1;, so dass sich eine zirkuläre Verschiebung ergibt. Während dieser Verschiebung verschiebt das übertragende Prozessorelement ferner den abgehenden Syndromwert in sein SM-Register 100.
  • Am Beginn der Phase B enthält das DM-Register 210 nicht dn-1&supmin;¹ sondern dn der derzeitigen Iteration (das gerade während der Phase A bestimmt wurde). Der Wert dn in dem DM-Register 210 wurde (durch die Umwandlungsschaltung 214) in Alpha-Darstellung umgewandelt, was notwendig ist, um eine innere Produktoperation mit Bezug auf den Inhalt der Zwischenregister 102 (τ-Register) durchzuführen, die in β- Basis Darstellung vorliegen. Nach dem ersten Taktzyklus von Phase B wird der Wert von dn mit α multipliziert, so dass der Inhalt des DM-Registers ein α-Mehrfaches von dn zur Verwendung in der Phase B wird.
  • Während der Phase A wurden die Zwischenregister 102 (d. h. τ-Register) durch verschobene Werte aktualisiert während die Fehlerlokalisierungsregister (z. B. σ-Register) 101 unverändert blieben. Während der Phase B werden andererseits die Fehlerlokalisierungsregister (z. B. σ-Register) 101 aktualisiert während die Zwischenregister 102 (d. h. τ-Register) unverändert blieben. Tatsächlich werden die Zwischenregister 102 (d. h. τ-Register) benutzt, um die Werte der Koeffizienten des in den Fehlerlokalisierungsregistern 102 gespeicherten Fehlerlokalisierungspolynoms zu aktualisieren.
  • Während der Phase B werden die Koeffizienten des Fehlerlokalisierungspolynoms gemäß den GLEICHUNGEN 3 aktualisiert
  • σ(n+1) (x) = σ(n) (x) - dnτ(n) (x)
  • Der Inhalt der Zwischenregister 102 (d. h. τ-Register) wird über MUX 111 an den ersten Eingangsanschluss der inneren Produktschaltung 110 angelegt. Die innere Produktschaltung 110 bildet das innere Produkt mit dem Inhalt der -τ-Register und dn (dn wurde an Leitung M angelegt). Das Ausgangssignal der inneren Produktschaltung 110 ist ein serielles Bit (ein Bit pro Takt von Phase B) welches mittels dem Einzelbitaddierer 112 zu dem seriell herausgeschobenen Inhalt des Fehlerlokalisierungsregisters (z. B. σ-Re gisters) 101 addiert wird. Somit braucht es acht Taktzyklen, um den Inhalt des Fehlerlokalisierungsregisters (z. B. σ-Registers) 101 für jedes Prozessorelement zu aktualisieren. Der gerade beschriebene Aktualisierungsvorgang für das Fehlerlokalisierungsregister (z. B. σ-Register) 101 jedes Prozessorelements läuft simultan für alle Prozessorelemente ab (wobei in den σ-Registern 101 verschiedener Prozessorvorrichtungen natürlich unterschiedliche Werte vorhanden sind).
  • Wenn Phase A der nächsten Fehlerlokalisierungsiteration beginnt, werden daher die Phase A Operationen mit den neuen Werten in den σ-Registern 101 ausgeführt, die während der vorangegangenen Phase B aktualisiert wurden. Am Ende der Phase hat die Diskrepanzinversionsschaltung 212 die Inversion von dn abgeschlossen, was an den INV Ausgängen zur Verfügung steht und über MUX 211 in das DM-Register 210 zur Verwendung als dn-1&supmin;¹ während Phase A der nächsten Fehlerlokalisierungsiteration angelegt wird.
  • Am Ende von Phase B der letzten (achten) Fehlerlokalisierungsiteration werden die endgültigen Werte der Koeffizienten des Fehlerlokalisierungspolynoms für das Codewort in den σ-Registern 101 gespeichert.
  • Betrieb: Fehlerbewertungsiteration
  • Nach Beendigung der letzten Fehlerlokalisierungsiteration für ein Codewort (z. B. nach Schritt 902 (8) von Fig. 9) werden die endgültigen Werte der Koeffizienten des Fehlerlokalisierungspolynoms für das Codewort in den σ-Registern 101 gespeichert. Was noch bleibt ist die Erzeugung von Koeffizienten für das Fehlerbewertungspolynom. Vorzugsweise erzeugt die Dekodierschaltung 199 unter Verwendung weiterer acht Iterationen (die als Fehlerbewertungsiterationen bezeichnet werden), wie sie durch die Schritte 903 (1) bis 903 (8) von Fig. 9 angegeben sind, die Fehlerbewertungskoeffizienten und speichert diese Koeffizienten in den Zwischenregistern 102 (τ-Registern).
  • Die endgültigen Werte der Koeffizienten des Fehlerlokalisierungspolynoms für das Codewort werden benutzt, um das Fehlerbewertungspolynom ω(x) zu erzeugen. Die Koeffizienten des Fehlerbewertungspolynoms ω(x) sind definiert als:
  • ωk = σjSk-j
  • für k = 0, 1, ..., t-1. Da die Form des Fehlerbewertungspolynoms ω(x) die gleiche ist wie die zur Berechnung von dn, kann die Dekodierschaltung 199 Koeffizienten für beide Polynome finden. Die Koeffizienten werden in t doppelten Phaseniterationen erzeugt (unter der Annahme, dass t Fehler zu korrigieren sind).
  • Die Fehlerbewertungsiterationen sind ähnlich zur Phase A der Fehlerlokalisierungsiterationen mit den folgenden Modifikationen:
  • (1) Während Phase A der letzten Fehlerlokalisierungsalgorithmusiteration (z. B. Schritt 902(8) von Fig. 9) werden die Syndromregister 103 jedes Prozessorelements nach hinten verschoben, d. h. der Inhalt der S- Register 103 wird aus dem SBO Ausgang heraus und in den SBI Eingang des vorhergehenden Prozessorelements und über den MUX 104 in das S-Register 103 des vorherigen Prozessorelements verschoben. Ein Signal G von dem Steuergerät 213 wird während diesem Rückwärtsverschieben von Syndromen auf "1" gesetzt.
  • (2) Während Phase B der letzten Fehlerlokalisierungsiteration (z. B. Schritt 902(8) von Fig. 9) werden die S-Register 103 in jedem Prozessorelement erneut nach hinten verschoben und gleichzeitig wird der Ausgang des S-Registers 103 in jedem Prozessorelement in das SM-Register 100 vorschoben. Während dieser und allen nachfolgenden Rückwärtsverschiebungen wird das von dem Steuergerät 203 ausgegebene Signal G auf "0" gesetzt. Wird das Signal auf diese Weise gesetzt, so werden zwangsläufig "0"en in den SBI Eingang des Prozessorelements t-1 mittels des UND Gatters 216 eingegeben.
  • (3) Während Phase A jeder Fehlerbewertungsiteration (auch als ω Iteration bezeichnet) ist der DNO Ausgang des Prozessorelements t ωk, wobei k für die erste ω Iteration t-1 ist, für die zweite t-2 etc. und 0 für die letzte ω Iteration, ωk wird über den MUX 215 in den TI Eingang des Prozessorelements 1 verschoben.
  • (4) Während Phase B jeder ω Iteration werden die S-Register 104 nach hinten verschoben und außerdem in die SM-Register 100 verschoben. Die σ-Register 101 erfahren keine Verschiebung.
  • (5) Der Wert von CHANGE_L liegt wie in Fig. 7 gezeigt fest auf "0". Dies erlaubt es all den t-Registern, als ein einzelnes Schieberegister zu fungieren, so dass nach den t Iterationen das τ-Register in Prozessorelement k ωk-1 enthält.
  • Beispielsweise nach Beendigung von 8 Takten einer ersten Fehlerbewertungsiteration werden die 8 Bits von ω&sub7; in das τ-Register 102 von Prozessorelement 2071 geladen. Nach Abschluss einer zweiten Fehlerbewertungsiteration werden die 8 Bits von ω&sub6; in das τ-Register 102 von Prozessorelement 2071 geladen und ω&sub7; wird in das τ-Register 102 von Prozessorelement 2072 übertragen. Eine ähnliche Verarbeitung wird für alle 8 Fehlerbewertungsiterationen fortgesetzt bis alle Koeffizienten ω&sub0; - ω&sub7; in den Prozessorelementen 207&sub1; - 208A gespeichert sind.
  • Während den Fehlerbewertungsiterationen bleiben die zuvor bestimmten endgültigen σ Koeffizienten in den σ-Registern 101 unberührt.
  • Nach den t Iterationen werden die σ- und t-Register dann m mal mehr verschoben, so dass die Fehlerlokalisierungs- und Fehlerbewertungspolynome zu dem Wurzelsuch- und Fehler-/Löschpegelgenerator 196 übertragen werden können (siehe Fig. 1).
  • Betrieb: Koeffiziententransfer
  • Nach Abschluss aller Fehlerlokalisierungsiterationen und aller Fehlerbewertungsiterationen überträgt, wie dies in Fig. 9 durch den Schritt 904 dargestellt ist, die Dekodierschaltung 199 die Endwerte für die Koeffizienten des Fehlerlokalisierungspolynoms (die in den σ-Registern 101 gespeichert sind) und die Endwerte für die Koeffizienten des Fehlerbewertungspolynoms (die in den τ-Registern 102 gespeichert sind) zu dem Wurzelsuch- und Fehler-/Löschpegelgenerator 196. Jedes Prozessorelement der Dekodierschaltung 199 hat in seinem σ-Register 101 einen σ-Koeffizienten und in seinem τ-Register 102 einen ω-Koeffizienten. Die Übertragung von dem σ-Register 101 und dem τ-Register 102 erfolgt (an den Leitungen SIG bzw. TO) bei einer Rate von einem Bit pro Takt (serielle Übertragung), wobei serielle Übertragungen von beiden Registern 101 und 102 simultan erfolgen. Der Wurzelsuch- und Fehler-/Löschpegelgenerator 196 erhält simultan ein Bit eines σ-Koeffizienten von jedem Prozessorelement und ein Bit von einem ω-Koeffizienten von jedem Prozessorelement.
  • Der Wurzelsuch- und Fehler-/Löschpegelgenerator 196 liefert Fehlermuster zu dem Addierer 202, um Daten zu korrigieren, wie sie den Registern 195 entnommen werden. Fehlerstellen werden mit einer Wurzelsuche für σ(x) gefunden, d. h. Byte k ist immer dann fehlerhaft wenn σ(α-k) = 0. Der Fehlerpegel wird dann wie folgt berechnet:
  • wobei σ' die erste Ableitung von σ darstellt.
  • Betrieb: Löschungen
  • Wenn die empfangene Sequenz R(x) v Löschungen enthält, dann werden die Löschstellen während den ersten v Lokalisierungsiterationen eingegeben, die auf folgende Weise modifiziert sind:
  • (1) Am Ende jeder Phase A der ersten v Iterationen wird, anstatt dn in das DM-Register 210 zu laden, die Fehlerstelle in Form von α, welches zur ek-ten Potenz erhoben ist, über den MUX 211 (siehe Fig. 2A) in das DM-Register 210 übertragen. In dieser Nomenklatur ist ek die Stelle der k-ten Löschung, d. h. der ek-te Koeffizient von R(x).
  • (2) Am Ende jeder Phase B der ersten v Iterationen wird, anstatt dn&supmin;¹ in DM 210 zu laden, α&sup0; über den MUN 211 in das DM-Register 210 geladen.
  • (3) Das Signal CHANGE_L wird auf "1" festgelegt und am Ende jeder Phase A wird LN zu LM und LM wird zu LM+1. Dies ist in Fig. 7 veranschaulicht.
  • Das Prozessorelement t, welches in Fig. 3B detailliert dargestellt ist, enthält keinen Addierer 112 da der einzige Zeitpunkt, zu dem σt erzeugt wird, dann ist, wenn t Löschungen und keine Fehler vorliegen (wobei in diesem Fall alle Iterationen Löschiterationen sein werden und der einzige Zeitpunkt, zu dem das σ- Register in Prozessorelement t einen Wert von ungleich Null erhalten wird, die letzte Iteration sein wird).
  • Betrieb: Nur-Fehler-Dekodierung
  • Fig. 2B zeigt eine Fehlerkorrektursystem nach der Erfindung welches (anders als das System von Fig. 2A) keine Löschkorrektur beinhaltet. Da maximal t/2 Fehler zu korrigieren sind, werden nur t/2 Berlekamp- Massey Algorithmusprozessorelemente benötigt. Bei der Ausführungsform gemäß Fig. 2B sind die Prozessorelemente (t/2) + 1 bis t-1 durch die kollektive modifizierte Prozessorelementschaltung 217 ersetzt, wie in Fig. 3C detailliert dargestellt ist. Die Prozessorelemente der Schaltung 217 enthalten nur ein S-Register 103 und einen damit verbundenen MUX 104. Das Prozessorelement t des Systems gemäß Fig. 2B ist durch ein modifiziertes Prozessorelement 208B ersetzt, welches in Fig. 3D detailliert dargestellt ist. Das Prozessorelement 208B gemäß Fig. 3D enthält nur das S-Register 103 (mit dem zugehörigen Mlix 104), eine Schaltung 105 zum Multiplizieren modifizierter Syndrome und eine innere Produktschaltung 107. Während dem Initialisieren des Systems gemäß Fig. 2B wird das S-Register 103 in dem Prozessorelement k wie zuvor mit St-k geladen, wobei k = 1, 2, ..., t/2. S&sub0; wird wie zuvor in das Prozessorelement 208B geladen und die verbleibenden Syndrome werden in die in der Schaltung 217 enthaltenen S-Register 103 geladen. Es gibt t Iterationen zum Erzeugen von σ(x) und dann t/2 Iterationen zum Erzeugen von ω(x). Die durch dieses System berechnete Funktion ω(x) hat die folgenden Koeffizienten:
  • ωk = σjSk-j+t/2
  • für k = 0, 1, ..., t/2-1.
  • Die t/2 Koeffizienten von σ(x) und die t/2 Koeffizienten von ω(x) werden dann in den Wurzelsuch- und Fehler-/Löschpegelgenerator 196 übertragen, um Fehler zu korrigieren. Wie zuvor wird eine Wurzelsuche durchgeführt und dann wird der Fehlerpegel wie folgt berechnet:
  • Obschon die Erfindung unter Bezugnahme auf bevorzugte Ausführungsformen derselben veranschaulicht und beschrieben wurde, versteht sich dem Fachmann, dass verschiedene Abänderungen in der Form und den Details vorgenommen werden können ohne vom Rahmen der Erfindung abzuweichen. Beispielsweise wurde die Erfindung hinsichtlich einer Ausführungsform beschrieben, bei welcher eine Fehlerkorrektur in Echtzeit zur Verwendung mit Fehlerkorrekturcodes, wie beispielsweise, ohne jedoch darauf beschränkt zu sein, dem Reed-Solomon Code, durchgeführt wird. Die Erfindung kann jedoch in einer beliebigen Anwendung des Berlekamp-Massey Algorithmus verwendet werden wobei die erfinderische Organisation der Zweiphasenberechnung von Wert ist. Da einer der Hauptwerte des erfinderischen Ansatzes in der Minimierung des Halbleiterbereiches einer Halbleiterimplementierung liegt, ist die Erfindung im Vergleich zu früheren Ansätzen immer dann von Nutzen, wenn der von dem betreffenden Chip eingenommene Raum von Bedeutung ist.
  • TABELLE 1 Fehlerlokalisierungsiteration 1
  • Iteration: 1 Phase: A Takt: 1 Erhalte Bit 0 von S&sub0;σ&sub0; initialisiere τ&sub0;
  • Iteration: 1 Phase: A Takt: 2 Erhalte Bit 1 von S&sub0;σ&sub0; initialisiere τ&sub0;
  • Iteration: 1 Phase: A Takt: 3 Erhalte Bit 2 von S&sub0;σ&sub0; initialisiere τ&sub0;
  • Iteration: 1 Phase: A Takt: 4 Erhalte Bit 3 von S&sub0;σ&sub0; initialisiere τ&sub0;
  • Iteration: 1 Phase: A Takt: 5 Erhalte Bit 4 von S&sub0;σ&sub0; initialisiere τ&sub0;
  • Iteration: 1 Phase: A Takt: 6 Erhalte Bit 5 von S&sub0;σ&sub0; initialisiere τ&sub0;
  • Iteration: 1 Phase: A Takt: 7 Erhalte Bit 6 von S&sub0;σ&sub0; initialisiere τ&sub0;
  • Iteration: 1 Phase: A Takt: 8 Erhalte Bit 7 von S&sub0;σ&sub0; initialisiere τ&sub0; dn verfügbar
  • Iteration: 1 Phase: B Takt: 1 Aktualisiere Bit 0 von σ&sub1; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 1 Phase: B Takt: 2 Aktualisiere Bit 1 von σ&sub1; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 1 Phase: B Takt: 3 Aktualisiere Bit 2 von σ&sub1; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 1 Phase: B Takt: 4 Aktualisiere Bit 3 von σ&sub1; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 1 Phase: B Takt: 5 Aktualisiere Bit 4 von σ&sub1; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 1 Phase: B Takt: 6 Aktualisiere Bit 5 von σ&sub1; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 1 Phase: B Takt: 7 Aktualisiere Bit 6 von σ&sub1; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 1 Phase: B Takt: 8 Aktualisiere Bit 7 von σ&sub1; verschiebe Syndrome um ein Bit nach vorn dn-1&supmin;¹ verfügbar
  • TABELLE 2 Fehlerlokalisierungsiteration 2
  • Iteration: 2 Phase: A Takt: 1 Erhalte Bit 0 von S&sub0;σ&sub1; + S&sub1;σ&sub0; initialisiere τ
  • Iteration: 2 Phase: A Takt: 2 Erhalte Bit 1 von S&sub0;σ&sub1; + S&sub1;σ&sub0; initialisiere τ
  • Iteration: 2 Phase: A Takt: 3 Erhalte Bit 2 von S&sub0;σ&sub1; + S&sub1;σ&sub0; initialisiere τ
  • Iteration: 2 Phase: A Takt: 4 Erhalte Bit 3 von S&sub0;σ&sub1; + S&sub1;σ&sub0; initialisiere τ
  • Iteration: 2 Phase: A Takt: 5 Erhalte Bit 4 von S&sub0;σ&sub1; + S&sub1;σ&sub0; initialisiere τ
  • Iteration: 2 Phase: A Takt: 6 Erhalte Bit 5 von S&sub0;σ&sub1; + S&sub1;σ&sub0; initialisiere τ
  • Iteration: 2 Phase: A Takt: 7 Erhalte Bit 6 von S&sub0;σ&sub1; + S&sub1;σ&sub0; initialisiere τ
  • Iteration: 2 Phase: A Takt: 8 Erhalte Bit 7 von S&sub0;σ&sub1; + S&sub1;σ&sub0; initialisiere τ dn verfügbar
  • Iteration: 2 Phase: B Takt: 1 Aktualisiere Bit 0 von σ&sub1; und σ&sub2; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 2 Phase: B Takt: 2 Aktualisiere Bit 1 von σ&sub1; und σ&sub2; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 2 Phase: B Takt: 3 Aktualisiere Bit 2 von σ&sub1; und σ&sub2; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 2 Phase: B Takt: 4 Aktualisiere Bit 3 von σ&sub1; und σ&sub2; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 2 Phase: B Takt: 5 Aktualisiere Bit 4 von σ&sub1; und σ&sub2; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 2 Phase: B Takt: 6 Aktualisiere Bit 5 von σ&sub1; und σ&sub2; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 2 Phase: B Takt: 7 Aktualisiere Bit 6 von σ&sub1; und σ&sub1; verschiebe Syndrome um ein Bit nach vorn
  • Iteration: 2 Phase: B Takt: 8 Aktualisiere Bit 7 von σ&sub1; und σ&sub2; verschiebe Syndrome um ein Bit nach vorn dn-1&supmin;¹ verfügbar
  • TABELLE 3 Fehlerlokalisierungsiteration 8
  • Iteration: 8 Phase: A Takt: 1 Erhalte Bit 0 von S&sub0;σ&sub7; + S&sub1;σ&sub6; + ... + S&sub7;σ&sub0; aktualisiere τ, verschiebe Syndrome rückwärts
  • Iteration: 8 Phase: A Takt: 2 Erhalte Bit 1 von S&sub0;σ&sub7; + S&sub1;σ&sub6; + ... + S&sub7;σ&sub0; aktualisiere τ, verschiebe Syndrome rückwärts
  • Iteration: 8 Phase: A Takt: 3 Erhalte Bit 2 von S&sub0;σ&sub7; + S&sub1;σ&sub6; + ... + S&sub7;σ&sub0; aktualisiere τ, verschiebe Syndrome rückwärts
  • Iteration: 8 Phase: A Takt: 4 Erhalte Bit 3 von S&sub0;σ&sub7; + S&sub1;σ&sub6; + ... + S&sub7;σ&sub0; aktualisiere τ, verschiebe Syndrome rückwärts
  • Iteration: 8 Phase: A Takt: 5 Erhalte Bit 4 von S&sub0;σ&sub7; + S&sub1;σ&sub6; + ... + S&sub7;σ&sub0; aktualisiere τ, verschiebe Syndrome rückwärts
  • Iteration: 8 Phase: A Takt: 6 Erhalte Bit 5 von S&sub0;σ&sub7; + S&sub1;σ&sub6; + ... + S&sub7;σ&sub0; aktualisiere τ, verschiebe Syndrome rückwärts
  • Iteration: 8 Phase: A Takt: 7 Erhalte Bit 6 von S&sub0;σ&sub7; + S&sub1;σ&sub6; + ... + S&sub7;σ&sub0; aktualisiere τ, verschiebe Syndrome rückwärts
  • Iteration: 8 Phase: A Takt: 8 Erhalte Bit 7 von S&sub0;σ&sub7; + S&sub1;σ&sub6; + ... + S&sub7;σ&sub0; aktualisiere τ, verschiebe Syndrome rückwärts dn verfügbar
  • Iteration: 8 Phase: B Takt: 1 Aktualisiere Bit 0 von σ&sub1;, σ&sub2; ... , σ&sub8; verschiebe Syndrome um ein Bit nach hinten
  • Iteration: 8 Phase: B Takt: 2 Aktualisiere Bit 1 von σ&sub1;, σ&sub2; ... , σ&sub8; verschiebe Syndrome um ein Bit nach hinten
  • Iteration: 8 Phase: B Takt: 3 Aktualisiere Bit 2 von σ&sub1;, σ&sub2; ... , σ&sub8; verschiebe Syndrome um ein Bit nach hinten
  • Iteration: 8 Phase: B Takt: 4 Aktualisiere Bit 3 von σ&sub1;, σ&sub2; ... , σ&sub8; verschiebe Syndrome um ein Bit nach hinten
  • Iteration: 8 Phase: B Takt: 5 Aktualisiere Bit 4 von σ&sub1;, σ&sub2; ... , σ&sub8; verschiebe Syndrome um ein Bit nach hinten
  • Iteration: 8 Phase: B Takt: 6 Aktualisiere Bit 5 von σ&sub1;, σ&sub2; ... , σ&sub8; verschiebe Syndrome um ein Bit nach hinten
  • Iteration: 8 Phase: B Takt: 7 Aktualisiere Bit 6 von σ&sub1;, σ&sub2; ... , σ&sub8; verschiebe Syndrome um ein Bit nach hinten
  • Iteration: 8 Phase: B Takt: 8 Aktualisiere Bit 7 von σ&sub1;, σ&sub2; ... , σ&sub8; verschiebe Syndrome um ein Bit nach hinten

Claims (11)

1. Fehlerdecoder (199), der eine Mehrzahl von Iterationen einschließlich mindestens einer ersten Iteration und einer zweiten Iteration einer Reed-Solomon-Decodierungsprozedur ausführt, um Koeffizienten eines Fehlerlokalisierungspolynoms zu erhalten, wobei jede Iteration eine erste Phase und eine zweite Phase einschließt und wobei der Decoder versehen ist mit:
einer Reihe von Syndromregistern (B103) zum Speichern von Syndromwerten zumindest während der ersten Phase jeder Iteration;
einer Reihe von Fehlerlokalisierungsregistern (B101) zum Ansammeln von aktualisierten Werten für Koeffizienten des Fehlerlokalisierungspolynoms während der zweiten Phase der zweiten Iteration, wobei die Reihe der Fehlerlokalisierungsregister (B101) während der ersten Phase der zweiten Iteration eingespeicherte Werte für die während der zweiten Phase der ersten Iteration erhaltenen Koeffizienten enthält;
einer Reihe von Zwischenregistern (B102), um während der ersten Phase der zweiten Iteration aktualisierte Werte für Koeffizienten eines Zwischenpolynoms darin zu akkumulieren, und um die aktualisierten Werte für die Koeffizienten des Zwischenpolynoms während der zweiten Phase der zweiten Iteration zu speichern; und
einer Registeraktualisierungsschaltung (50), die während der ersten Phase der zweiten Iteration die aktualisierten Werte für die Koeffizienten des Zwischenpolynoms in der Reihe der Zwischenregister (B102) sammelt und die während der zweiten Phase der zweiten Iteration die aktualisierten Werte für die Koeffizienten des Fehlerlokalisierungspolynoms in der Reihe der Fehlerlokalisierungsregister (B101) sammelt.
2. Reed-Solomon-Decoder versehen mit:
einer Reihe von Syndromregistern (B103) zum Speichern von Syndromwerten;
einer Reihe von Fehlerlokalisierungsregistern (B101) zum Sammeln von Koeffizienten eines Fehlerlokalisierungspolynoms;
einer Reihe von Zwischenregistern (B101) zum Sammeln von Koeffizienten eines Zwischenpolynoms;
einer iterativen Registeraktualisierungsschaltung (50), die versehen ist mit:
einer Schaltung (209) zum Bestimmen von Diskrepanzen, welche multiplikative Produkte addiert, um eine vorliegende Diskrepanz dn während der n ten Iteration zu erhalten, wobei jedes multiplikative Produkt aus Werten abgeleitet wird, die in gepaarten der Syndromregister (B103) und der Fehlerlokalisierungsregister (B101) gespeichert sind;
einer Diskrepanzinversionsschaltung (212), die ein Inverses dn&supmin;¹ der Diskrepanz bestimmt; und
einer Aktualisierungsmultiplizierschaltung (218), die während der n-ten Iteration selektiv einen von einem Inversen dn-1&supmin;¹ der Diskrepanz einer vorherigen Iteration n-1 abgeleiteten Wert mit den Koeffizienten in den Fehlerlokalisierungsregistern (B101) selektiv multipliziert, um Werte zur Verwendung beim Aktualisieren der in den Zwischenregistern (B102) gespeicherten Koeffizienten zu erhalten, und die, nachdem die Zwischenregister (B102) aktualisiert wurden, einen von der vorliegenden Diskrepanz dn abgeleiteten Wert mit den Koeffizienten in den Zwischenregistern (B102) multipliziert, um Werte zum Aktualisieren der in den Fehlerlokalisierungsregistern (B101) gespeicherten Koeffizienten zu erhalten.
3. Decoder nach den Ansprüchen 1 oder 2, bei welchem die Syndromwerte in einer α-Basis-Darstellung in der Reihe von Syndromregistern (B103) gespeichert werden, wobei die Koeffizienten des Fehlerlokalisierungspolynoms in einer β-Basis-Darstellung in der Reihe der Fehlerlokalisierungsregister (B101) gesammelt/gespeichert werden und wobei die Koeffizienten des Zwischenpolynoms in einer β-Basis-Darstellung in der Reihe der Zwischenregister (B102) gesammelt/gespeichert werden.
4. Decoder nach Anspruch 1, bei welchem die Reihe der Syndromregister (B103) eine Mehrzahl von Syndromregistern umfasst, wobei die Reihe der Fehlerlokalisierungsregister (B101) eine Mehrzahl von Fehlerlokalisierungsregistern umfasst, und wobei die Reihe der Zwischenregister (B102) eine Mehrzahl von Zwischenregistern umfasst, wobei jedes Syndromregister mit einem der Fehlerlokalisierungsregister gepaart ist, um ein Syndrom-/Lokalisierungsregister-Paar zu bilden, und wobei jedes Zwischenregister mit einem der Fehlerlokalisierungsregister gepaart ist, um ein Zwischenregister/- Lokalisierungsregister-Paar zu bilden, und wobei die Registeraktualisierungsschaltung (50) ferner versehen ist mit:
einer Schaltung (209) zum Bestimmen von Diskrepanzen, die multiplikative Produkte addiert, um einen Diskrepauzwert dn-1 während einer ersten Phase einer (n-1)-ten Iteration und einen Diskrepanzwert dn während einer ersten Phase einer n-ten Iteration zu erhalten, wobei jedes multiplikative Produkt aus Werten in einem entsprechenden Syndrom-/Lokalisierungsregister-Paar abgeleitet wurde; und
einer Diskrepanzinversionsschaltung (212) zum Bestimmen von dn-1&supmin;¹ während der (n-1)-ten Iteration.
5. Decoder nach den Ansprüchen 2 oder 4, bei welchem die Diskrepanzinversionsschaltung zum Bestimmen von dn-1&supmin;¹ dn-1&supmin;¹ in der α-Basis-Darstellung bestimmt, und bei welchem die Registeraktualisierungsschaltung ferner versehen ist mit:
einer Konvertierungsschaltung (214) zum Konvertieren von dn von einer β-Basis-Darstellung in eine α-Basis-Darstellung;
einem Diskrepanzregister (210) zum selektiven Speichern von entweder dn in der α-Basis- Darstellung oder dn-1&supmin;¹ in der α-Basis-Darstellung; und
einer Multiplizierer-Rückkopplungsschaltung (218), die mit dem Diskrepanzregister (210) verbunden ist, zum wiederholten Multiplizieren des Wertes in dem Diskrepanzregister (210) mit einer Konstanten.
6. Decoder nach den Ansprüchen 2 oder 4, bei welchem jedes multiplikative Produkt ein Produkt eines Wertes in einem ersten der Register in dem Syndrom-/Lokalisierungsregister-Paar und ein Mehrfaches eines Wertes in einem zweiten der Register in dem Syndrom-/Lokalisierungsregister-Paar ist.
7. Decoder nach Anspruch 6, bei welchem das erste der Register ein Fehlerlokalisierungsregister des Syndrom-/Lokalisierungsregister-Paares ist und das zweite der Register ein Syndromregister des Syndrom-/Lokalisierungsregister-Paares ist, und bei welchem der Decoder ferner versehen ist mit:
einer Reihe von modifizierten Syndromregistern mit einer Mehrzahl von Syndromregistern (100), die in Paarbeziehung mit entsprechenden Syndromregistern (103) in der Reihe der Syndromregister (B103) verbunden sind, wobei jedes modifizierte Syndromregister (100) angeschlossen ist, um einen Syndromwert von dem entsprechenden Syndromregister (103), mit welchem das modifizierte Syndromregister (100) in Paarbeziehung steht, zu erhalten; und
einer Multiplizierer-Rückkopplungsschaltung (105), die mit jedem modifizierten Syndromregister (100) verbunden ist, um den Wert in dem modifizierten Syndromregister (100) wiederholt mit einer Konstanten zur Verwendung beim Erhalten des multiplikativen Produktes zu multiplizieren.
8. Prozessorelement einer Fehlerkorrekturschaltung für einen Reed-Solomon-Decoder, wobei das Prozessorelement versehen ist mit:
einem Fehlerlokalisierungsregister (101) zum Einspeichern eines Koeffizienten eines Fehlerlokalisierungspolynoms;
einem Zwischenregister (102) zum Einspeichern eines Koeffizienten für ein Zwischenpolynom; und
einer Aktualisierungsmultipliziererschaltung (110), die selektiv den Koeffizienten in dem Fehlerlokalisierungsregister (101) mit einem ersten Eingabewert multipliziert, um einen Koeffizienten zur Eingabe in ein erstes benachbartes Prozessorelement zu erhalten und die, nachdem das Zwischenregister (102) mit einem Koeffizienten von einem benachbarten Prozessorelement aktualisiert wurde, einen zweiten Eingabewert mit dem Koeffizienten in dem Zwischenregister (102) multipliziert, um einen Wert zum Aktualisieren des in dem Fehlerlokalisierungsregister (101) gespeicherten Koeffizienten zu erhalten.
9. Prozessorelement nach Anspruch 8, bei welchem der Koeffizient des Fehlerlokalisierungspolynoms in einer β-Basis-Darstellung in dem Fehlerlokalisierungsregister (101) gespeichert wird, und bei welchem der Koeffizient des Zwischenpolynoms in einer β-Basis-Darstellung in dem Zwischenregister (102) gespeichert wird, und wobei das Prozessorelement ferner versehen ist mit:
einem Syndromregister (103);
einem Diskrepanzausgabemultiplizierer (107), der von in dem Syndromregister (103) und dem Fehlerlokalisierungsregister (101) gespeicherten Werten abgeleitete Terme multipliziert, wobei der Diskrepanzausgabemultiplizierer einen Wert in dem Fehlerlokalisierungsregister (101) und ein Vielfaches eines Wertes in dem Syndromregister (103) multipliziert;
einem modifizierten Syndromregister (100), welches angeschlossen ist, um einen Syndromwert von dem Syndromregister (103) zu erhalten; und
einer Multipliziererrückkopplungsschaltung (105), die mit dem modifizierten Syndromregister (100) verbunden ist, um den Wert in dem modifizierten Syndromregister (103) wiederholt mit einer Konstanten zu multiplizieren, wobei ein Ausgang des modifizierten Syndromregisters (100) mit dem Diskrepanzausgabemultiplizierer (107) verbunden ist.
10. Verfahren zum Erhalten eines Fehlerlokalisierungspolynoms als Teil der Decodierung eines Reed- Solomon-Codeworts während einer Mehrzahl von Iterationen einer Decodierschaltung, die mindestens eine frühere Iteration und eine derzeitige Iteration beinhalten, wobei jede Iteration eine erste Phase und eine zweite Phase einschließt, wobei im Zuge des Verfahrens:
Syndromwerte in eine Reihe von Syndromregistern (B103) geladen und die Syndromwerte in den Syndromregistern zumindest während der ersten Phase jeder Iteration gespeichert werden;
in einer Reihe von Fehlerlokalisierungsregistern (B101) während der ersten Phase der derzeitigen Iteration Werte für Koeffizienten des Fehlerlokalisierungspolynoms, die während einer vorhergehenden Iteration gesammelt wurden, gespeichert werden;
während der ersten Phase einer derzeitigen Iteration die in der Reihe der Fehlerlokalisierungsregister (B101) während der ersten Phase der derzeitigen Iteration gespeicherten Koeffizienten des Fehlerlokalisierungspolynoms verwendet werden, um aktualisierte Werte für Koeffizienten eines Zwischenpolynoms zu sammeln, wobei die Koeffizienten des Zwischenpolynoms in einer Reihe von Zwischenregistern (B102) gespeichert werden; und
während der zweiten Phase der derzeitigen Iteration die Koeffizienten des Zwischenpolynoms, die dann in der Reihe der Zwischenregister (B102) gespeichert werden, verwendet werden, um aktualisierte Werte für die Koeffizienten des Fehlerlokalisierungspolynoms in den Fehlerlokalisierungsregistern zu sammeln.
11. Verfahren zum Erhalten eines Fehlerlokalisierungspolynoms als Teil der Decodierung eines m-Bit- Reed-Solomon-Codeworts während einer Zahl m von Iterationen einer Decodierschaltung, die mindestens eine vorherige Iteration und eine derzeitige Iteration einschließen, wobei jede Iteration eine erste Phase und eine zweite Phase einschließt, wobei im Zuge des Verfahrens:
elektrische m-Bit-Signale, die kennzeichnend für Syndromwerte in einer Reihe von Syndromregistern (B103) sind, geladen werden und die für die Syndrome kennzeichnenden elektrischen Signale in den Syndromregistern während mindestens der ersten Phase jeder Iteration gespeichert werden;
in einer Reihe von Fehlerlokalisierungsregistern (B101) während der ersten Phase einer derzeitigen Iteration elektrische Signale gespeichert werden, die Werten für Koeffizienten des während einer vorherigen Iteration gesammelten Fehlerlokalisierungspolynoms entsprechen;
die elektrischen Signale, die Werten für die Koeffizienten des Fehlerlokalisierungspolynoms entsprechen, die während der ersten Phase einer derzeitigen Iteration in der Reihe von Fehlerlokalisierungsregistern (B101) gespeichert wurden, während der ersten Phase der derzeitigen Iteration benutzt werden, um elektrische Signale zu erzeugen, die angesammelten aktualisierten Werten für Koeffizienten eines Zwischenpolynoms entsprechen, wobei die elektrischen Signale den in einer Reihe von Zwischenregistern (B102) gespeicherten Koeffizienten des Zwischenpolynoms entsprechen;
während der zweiten Phase der derzeitigen Iteration die elektrischen Signale, die den Koeffizienten des Zwischenpolynoms entsprechen, die dann in der Reihe der Zwischenregister (B102) gespeichert werden, benutzt werden, um elektrische Signale zu erzeugen, die gesammelten aktualisierten Werten für die Koeffizienten des Fehlerlokalisierungspolynoms in den Fehlerlokalisierungsregistern (B101) entsprechen; und
die gesammelten aktualisierten Werte für die Koeffizienten des Fehlerlokalisierungspolynoms entsprechenden elektrischen Signale in den Fehlerlokalisierungsregistern verwendet werden, um das Codewort zu korrigieren.
DE69424877T 1993-11-04 1994-10-18 Reed-solomon-dekoder Expired - Fee Related DE69424877T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14765093A 1993-11-04 1993-11-04
PCT/US1994/012136 WO1995012850A1 (en) 1993-11-04 1994-10-18 Reed-solomon decoder

Publications (2)

Publication Number Publication Date
DE69424877D1 DE69424877D1 (de) 2000-07-13
DE69424877T2 true DE69424877T2 (de) 2001-01-04

Family

ID=22522365

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69424877T Expired - Fee Related DE69424877T2 (de) 1993-11-04 1994-10-18 Reed-solomon-dekoder

Country Status (6)

Country Link
US (1) US5446743A (de)
EP (1) EP0729611B1 (de)
JP (1) JPH09507117A (de)
DE (1) DE69424877T2 (de)
SG (1) SG47466A1 (de)
WO (1) WO1995012850A1 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970004515B1 (ko) * 1993-12-29 1997-03-28 삼성전자 주식회사 리드-솔로몬 복호기의 오류위치다항식 연산방법 및 장치
US6125469A (en) * 1994-10-18 2000-09-26 Cirrus Logic, Inc. Error correction method and apparatus
KR0135824B1 (ko) * 1994-11-10 1998-05-15 윤종용 오류 위치 및 추정 다항식 계산방법 및 이를 이용한 리드-솔로몬 복호기
US5715262A (en) * 1995-07-12 1998-02-03 Lsi Logic Corporation Errors and erasures correcting reed-solomon decoder
US5701314A (en) * 1995-12-21 1997-12-23 Cirrus Logic, Inc. On-the-fly error correction using thermal asperity erasure pointers from a sampled amplitude read channel in a magnetic disk drive
FR2743912B1 (fr) * 1996-01-24 1998-04-10 Matra Communication Circuit de resolution d'equation-cle et decodeur reed-solomon incorporant un tel circuit
US5844919A (en) * 1996-09-16 1998-12-01 Cirrus Logic, Inc. Sector and track level error correction system for disc storage systems
US5872800A (en) * 1996-09-16 1999-02-16 Cirrus Logic, Inc. Write verify method for correcting unrecoverable sectors in a disc storage system using track level redundancy
US5701304A (en) * 1996-09-16 1997-12-23 Cirrus Logic, Inc. Method for correcting unrecoverable sectors using track level redundancy in a disc drive storage system
US5751733A (en) * 1996-09-16 1998-05-12 Cirrus Logic, Inc. Interleaved redundancy sector for correcting an unrecoverable sector in a disc storage device
GB2318954B (en) * 1996-10-29 2001-05-23 Daewoo Electronics Co Ltd Reed-solomon decoder for use in advanced television
KR100200770B1 (ko) * 1996-12-20 1999-06-15 윤종용 에러정정방법 및 장치
JPH113573A (ja) * 1997-04-15 1999-01-06 Mitsubishi Electric Corp 拡大リードソロモン符号の誤り訂正復号方法と誤り訂正復号装置、1次伸長拡大リードソロモン符号の誤り訂正方法と誤り訂正装置、および2次伸長拡大リードソロモン符号の誤り訂正方法と誤り訂正装置
US5974580A (en) * 1997-07-23 1999-10-26 Cirrus Logic, Inc. Concurrent row/column syndrome generator for a product code
US5991911A (en) * 1997-11-14 1999-11-23 Cirrus Logic, Inc. Concurrent generation of ECC error syndromes and CRC validation syndromes in a DVD storage device
US5996105A (en) * 1997-11-14 1999-11-30 Cirrus Logic, Inc. ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes
US6052815A (en) * 1997-11-14 2000-04-18 Cirrus Logic, Inc. ECC system for generating a CRC syndrome over randomized data in a computer storage device
US6047395A (en) * 1998-01-30 2000-04-04 Cirrus Logic, Inc. Error correction processor for correcting a multi-dimensional code by generating an erasure polynomial over one dimension for correcting multiple codewords in another dimension
US6332206B1 (en) * 1998-02-25 2001-12-18 Matsushita Electrical Industrial Co., Ltd. High-speed error correcting apparatus with efficient data transfer
US6272659B1 (en) 1998-05-18 2001-08-07 Cirrus Logic, Inc. Error correction code processor employing adjustable correction power for miscorrection minimization
US6415413B1 (en) 1998-06-18 2002-07-02 Globespanvirata, Inc. Configurable Reed-Solomon controller and method
US6412090B1 (en) 1998-06-18 2002-06-25 Globespanvirata, Inc. Galois field computation system and method
US6370671B1 (en) 1998-06-18 2002-04-09 Globespan, Inc. Configurable decoder and method for decoding a reed-solomon codeword
US6317858B1 (en) * 1998-11-09 2001-11-13 Broadcom Corporation Forward error corrector
US6662336B1 (en) 1999-07-06 2003-12-09 Cirrus Logic, Inc. Error correction method and apparatus
US20080282128A1 (en) * 1999-08-04 2008-11-13 Super Talent Electronics, Inc. Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance
JP3352659B2 (ja) * 2000-03-27 2002-12-03 松下電器産業株式会社 復号装置及び復号方法
US6694476B1 (en) * 2000-06-02 2004-02-17 Vitesse Semiconductor Corporation Reed-solomon encoder and decoder
KR100370239B1 (ko) 2000-10-25 2003-01-29 삼성전자 주식회사 고속 블럭 파이프라인 구조의 리드-솔로몬 디코더에적용하기 위한 메모리 장치와 메모리 액세스 방법 및 그메모리 장치를 구비한 리드-솔로몬 디코더
GB2380297B (en) * 2000-10-25 2003-09-10 Samsung Electronics Co Ltd Reed-solomon decoder including memory device
US6961197B1 (en) * 2001-12-28 2005-11-01 Marvell International Ltd. Correcting errors in disk drive read back signals by iterating with the Reed-Solomon decoder
US7751138B1 (en) 2001-12-28 2010-07-06 Marvell International Ltd. Correcting errors in disk drive read back signals by iterating with the Reed-Solomon decoder
US7467346B2 (en) * 2005-08-18 2008-12-16 Hitachi Global Storage Technologies Netherlands, B.V. Decoding error correction codes using a modular single recursion implementation
US7624330B2 (en) * 2005-12-12 2009-11-24 Lsi Corporation Unified memory architecture for recording applications
US7661057B2 (en) * 2006-02-01 2010-02-09 Broadcom Corporation Clocking Chien searching at different frequency than other Reed-Solomon (RS) ECC decoding functions
US7814374B2 (en) * 2007-01-19 2010-10-12 International Business Machines Corporation System and method for the capture and preservation of intermediate error state data
US8732558B1 (en) * 2007-04-25 2014-05-20 Samsung Electronics Co., Ltd. MPE-FEC system capable of selecting an FEC mode, a forward error correcting method performed in the MPE-FEC system, and an FEC mode selecting method performed in the MPE-FEC system
WO2009046534A1 (en) * 2007-10-11 2009-04-16 The Royal Institution For The Advancement Of Learning/Mcgill University Methods and apparatuses of mathematical processing
DE112011102474B4 (de) 2011-10-13 2021-08-12 Hyperstone Gmbh Hybride Dekodierung von BCH-Kodes für nichtflüchtige Speicher
US9686382B2 (en) 2014-08-04 2017-06-20 Honeywell International Inc. Double decoder system for decoding overlapping aircraft surveillance signals
TWI566096B (zh) * 2015-09-11 2017-01-11 慧榮科技股份有限公司 資料儲存系統與其相關方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4777635A (en) * 1986-08-08 1988-10-11 Data Systems Technology Corp. Reed-Solomon code encoder and syndrome generator circuit
US4782490A (en) * 1987-03-16 1988-11-01 Cythera Corporation Method and a system for multiple error detection and correction
US4845713A (en) * 1987-06-08 1989-07-04 Exabyte Corporation Method and apparatus for determining the coefficients of a locator polynomial
JPH0827732B2 (ja) * 1991-01-22 1996-03-21 インターナショナル・ビジネス・マシーンズ・コーポレイション 線形代数コード復号のためのキー方程式を解く方法
US5414719A (en) * 1992-04-24 1995-05-09 Sharp Kabushiki Kaisha Operating circuit for galois field

Also Published As

Publication number Publication date
WO1995012850A1 (en) 1995-05-11
EP0729611A4 (de) 1996-10-02
DE69424877D1 (de) 2000-07-13
US5446743A (en) 1995-08-29
EP0729611A1 (de) 1996-09-04
EP0729611B1 (de) 2000-06-07
JPH09507117A (ja) 1997-07-15
SG47466A1 (en) 1998-04-17

Similar Documents

Publication Publication Date Title
DE69424877T2 (de) Reed-solomon-dekoder
DE69919199T2 (de) Vorwärtsfehlerkorrektur
DE69414631T2 (de) Schaltung zur Durchführung des Euclidschen Algorithmus bei der Dekodierung Arithmetischer Kodes
DE69834542T2 (de) Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke
DE3854791T2 (de) Reed-Solomon Code verwendendes Fehler-Korrektur-Verfahren
DE3486471T2 (de) Verfahren und Vorrichtung zur Dekodierung eines Fehler-Korrektur-Code
DE3382661T2 (de) Korrektur von fehlerbuendeln in datengruppen.
DE3879493T2 (de) Verfahren und geraet zur fehlerkorrektur.
DE4241903C2 (de) Euklidische wechselseitige Divisionsschaltung
DE3854939T2 (de) Bch-fehlerkorrekturkode-dekodierungsverfahren in echtzeitbetrieb
DE3784459T2 (de) Arithmetische und logische einheit fuer elemente von galois-feldern.
DE69516882T2 (de) Vielseitiges fehlerkorrektursystem
DE3787900T2 (de) Verfahren und Gerät zur Erzeugung von Prüfungs-Byten zur Fehlerdetektion für einen Datenblock.
DE69728945T2 (de) Reed-Solomon Dekoder
DE3852999T2 (de) Galois-feld-recheneinheit.
EP0545498B1 (de) Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen
DE69905987T2 (de) Verfahren und Gerät zur Kodierung und Signalübertragung unter Verwendung eines Sub-Codes von einem Produktcodes
DE2942825A1 (de) Verfahren und vorrichtung zur verarbeitung sequentiell uebertragender digitaler informationsworte
DE69907566T2 (de) Reed Solomon Kodierungsgerät und Reed Solomon Kodierungsverfahren
DE69020951T2 (de) Kodiereinrichtung für einen Fehlerprüfungs- und Fehlerkorrekturkode.
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE10105626B4 (de) Verfahren und System zur Berechnung von zyklischem Blockprüfungscode und Verfahren zum Erkennen eines Fehlers
DE69430519T2 (de) Verfahren und Gerät für einen Dekoder mit reduzierter Iteration
DE69522156T2 (de) Reed-Solomon Dekoder
DE60309857T2 (de) Methode zur dekodierung von reed-solomon kodes mittels feinentscheidung

Legal Events

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