DE69728945T2 - Reed-Solomon Dekoder - Google Patents

Reed-Solomon Dekoder Download PDF

Info

Publication number
DE69728945T2
DE69728945T2 DE69728945T DE69728945T DE69728945T2 DE 69728945 T2 DE69728945 T2 DE 69728945T2 DE 69728945 T DE69728945 T DE 69728945T DE 69728945 T DE69728945 T DE 69728945T DE 69728945 T2 DE69728945 T2 DE 69728945T2
Authority
DE
Germany
Prior art keywords
error
polynomial
unit
shift register
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69728945T
Other languages
English (en)
Other versions
DE69728945D1 (de
Inventor
Toshihiko Shijonawate-shi Fukuoka
Yoshihiko Muko-shi Fukumoto
Kazuhiro Ohta
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.)
Panasonic Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of DE69728945D1 publication Critical patent/DE69728945D1/de
Application granted granted Critical
Publication of DE69728945T2 publication Critical patent/DE69728945T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1525Determination and particular use of error location polynomials
    • H03M13/1535Determination and particular use of error location polynomials using the Euclid algorithm
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1555Pipelined decoder implementations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/158Finite field arithmetic processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Landscapes

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

Description

  • Diese Erfindung betrifft einen Decoder für Mehrfachfehlerkorrektur-Reed-Solomon-Codes, das heißt, einen Reed-Solomon-Decoder.
  • Der Reed-Solomon-Code ist in großem Umfang als ein Code verwendet worden, der imstande ist, mehrfache Fehler z. B. in Information, die in verschiedenen Massenspeichereinrichtungen gespeichert wird, und in Information, die bei Hochgeschwingigkeits-Kommunikation übertragen wird, zu korrigieren.
  • Wenn eine Wurzel einer Gleichung W(z) = 0α ist, wo W(z) ein primitives Polynom ist, dann ist der Reed-Solomon-Code ein Code über einem Galois-Feld, dessen Grundelement die Wurzel α ist. Der Reed-Solomon-Code ist einer der Blockfehlerkorrekturcodes. Hier sei α das Grundelement eines Galois-Feldes GF(2m), und man betrachte einen spezfischen Reed-Solomon-Code mit einer Codelänge n (n = 2m – 1) und mit Wurzeln α, α2, ..., αn. Nach diesem Reed-Solomon-Code sind m Bits eine Prozesseinheit, d. h. ein Symbol. Die Menge an ursprünglicher Information ist n – 2t Symbole. In der folgenden Beschreibung ist m = 8, und ein Symbol wird durch acht Bits, d. h. ein Byte, dargestellt. Ein empfangenes 1-Paket Wort ist aus n Symbolen gebildet. Wenn t = 8, erlaubt dies eine Fehlerkorrektur von acht Symbolen.
  • Das Decodieren von Reed-Solomon-Codes wird entsprechend den folgenden Schritten (i) bis (vi) durchgeführt. Wenn jedoch in den Schritten (iii)–(v) unsinnige Ergebnisse erhalten werden, wird entschieden, dass unkorrigierbare Fehler aufgetreten sind.
    • (i) Aus dem empfangenen Polynom Y(z), dessen Koeffizienten Symbole in einem empfangenen Wort sind, wird die Berechnung von 2t Syndromen, d. h. s1, s2, ..., s2t, durchgeführt durch: si = Y(αi) (1) Jedes Syndrom si ist ein Element des Galois-Feldes GF(2m). Das Syndrom-Polynom S(z) ist definiert durch: S(z) = s1 + s2z + ... + s22t–1 (2)
    • (ii) Wenn alle Syndrome Nullen sind, wird entschieden, dass keine Fehler vorkommen.
    • (iii) Wenn ein Nicht-Null-Syndrom existiert, werden ein Fehler-Lokalisiererpolynom σ(z) und eine Fehler-Bewerterpolynom ω(z) aus dem Syndrom-Polynom S(z) gewonnen. Das heißt, wenn ϕ(z) ein Polynom ist, werden ein Polynom σ(z) des Grades gleich oder kleiner als t und ein Polynom ω(z) des Grades gleich oder kleiner als t – 1 gefunden, die die folgenden Formeln (3) und (4) erfüllen, und die einander Elemente sind. ϕ(z)z2t + σ(z)S(z) = ω(z) (3) σ(0) = 1 (4)
    • (iv) k Wurzeln α–ju(ju = j1, j2, ..., jk) einer Gleichung σ(z) = 0 werden gefunden (k <= t). Hier ist k das Fehler-Lokalisiererpolynom σ(z), das die Zahl von Fehlern darstellt. Wenn ein Verfahren verwendet wird, das durch Ersetzen aller α–i(i = u, 1, ... n) in σ(z) bestimmt, ob σ(α–i) null ist oder nicht, wird es möglich, alle Wurzeln zu suchen. Ein solches Verfahren wird die Chien-Suche genannt. Jede der k Wurzeln α–ju ist der Kehrwert eines so genannten Fehlerlokalisieres.
    • (v) Die Ableitung des Fehler-Lokalisiererpolynoms σ(z) (d. h. σ'(z)) wird erlangt, und aus der folgenden Formel (5) werden Fehlerwerte e1, e2, ..., ek gefunden. eu = -ω(α–ju)/σ'(α–ju) (5)ω(α–ju) wird hier Fehlerbewertungswert genannt, während andererseits σ'(α–ju) Fehler-Lokalisiererpolynom-Differenzialwert genannt wird.
    • (vi) Fehlerstellen j1, j2, ..., jk werden aus k Wurzeln α–j1, α–j2, ..., α–jk gefunden, und Fehler in dem empfangenen Wort werden durch Subtraktion der Fehlerwerte w1, e2, ..., ek von Symbolen an den gefundenen Fehlerstellen in dem empfangenen Wort korrigiert.
  • Eines der Verfahren zum Finden des Fehler-Lokalisiererpolynoms σ(z) und des Fehlerbewerterpolynoms w(z) in dem Schritt (iii) ist der euklidische Algorithmus. Der euklidische Algorithmus ist eine Prozedur zum Finden von σ(z) und ω(z) durch Berechnen des größten gemeinsamen Teilerpolynoms von Z2t und S(z) durch arithmetische Operationen des euklidischen Algorithmus.
  • Eine Prozedur der arithmetischen Operation des euklidischen Algorithmus wird nun im Folgenden erörtert. In der folgenden Beschreibung wird der Grad eines Polynoms X durch degX ausgedrückt. Zuerst werden vier Polynome, bezeichnet A, B, L bzw. M wie folgt initialisiert. A = Z2t (6) B = S(z) (7) L = 0 (8) M = 1 (9)
  • Wenn degA >= degB, werden die Polynome A und L entsprechend den folgenden Formeln (14) und (11) aktualisiert, worin a der Koeffizient des Terms höchsten Grades des Polynoms A ist, und b der Koeffizient des Terms höchsten Grades des Polynoms B ist. A = bA + aBzdegA–degB (10) L = bL + aMzdegA–degB (11)
  • Als Folge einer solchen Aktualisierung nimmt degA ab, während degL zunimmt. Umgekehrt, wenn degA < degB, werden die Polynome B und M entsprechend den folgenden Formeln (12) und (13) aktualisiert. B = aB + bAzdegB–degA (12) M = aM + bLzdegB–degA (13)
  • Als Folge einer solchen Aktualisierung nimmt degB ab, während degM zunimmt. Wenn Iteration einer solchen Operation die Situation hervorbringt, dass degA <= t – 1, dann ω(z) = A und σ(z) = L. Wenn degB <= t – 1, dann ω(z) = B und σ(z) = M. Auf diese Weise werden das Fehler-Lokalisiererpolynom σ(z) und das Fehler-Bewerterpolynom ω(z) gefunden.
  • Wenn in der vorangehenden Prozedur degA >= degB, werden die Polynome A und L entsprechend den Formeln (14) und (15) aktualisiert. A = A + (a/b)BzdegA–degB (14) L = L + (a/b) MzdegA–degB (15)
  • Wenn degA < degB, werden die Polynome B und M entsprechend den Formeln (16) und (17) aktualisiert. B = B + (b/a)AzdegB–degA (16) M = M + (b/a)LzdegB–degA (17)
  • Im Folgenden wird dieses der "verbesserte Algorithmus" genannt.
  • Die japanische Patentanmeldung, veröffentlicht unter Nr. 3-195216, zeigt eine euklidische Algorithmus-Arithmetik-Operationsschaltung mit einer systolischen Array-Struktur.
  • In den letzten Jahren sind Reed-Solomon-Codes mit der Spezifikation, dass die Zahl zu korrigierender Fehler (t) von acht bis sechzehn reicht, generalisiert worden. Dies bedeutet eine erhebliche Zunahme in der in der Fehlerkorrekturverarbeitung benötigten Menge an Berechnung, und schafft daher das Problem, dass, wenn Reed-Solomon-Decoder eine systolische Array-Struktur verwenden, die Schaltungsgröße mit der Zahl von unkorrigierbaren Fehlern zunimmt.
  • Der Artikel "A New VLSI Architecture for Reed-Solomon Decoder with Erasure Function" von Chen et al. (Proceedings of IEEE Globecomm 95) stellt eine dreistufige Pipeline-VLSI-Architektur für einen Reed-Solomon-Decoder mit einer Löschfunktion bereit, die einen modifizierten euklidischen Algorithmus verwendet, um die Schlüsselgleichung zu lösen. Infolge des Modifizierens des euklidischen Algorithmus wird die zum Lösen der Reed-Solomon-Schlüsselgleichung benötigte Hardware reduziert, und die Steuerschaltung wird vereinfacht.
  • Des Weiteren zeigt US 4,649,541 einen Reed-Solomon-Decoder mit dedizierter Hardware für fünf sequentielle Algorithmen mit Gesamt-Pipelining durch Speicher-Swapping zwischen Eingabe-, Verarbeitungs- und Ausgabespeichern und internem Pipelining durch die fünf Algonthmen. Die beim Decodieren zu verwendende Code-Definition wird durch ein mit jedem Datenblock empfangenes Schlüsselwort spezifiziert, sodass eine Anzahl verschiedener Codeformate durch die gleiche Hardware decodiert werden kann.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist folglich eine Aufgabe der vorliegenden Erfindung, eine Verringerung der Schaltungsgröße des Reed-Solomon-Decoders zu erreichen, wenn die Zahl zu korrigierender Fehler groß ist.
  • Im Hinblick auf die Erfüllung einer solchen Aufgabe stellt die vorliegende Erfindung einen Reed-Solomon-Decoder mit einer neuen Organisation zur Verfügung. Dieser Reed-Solomon-Decoder umfasst (a) eine erste Einheit zum Finden eines Syndrom-Polynoms S(z) aus einem empfangenen Polynom Y(z), das aus t-Mehrfachfehlerkorrektur-Reed-Solomon-Codes besteht, (b) eine zweite Einheit zum Finden eines Fehler-Lokalisiererpolynoms σ(z) und eines Fehler-Bewerterpolynoms ω(z) durch euklidische Algorithmus-Arithmetikoperationen und zum Finden eines Fehlerwertes eu durch Durchführen von Divisionsoperationen, (c) eine dritte Einheit zum Finden einer Wurzel α–ju des Fehler-Lokalisiererpolynoms σ(z) durch die Chien-Suche und zum Bereitstellen eines Fehler-Bewertungswertes ω(α–ju) und eines Fehler-Lokalisiererpolynom-Differenzialwertes σ'(α–ju) für die zweite Einheit und (d) eine vierte Einheit zum Finden einer Fehlerstelle aus einer Wurzel α–ju und zum Finden eines fehlerkorrigierten Polynoms W(z) durch Subtrahieren des Fehlerwertes eu von einer Fehlerstelle in dem empfangenen Polynom Y(z). Außerdem verwendet der vorliegende Reed-Solomon-Decoder eine dreistufige Pipeline-Struktur, wo die drei Stufen ihren jeweiligen Ein-Paket-Zyklen entsprechen. Die erste Einheit bildet die erste Pipeline-Stufe, die zweite und dritte Einheit bilden die zweite Pipeline-Stufe, und die vierte Einheit bildet die dritte Pipeline-Stufe.
  • Efindungsgemäß werden in der zweiten Pipeline-Stufe das Fehler-Lokalisiererpolynom σ(z) und das Fehler-Bewerterpolynom ω(z) durch in der zweiten Einheit durchgeführte euklidische Algorithmus-Arithmetikoperationen erhalten. Dann wird die Wurzel α–ju des Fehler-Lokalisiererpolynoms durch die in der dritten Einheit durchgeführte Chien-Suche gefunden, und der Fehler-Bewertungswert ω(α–ju) und der Fehler-Lokalisiererpolynom-Differenzialwert σ'(α–ju) werden an die zweite Einheit übergeben, und schließlich wird der Fehlerwert eu durch Divisionsoperationen in der zweiten Einheit gefunden. Mit anderen Worten, es ist so eingerichtet, dass die zweite Einheit sowohl als ein euklidischer Algorithmus-Arithmetikoperationsrechner als auch als ein Fehlerwertrechner dient. Daher ist auch in Fällen, wo die Zahl zu korrigierender Fehler groß ist, die Erfindung in der Lage, einen Reed-Solomon-Decoder bereitzustellen, dessen Schaltungsgröße verglichen mit denen mit einer systolischen Array-Struktur kleiner ist.
  • Die zweite Einheit enthält (a) eine Datenspeichereinheit zum Speichern von Signalen, die ein Syndrom-Polynom S(z) darstellen, und Rückkopplungssignalen, die ein Zwischenergebnis einer euklidischen Algorithmus-Arithmetikoperation darstellen, und zum schließlichen Bereitstellen von Signalen, die ein Fehler-Lokalisiererpolynom σ(z) darstellen, und Signalen, die ein Fehler-Bewerterpolynom ω(z) darstellen, (b) eine arithmetische Einheit zum Erzeugen der Rückkopplungsignale aus den in der Datenspeichereinheit gespeicherten Signalen und (c) eine Steuereinheit zum Steuern der Datenspeichereinheit und der arithmetischen Einheit. Die Steuereinheit hat einen einzelnen Inverselement-Rechner, einen einzelnen Galois-Multiplizierer und einen Galois-Addierer. Entsprechend einer solchen Organisation implementiert iterativer Gebrauch des Inverselement-Rechners, des Galois-Multiplizieres und des Galois-Addieres euklidische Algorithmus-Arithmetikoperationen und Fehlerwertberechnungen mit einer kleinen Schaltung.
  • Die Datenspeichereinheit besitzt ein erstes, zweites und drittes Schieberegister, wobei das erste und das zweite Schieberegister aus Registern von 2t + 2 Stufen bestehen, und das dritte Schieberegister aus Registern von t – 1 Stufen besteht. Die Steuereinheit enthält einen Gradzähler zu Überwachen des Grades von Zwischenpolynomen in der euklidischen Algorithmus-Arithmetikoperation.
  • Das erste Schieberegister wird verwendet, um die Polynome A und L zu speichern, und das zweite Schieberegister wird verwendet, um die Polynome B und M zu speichern, vorausgesetzt, dass der Grad der Polynome A und B in einer Prozedur von euklidischen Algorithmus-Arithmetikoperationen um eins abnimmt. In einem solchen Umstand wird das dritte Schieberegister überhaupt nicht benutzt. Die euklidische Algorithmus-Arithmetikoperation wird zu der Zeit enden, wenn eines der Polynome A oder B ein Polynom eines Grades gleich oder kleiner als t – 1 wird. In einigen Fällen nimmt jedoch der Grad des Polynoms A oder des Polynoms B außergewöhnlich zu einer Zeit um zwei ab, was die "Mehrgrad"-Reduktion genannt wird. Um mit einer solchen Mehrgrad-Reduktion wirkungsvoll umzugehen, wird das dritte Schieberegister bereitgestellt. Mit anderen Worten, wenn eine solche außergewöhnliche Reduktion auftritt, wird entweder ein Schieberegister von 3t + 1 Stufen, das durch Kombinieren des ersten und dritten Schieberegisters entsteht, oder ein Schieberegister von 3t + 1 Stufen, das durch Kombinieren des zweiten und dritten Schieberegisters entsteht, verwendet
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockschaltbild, das die Organisation eines erfindungsgemäßen Reed-Solomon-Decoders zeigt.
  • 2 ist ein Zeitdiagramm, die Arbeitsweise des Reed-Solomon-Decoders von 1 zeigt.
  • 3 ist ein Blockschaltbild, das die interne Organisation einer Euklid-Algorithmus-Anthmetikoperations/Fehlerwertberechnungseinheit von 1 zeigt.
  • 4 ist ein Blockschaltbild, das die interne Organisation einer Datenspeichereinheit von 3 zeigt.
  • 5 ist ein Blockschaltbild, das die interne Organisation einer Arithmetikeinheit von 3 zeigt.
  • 6 ist ein Blockschaltbild, das die interne Organisation einer Steuereinheit von 3 zeigt.
  • 7 ist ein Diagramm, das die Einzelheiten von Speichersteuercodesignalen und Arithmetik-Steuercodesignalen zeigt, die in einem Steuercode-Generator von 6 erzeugt werden.
  • 8 ist ein Diagramm, das eine Prozedur zum Steuern der Euklid-Algorithmus-Arithmetikoperations/Fehlerwertberechnungseinheit von 3 zeigt.
  • 9 ist ein Diagramm, das eine Anfangseinstellung eines ersten Schieberegisters von 4 zeigt.
  • 10 ist ein Diagramm, das eine Anfangseinstellung eines zweiten Schieberegisters von 4 zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • 1 veranschaulicht einen erfindungsgemäß organisierten Reed-Solomon-Decoder. Dieser Reed-Solomon-Decoder besteht aus einer Syndrom-Recheneinheit 101, einer Euklid-Algorithmus-(gegenseitige Divisions) Arithmetikoperations/Fehlerwertrechen-(EV) Einheit 102, einer Chien-Sucheinheit 103, einem Datenverzögrungs-RAM (Direktzugriffsspeicher) 104 und einer Fehlerkorrektureinheit 105. Die Syndrom-Recheneinheit 101 findet aus einem empfangenen Polynom Y(z), das aus t-Mehrfach-Fehlerkorrektor-Reed-Solomon-Codes besteht, ein durch die Formel (2) definiertes Syndrom-Polynom. Genauer gesagt, das empfangene Polynom Y(z) ist ein Polynom, dessen Koeffizienten Symbole in einem empfangen Wort sind. Aus dem empfangenen Polynom Y(z) werden 2t Syndrome, d. h. s1, s2, ..., s2t, durch die Formel (1) berechnet. Wenn alte dieser 2t Syndrome Nullen sind, entscheidet die Fehlerkorrektureinheit 105, dass keine Fehler vorkommen. Die EV-Einheit 102 findet aus dem Syndrom-Polynom S(z) ein Fehler-Lokalisiererpolynom σ(z) und ein Fehler-Bewerterpolynom ω(z) entsprechend dem vorangehend erwähnten verbesserten Algorithmus. Genauer gesagt, ein Polynom σ(z) des Grades gleich oder kleiner als t und ein Polynom ω(z) des Grades gleich oder kleiner als t – 1 werden gefunden, die die Formeln (3) und (4) erfüllen und einander Elemente sind. Diese Einheit 102 wird von der Chien-Sucheinheit 103 mit k Fehler-Bewertungswerten ω(αju) und k Fehlerlokalisierer-Polynom-Differenzialwerten σ'(α–ju) versorgt, wo k <= t, und findet aus der Formel (5) k Fehlerwerte eu (e1, e2, ..., ek). Die Chien-Sucheinheit 103 findet k Wurzeln α–ju(ju = j1, j2, ..., jk) einer Gleichung von σ(z) = 0 und liefert die gefundenen k Wurzeln α–ju an die Fehlerkorrektureinheit 105. Zusätzlich zu einer solchen Funktion liefert die Einheit 103 Fehler-Bewertungswerte ω(α–ju), die durch Ersetzen jeder der k Wurzeln α–ju in dem Fehler-Bewerterpolynom ω(z) erhalten werden, und Fehlerlokalisierer-Polynom-Differenzialwerte σ'(α–ju), die durch Ersetzen jeder der k Wurzeln α–ju in einer Ableitung σ'(z) des Fehler-Lokalisiererpolynoms σ(z) erhalten werden, an die EV-Einheit 102. Das Datenverzögerungs-RAM 104 ist eine Einrichtung, durch die das empfangene Polynom Y(z) um genau zwei Paketzyklen verzögert wird. Die Fehlerkorrektureinheit 105 fin det Fehlerstellen j1, j2, ..., jk auf der Basis der von der Chien-Sucheinheit 103 empfangenen k Wurzeln α–ju, korrigiert Fehler in dem empfangenen Wort durch Subtrahieren der Fehlerwerte e1, e2, ..., ek von Symbolen an den Fehlerstellen des von dem Datenverzögerungs-RAM 104 empfangenen Polynoms Y(z) und gibt das Ergebnis der Korrektur, d. h. ein fehlerkorrigiertes Polynom W(z), aus.
  • 2 zeigt den Pipeline-Betrieb des Reed-Solomon-Decoders von 1, der aus drei Stufen besteht. In einem ersten Paketzyklus implementiert die Einheit 101 die Syndrom-Berechnung von Paket #1. In einem zweiten Paketzyklus implementiert die Einheit 102 die Euklid-Algorithmus-Arithmetikoperation von Paket #1, die Einheit 103 führt die Chien-Suche von Paket #1 durch, und die Einheit 102 implementiert die Fehlerwertberechnung von Paket #1. In einem dritten Paketzyklus liest die Einheit 105 das Paket #1 aus dem Datenverzögerungs-RAM 104 und führt dessen Fehlerkorrektur durch. Um einen solchen Pipeline-Betrieb zu verwirklichen, ist es so eingerichtet, dass die Frequenz von an die Einheiten 102 und 103 angelegten Taktsignalen (nicht gezeigt) vier Mal so hoch ist wie die der an die anderen Einheiten angelegten Taktsignale (nicht gezeigt). Dies verbessert den Wirkungsgrad der Reed-Salomon-Decodierung, wenn die Zahl von Fehlerkorrekturen, t, groß ist. In dem dritten Paketzyklus wird das Lesen von Paket #1 aus dem Datenverzögerungs-RAM 104 gleichzeitig mit dem Schreiben von Paket #3 in das Datenverzögerungs-RAM 104 durchgeführt.
  • 3 veranschaulicht die innere Organisation der EV-Einheit 102 von 1. Die in 3 gezeigte EV-Einheit 102 enthält eine Datenspeichereinheit 1, eine Arithmetikeinheit 2 und eine Steuereinheit 3. Die Datenspeichereinheit 1 speichert ein Signal 4 (Syndromsignal), das das Syndrom-Polynom S(z) darstellt, und ein Signal 19 (Rückkopplungs-Datensignal), das ein Zwischenergebnis der Euklid-Algorithmus-Arithmetikoperation darstellt, liefert ein erstes bis viertes Berechnungsdatensignal 12, 13, 14 und 15 bezüglich des Zwischenpalynoms und liefert schließlich ein Signal 9 (σ-Signal), das das Fehler-Lokalisiererpolynom σ(z) darstellt, und ein Signal 8 (ω-Signal), das das Fehler-Bewerterpolynom ω(z) darstellt. Die Datenspeichereinheit 1 hat des Weiteren die Funktion, ein Prozessfehlersignal 10 zum Zeitpunkt des Erfassens von unsinnigen Ergebnissen bereitzustellen. Die Arithmetikeinheit 2 erzeugt das Rückkopplungs-Datensignal aus dem ersten bis vierten Berechnungsdatensignal 12 bis 15. Zusätzlich zu einer solchen Funktion hat die Arithmetikeinheit 2 die Funktion des Empfangens eines Signals 6 (ω-Wertsignal), das den Fehler-Bewertungswert ω(α–ju) darstellt, und eines Signals 7 (σ-Differenzialwertsignal), das den Fehlerlokalisierer-Polynom-Differenzialwert σ'(α–ju) darstellt, und des Lieferns eines Signals 11 (Fehierwertsignal), das den Fehlerwert eu darstellt. Die Steuereinheit 3 empfängt ein Prozessanfangssignal 5, das erste Berechnungsdatensignal 12 und das dritte Berechnungsdatensignal 14 und liefert ein Speichersteuercodesignal 16 zum Steuern der Datenspeichereinheit 1 und ein Arithmetikoperations-Steuercodesignal 17 zum Steuern der Arithmetikeinheit 2. Die Steuereinheit 3 hat des Weiteren die Funktion des Bereitstellens eines Prozessbeendigungssignals 18.
  • 4 veranschaulicht den inneren Aufbau der in 3 gezeigten Datenspeichereinheit 1. In 4 ist 20 ein erster Selektor, 21 ist ein zweiter Selektor, 22 ist ein erstes Schieberegisters (A-Register), 23 ist ein zweites Schieberegister (B-Register), 24 ist ein drittes Schieberegister, und 25 ist eine Fehlerprüfeinrichtung. Entsprechend dem Speichersteuercodesignal 16 liefert der erste Selektor (sel0) 20 als ein erstes Auswählsignal 26 das Rückkopplungs-Datensignal (addatA) 19, das erste Berechnungsdatensignal (sftdtA) 12 oder ein Datensignal (intA0) mit einer Konstanten von 0. Entsprechend dem Speichersteuercodesignal 16 liefert der zweite Selektor (sel1) 21 als ein zweites Auswählsignal 27 das Rückkopplungs-Datensignal (addatB) 19, das dritte Berechnungsdatensignal (sftdtB) 14 oder ein Datensignal (intM0) mit einer Konstanten von 0. Das erste Schieberegister 22 besteht aus Registern von 2t + 2 Stufen zum Speichern von Koeffizienten von Polynomen A und L in der Euklid-Algorithmus-Anthmetikoperation. Das erste Schieberegister 22 empfängt das Syndromsignal (i1) 4, das Speichersteuercodesignal 16 und das erste Auswählsignal 26 und liefert das ω-Signal 8, das σ-Signal 9, das erste Berechnungs-Datensignal 12 und das zweite Berechnungs-Datensignal 13. Das zweite Schieberegister 23 besteht aus Registern von 2t + 2 Stufen zum Speichern von Koeffizienten von Polynomen B und M in der Euklid-Algorithmus-Arithmetikoperation. Das zweite Schieberegister 23 empfängt das Syndromsignal (i1) 4, das Speichersteuercodesignal 16 und das zweite Auswählsignal 27 und liefert das dritte Berechnungs-Datensignal 14 und das vierte Berechnungs-Datensignal 15. Des Werteren liefert das zweite Schieberegister 23 ein fünftes Berechnungs-Datensignal 30 an das erste Schieberegister 22. Das dritte Schieberegister 24 besteht aus Registern von t – 1 Stufen, die durch das Speichersteuercodesignal 16 gesteuert werden. Das dritte Schieberegister 24 liefert ein sechstes Berechnungs-Datensignal 33 an das zweite Schieberegister 23. Das erste Schieberegister 22 liefert ein siebtes Berechnungs-Datensignal 28 an das dritte Schieberegister 24. Das dritte Schieberegister 24 liefert ein achtes Berechnungs-Datensignal 32 an das erste Schieberegister 22. Das zweite Schieberegister 23 liefert ein neuntes Berechnungs-Datensignal 31 an das dritte Schieberegister 24. Die Fehlerprüfeinrichtung 25 erzeugt das Prozessfehlersignal 10 auf der Basis eines von dem ersten Schieberegister 22 gelieferten zehnten Berechnungs-Datensignals und eines von dem dritten Schieberegister 24 gelieferten elften Berechnungs-Datensignals 34.
  • Das erste Berechnungs-Datensignal 12 wird von einem Register in der (2t + 2)-ten Stufe des ersten Schieberegisters 22 geliefert. Das zweite Berechnungs-Datensignal 13 wird von einem Register in der (2t + 1)-ten Stufe des ersten Schieberegisters 22 geliefert. Das dritte Berechnungs-Datensignal 14 wird von einem Register in der (2t + 2)-ten Stufe des zweiten Schieberegisters 23 geliefert. Das vierte Berechnungs-Datensignal 15 wird von der (2t + 1)-ten Stufe des zweiten Schieberegisters 23 geliefert. Das fünfte Berechnungs-Datensignal (chg) 30 ist eines, das von allen Registern in dem zweiten Schieberegister 23 an alle Register in dem ersten Schieberegister 22 gesendet wird.
  • Wenn eine vereinte Speichereinrichtung des ersten Schieberegisters 22 und des dritten Schieberegisters 24 für das Vorkommen einer Mehrgrad-Reduktion in der Euklid-Algorithmus-Arithmetikoperation gebildet wird, wird sie so eingerichtet, dass die Register von t – 1 Stufen, die das dritte Schieberegister 24 bilden, zwischen das Zweitstufen-Register und das Drittstufen-Register des ersten Schieberegister 22 geschaltet werden. Das siebte Berechnungs-Datensignal (usraen) 28 ist eines, das von dem Zweitstufen-Register des ersten Schieberegisters 22 an das Erststufen-Register des dritten Schieberegisters 24 geliefert wird. Das achte Berechnungs-Datensignal (naen) 32 ist eines, das von dem Register der (t – 1)-ten Stufe des dritten Schieberegisters 24 an das Drittstufen-Register des ersten Schieberegisters 22 geliefert wird.
  • Wenn eine vereinte Speichereinrichtung des zweiten Schieberegisters 23 und des dritten Schieberegisters 24 für das Vorkommen einer Mehrgrad-Reduktion in der Euklid-Algorithmus-Arithmetikoperation gebildet wird, wird sie so eingerichtet, dass die Register von t – 1 Stufen, die das dritte Schieberegister 24 bilden, zwischen das Zweitstufen-Register und das Drittstufen-Register des zweiten Schieberegister 23 geschaltet werden. Das neunte Berechnungs-Datensignal (usrben) 31 ist eines, das von dem Zweitstufen-Register des zweiten Schieberegisters 23 an das Erststufen-Register des dritten Schieberegisters 24 geliefert wird. Das sechste Berechnungs-Datensignal (nben) 33 ist eines, das von dem Register der (t – 1)-ten Stufe des dritten Schieberegisters 24 an das Drittstufen-Register des zweiten Schieberegisters 23 geliefert wird.
  • Das zehnte Berechnungs-Datensignal 20 wird von Registern von t – 1 Stufen von der (t + 4)-ten Stufe bis zur (2t + 2)-ten Stufe des ersten Schieberegisters 22 zur Verarbeitungsfehlerprüfung bereitgestellt. Das elfte Berechnungs-Datensignal 34 wird von Registern von t – 1 Stufen des dritten Schieberegister 24 zur Verarbeitungsfehlerprüfung geliefert. Das ω-Signal 8 wird von Registern von t Stufen von der (t + 3)-ten Stufe bis zur (2t + 2)-ten Stufe des ers ten Schieberegisters 22 geliefert. Das σ-Signal 9 wird von Registern von t + 1 Stufen von der zweiten Stufe bis zur (t + 2)-ten Stufe des ersten Schieberegisters 22 geliefert. Zum Zeit punkt des Vorkommens einer Mehrgrad-Reduktion wird jedoch das σ-Signal 9 von Registern von t Stufen von der dritten Stufe bis zur (t + 2)-ten Stufe des ersten Schieberegisters 22 sowie von dem Register der (t – 1)-ten Stufe des dritten Schieberegisters 24 geliefert.
  • 5 ist ein Blockschaltbild, dass den inneren Aufbau der in 3 gezeigten Arithmetikeinheit zeigt. In 4 ist 40 ein Arithmetik-Eingangsselektor, 41 ist ein Inverselement-Rechner, 42 ist ein erstes Register, 43 ist ein Galois-Multiplizierer, 44 ist ein Galois-Addierer, und 45 ist zweites Register. Der Arithmetik-Eingangsselektor 40 enthält einen dritten Selektor 64, einen vierten Selektor 65 und einen fünften Selektor 66. Entsprechend dem Arithmetik-Steuercodesignal 17 liefert der dritte Selektor (ca10) 64 das erste Berechnungs-Datensignal (rvdtA) 12, das dritte Berechnungs-Datensignal (rvdtB) 14, das zweite Berechnungs-Datensignal (prvatA) 13, das vierte Berechnungs-Datensignal (prvdtB) 15 oder das σ-Differenzialwertsignal (sgmd) 7 als ein drittes Auswählsignal 46. Entsprechend dem Arithmetik-Steuercodesignal 17 liefert der vierte Selektor (ca11) 65 das ω-Wertsignal (omgmgn) 6, das erste Berechnungs-Datensignal (mldtA) 12, das dritte Berechnungs-Datensignal (mldtB) 14, das zweite Berechnungs-Datensignal (pmldtA) 13 oder das vierte Berechnungs-Datensignal (pmldtB) 15 als viertes Auswählsignal 47. Entsprechend dem Arihmetik-Steuercodesignal 17 liefert der fünfte Selektor (ca12) 66 das erste Berechnungs-Datensignal (addtA) 12, das dritte Berechnungs-Datensignal (addtB) 14, das zweite Berechnungs-Datensignal (paddtA) 13, das vierte Berechnungs-Datensignal (paddtB) 15, ein erstes Konstantdatensignal (addtB2) oder ein zweites Konstantdatensignal (evalcst) als ein fünftes Auswählsignal 48. Der Inverselement-Rechner 41 liefert den Kehrwert des dritten Auswählsignals 46 als ein Inverselement-Datensignal 49. Das erste Register 42 hält und liefert das Inverselement-Datensignal 49 als ein Zwischendatensignal 50. Der Galois-Multiplizierer 43 liefert das Produkt des Zwischendatensignals 50 und des aktivierten vierten Auswählsignals (sben) 47 als ein Produktdatensignal 51. Das erste Register 42 kann das von dem Galois-Multiplizierer 43 gelieferte Produktdatensignal 51 halten und das Produktdatensignal 51 als das Zwischendatensignal 50 an den Galois-Multiplizierer 43 liefern. Das Arithmetik-Steuercodesignal 17 bestimmt, ob das Inverselement-Datensignal (revdat) 49 oder das Produktdatensignal (revdmul) 51 in dem ersten Register 42 gehalten werden soll. Der Galois-Addierer 44 liefert die Summe des Produktdatensignals 51 und des aktivierten fünften Auswählsignals (saen) 48 als das Summendatensignal 52. Als Reaktion auf das Arithmetik-Steuercodesignal 17 hält das zweite Register 45 das Summendatensignal (mul) 52 und liefert es entweder als das Rückkopplungs-Datensignal 19 oder als das Fehlerwertsignal 11.
  • Nun auf 6 verweisend wird der innere Aufbau der Steuereinheit 3 von 3 beschrieben. In 6 ist 60 ein Gradzähler, 61 ist ein Timing-Generator, und 62 ist ein Steuercodegenerator. Wenn dem Gradzähler 60 das Prozessanfangssignal 5 zugeführt wird, beginnt der Gradzähler 60 zu zählen, und fährt fort, den Grad der Zwischenpolynome in der Euklid-Algorithmus-Arithmetikoperation zu überwachen. Genauer gesagt, der Gradzähler 60 beobachtet fortwährend das erste Berechnungs-Datensignal 12 und das dritte Berechnungs-Datensignal 14 und gibt das Prozessbeendigungssignal 18 aus, wenn degA oder degB unter t fällt. Wenn dem Timing-Generator 61 das Prozessanfangssignal 5 zugeführt wird, beginnt der Timing-Generator 61 zu arbeiten und stellt ein Steuer-Timingsignal 63 bereit, während er auf das erste Berechnungs-Datensignal 12 und auf das dritte Berechnungs-Datensignal 14 Bezug nimmt. Nach Empfang des Prozessanfangssignals 5 und des Steuer-Timingsignals 63 erzeugt der Steuercodegenerator 62 das Speichersteuercodesignal 16 und das Arithmetik-Steuercodesignal 17.
  • 7 zeigt im Einzelnen das Speichersteuercodesignal 16 und das Arithmetik-Steuercodesignal 17, die in dem in 6 gezeigten Steuercodegenerator 62 erzeugt werden. Jedes dieser Steuercodesignale 16 und 17 wird durch einen Steuercode von 15 Bits implementiert. In 7 ist Bit 14 mit "sregen-ctlB" bezeichnet, Bit 13 ist mit "sregen-ctlA" bezeichnet, Bits 12, 11 und 14 sind mit "adin-ctl[2:0]" bezeichnet, Bit 9 ist mit "breg-ctl" bezeichnet, Bits 8 und 7 sind mit "mulreg-cd[1:0]" bezeichnet, Bits 6, 5 und 4 sind mit "mulin-ctl[2:0]", Bits 3, 2 und 1 sind mit "reg-ctl[2:0]" bezeichnet, und Bit 0 ist mit "initreg-ctl" bezeichnet.
  • 8 ist ein Diagramm, das eine Prozedur zum Steuern der Operation der EV-Einheit 102 zeigt. In 8 gezeigte Adressen sind solche, die wie das Timingsignal 63 von dem Timing-Generator 61 an den Steuercodegenerator 62 geliefert werden, und die 15 Bits, die einen Steuercode von 8 bilden, sind die gleichen wie die in 7 beschriebenen.
  • Arithmetische Operationen des euklidischen Algorithmus in der Einheit 102 werden nun erklärt. 9 ist ein Diagramm, das eine Anfangseinstellung des ersten Schieberegisters 22 zeigt. 10 ist ein Diagramm, das eine Anfangseinstellung des zweiten Schieberegisters 23 zeigt. Wie in 5 gezeigt, werden von den 2t Syndromen (s1, s2, ..., s2t), die als das Syndromsignal 4 geliefert werden, 2t – 1 Syndrome, mit Ausnahme des Syndroms s2t bezuglich des höchsten Grades, in Registern von 2t – 1 Stufen von der vierten Stufe bis zur (2t + 2)-ten Stufe des ersten Schieberegisters 22 gespeichert. Konstantdaten 0 werden im Erststufen-Register gespeichert. Konstantdaten 1 werden im Zweitstufen-Register gespeichert. Konstantdaten 0 werden im Drittstufen-Register gespeichert. Die Erst- und Zweitstufen-Register stellen Anfangskoeffizienten des Polynoms L dar. Die Register von 2t Stufen von der dritten Stufe bis zur (2t + 2)-ten Stufe stellen Anfangskoeffizienten des Polynoms A dar. Andererseits werden, wie in 10 gezeigt, die 2t Syndrome (s1, s2, ..., st2) in Registern von 2t Stufen von der dritten Stufe bis zur (2t + 2)-ten Stufe des zweiten Schieberegisters 23 gespeichert. Konstantdaten 1 werden im Erststufen-Register gespeichert. Konstantdaten 0 werden im Zweitstufen-Register gespeichert. Die Erst- und Zweitstufen-Register stellen Anfangskoeffizienten des Polynoms M dar. Die Register von 2t Stufen von der dritten Stufe bis zur (2t + 2)-ten Stufe stellen Anfangskoeffizienten des Polynoms B dar.
  • In der Euklid-Algorithmus-Arithmetikoperation werden die vier Polynome A, B, L und M wie in den Formeln (6), (7), (8) bzw. (9) gezeigt initialisiert. Das heißt, im Anfangszustand ist der Grad des Polynoms A 2t, und der Grad des Polynoms B ist höchstens 2t – 1. Daher gilt degA >= degB. Durch Voraktualisieren der Polynome A und L ist es folglich möglich, degA und degL zu erlauben, abgenommen und zugenommen zu haben. Das Polynom A des Grades 2t – 1 und das Polynom L des Grades 1, gezeigt in 9, sind Ergebnisse solcher Voraktualisierung. Folglich gibt zuerst das erste Schieberegister 22 das Syndrom s2t – 1 als das erste Berechnungs-Datensignal 12 aus, und das zweite Schieberegister 23 gibt das Syndrom s2t als das dritte Berechnungs-Datensignal 14 aus.
  • Zuerst empfängt die Steuereinheit 3 das Syndrom s2t – 1, das a(der Koeffzient des Terms höchsten Grades des Polynoms A) darstellt, als das erste Berechnungs-Datensignal 12 und das Syndorm s2t, das b (der Koeffizient des Terms höchsten Grades des Polynoms B) darstellt, als das dritte Berechnungs-Datensignal 14. In einen solchen Fall ist degA >= degB, und die Steuereinheit 3 liefert daher das Speichersteuercodesignal 16 und das Arithmetik Steuercodesignal 17, damit das Polynom A und das Polynom L entsprechend der Formel (14) und der Formel (15) aktualisiert werden können. Mit anderen Worten, in der Arithmetikeinheit 2 wird zuerst der Quotient von a durch b (a/b) in dem ersten Register 42 gespeichert. Die Berechnung der Formeln (14) und (15) wird auf dem ersten und dritten Berechnungs-Datensignal 12 und 14 durchgeführt, die durch die Schiebeoperation des ersten und zweiten Schieberegisters 22 und 23 nacheinander übertragen werden. Unterdessen wird in der Datenspeichereinheit 1 das Rückkopplungs-Datensignal 19 über den ersten Selektor 20 an das erste Schieberegister 22 übergeben, und das dritte Berechnungs-Datensignal 14 wird über den zweiten Selektor 21 an das zweite Schieberegister 23 übergeben. Als Folge werden die aktualisierten Polynome A und L in dem ersten Schieberegister 22 gespeichert, während andererseits die nicht aktualisierten Polynome B und M in dem zweiten Schieberegister 23 gespeichert werden.
  • Wenn das Aktualisieren des Polynoms A eine Situation schafft, dass degA < degB, liefert die Steuereinheit 3 das Speichersteuercodesignal 16 und das Arithmetik-Steuercodesignal 17, damit die Polynome B und M entsprechend den (16) und (17) aktualisiert werden können. Mit anderen Worten, in der Arithmetikeinheit 2 wird zuerst der Quotient von b durch a (b/a) in dem ersten Register 42 gespeichert. Die Berechnung der Formeln (16) und (17) wird auf dem ersten und dritten Berechnungs-Datensignal 12 und 14 durchgeführt, die durch die Schiebeoperation des ersten und zweiten Schieberegisters 22 und 23 nacheinander übertragen werden. Unterdessen wird in der Datenspeichereinheit 1 das Rückkopplungs-Datensignal 19 über den zweiten Selektor 21 an das zweite Schieberegister 23 übergeben, und das erste Berechnungs-Datensignal 12 wird über den ersten Selektor 20 an das erste Schieberegister 22 übergeben. Als Folge werden die aktualisierten Polynome B und M in dem zweiten Schieberegister 23 gespeichert, und die nicht aktualisierten Polynome A und L werden in dem ersten Schieberegister 22 gespeichert.
  • Wenn Iteration einer solchen Operation die Situation schafft, dass degA oder degB unter t fällt, liefert die Steuereinheit 3 das Prozessbeendigungssignal 18. Wenn degA <= t – 1, liefert das erste Schieberegister 22 das ω-Signal 8 und das σ-Signal 9, damit sowohl ω(z) = A als auch σ(z) = L zutreffen können. Wenn degB <= t – 1, stellt das erste Schieberegister 22 das ω-Signal 8 und das σ-Signal 9 nach dem Übertragen von Signalen von allen Registern des zweiten Schieberegisters 23 in alle Register des ersten Schieberegisters 22 bereit, damit sowohl ω(z) = B als auch σ(z) = M zutreffen können.
  • Zum Zeitpunkt des Vorkommens einer Mehrgrad-Reduktion in der vorangehenden Euklid-Algorithmus-Arithmetikoperation wird das dritte Schieberegister 24 benutzt. Mit anderen Worten, wenn eine solche Reduktion in dem Polynom A vorkommt, werden eine aus dem ersten Schieberegister 22 gebildete alleinige Speichereinrichtung und eine aus dem zweiten und dritten Schieberegister 23 und 24 gebildete vereinte Speichereinrichtung verwendet. Zum anderen werden, wenn die Reduktion in dem Polynom B vorkommt, eine aus dem zweiten Schieberegister 23 gebildete alleinige Speichereinrichtung und eine aus dem ersten und dritten Schieberegister 22 und 24 gebildete vereinte Speichereinrichtung verwendet. Es kann Fälle geben, in denen wegen der Verhältnisse der Datenspeichersteuerung das zweite Berechnungs-Datensignal 13 anstelle des ersten Berechnungs-Datensignals 12 verwendet wird, und das vierte Berechnungs-Datensignal 15 anstelle des dritten Berechnungs-Datensignals verwendet wird.
  • Das Fehler-Lokalisiererpolynom σ(z) und das Fehler-Bewerterpolynom ω(z), die aus der oben beschriebenen Euklid-Algorithmus-Arithmetikoperationen gewonnen werden, werden an die Chien-Sucheinheit 103 übergeben. Die Chien-Sucheinheit 103 findet den Fehler-Bewertungswert ω(α–ju) und den Fehlerlokalisiererpolynom-Differenzialwert σ'(α–ju)). Die Arithmetikeinheit 2 von 5 hat weiter die Fähigkeit, aus dem ω-Wertsignal 6, das ω(α–ju)) darstellt, und dem σ-Differenzialwertsignal 7, das σ'(α–ju)) darstellt, das Signal 11 zu erzeugen, das den Fehlerwert eu darstellt. Zu diesem Zeitpunkt wählt der dritte Selektor 64 das σ-Differenzialwertsignal 7 aus, der vierte Selektor 65 wählt das ω-Wertsignal 6 aus, und der fünfte Selektor 66 wähle die Konstantdaten 0 aus. Dies gestattet die Ausführung von Fehlerwertberechnungen entsprechend der Formel (5).

