DE69429525T2 - Programmierbarer redundanz/syndromgenerator - Google Patents
Programmierbarer redundanz/syndromgeneratorInfo
- 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
Links
- 208000011580 syndromic disease Diseases 0.000 title claims abstract description 26
- 238000000034 method Methods 0.000 claims abstract description 15
- 230000008878 coupling Effects 0.000 claims 4
- 238000010168 coupling process Methods 0.000 claims 4
- 238000005859 coupling reaction Methods 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
- Diese Erfindung bezieht sich allgemein auf digitale Datenkommunikationssysteme und insbesondere auf die Codierung und Decodietung von Fehlerkorrekturcodes.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1993
- 1993-09-21 US US08/124,938 patent/US5473620A/en not_active Expired - Lifetime
-
1994
- 1994-09-20 SG SG1996005422A patent/SG46513A1/en unknown
- 1994-09-20 WO PCT/US1994/010668 patent/WO1995008803A2/en active IP Right Grant
- 1994-09-20 JP JP7509902A patent/JPH09505952A/ja active Pending
- 1994-09-20 EP EP94929851A patent/EP0720759B1/de not_active Expired - Lifetime
- 1994-09-20 DE DE69429525T patent/DE69429525T2/de not_active Expired - Fee Related
- 1994-09-20 KR KR1019960701461A patent/KR960705272A/ko not_active Application Discontinuation
-
1995
- 1995-12-01 US US08/565,866 patent/US5822337A/en not_active Expired - Lifetime
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) | "verfahren zum decodieren einer uebertragenen digitalen information unter korrektur von fehlern" | |
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 |