[go: up one dir, main page]

DE69429525T2 - Programmierbarer redundanz/syndromgenerator - Google Patents

Programmierbarer redundanz/syndromgenerator

Info

Publication number
DE69429525T2
DE69429525T2 DE69429525T DE69429525T DE69429525T2 DE 69429525 T2 DE69429525 T2 DE 69429525T2 DE 69429525 T DE69429525 T DE 69429525T DE 69429525 T DE69429525 T DE 69429525T DE 69429525 T2 DE69429525 T2 DE 69429525T2
Authority
DE
Germany
Prior art keywords
polynomial
order polynomial
cell
cascade
order
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
DE69429525T
Other languages
English (en)
Other versions
DE69429525D1 (de
Inventor
Neal Glover
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
Application granted granted Critical
Publication of DE69429525D1 publication Critical patent/DE69429525D1/de
Publication of DE69429525T2 publication Critical patent/DE69429525T2/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

Landscapes

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

Description

    GEBIET DER ERFINDUNG
  • Diese Erfindung bezieht sich allgemein auf digitale Datenkommunikationssysteme und insbesondere auf die Codierung und Decodietung von Fehlerkorrekturcodes.
  • HINTERGRUND DER ERFINDUNG
  • Bei einem digitalen Datenkommunikationssystem (mit Speicherung und Rückgewinnung von optischen oder magnetischen Medien) ist es notwendig, um die Übertragungsrate von Informationen zu erhöhen und zur gleichen Zeit die Fehlerrate beliebig niedrig zu machen, ein Fehlersteuersystem zu verwenden. Für feste Signalrauschabstände und feste Bandbreiten können Verbesserungen durch die Verwendung von Fehlerkorrekturcodes erzielt werden.
  • Mit einer Fehlerkorrekturcodierung werden die zu übertragenden oder zu speichernden Daten mathematisch verarbeitet, um zusätzliche Datensymbole zu erhalten, die Prüfsymbole oder Redundanzsymbole genannt werden. Die Daten und Prüfsymbole bilden zusammen ein Codewort. Nach der Übertragung oder Rückgewinnung wird das Codewort mathematisch verarbeitet, um Fehlersyndrome zu erhalten, die Information über Positionen und Werte von Fehlern enthalten.
  • Für viele Fehlerkorrekturcodes (z. B. Polynomcodes, wie beispielsweise, aber nicht begrenzt auf, Reed-Solomon -Codes) werden die Codewörter durch Anhängen eines Restpolynoms (Redundanzsymbole) an ein Datenpolynom gebildet, um das zusammengesetzte Polynom durch ein Generatorpolynom dividierbar zu machen. Das Restpolynom wird durch Dividieren des Datenpolynoms durch das Generatorpolynom und Behalten des Restpolynoms erhalten. Die Fehlersyndrome werden durch Dividieren des empfangenen Polynoms (ein Codewortpolynom, das ein ihm hinzuaddiertes Fehlerpolynom aufweisen kann) durch die einzelnen Faktoren des Generatorpolynoms erhalten.
  • STAND DER TECHNIK
  • Fig. 1 zeigt eine Schaltung, die Redundanzsymbole durch Durchführen einer Polynomdivision erzeugen kann.
  • Fig. 2 zeigt eine Mehrzahl von Dividierern erster Ordnung, wobei jeder eines der Fehlersyndrome erzeugen kann.
  • Einschränkungen des Stands der Technik
  • Ein Problem, das bei der Verwendung dieser Codes auftritt, ist die erhebliche Menge an Schaltungen, die bei Hochgeschwindigkeits-Implementierungen von Generatoren hoher Ordnung (die imstande sind, viele Fehler zu korrigieren) für die Redundanzsymbole und die Fehlersyndrome benötigt wird. Für Systeme, die die Fähigkeit benötigen, sowohl die Codierung als auch Decodierung durchzuführen, obgleich nicht gleichzeitig, ist es eine wünschenswerte Eigenschaft, eine Schaltung aufzuweisen, die imstande ist, beide Sätze von Symbolen zu erzeugen. Es ist ebenfalls eine wünschenswerte Eigenschaft für den Codierer, programmierbar zu sein, um imstande zu sein, Codes unterschiedlicher Ordnung (Codewörter mit unterschiedlichen Anzahlen von Redundanz-Bytes) zu erzeugen. Das gewöhnliche Verfahren weist keine dieser Eigenschaften auf.
  • Das US-Patent Nr. 4 777 635 mit dem Titel "Reed-Solomon Code Encoder and Syndrome Generator Circuit", erteilt an Neal Glover, offenbart eine Schaltung, die sowohl Redundanz- als auch Syndromsymbole erzeugen kann, jedoch nicht ordnungs-programmierbar ist.
  • Der Berlekamp-Welch-Algorithmus ist ein allgemeiner Decodierungs-Algorithmus, der keine Syndrome sondern stattdessen die Codiererschaltung verwendet, um einen Rest aus den empfangenen Polynom zu berechnen. Der Algorithmus ist jedoch etwas komplizierter als derjenige, der Syndrome verarbeitet, und er ist nicht ordnungs-programmierbar. Es ist ferner möglich, den Rest in Syndrome umzuwandeln, wobei dies jedoch eine erhebliche zusätzliche Schaltungsanordnung erfordert.
  • Das US-Patent Nr. 5 325 373, erteilt an Iwamura u. a., mit dem Titel "Apparatus for Encoding and Decoding Reed-Solomon Code" offenbart ein Verfahren zum Erzeugen von Redundanzsymbolen während des Codiervorgangs eines EC-Codeworts. Der Codiervorgang wird dargestellt als:
  • R(x) = D(x)·xn-k mod(G(x))
  • Das bei Iwamura offenbarte Verfahren zum Implementieren dieser Gleichung wird ausgedrückt als:
  • Z0 = I(x)
  • Zi-gm·Z'i-1 + Zm·g'(x) (I-1, ..., k); P(x) = Zk (2)
  • wobei I(x) das eingegebene Datenpolynom, g(x) das Generatorpolynom und P(x) das Restpolynom (R(x)oben) ist. Die Schaltung zum Implementieren der obigen Gleichung (2) wird von Iwamura in Fig. 92 offenbart.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Aufgabe der vorliegenden Erfindung, die Größe der Schaltungsanordnung bei einer Hardware-Implementierung eines Fehlerkorrektur-Codierers/Decodierers zu verringern, indem eine einzige Schaltung verwendet wird, um Prüfsymbole während des Übertragungsvorgangs und ferner um Syndrome während eines Empfangsvorgangs zu erzeugen.
  • Eine weitere Aufgabe ist es, die Größe der Schaltungsanordnung bei einer Hardware-Implementierung eines Fehlerkorrektur-Codierers/Decodierers zu verringern, indem eine einzige Schaltung verwendet wird, um Prüfsymbole für Codewörter mit unterschiedlichen Anzahlen von Prüfsymbolen zu erzeugen.
  • Die oben erwähnten Aufgaben werden von der detailliert in den Ansprüchen 1 und 4 definierten Erfindung gelöst.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 zeigt die vorbekannte Lösung zum Erzeugen von Redundanzsymbolen.
  • Fig. 2 zeigt die vorbekannte Lösung zum Erzeugen von Syndromen.
  • Fig. 3 stellt das Grundprinzip dar, das bei der vorliegenden Erfindung verwendet wird.
  • Fig. 4 zeigt ein Blockschaltbild der bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 5 zeigt ein Blockschaltbild einer alternativen Ausführungsform der vorliegenden Erfindung.
  • Fig. 6 zeigt ein Blockschaltbild einer weiteren alternativen Ausführungsform der vorliegenden Erfindung.
  • Fig. 7 zeigt ein Blockschaltbild einer weiteren alternativen Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Diese Erfindung umfasst ein Verfahren und eine Einrichtung, die imstande sind, Redundanzsymbole und Syndrome zu erzeugen, und ordnungs-programmierbar sind. Die Theorie der Betriebsweise dieser Erfindung ist wie folgt: Polynomcodes bestehen aus Codewörtern, die Mehrfache eines Generatorpolynoms sind. Ein Codewort c(x) wird durch Dividieren eines Datenpolynoms D(x) eines Grades weniger als k durch ein Generatorpolynom g(x) eines Grades n-k gebildet, um ein Redundanzpolynom r(x) eines Grades weniger als n-k zu erhalten. Anhängen von r(x) an D(x) ergibt c(x) eines Grades weniger als n (d. h. es gibt k Datensymbole und n-k Redundanzsymbole und n Gesamtsymbole, wobei jedes Symbol eine vorbestimmte Mehrzahl von Bits m aufweist).
  • g(x) = (x + rj)
  • r(x) = D(x)·xn-kmod (g(x))
  • c(x) = D(x)·xn-k + r(x)
  • Die folgende Erläuterung zeigt, dass es möglich ist, D(x) in eine Kaskade von Dividieren erster Ordnung zu speisen (wobei jeder Dividierer durch einen Faktor (x + rj) dividiert), um r(x) zu erzeugen. Diese Dividierer erster Ordnung können dann verwendet werden, um Syndrome während Lesevorgängen (Decodierung) zu erzeugen.
  • Fig. 3 zeigt eine Kaskade von Polynomdividierern erster Ordnung gefolgt von einer Kaskade von Polynommultiplizierern erster Ordnung. Jeder Polynomdividierer ist aus einem Register 200, einem Konstanten-Multiplizierer 201 und einem Addierer 202 aufgebaut, die jeweils ein Symbol breit sind. Die Ausgabe jedes Polynomdividierers ist das mit x multiplizierte und durch (x + rj) dividierte Eingangspolynom. Jeder Polynommultiplizierer multipliziert seine Eingabe mit (x + rj). Bei jedem Operationsschritt (gleichzeitiges Takten aller Register und Eingeben eines weiteren Symbols) stimmt die Ausgabe jedes Dividierers mit der Eingabe in den entsprechenden Multiplizierer überein, z. B. 203&sub0; stimmt mit 2131 überein. Ferner stimmt jedes Dividiererregister mit dem entsprechenden Multipliziererregister überein, z. B. Aj stimmt mit Bj überein. Die Ausgabe der Dividiererkaskade 203n-k-1 ist:
  • und
  • xn-kD(x)-q(x)·g(x) = xn-kD(x)mod (g(x))
  • daher
  • q(x) = xn-kD(x)-xn-kD(x)mod(g(x))/g(x)
  • Die Ausgabe der Multipliziererkaskade ist q(x)g(x). Die ersten k Glieder (Symbole), die an 203n-k-1 erscheinen, ist q(x), und die ersten k Glieder (Symbole), die an 213&sub0; erscheinen, ist D(x). Um den Rest von q(x)g(x) zu halten, wird die Eingabe in die Multipliziererkaskade durch das Gatter 214 auf Null gesetzt, und die Schaltung wird n-k mehrmals getaktet. Die Ausgabe der Multipliziererkaskade 213&sub0; während dieser Takte ist xn-kD(x)mod(g(x)), was die Reihe von Redundanzsymbolen in einem Polynomcode ist.
  • Implementierung
  • Da die Multipliziererregister in Fig. 3 immer mit den Dividiererregistern übereinstimmen, kann die Multipliziererkaskade verworfen werden, und während der letzten n-k Takte kann der Dividierer als eine Multipliziererkaskade zusammengeschaltet werden, um Redundanzsymbole zu hervorzubringen. Dies ist in Fig. 4 dargestellt. Dann, wenn REDUNDANZZEIT EIN ist, veranlassen die MUX 102 und 103, dass die Register und Konstantenmultiplizierer zusammengeschaltet werden, um eine Kaskade von Dividierern von links nach rechts zu bilden (die Addierer 106 addieren von links nach rechts). Wenn REDUNDANZZEIT AN ist, veranlassen die MUX 102 und 103, dass die Register und Konstantenmultiplizierer zusammengeschaltet werden, um eine Kaskade von Multiplizierern von rechts nach links zu bilden (die Addierer addieren von rechts nach links). Die Funktion der MUX 101 besteht darin, getrennte Dividierer (nicht in einer Kaskade) zur Syndromerzeugung zu bilden.
  • SCHREIBMODUS ist während eines Schreibvorgangs (Codierung) EIN. REDUNDANZZEIT ist für die ersten k Taktzeiten AUS, und die eingegangenen Daten-Bytes werden zu dem Ausgang des MUX 105 durchgeleitet. Für die letzten n-k Taktzeiten ist REDUNDANZZEIT EIN, und die Redundanzsymbole sind an dem Ausgang des MUX 105 vorhanden.
  • Während eines Lesevorgangs ist SCHREIBMODUS AUS und REDUNDANZZEIT ist AUS und das gesamte empfangene, aus Daten und Redundanz bestehende Polynom wird für n Taktzeiten eingegeben. Während der letzten Taktzeit sind die Syndrome an dem Ausgang des MUX 103 verfügbar.
  • Durch Halten der Rücksetz-Eingabe an einem Register während der Redundanzerzeugung auf EIN wird die entsprechende Wurzel für dieses Register aus der Redundanzberechnung weggelassen. Dies ermöglicht, dass die Auswahl von Wurzeln vollständig programmierbar ist, und ermöglicht insbesondere, dass die Anzahl von Wurzeln (Codeordnung) programmierbar ist.
  • Der in Fig. 4 gezeigte Generator ist für ein Reed-Solomon-Code (d. h. die Wurzeln, wie sie bei den konstanten Multiplizierern 104 gezeigt sind, sind aufeinanderfolgende Potenzen von Alpha, einer primitiven Wurzel des Feldes). Die Erfindung ist jedoch auf einen beliebigen Polynomcode mit einer beliebigen Auswahl von Wurzeln anwendbar. Die Rücksetzungen der Register sind "ORDNUNG< j", was das Auswahlkriterium für Reed-Solomon-Codes ist (d. h. ORDNUNG aufeinanderfolgende Wurzeln sind enthalten und der Rest wird weggelassen, wobei ORDNUNG die Anzahl von Wurzeln in dem Generator ist). Es kann jedoch ein beliebiges Auswahlkriterium verwendet werden.
  • Fig. 5 zeigt eine alternative Implementierung, bei der ein Satz von Multiplexern aus der Addiererkette von Fig. 4 entfernt und eine zweite Addiererkette hinzugefügt ist. Die obere Addiererkette 306 addiert nur von links nach rechts. (für Datenzeit) und die untere Addiererkette 302 addiert nur von rechts nach links (für Redundanzzeit). Dies ermöglicht einen schnelleren Betrieb auf Kosten von mehr Gattern (Austauschen von MUX gegen Addierer). Die Multiplexer 303 schalten zwischen einer Dividiererkaskade für Datenzeit oder einer Multipliziererkaskade für Redundanzzeit um. Die MUX 301 schalten zwischen einer Kaskade von Dividierern/Multiplizierern zur Codierung und getrennten Dividierern für die Syndromerzeugung um.
  • Fig. 6 zeigt eine alternative Implementierung, bei der der Satz von Multiplexern aus der oberen Addiererkette in Fig. 5 entfernt ist, wobei ihre Funktion des Ermöglichens einer Syndromerzeugung durch Aufnehmen des Satzes von Addierern 401 und eines MUX 407 durchgeführt wird. Während des Lesemodus ermöglicht der MUX 407, dass Lesedaten eingegeben werden, und die Addiererkette 401 wird freigegeben, die veranlasst, dass die Registerausgabe für jede Stufe zu der nächsten Stufe zweimal durch die Addierer 401 und 406 hinzugefügt wird. Dies koppelt wirksam jede Stufe, da in dem endlichen Feld von GF(2m) das Addieren eines Elements zu sich selber zu Null führt. Dies ermöglicht den schnellsten Betrieb auf Kosten von mehr Gattern (Austauschen von MUX gegen Addierer), wenn die Addiererkette 406 nicht länger irgendwelche Multiplexer enthält.
  • Fig. 7 zeigt eine alternative Implementierung, bei der die Multiplexer in Fig. 6 eliminiert wurden. Diese Abschnitte bleiben in der Dividiererkonfiguration während der Redundanz-Zeit, wobei jedoch der Eingang von Daten auf Redundanz durch MUX 505 und 507 umschaltet. Aufgrund der Löschung, die auftritt, wenn Elemente zu sich selbst addiert werden, weist das Addieren der Ausgabe der unteren Addiererkette, die gleich der Summe des Inhalts dieser Register ist, zu der Eingabe der oberen Addiererkette die gleiche Funktion auf und führt zu einem tatsächlichen Ändern der Konfiguration von Links-nach rechts-Dividierern zu Rechts-nach-links- Multiplizierern wie bei den anderen Implementierungen.
  • Während die bevorzugte Ausführungsform und verschiedene alternative Ausführungsformen der Erfindung offenbart und hier ausführlich beschrieben wurden, ist es für Fachleute offensichtlich, dass verschiedene Änderungen in Form und Detail darin durchgeführt werden können, ohne von dem Schutzumfang derselben abzuweichen.

Claims (9)

1. Einrichtung zum Erzeugen von Redundanzsymbolen während der Codierung von aus Gruppen von binären Bits bestehenden Datensymbolen in Codeworte von Polynomcodes, wobei jedes Codewort c(x) gebildet wird durch Dividieren eines Datenpolynoms D(x) eines Grades von weniger als k durch ein Generatorpolynom g(x) eines Grades n-k, um ein Redundanzpolynom r(x) eines Grades weniger als n-k zu gewinnen, und durch Anhängen von r(x) an D(x), um c(x) eines Grades von weniger als n zu gewinnen, wobei jedes Symbol eine vorgegebene Mehrzahl von binären Bits m aufweist, gekennzeichnet durch:
eine Mehrzahl von Zellen, die ein Register (200), einen Endliches-Feld-Multiplizierer (201) und einen Addierer (202) aufweisen, wobei jede Zelle selektiv als Polynomdividierer erster Ordnung und als Polynommultiplizierer erster Ordnung verbindbar ist;
Mittel (102, 103) zum Zusammenschalten jeder Zelle derart, daß sie einen Polynomdividierer erster Ordnung bildet, und zum Koppeln der Polynomdividierer erster Ordnung miteinander derart, daß sie eine Kaskade von Polynomdividierern erster Ordnung bilden;
Mittel zum sequentiellen Eingeben von Datensymbolen für ein Codewort in die Kaskade der Polynomdividierer erster Ordnung;
Mittel (102, 103) zum Zusammenschalten jeder Zelle derart, daß sie einen Polynommultiplizierer erster Ordnung bildet, und zum Koppeln der Polynommultiplizierer erster Ordnung miteinander derart, daß sie eine Kaskade von Polynommultiplizierern erster Ordnung bilden, wobei die Register in der Kaskade der Polynommultiplizierer erster Ordnung in entgegengesetzter Reihenfolge im Vergleich zu ihrer jeweiligen Reihenfolge in der Kaskade von Polynomdividierern erster Ordnung geordnet sind; und
Mittel (214) zum Halten der Eingabe in die Multipliziererkaskade auf Null und zum Takten der Register, um die den Datensymbolen zugeordneten Redundanzsymbole hinauszutakten.
2. Einrichtung zum Erzeugen von Redundanzsymbolen während der Codierung von Datensymbolen und zum Erzeugen von Syndromen während der Decodierung von Codeworten, welche Fehler enthalten können, aufweisend die Einrichtung nach Anspruch 1 und ferner aufweisend:
Mittel zum Zusammenschalten jeder Zelle derart, daß sie einen separaten Polynomdividierer erster Ordnung bildet; und
Mittel zum Bereitstellen der Codeworte, die Fehler enthalten können, an die separaten Dividierer, um die empfangenen Codeworte durch das erzeugende Polynom zu dividieren, um eines der Syndrome zu erzeugen.
3. Die Einrichtung nach Anspruch 1, wobei das Register einer Zelle zurückgesetzt gehalten wird, wenn die Wurzel (root) der Zelle nicht in dem gewünschten Codewortgenerator enthalten sein soll.
4. Ein Verfahren zum Erzeugen von Redundanzsymbolen während der Codierung von aus Gruppen binärer Bits bestehenden Datensymbolen in Codeworte von Polynomcodes, wobei jedes Codewort c(x) gebildet wird, indem ein Datenpolynom D(x) eines Grades von weniger als k durch ein Generatorpolynom g(x) eines Grades von n-k dividiert wird, um ein Redundanzpolynom r(x) des Grades von weniger als n-k zu gewinnen, und indem r(x) an D(x) angehängt wird, um c(x) des Grades von weniger als n zu bilden, wobei jedes Symbol eine vorgegebene Mehrzahl von binären Bits m aufweist, gekennzeichnet durch die Schritte:
(a) Bereitstellen einer Mehrzahl von Zellen, die ein Register (200), einen Endliche-Felder-Multiplizierer (201) und einen Addierer (202) aufweisen, wobei jede Zelle selektiv als Polynomdividierer erster Ordnung und als Polynommultiplizierer erster Ordnung schaltbar ist;
(b) Schalten (102, 103) jeder Zelle derart, daß sie einen Polynomdividierer erster Ordnung bildet, und Koppeln der Polynomdividierer erster Ordnung miteinander derart, daß sie eine Kaskade von Polynomdividierern erster Ordnung bilden;
(c) Sequentielles Eingeben von Datensymbolen für ein Codewort in die im Schritt (b) gebildete Kaskade von Polynomdividierern erster Ordnung;
(d) Schalten (102, 103) jeder Zelle derart, daß sie einen Polynommultiplizierer erster Ordnung bildet, und Koppeln der Polynommultiplizierer erster Ordnung miteinander derart, daß sie eine Kaskade von Polynommultiplizierern erster Ordnung bilden, wobei die Register in der Kaskade der Polynommultiplizierer erster Ordnung in entgegengesetzter Reihenfolge im Vergleich zu ihrer jeweiligen Reihenfolge in der Kaskade der Polynomdividierer erster Ordnung geordnet werden; und
(e) Halten (214) der Eingabe in die Multipliziererkaskade auf Null und Takten der Register, um die den Datensymbolen des Schrittes (c) zugeordneten Redundanzsymbole hinauszutakten.
5. Das Verfahren zum Erzeugen von Redundanzsymbolen während der Codierung von Datensymbolen und zum Erzeugen von Syndromen während der Decodierung von Codeworten, welche Fehler enthalten können, umfassend die Schritte des Anspruchs 4 und ferner umfassend die Schritte:
(f) Schälten jeder Zelle zu einem m Bits breiten Addierer, wobei jede Zelle einen separaten Polynomdividierer erster Ordnung bildet; und
(g) Bereitstellen von Codeworten, die Fehler enthalten können, an die Dividierer des Schrittes (f), um das empfangene Codewort durch die Faktoren des erzeugenden Polynoms zu dividieren, um die Syndrome zu erzeugen.
6. Das Verfahren nach Anspruch 4, wobei die Addierer, die im Schritt (d) verwendet werden, die gleichen Addierer sind, wie sie im Schritt (b) verwendet werden.
7. Das Verfahren nach Anspruch 4, wobei die im Schritt (d) verwendeten Addierer sich von den im Schritt (b) verwendeten Addierern unterscheiden.
8. Das Verfahren des Erzeugens von Redundanzsymbolen während der Codierung von Datensymbolen und zum Erzeugen von Syndromen während der Decodierung von Codeworten, welche Fehler enthalten können, umfassend die Schritte des Anspruchs 4 und ferner umfassend die Schritte:
(f) Verbinden jeder Zelle mit einem Paar von m Bit breiten Addierern, so daß die Ausgabe jeder Zelle zu der Eingabe zu der nächsten Zelle zweimal addiert wird, wobei jede Zelle einen separaten Polynomdividierer erster Ordnung bildet; und
(g) Bereitstellen von Codeworten, die Fehler enthalten können, an die Dividierer des Schrittes (f), um das empfangene Codewort durch die Faktoren des erzeugenden Polynoms zu dividieren, um die Syndrome zu erzeugen.
9. Das Verfahren nach Anspruch 4, wobei das rücksetzbare Register einer Zelle zurückgesetzt gehalten wird, wenn die Wurzel (root) der Zelle nicht in dem gewünschten Codewortgenerator enthalten sein soll.
DE69429525T 1993-09-21 1994-09-20 Programmierbarer redundanz/syndromgenerator Expired - Fee Related DE69429525T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/124,938 US5473620A (en) 1993-09-21 1993-09-21 Programmable redundancy/syndrome generator
PCT/US1994/010668 WO1995008803A2 (en) 1993-09-21 1994-09-20 Programmable redundancy/syndrome generator

Publications (2)

Publication Number Publication Date
DE69429525D1 DE69429525D1 (de) 2002-01-31
DE69429525T2 true DE69429525T2 (de) 2002-07-18

Family

ID=22417508

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69429525T Expired - Fee Related DE69429525T2 (de) 1993-09-21 1994-09-20 Programmierbarer redundanz/syndromgenerator

Country Status (7)

Country Link
US (2) US5473620A (de)
EP (1) EP0720759B1 (de)
JP (1) JPH09505952A (de)
KR (1) KR960705272A (de)
DE (1) DE69429525T2 (de)
SG (1) SG46513A1 (de)
WO (1) WO1995008803A2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768296A (en) * 1994-07-01 1998-06-16 Quantum Corporation ECC system supporting different-length Reed-Solomon codes whose generator polynomials have common roots
JP3260630B2 (ja) * 1996-07-31 2002-02-25 エヌイーシーマイクロシステム株式会社 定数除算器及び定数除算方法
JPH11196006A (ja) * 1997-12-26 1999-07-21 Nec Corp 並列処理シンドロ−ム計算回路及びリ−ド・ソロモン複合化回路
US6026420A (en) * 1998-01-20 2000-02-15 3Com Corporation High-speed evaluation of polynomials
US6058500A (en) 1998-01-20 2000-05-02 3Com Corporation High-speed syndrome calculation
US6029186A (en) * 1998-01-20 2000-02-22 3Com Corporation High speed calculation of cyclical redundancy check sums
GB9815618D0 (en) 1998-07-18 1998-09-16 Univ Manchester Treatment of dyskinesia
EP1146650A1 (de) * 2000-04-10 2001-10-17 Hewlett-Packard Company, A Delaware Corporation Fehlerkorrektur für Datenauzeichnung und Übertragung
US20020104053A1 (en) * 2000-12-15 2002-08-01 Mike Lei In-band FEC encoder for sonet
CN100489797C (zh) * 2001-10-11 2009-05-20 阿尔特拉公司 可编程逻辑设备上的错误检测
US7219289B2 (en) * 2005-03-15 2007-05-15 Tandberg Data Corporation Multiply redundant raid system and XOR-efficient method and apparatus for implementing the same
US8527851B2 (en) * 2008-08-04 2013-09-03 Lsi Corporation System and method for using the universal multipole for the implementation of a configurable binary Bose-Chaudhuri-Hocquenghem (BCH) encoder with variable number of errors
US8464141B2 (en) 2008-08-13 2013-06-11 Infineon Technologies Ag Programmable error correction capability for BCH codes

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0159403A3 (de) * 1984-04-27 1987-11-11 Siemens Aktiengesellschaft Anordnung zur Korrektur von Bündelfehlern in verkürzten zyklischen Blockcodes
JPS62180617A (ja) * 1986-02-04 1987-08-07 Victor Co Of Japan Ltd パリテイ生成回路
US4777635A (en) * 1986-08-08 1988-10-11 Data Systems Technology Corp. Reed-Solomon code encoder and syndrome generator circuit
JPS6356022A (ja) * 1986-08-26 1988-03-10 Victor Co Of Japan Ltd デイジタル記録再生装置
US5325373A (en) * 1986-12-22 1994-06-28 Canon Kabushiki Kaisha Apparatus for encoding and decoding reed-solomon code
JP2556495B2 (ja) * 1986-12-26 1996-11-20 キヤノン株式会社 符号処理装置
JPS63186338A (ja) * 1987-01-28 1988-08-01 Nec Corp 誤り訂正回路
US4782490A (en) * 1987-03-16 1988-11-01 Cythera Corporation Method and a system for multiple error detection and correction
US5107503A (en) * 1987-08-24 1992-04-21 Digital Equipment Corporation High bandwidth reed-solomon encoding, decoding and error correcting circuit
US4868828A (en) * 1987-10-05 1989-09-19 California Institute Of Technology Architecture for time or transform domain decoding of reed-solomon codes
EP0431629A3 (en) * 1989-12-08 1993-07-21 Sony Corporation Mutual division circuit
US5243604A (en) * 1990-12-18 1993-09-07 Seagate Technology, Inc. On-the-fly error correction
JP2662472B2 (ja) * 1991-06-13 1997-10-15 シャープ株式会社 誤り訂正処理用シンドローム演算回路
US5442578A (en) * 1991-12-12 1995-08-15 Sony Corporation Calculating circuit for error correction
US5444719A (en) * 1993-01-26 1995-08-22 International Business Machines Corporation Adjustable error-correction composite Reed-Solomon encoder/syndrome generator
JP2694792B2 (ja) * 1993-01-27 1997-12-24 日本電気株式会社 誤り位置多項式演算回路
JP2605966B2 (ja) * 1993-02-12 1997-04-30 日本電気株式会社 誤り訂正回路
US5517509A (en) * 1993-03-31 1996-05-14 Kabushiki Kaisha Toshiba Decoder for decoding ECC using Euclid's algorithm
US5465260A (en) * 1993-11-04 1995-11-07 Cirrus Logic, Inc. Dual purpose cyclic redundancy check

Also Published As

Publication number Publication date
EP0720759A4 (de) 1997-01-22
KR960705272A (ko) 1996-10-09
JPH09505952A (ja) 1997-06-10
WO1995008803A3 (en) 1995-04-13
EP0720759A1 (de) 1996-07-10
US5822337A (en) 1998-10-13
EP0720759B1 (de) 2001-12-19
SG46513A1 (en) 1998-02-20
DE69429525D1 (de) 2002-01-31
WO1995008803A2 (en) 1995-03-30
US5473620A (en) 1995-12-05

Similar Documents

Publication Publication Date Title
DE69424877T2 (de) Reed-solomon-dekoder
DE69429525T2 (de) Programmierbarer redundanz/syndromgenerator
DE3119669C2 (de)
DE3689285T2 (de) CRC-Rechenmaschinen.
DE3852423T2 (de) Kodierverfahren und Kodierer mit Reed-Solomon Fehlerkorrekturcode.
DE69834542T2 (de) Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke
DE2916710C2 (de)
DE3486471T2 (de) Verfahren und Vorrichtung zur Dekodierung eines Fehler-Korrektur-Code
DE3852999T2 (de) Galois-feld-recheneinheit.
DE3650335T2 (de) Rechenverfahren und -gerät für endlichfeldmultiplikation.
DE69922732T2 (de) Verfahren und Vorrichtung zur Faltungsverschachtelung sowie Verfahren und Vorrichtung zur Faltungsentschachtelung
DE3787900T2 (de) Verfahren und Gerät zur Erzeugung von Prüfungs-Byten zur Fehlerdetektion für einen Datenblock.
DE19838865C2 (de) Parallele CRC Erzeugungsschaltung zum Erzeugen eines CRC Codes und Verfahren zum Generieren einer derartigen Schaltung
DE4241903C2 (de) Euklidische wechselseitige Divisionsschaltung
DE3123978A1 (de) &#34;verfahren zum decodieren einer uebertragenen digitalen information unter korrektur von fehlern&#34;
EP0545498B1 (de) Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen
DE2263488C2 (de) Einrichtung zur Erkennung und Korrektur von Fehlern in zwei fehlerbehafteten Spuren eines Vielspur-Datensystems
DE69020951T2 (de) Kodiereinrichtung für einen Fehlerprüfungs- und Fehlerkorrekturkode.
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE3689282T2 (de) CRC-Rechenmaschine und Methode zur CRC-Berechnung.
DE3852648T2 (de) Hypersystolischer reed-solomon-encoder.
DE3404417A1 (de) Codierer-pruefschaltungsanordnung
DE69032382T2 (de) Digitale Signalverarbeitungsschaltung
DE60309079T2 (de) Umordnungsgerät mit entsprechender dynamischer Elementanpassungstechnik zur Linearisierung von Digital-Analog-Wandlern mit Einheitselementen
EP0003480B1 (de) Schaltungsanordnung zum Umwandeln von Binärinformationen mittels Kontrollbits

Legal Events

Date Code Title Description
8339 Ceased/non-payment of the annual fee