Claims (4)

  1. Reed-Solomon-Decoder, der umfasst: eine Syndrom-Berechnungseinheit (101) zum Auffinden eines Syndrom-Polynoms S(z) aus einem empfangenen Polynom Y(z), das einen t-Mehrfachfehlerkorrektur-Reed-Solomon-Code umfasst, wo t jede positive Ganzzahl ist, eine Fehlerwert-Berechnungseinheit (102) zum Durchführen einer arithmetischen Operation nach dem Euklidischen Algorithmus auf dem Syndrom-Polynom S(z), um ein Fehler-Lokalisiererpolynom σ(z) und ein Fehler-Bewerterpolynom ω(z) zu bestimmen, zum Teilen von k Fehler-Bewertungswerten durch entsprechende Fehlerlokalisiererpolynom-Differenzialwerte, wo k jede positive Ganzzahl ist und gleich oder kleiner als t ist, um k Fehlerwerte eu zu finden, eine Chien-Sucheinheit (103) zum Durchführen einer Chien-Suche, um k Wurzeln α–ju des Fehler-Lokalisiererpolynoms σ(z) zu finden, und zum Substituieren jeder der k Wurzeln α–ju in einer Ableitung des Fehler-Lokalisiererpolynoms σ(z), um die Fehlerlokalisiererpolynom-Differenzialwerte zu bestimmen, zum Substituieren jeder der k Wurzeln α–ju in dem Fehler-Bewerterpolynom ω(z), um die Fehler-Bewertungswerte zu bestimmen, und zum Liefern der Fehler-Bewertungswerte und der Fehlerlokalisiererpolynom-Differenzialwerte an die Fehlerwert-Berechnungseinheit (102) und eine Fehlerkorrektureinheit (105) zum Finden von k Fehlerstellen von den k Wurzeln α–ju und zum Subtrahieren der k Fehlerwerte eu von den k Fehlerstellen in dem empfangenen Polynom Y(z), um ein fehlerkorrigiertes Polynom W(z) zu bestimmen, wobei die Syndrom-Berechnungseinheit (101) eine erste Pipeline-Stufe bildet, die einem ersten Paketzyklus entspricht, die Fehlerwert-Berechnungseinheit (102) und die Chien-Sucheinheit (103) eine zweite Pipeline-Stufe bilden, die einem zweiten Paketzyklus, der dem ersten Paketzyklus folgt, entspricht, und die Fehlerkorrektureinheit (105) eine dritte Pipeline-Stufe bildet, die einem dritten Paketzyklus, der dem zweiten Paketzyklus folgt, entspricht.
  2. Reed-Solomon-Decoder nach Anspruch 1, wobei die Fehlerwert-Berechnungseinheit (102) umfasst: eine Datenspeichereinheit (1) zum Speichern von Signalen, die das Syndrom-Polynom S(z) darstellen, und Rückkopplungssignalen, die ein Zwischenergebnis der aritmetischen Operation nach dem euklidischen Algorithmus darstellen, und zum Liefern von Signalen, die das Fehler-Lokalisiererpolynom σ(z) darstellen, und Signalen, die das Fehler-Bewerterpolynom ω(z) darstellen, an eine Arithmetikeinheit (2), die Arithmetikeinheit (2) zum Erzeugen der Rückkopplungssignale aus den in der Datenspeichereinheit (1) gespeicherten Signalen und zum Berechnen der k Fehlerwerte eu, wobei die Arithmetikeinheit (2) einen einzelnen Inverselement-Rechner (41), einen einzelnen Galois-Multiplizierer (43) und einen einzelnen Galois-Addierer (44) umfasst, und eine Steuereinheit (3) zum Steuern der Datenspeichereinheit (1) und der Arithmetikeinheit (2).
  3. Reed-Solomon-Decoder nach Anspruch 2, wobei die Datenspeichereinheit (1) ein erstes, ein zweites und ein drittes Schieberegister (22, 23, 24) umfasst, wobei das erste Schieberegister (22) und das zweite Schieberegister (23) 2t + 2 Stufen umfassen, und das dritte Schieberegister (24) t – 1 Stufen umfasst.
  4. Reed-Solomon-Decoder nach Anspruch 2 oder 3, wobei die Steuereinheit (3) einen Gradzähler (60) zum Überwachen des Grades von Zwischenpolynomen in der arithmetischen Operation nach dem Euklidischen Algorithmus umfasst.
DE69728945T 1996-10-25 1997-10-10 Reed-Solomon Dekoder Expired - Lifetime DE69728945T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP28370796 1996-10-25
JP28370796A JP3233860B2 (ja) 1996-10-25 1996-10-25 リードソロモン復号器

Publications (2)

Publication Number Publication Date
DE69728945D1 DE69728945D1 (de) 2004-06-09
DE69728945T2 true DE69728945T2 (de) 2004-09-02

Family

ID=17669046

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69728945T Expired - Lifetime DE69728945T2 (de) 1996-10-25 1997-10-10 Reed-Solomon Dekoder

Country Status (6)

Country Link
US (1) US6122766A (de)
EP (2) EP0838905B1 (de)
JP (1) JP3233860B2 (de)
KR (1) KR100497639B1 (de)
DE (1) DE69728945T2 (de)
TW (1) TW388149B (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100258952B1 (ko) * 1997-10-14 2000-06-15 윤종용 새로운 다항식 배열 구조를 채용한 리드-솔로몬(rs) 복호기와그 복호방법
US6594794B1 (en) * 1998-03-18 2003-07-15 Stmicroelectronics S.R.L. Reed-Solomon decoding of data read from DVD or CD supports
JP3238128B2 (ja) * 1998-06-02 2001-12-10 松下電器産業株式会社 リードソロモン符号化装置および方法
US6553537B1 (en) 1998-12-11 2003-04-22 Matsushita Electric Industrial Co., Ltd. Reed-Solomon decoding apparatus and control method therefor
US6347389B1 (en) * 1999-03-23 2002-02-12 Storage Technology Corporation Pipelined high speed reed-solomon error/erasure decoder
KR100594002B1 (ko) * 1999-04-23 2006-06-28 삼성전자주식회사 가변 처리가 가능한 파이프라인 구조의 리드 솔로몬 복호기
KR100685360B1 (ko) * 2000-01-31 2007-02-22 산요덴키가부시키가이샤 회로 규모를 억제하며 고속의 오류 정정을 행하는 것이 가능한 오류 정정 장치 및 복호 장치
US6671850B1 (en) * 2000-05-01 2003-12-30 International Business Machines Corporation On-the-fly algebraic error correction system and method for reducing error location search
KR100370239B1 (ko) * 2000-10-25 2003-01-29 삼성전자 주식회사 고속 블럭 파이프라인 구조의 리드-솔로몬 디코더에적용하기 위한 메모리 장치와 메모리 액세스 방법 및 그메모리 장치를 구비한 리드-솔로몬 디코더
US7051267B1 (en) 2002-04-08 2006-05-23 Marvell International Ltd. Efficient high-speed Reed-Solomon decoder
US7010739B1 (en) 2002-04-11 2006-03-07 Marvell International Ltd. Error evaluator for inversionless Berlekamp-Massey algorithm in Reed-Solomon decoders
US6954892B2 (en) * 2002-06-06 2005-10-11 National Chiao Tung University Method for calculating syndrome polynomial in decoding error correction codes
US20040163030A1 (en) * 2003-02-13 2004-08-19 International Business Machines Corporation Iterative error correcting system
US7206993B2 (en) * 2003-03-12 2007-04-17 Matsushita Electric Industrial Co., Ltd. Method and device for decoding Reed-Solomon code or extended Reed-Solomon code
KR100594241B1 (ko) 2004-01-29 2006-06-30 삼성전자주식회사 순방향 치엔 서치 방식의 리드 솔로몬 디코더 회로
CN1773863B (zh) * 2004-11-12 2010-06-02 中国科学院空间科学与应用研究中心 一种可用于大容量存储器的rs(256,252)码纠错译码芯片
CN1773864B (zh) * 2004-11-12 2010-05-05 中国科学院空间科学与应用研究中心 一种纠错能力为2的扩展里德—所罗门码的译码方法
CN100384116C (zh) * 2005-03-31 2008-04-23 中国科学院空间科学与应用研究中心 一种高速译码芯片
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
US20100073202A1 (en) * 2008-09-25 2010-03-25 Mazed Mohammad A Portable internet appliance
US7900122B2 (en) * 2007-01-04 2011-03-01 Broadcom Corporation Simplified RS (Reed-Solomon) code decoder that obviates error value polynomial calculation
KR100907547B1 (ko) 2007-03-21 2009-07-14 아주대학교산학협력단 리드-솔로몬 복호기의 에스-디씨엠이 알고리즘 연산방법 및그 연산회로
KR101433620B1 (ko) * 2007-08-17 2014-08-25 삼성전자주식회사 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법
JP4767266B2 (ja) * 2008-01-17 2011-09-07 株式会社日立製作所 演算ユニット、エラー訂正復号回路及び誤り位置多項式の演算方法
KR101437396B1 (ko) * 2008-02-27 2014-09-05 삼성전자주식회사 레이턴시를 줄일 수 있는 에러 정정 블록을 포함하는메모리 시스템 및 그것의 에러 정정 방법
US8433985B2 (en) * 2010-03-29 2013-04-30 Intel Corporation Error correction mechanisms for flash memories
KR101678917B1 (ko) * 2010-09-16 2016-11-24 삼성전자주식회사 디코더, 이의 동작방법, 및 이를 포함하는 장치들
JP5275398B2 (ja) * 2011-03-28 2013-08-28 株式会社東芝 リードソロモン復号器及び受信装置
CN103929209A (zh) * 2014-04-09 2014-07-16 西安电子科技大学 基于fpga的高性能组合rs处理器

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4649541A (en) * 1984-11-21 1987-03-10 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Reed-Solomon decoder
US4747103A (en) * 1985-03-21 1988-05-24 Canon Kabushiki Kaisha Signal processing apparatus for correcting decoding errors
US5107503A (en) * 1987-08-24 1992-04-21 Digital Equipment Corporation High bandwidth reed-solomon encoding, decoding and error correcting circuit
US4873688A (en) * 1987-10-05 1989-10-10 Idaho Research Foundation High-speed real-time Reed-Solomon decoder
JP2797569B2 (ja) * 1989-12-25 1998-09-17 ソニー株式会社 ユークリッドの互除回路
US5504758A (en) * 1992-04-28 1996-04-02 Mitsubishi Denki Kabushiki Kaisha Error-correcting apparatus
US5396502A (en) * 1992-07-09 1995-03-07 Advanced Hardware Architectures, Inc. Single-stack implementation of a Reed-Solomon encoder/decoder
US5379305A (en) * 1992-07-20 1995-01-03 Digital Equipment Corporation Error correction system with selectable error correction capabilities
US5432822A (en) * 1993-03-12 1995-07-11 Hughes Aircraft Company Error correcting decoder and decoding method employing reliability based erasure decision-making in cellular communication system
US5428630A (en) * 1993-07-01 1995-06-27 Quantum Corp. System and method for verifying the integrity of data written to a memory
US5771244A (en) * 1994-03-09 1998-06-23 University Of Southern California Universal Reed-Solomon coder/encoder
US5610929A (en) * 1994-03-11 1997-03-11 Fujitsu Limited Multibyte error correcting system
FR2721775B1 (fr) * 1994-06-27 1996-09-06 Sgs Thomson Microelectronics Circuit de localisation d'erreurs d'un décodeur Reed-Solomon.
JP2963018B2 (ja) * 1994-11-08 1999-10-12 旭化成マイクロシステム株式会社 リード・ソロモン誤り訂正符号復号化回路
US6374384B1 (en) * 1996-06-27 2002-04-16 Matsushita Electric Industrial Co., Ltd. Reed Solomon error correcting circuit and method and device for Euclidean mutual division
TW311189B (en) * 1996-09-30 1997-07-21 United Microelectronics Corp The error-corrected decoding method and its apparatus for Reed-Soloman code
US5889792A (en) * 1996-10-01 1999-03-30 Intel Corporation Method and apparatus for generating syndromes associated with a block of data that employs re-encoding the block of data
GB9622539D0 (en) * 1996-10-30 1997-01-08 Discovision Ass Galois field multiplier for reed-solomon decoder
US5905740A (en) * 1997-04-08 1999-05-18 Seagate Technology, Inc. Apparatus and method for error correction
US5887005A (en) * 1997-06-26 1999-03-23 Integrated Device Technology, Inc. Methods and apparatus for error correction

Also Published As

Publication number Publication date
KR19980033139A (ko) 1998-07-25
EP1370004A2 (de) 2003-12-10
JP3233860B2 (ja) 2001-12-04
EP0838905B1 (de) 2004-05-06
TW388149B (en) 2000-04-21
DE69728945D1 (de) 2004-06-09
EP0838905A2 (de) 1998-04-29
JPH10135846A (ja) 1998-05-22
EP1370004A3 (de) 2005-05-04
KR100497639B1 (ko) 2005-09-08
US6122766A (en) 2000-09-19
EP0838905A3 (de) 2001-03-21

Similar Documents

Publication Publication Date Title
DE69728945T2 (de) Reed-Solomon Dekoder
DE69834542T2 (de) Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke
DE69424877T2 (de) Reed-solomon-dekoder
DE69332070T2 (de) Steuerschaltung für Galois-Feld
DE69919199T2 (de) Vorwärtsfehlerkorrektur
DE3382661T2 (de) Korrektur von fehlerbuendeln in datengruppen.
DE4241903C2 (de) Euklidische wechselseitige Divisionsschaltung
DE3784459T2 (de) Arithmetische und logische einheit fuer elemente von galois-feldern.
DE69907566T2 (de) Reed Solomon Kodierungsgerät und Reed Solomon Kodierungsverfahren
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
DE3486471T2 (de) Verfahren und Vorrichtung zur Dekodierung eines Fehler-Korrektur-Code
DE4229666C2 (de) Wechselseitig arbeitende Divisionsschaltung
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE19747774A1 (de) Reed-Solomon-Decoder zur Verwendung beim verbesserten Fernsehen (ATV)
DE2834963A1 (de) Verfahren und einrichtung zur fehlerkorrektur von uebertragenen daten
DE69732076T2 (de) Reed-Solomon Dekodierer mit universeller Prozessoreinheit und speziellen Schaltungen
DE19922253A1 (de) Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE69522156T2 (de) Reed-Solomon Dekoder
DE69020951T2 (de) Kodiereinrichtung für einen Fehlerprüfungs- und Fehlerkorrekturkode.
DE60309857T2 (de) Methode zur dekodierung von reed-solomon kodes mittels feinentscheidung
DE69430519T2 (de) Verfahren und Gerät für einen Dekoder mit reduzierter Iteration
DE602004008150T2 (de) Datenfehlerkorrektur mittels Redundanzblöcke
DE60311764T2 (de) Verfahren und Vorrichtung zur Dekodierung von Reed-Solomon Kodes
DE3702697C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: PANASONIC CORP., KADOMA, OSAKA, JP