DE69121307T2 - Mehrfachpegel-Fehlerkorrektursystem - Google Patents
Mehrfachpegel-FehlerkorrektursystemInfo
- Publication number
- DE69121307T2 DE69121307T2 DE69121307T DE69121307T DE69121307T2 DE 69121307 T2 DE69121307 T2 DE 69121307T2 DE 69121307 T DE69121307 T DE 69121307T DE 69121307 T DE69121307 T DE 69121307T DE 69121307 T2 DE69121307 T2 DE 69121307T2
- Authority
- DE
- Germany
- Prior art keywords
- symbols
- section
- redundancy
- error correction
- level
- 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
- 238000012937 correction Methods 0.000 title claims description 67
- 238000000034 method Methods 0.000 claims description 26
- 230000000717 retained effect Effects 0.000 claims description 4
- 238000012217 deletion Methods 0.000 claims 2
- 230000037430 deletion Effects 0.000 claims 2
- 230000010339 dilation Effects 0.000 claims 1
- 230000014759 maintenance of location Effects 0.000 claims 1
- 238000004193 electrokinetic chromatography Methods 0.000 description 60
- 238000010586 diagram Methods 0.000 description 6
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Description
- Die Erfindung bezieht sich allgemein auf eine Fehlerkorrektur von Daten und insbesondere auf verbesserte Techniken zum Mehrfachpegelcodieren und -decodieren.
- Die Bedeutung eines Fehlerkorrekturcodierens von Daten in digitalen Computersystemen hat stark zugenommen, da die Dichte der Daten, die auf Massenspeichermedien aufgezeichnet sind, insbesondere auf Magnetplatten, ange wachsen ist. Mit höheren Auf zeichnungsdichten kann ein winziger Fehler in der Aufzeichnungsfläche einer Platte eine große Datenmenge verderben. Um einen Verlust jener Daten zu vermeiden, werden Fehlerkorrekturcodes ("ECC's") verwendet, um, wie der Name zeigt, die fehlerhaften Daten zu korrigieren.
- Bevor eine Folge von Datensymbolen auf einer Platte aufgezeichnet wird, wird sie mathematisch codiert, um ECC- oder Redundanz-Symbole zu bilden. Die Redundanzsymbole werden dann der Datenfolge beigefügt, um Codewörter - Datensymbole plus Redundanzsymbole - zu bilden, und die Codewörter werden dann auf der Platte gespeichert. Wenn auf die gespeicherten Daten von der Platte zugegriffen wird, werden die Codewörter, die die Datensymbole enthalten, von der Platte wiedergewonnen und mathematisch decodiert. Während eines Decodierens werden jegliche Fehler in den Daten erfaßt und, falls möglich, durch Manipulation der Redundanzsymbole korrigiert (für eine Detailbeschreibung des Decodierens siehe Peterson und Weldon, Error Correcting Codes, 2. Ausgabe, MIT Press, 1972).
- Gespeicherte digitale Codewörter können Mehrfachfehler enthalten. Einer der wirksamsten Typen von ECC, der für die Korrektur von Mehrfachfehlern verwendet wird, ist ein Reed-Solomon-Code (für eine Detailbeschreibung der Reed-Solomon-Codes siehe Peterson und Weldon, Error Correcting Codes). Fehlererfassungs- und Korrekturtechniken für Reed-Solomon-ECC's sind wohlbekannt. Siehe oben. Eine derartige Technik beginnt wieder mit einem Codieren der Codewortdaten, um einen neuen Satz von Redundanzsymbolen zu erzeugen, und dann mit dem Vergleichen dieses Satzes von Redundanzsymbolen mit den Redundanzsymbolen in dem wiedergewonnenen Codewort, d.h. dem Satz von Redundanzsymbolen, die durch das Vorspeichercodieren der Daten erzeugt sind, um jegliche Fehler in dem wiedergewonnenen Codewort zu erfassen (für eine Detaildiskussion dieser Fehlererfassungstechnik siehe US-PS 4 413 339, herausgegeben für Riggle und Weng).
- Fehler in gespeicherten Daten treten oft in Mustern auf, wie beispielsweise in Mehrsymbol-Impulsstößen. Derartige Fehler können beispielsweise durch eine Mangelhaftigkeit in dem Aufzeichnungsmedium verursacht sein. Verschiedene Codier- und Decodierschemen wurden entwickelt, um gemeinsame Fehlermuster zu korrigieren. Ein für Impulsstöße bzw. Bursts entwickeltes Schema ist ein Verzahnen. Ein Verzahnen umfaßt ein Trennen der Daten in eine Anzahl von Abschnitten und mittels eines ECC ein getrenntes Codieren jedes Abschnittes, um ein Codewort zu bilden. Jedes Codewort enthält so einen Abschnitt der Daten und einen betreffenden Satz von Redundanzsymbolen. Die verzahnten Daten und die Redundanzsymbole von allen Abschnitten werden dann aufgezeichnet. In typischer Weise werden die verzahnten Datensymbole kontinuierlich aufgezeichnet, woran sich die Redundanzsymbole anschließen. Burstfehler, die eine Anzahl von kontinuierlichen (verzahnten) Datensymbolen beeinträchtigen, verursachen eine kleine Anzahl von Fehlern in jedem von verschiedenen Codewörtern. Wenn die Daten und Redundanzsymbole später wiedergewonnen werden, werden die verschiedenen Sätze von Redundanzsymbolen verwendet, um Fehler in den Datenabschnitten zu korrigieren, die diesen zugeordnet sind. Somit schützt ein gegebener Satz von Redundanzsymbolen einen Teil der Daten und korrigiert vermutlich lediglich einen Teil von jedem beliebigen Fehlerburst. Demgemäß kann ein ECC, der ausgelegt ist, um "x" fehlerhafte Symbole zu korrigieren, Bursts bzw. Impulsstöße korrigieren, die länger als x Symbole sind, indem diese Abschnitt für Abschnitt korrigiert werden. Der für ein solches Schema ausgewählte ECC kann weniger leistungsvoll sein als ein solcher, der Burstfehler korrigieren muß, ohne diese zu teilen. Die Vorteile des Verwendens eines weniger leistungsvollen ECC sind eine einfachere Codier/Decodier- Hardware und (typischerweise) eine raschere Korrektur (für eine Detailbeschreibung des Verzahnungscodierens, siehe Peterson und Weldon, Error Correcting Codes)
- Ein anderes Schema, das verwendet wird, um gemeinsame Fehlermuster zu korrigieren, ist ein Mehrfachpegel- Codieren. Ein Mehrfachpegel-Codieren umfaßt ein einmaliges Codieren von Daten unter Verwendung eines ECC und/oder einer Technik, die ausgelegt ist, um die meisten gemeinsamen Fehlermuster zu korrigieren, und dann ein Codieren der Daten zu einer nächsten Zeit, wobei ein anderer ECC und/oder eine Technik verwendet wird, die ausgelegt ist, um die nächsten am meisten gemeinsamen Fehlermuster zu korrigieren, und so weiter. Ein Mehrpegeldecodieren umfaßt ein Codieren der Daten mittels des ersten Pegel-ECC oder einer Technik, und, falls Fehler dann zurückbleiben, ein Korrigieren von diesen mittels des zweiten Pegel-ECC oder einer Technik, und so weiter.
- Beispielsweise kann ein erster Pegel des Codierens aus einem Codieren der Daten mit einem relativ schwachen ECC bestehen. Ein zweiter Pegel des Codierens kann aus einem erneuten Codieren der Daten mit einem leistungsvolleren ECC bestehen. Ein derartiges Zweipegel-Schema ist in den US-Patenten 4 706 250 und 4 525 838 für Patel offenbart. Das in den beiden Patenten offenbarte Patel-Schema codiert zuerst die Daten mittels eines ECC, der ea-Fehler korrigiert. Patel trennt einen Block von Daten in "i" Abschnitte oder Unterblöcke von jeweils kl Symbolen und codiert getrennt jeden k-Symbolabschnitt mittels eines ersten ECC. Dieser Pegel des Codierens erzeugt "p" Redundanzsymbole für jeden Datenabschnitt oder eine Gesamtsumme von "ip" Reundanzsymbolen.
- Patel addiert sodann die entsprechenden Datensymbole in jedem Unterblock zusammen (exklusive ODER) und behandelt die sich ergebenden k Symbole als einen zusätzlichen "Daten"-Abschnitte. Patel codiert dann diese Symbole mittels eines leistungsvolleren ECC, der bis zu eb Fehler korrigieren kann (eb ≥ ea). Dieses zweite Codieren erzeugt "s" zusätzliche Redundanzsymbole. Patel speichert die Daten und die ip und s Redundanzsymbole, das heißt, die Redundanzsymbole, die während der zwei Pegel des Codierens erzeugt sind. Er speichert nicht die k zusätzlichen "Daten" Symbole. Das Patel-Schema kann bis zu ea Fehler in jedem Unterblock mittels des ersten Pegels oder eines Pegels-1, ECC und bis zu eb Fehler in jeglichem einen Unterblock mittels des Pegels-2 ECC korrigieren. Demgemäß versucht Patel zuerst jeglichen Fehler in den Daten mittels des Pegels-1 ECC zu korrigieren. Wenn alle Fehler mittels dieses ECC korrigiert werden, stoppt er die Fehlerkorrektur-Decodieroperation und verwendet nicht den Pegel-2 ECC. Wenn alle bis auf einen Unterblock korrigiert sind, wird der Pegel-2 Code in einem Versuch, diesen zu korrigieren, verwendet. Patel unterwirft so die entsprechenden Datensymbole einer exklusiven ODER-Verknüpfung in jedem Abschnitt, der die Symbole, die mittels des Pegels-1 ECC korrigiert sind, und die fehlerhaften Symbole, die der Pegel-1 Code nicht korrigierte enthält, um k "Daten" -Symbole zu bilden, die dem k-Symbol-Zusatzdatenabschnitt entsprechen, der während des Codierens erzeugt ist. Patel versucht sodann, die Fehler in diesen k-Symbolen mittels des Pegels-2 Code zu korrigieren.
- Wenn dort eb oder weniger Fehler vorliegen, bestimmt der Pegel-2 Code die Stellen der fehlerhaften Symbole innerhalb des k-Symbol-"Daten"-Abschnittes und erzeugt die zugeordneten Fehlerwerte, das heißt, die Symbole, die exklusiv ODER-verknüpft werden müssen mit den fehlerhaften Symbolen, um diese zu korrigieren. Patel übersetzt die Fehlerstellen zu dem Unterblock, der die Fehler enthält, und korrigiert diese mittels der erzeugten Fehlerwert symbole.
- Wenn die Daten mehr als eb Fehler je Unterblock oder mehr als einen Unterblock mit mehr als ea Fehler enthalten, kann das Patel-Schema die Fehler nicht korrigieren. Somit ist es wünschenswert, da mehr Fehler infolge gesteigerter Aufzeichnungsdichten auftreten, ein Fehlerkorrekturschema zu verwenden, das fähig ist, eine größere Anzahl von Fehlern zu korrigieren.
- Eine Lösung besteht darin, ein leistungsvolleres ECC bei jedem Pegel zu verwenden. Dies ruft drei Probleme hervor. Zunächst erzeugen die leistungsvolleren ECCs zusätzliche Redundanzsymbole. Somit muß mehr Speicherraum den Daten zugeordnet werden, und weniger Daten können in einem gegebenen Speicherraum aufgezeichnet werden. Zweitens erfordern die leistungsvolleren ECCs eine komplexere und somit aufwendigere Codier- und Decodier-Hardware und/oder Software. Drittens erfordern die ECCs mehr Zeit zum Korrigieren der Fehler als die ECCs, die weniger Redundanzsymbole verwenden.
- Da Datenübertragungstechnologien verbessert sind und die Geschwindigkeit, mit der Daten von einer Platte wiedergewonnen werden können, zunimmt, wirkt ein langsamerer und mehr komplexer ECC als eine Grenze für die Geschwindigkeit, mit der Daten übertragen werden können. Demgemäß ist das, was benötigt wird, ein leistungsvolleres Codierschema, das rasch Fehler korrigieren kann, das einfach ausgeführt ist und das nicht übermäßige Größen an Speicherraum erfordert.
- Die Erfindung ist ein Mehrfachpegel-Codierschema, das höhere Pegel des Codierens der Redundanzsymbole verwendet, die während eines ersten Pegels des Codierens erzeugt sind, so daß alle Pegel zusammen ein leistungsvolles und rasches Fehlerkorrekturschema bilden. Das Mehrfachpegel-Codierschema braucht nicht alle Redundanzsymbole zurückhalten, da diese Symbole aus einer gewählten Anzahl von zurückgehaltenen Symbolen regeneriert werden können, wie dies unten beschrieben ist.
- Ein System, das das erfindungsgemäße Mehrfachpegel- Codierschema verwendet, trennt zuerst die Daten in "i" Abschnitte von jeweils "k" Symbolen oder i Unterblöcken und codiert jeden Unterblock mittels eines (n,k) ECC. Die Datensymbole können oder können nicht verzahnt sein. Dieser erste Pegel des Codierens erzeugt für alle k Datensymbole ein "n" Symbolcodewort, das "n-k" oder "r" Redundanzsymbole oder insgesamt "ri" Redundanzsymbole enthält.
- Das System segmentiert sodann die ri Redundanzsymbole in m" Mehrfachsymbolabschnitte, insbesondere R(1) R(m), die entsprechende Symbole von jedem der i Codewörter enthalten. Das System codiert sodann jeden dieser Abschnitte mittels entweder des gleichen ECC oder vorzugsweise ECCs einer abnehmenden Stärke. Somit codiert es beispielsweise ein erstes Redundanzsymbole Wj+1 von jedem der i Pegel-1 Codewörter und erzeugt q&sub2; Redundanzsymbole, wobei die Wj+1 Redundanzsymbole und die zu q&sub2; erzeugte Redundanz ein Pegel-2 Codewort bilden. Sodann codiert es ein zweites Redundanzsymbol wj+2 von jedem der i Codewörter und erzeugt andere q&sub2; Redundanzsymbole, die ein zweites Pegel-2 Codewort bilden, und so weiter. Die Pegel-2 Redundanzsymbole entsprechend den verschiedenen Abschnitten R(2) ... R(m) sind jeweils in Abschnitten Q(2), ... Q(m). Das System speichert sodann die Daten, die Redundanzsymbole des Abschnittes R(1) und die Redundanzsymbole der Abschnitte Q(2), ..., Q(m) . Es speichert jedoch nicht die Redundanzsymbole in Abschnitten R(2), ..., R(m), da diese Symbole mittels der aufgezeichneten R(1) und Q(2), ..., Q(m) Redundanzsymbole regeneriert werden können.
- Wenn Daten aus der Speicherung wiedergewonnen werden, werden sie Codewort für Codewort mittels des Pegel-1 ECC decodiert. Das System verwendet die wiedergewonnenen Abschnitt R(1) Symbole als Redundanzsymbole und behandelt die "fehlenden" Abschnitt R(2) ... R(m) Symbole als Löschsymbole. Der Pegel-1 ECC wird so verwendet, um die Redundanzsymbole in Abschnitte R(2), ..., R(m) für jedes Pegel-1 Codewort zu füllen, und auch, um, falls möglich, jegliche Fehler in den wiedergewonnenen Daten und den Abschnitt R(1) Redundanzsymbolen zu korrigieren. Wenn das Pegel-1 Decodieren nicht alle die Fehler und Löschungen mittels lediglich der wiedergewonnenen Abschnitt R(1) Symbole als Redundanzsymbole korrigiert, verwendet das System die Abschnitt Q(2) Redundanzsymbole und den Pegel-2 ECC, um die fehlenden Abschnitt R(2) Redundanzsymbole zu füllen. Sodann versucht das System, die entsprechenden Pegel-1 Codewörter mittels des Pegel-1 ECC und der wiedergewonnenen und eingefüllten Redundanzsymbole in Abschnitten R(1) und R(2) zu korrigieren. Falls notwendig füllt das System in jegliche unkorrigierte Redundanzsymbole in dem nächsten Abschnitt, d.h. dem Abschnitt R(3) mittels der Abschnitt Q(3) Symbole und des Pegel-3 ECC. Es verwendet dann den Pegel-1 ECC und die Redundanzsymbole in Abschnitten R(1), R(2) und R(3), um mehr Fehler in den Daten zu korrigieren, und so weiter.
- Die obigen und weitere Vorteile der Erfindung können unter Bezugnahme auf die folgende Beschreibung in Zusammenhang mit den begleitenden Zeichnungen besser verstanden werden, in welchen:
- Fig. 1 ein Blockdiagramm von verzahnten Codewörtern ist, die gemäß einem ersten Pegel eines Codierens erzeugt sind,
- Fig. 2 ein Blockdiagramm der Codewörter von Fig. 1 ist, die weiter mittels eines zweiten und dritten Pegels des Codierens codiert sind,
- Fig. 3 ein Blockdiagramm von Teilen der Codewörter von Fig. 2 ist, die in einem Speicher rückgehalten sind,
- Fig. 4 ein Blockdiagramm von wiedergewonnenen Codewörtern einschließlich regenerierter Redundanzsymbole ist,
- Fig. 5 ein Blockdiagramm eines Codiersystemes ist, das Daten codiert, um Codewörter gemäß einem zweiten Ausführungsbeispiel der vorliegenden Erfindung zu bilden, und
- Fig. 6 ein Blockdiagramm der Codewörter ist, die durch den in Fig. 5 gezeigten Codierer erzeugt sind.
- In Fig. 1 erzeugt ein (nicht gezeigtes) System eine Folge von "ki" Datensymbolen in "i" Abschnitten oder Unterblöcken von jeweils "k" Symbolen. Das System kann zuerst die ki Datensymbole verzahnen. Diese i Abschnitte sind als Spalten 10 in der Zeichnung angeordnet. Das System führt ein erstes Pegelcodieren mittels eines (n,k) ECC und herkömmlicher Techniken durch und codiert jeden Abschnitt der Daten, um ein Pegel-1 Codewort aus k Datensymbolen und "n-k" oder "r" Redundanzsymbolen zu bilden. Die Codewörter entsprechen Spalten c&sub1;, c&sub2;, ci der Anordnung in der Zeichnung. Das System erzeugt so "ri" Redundanzsymbole in dem ersten Pegel des Codierens.
- Das System segmentiert sodann die ri Redundanzsymbole in m Abschnitte 12-16, R(1), R(2), ..., R(m) einer willkürlichen Größe, wobei m=3 beispielhaft ist. Jeder Abschnitt enthält vorzugsweise wenigstens zwei Redundanzsymbole, was die Anzahl von Symbolen ist, die erforderlich ist, um ein fehlerhaftes Datensymbol zu korrigieren. Somit enthält jeder Abschnitt 12-16 wenigstens zwei Reihen in der in der Zeichnung herausgegriffenen Anordnung.
- In der Fig. 2 codiert nunmehr das System die Symbole in Abschnitt R(2) mittels eines zweiten Pegels des Codierens. Es codiert so als "Informations"-Symbole die entsprechenden Redundanzsymbole von jedem der i Codewörter, das heißt, jeder Reihe "Wa" des Abschnittes R(2) mittels eines zweiten ECC. Dieser zweite Pegel des Codierens erzeugt für jede Reihe Wj+1 Wp des Abschnittes R(2) "q&sub2;" Redundanzsymbole. Jede Reihe aus i Informationssymbolen und q&sub2; Redundanzsymbolen bildet ein Pegel-2-Codewort. Das System erzeugt so in diesem Pegel des Codierens eine Gesamtsumme von (p-j+1)q&sub2; Redundanzsymbolen. Diese Symbole sind als Abschnitt Q(2) in der Zeichnung angegeben. Im allgemeinen ist die Anzahl der Symbole in Abschnitt Q(2) < als die Anzahl der Symbole in Abschnitt R(2).
- Das System führt sodann einen dritten Pegel des Codierens durch, indem die Symbole in ähnlicher Weise in Abschnitt R(3) codiert werden. Es codiert so die entsprechenden Redundanzsymbole von jedem der i Codewörter mittels eines ECC der vorzugsweise weniger leistungsvoll als der Pegel-2 Code ist. Der dritte Pegel des Codierens erzeugt für jede Reihe Wj+1, Wj+2 ... wr des Abschnittes R(3) "q&sub3;" Redundanzsymbole. Jede Reihe, die aus i "Informations"-Symbolen und q&sub3; Redundanzsymbolen besteht, bildet ein Pegel-3 Codewort. Das System erzeugt so in diesem Pegel des Codierens eine Gesamtsumme von (r-p+1)q&sub3; Redundanzsymbolen. Diese Symbole sind als Abschnitt Q(3) in der Zeichnung angegeben. Im allgemeinen ist die Anzahl der Symbole in Abschnitt Q(3) ( als die Anzahl der Symbole in Abschnitt R(3)
- In Fig. 3 speichert das System nunmehr in einem (nicht gezeigten) Speicher die ki Datensymbole und die Redundanzsymbole für Abschnitt R(1), Q(2) und Q(3). Es speichert jedoch nicht die Redundanzsymbole für Abschnitt R(2) und R(3), da diese Symbole mittels der gespeicherten Redundanzsymbole für Abschnitt R(1), Q(2) und Q(3) regeneriert werden können, wie dies unten erläutert ist. Die Symbole für Abschnitt R(2) und R(3) werden so absichtlich "gelöscht". Jedes der gelöschten Symbole wird während eines Decodierens als eine Löschung behandelt, das heißt, als ein Fehler mit einer bekannten Stelle.
- Bei Bedarf kann das System auch die Redundanzsymbole für die gespeicherten Abschnitte R(1), Q(2) ... Q(m) mittels eines oder mehrerer ECCs codieren, die Redundanzsymbole ECK(1), ECK(2) und ECK(3) erzeugen. Diese Symbole werden dann längs der Daten und der Symbole für den Abschnitt R(1), Q(2) und Q(3) gespeichert. Während eines Decodierens können diese (bedarfsweise) Redundanzsymbole verwendet werden, um jegliche Fehler in den gespeicherten Redundanzsymbolen zu korrigieren, bevor die Redundanzsymbole verwendet werden, um die gelöschten Symbole zu regenerieren. Die bedarfsweisen Symbole sind so eine beigefügte Schutzschicht für die gespeicherten Symbole und die gelöschten Symbole.
- Die Datensymbole werden durch m Pegel des Codierens geschützt. Der erforderliche Speicherraum für die m Pegel der Redundanzsymbole ist kleiner als der Raum, der für alle die ri Pegel-1 Redundanzsymbole erforderlich ist. Demgemäß bietet das Schema mehr Schutz als herkömmliche Mehrfachpegel-Codierschemas und verwendet weniger Speicherraum.
- Wie für den Fachmann zu ersehen ist, können die Daten und Redundanzsymbole in jeglichem Format gespeichert oder aufgezeichnet werden. Das in den Figuren gezeigte Blockformat dient lediglich für Erläuterungszwecke.
- Wenn die gespeicherte Information später wiedergewonnen wird, verwendet das System die wiedergewonnenen Redundanzsymbole für Abschnitt R(1), um für jedes Codewort die Pegel-1 Redundanzsymbole des "gelöschten" Abschnittes R(2) und R(3) mittels herkömmlicher Fehler- und Löschkorrekturtechniken zu regenerieren. Es verwendet auch die Redundanzsymbole für den Abschnitt R(1), um Fehler in den wiedergewonnenen Daten und Redundanzsymbolen zu korrigieren. Fig. 4 veranschaulicht einige regenerierte Spalten, beispielsweise c&sub1;, c&sub2;, usw.
- Wenn das System nicht ein gültiges Codewort für einen besonderen Abschnitt von Daten, d.h. eine besondere Spalte, erzeugt, behandelt es die zugeordneten Symbole für Abschnitt R(2) und R(3) als Fehler mit bekannten Stellen, beispielsweise Spalten ce1, ce2 ... cef. Es decodiert dann jede Reihe des Abschnittes R(2) mittels der geeigneten Redundanzsymbole für Abschnitt Q(2) und des Pegel-2 ECC und füllt in den gelöschten Abschnitt R(2) Symbole in den Spalten ce1, ce2 ... cew wie dies geeignet ist. Das System versucht sodann, jegliche verbleibende Fehler in den wiedergewonnenen Daten und Abschnitt R(1) Symbole von diesen Spalten mittels des Pegel-1 ECC und der Redundanzsymbole des geeigneten Abschnittes R(1) und R(2) zu korrigieren.
- Wenn das System nicht alle die Fehler korrigieren kann und alle die gelöschten Redundanzsymbole mittels des Pegel-1 ECC und der Redundanzsymbole der Abschnitte R(1) und R(2) regeneriert, verwendet es die Redundanzsymbole des Abschnittes Q(3) und den Pegel-3 ECC, um jegliche fehlende Symbole des Abschnittes R(3) zu füllen. Es verwendet dann diese eingefüllten Symbole und die Redundanzsymbole des Abschnittes R(1) und R(2) mit dem Pegel-1 ECC, um mehr Fehler zu korrigieren. Falls erforderlich und wenn mehr Pegel vorliegen, wiederholt das System die Korrekturprozedur für jeden derartigen Pegel.
- Bevor das System die Symbole des gelöschten Abschnittes R(2) und R(3) regeneriert, verwendet es die bedarfsweisen bzw. fakultativen ECC-Symbole, falls welche vorhanden sind, um jegliche Fehler in den Redundanzsymbolen des wiedergewonnenen Abschnittes R(1), Q(2) und Q(3) zu korrigieren. Sodann führt das System die Pegel-1 Fehler- und Löschkorrektur durch, um die gelöschten Redundanzsymbole zu füllen und Fehler der wiedergewonnenen Daten in Redundanzsymbolen des Abschnittes R(1) zu korrigieren. Es folgt dann den Prozeduren, die oben erläutert sind, um die Fehler zu korrigieren.
- Wenn das System seine höheren Pegel des Decodierens durchführt, begegnet es schlecht verdorbenen Daten. Das System kann so einem Systemoperator melden, daß die Daten schlecht verdorben sind, und der Systemoperator kann sodann das Aufzeichnungsmedium prüfen und die gespeicherten Daten retten, bevor sie unwiederbringbar verloren sind. Zum Stand der Technik zählende Systeme, die lediglich zwei Pegel des Decodierens verwenden, enthalten keine derartige Warnung vor verdorbenen Daten, und sie können so gegebenenfalls bei verdorbenen Medien Daten verlieren.
- Die Fig. 5 und 6 veranschaulichen ein zweites Ausführungsbeispiel der vorliegenden Erfindung, das zusammen mit einem bestehenden Einpegel-Codiersystem verwendet werden kann. Das Einpegel-System codiert die ki Datensymbole, nachdem diese (fakultativ) verzahnt sind. Es codiert diese in k-Symbolabschnitten in einem Codierer 18, um Codewörter gemäß einem ECC zu bilden, der ein aufeinanderfolgendes Wurzelerzeugungspolynom g&sub1; (x) hat:
- (x+αa)*(a+α+1)*(x+αa+2)*(x+αa+3)*... *(x+αa+s)
- wobei * eine Galois-Feld-Multiplikation bedeutet und α ein primitives Polynom des Galois-Feldes GF(2t) ist, das zum Codieren der Daten verwendet wird.
- Die Codewörter bestehen aus k Datensymbolen und s Redundanzsymbolen und sind als Spalten 10 in Fig. 6 angeordnet, wobei die si Redundanzsymbole für alle Codewörter als Abschnitt S(1) in den Zeichnungen eingetragen sind. Diese Codewörter werden sodann auf einen zweiten Codierer 20 für einen zweiten Pegel des Codierens angewandt. Dieser Pegel des Codierens ist einem ECC zugeordnet, der als ein Erzeugungspolynom g&sub2;(x) eine gedehnte Version von g&sub1;(x) hat:
- Dieser zweite ECC ist leistungsvoller, das heißt, er korrigiert mehr Fehler in einer gegebenen Menge von Daten als der ECC, der einem g&sub1;(x) zugeordnet ist.
- Die Datensymbole wurden bereits g&sub1;(x) durch den Einpegel-Codierer 18 codiert, um die Redundanzsymbole des Abschnittes S(1) zu erzeugen. Demgemäß werden die Codewort-Datensymbole und die S(1) Redundanzsymbole als Informationssymbole behandelt, und der zweite Codierer 20 codiert tatsächlich die Symbole gemäß den Faktoren g&sub2;(x), die nicht Teil von g&sub1;(x) sind. Somit codiert der Codierer 20 die Symbole gemäß einem Polynom g*&sub2;(x), was gleich ist zu g&sub2;(x)/g&sub1;(x). Dieses zweite Codieren erzeugt für jedes Codewort Redundanzsymbole, die als Abschnitt S(2) in Fig. 6 angegeben sind. Die Redundanzsymbole des Abschnittes S(2) allein liefern keinen angemessenen Fehlerschutz für die Daten, da das Polynom g&sub2;*(x), das verwendet wird, um diese zu erzeugen, nicht so viele aufeinanderfolgende Wurzeln in GF(2t) wie g&sub1;(x) zu haben braucht. Jedoch schützen die Symbole des Abschnittes S(2) zusammen mit den Symbolen des entsprechenden Abschnittes S(1) die Datensymbole mit einer relativ leistungsvollen ECC, der als ein Erzeugerpolynom g&sub2;(x) hat.
- Dritte, vierte,.. m Pegel des Codierens können in der gleichen Weise durchgeführt werden. Ein dritter Pegel des Codierens verwendet beispielsweise ein Erzeugerpolynom g&sub3;*(x) = g&sub3;(x)/g&sub2;(x), wobei g&sub3;(x) eine gedehnte Version von g&sub2;(x) ist. Somit codieren Codierer für diese Pegel, beispielsweise ein Codierer 22 für ein m- Pegel-Codieren die Datensymbole und die entsprechenden Redundanzsymbole der Abschnitte S(1) ... S(m-1) gemäß einem Polynom g*m(x), das gleich ist zu dem Quotienten von gm(x), der die gedehnte Version von gm&sub1;(x) ist, geteilt durch das Erzeugerpolynom gm-1(x), das dem vorangehenden Pegel zugeordnet ist. Das Pegel-m- Erzeugerpolynom umfaßt so aufeinanderfolgende Wurzeln und schützt auch die Daten mit einem sogar leistungsvolleren ECC.
- Die für jeden Pegel des Codierens erzeugten Redundanzsymbole sind in Abschnitten S(1) ... S(m) in Fig. 6 angegeben. Diese Redundanzsymbolabschnitte entsprechen dem Abschnitt R(1), R(2) ... R(m) von Fig. 2. Wieder in Fig. 6 werden die Redundanzsymbole in Abschnitten S(2) S(m), wobei m=3 in diesem Ausführungsbeispiel gilt, dann als Informationssymbole codiert, um das Redundanzsymbol zu erzeugen, das in Abschnitten Q(2) und Q(3) angegeben ist, wie dies oben anhand der Fig. 3 diskutiert ist.
- Nachdem die Daten und Redundanzsymbole der Pegel-2 und 3 codiert wurden, um die Symbole zu erzeugen, die in Abschnitten Q(2) und Q(3) angegeben sind, codiert das System weiter die Redundanzsymbole in Abschnitten Q(2) und Q(3), indem ein oder mehrere ECCs verwendet werden, und erzeugt Redundanzsymbole ECK(2) und ECK(3). Das System speichert dann diese Redundanzsymbole zusammen mit den Datensymbolen, den Redundanzsymbolen des Abschnittes S(1) und den Redundanzsymbolen des Abschnittes Q(2) und Q(3). Es speichert jedoch nicht die Redundanzsymbole des Abschnittes S(2) und S(3), da diese Symbole mittels der gespeicherten Redundanzsymbole regeneriert werden können. Dieses zweite Ausführungsbeispiel unterscheidet sich vom ersten dadurch, daß das System Redundanzsymbole des Abschnittes Q(2) ... Q(m) codieren muß. Das System kann (fakultativ) die Symbole des Abschnittes S(1) codieren, um Symbole des Abschnittes ECK(1), wie in dem ersten Ausführungsbeispiel, zu bilden.
- Die Datensymbole 10 werden durch alle m Pegel des Codierens geschützt. Der m-te Pegel schützt sie mittels gm(x), was ein viel leistungsvollerer ECC als derjenige ist, der im Pegel-1 verwendet ist, ohne die Speicherung der großen Anzahl von Redundanzsymbolen zu erfordern. Frühere Systeme benötigen für einen derartigen Schutz die Speicherung von allen Redundanzsymbolen von allen Pegeln des Codierens.
- Ein Decodieren wird durch das System in Pegeln durchgeführt, wie dies oben anhand des ersten Ausführungsbeispiels diskutiert ist. Das System startet mit dem ECC des Pegels-1 und verwendet bei Bedarf höhere Pegel, um die gelöschten Symbole zu regenerieren und zusätzliche Fehler zu korrigieren. Jeder Pegel liefert einen viel leistungsvolleren Fehlerkorrekturmechanismus aufgrund der Verwendung eines Erzeugerpolynoms, das mehr Terme als der eine Term hat, der in dem früheren Pegel verwendet ist. Auch verwendet jeder Pegel Redundanzsymbole, die durch Codes gefüllt sind, welche einem geeigneten Abschnitt Q(2) ... Q(m) zugeordnet sind, und benutzt so fehlerfreie Redundanzsymbole. Demgemäß kann eine Korrektur relativ rasch durchgeführt werden.
- Das erfindungsgemäße Mehrfachpegel-Codierschema schützt Datensymbole mit leistungsvolleren ECCs, ohne, wie bei herkömmlichen Systemen erwartet, die Komplexität der Codierer/Decodierer zu steigern, was einen zusätzlichen Speicherraum erfordert, oder drastisch die Zeit zu erhöhen, die zur Fehlerkorrektur erforderlich ist. Das Schema codiert Redundanzsymbole von den verschiedenen niedrigeren Codierpegeln und behandelt diese als Löschungen. Das Codierschema kann so den Datensymbolen einen leistungsvollen Fehlerschutz ohne die Speicherung der Anzahl von Redundanzsymbolen, die bei herkömmlichen Systemen erforderlich sind, geben.
- Das erfindungsgemäße System verwendet die verschiedenen Pegel der Redundanzsymbole während des Mehrfachpegel- Decodierens, um Fehler und Löschungen beide zu korrigieren. Jeder Decodierpegel korrigiert lediglich einen Teil der Löschungen und/oder Fehler in den wiedergewonnenen Symbolen. Demgemäß kann eine Fehlerkorrektur relativ rasch mittels höherer Pegel des Decodierens entweder mit ECCs einer abnehmenden Komplexität wie in dem ersten Ausführungsbeispiel oder mit leistungsvollen ECC's, die benötigt werden, um relativ wenige Fehler zu korrigieren, wie beim zweiten Ausführungsbeispiel, durchgeführt werden.
- Die vorstehende Beschreibung ist auf zwei spezifische Ausführungsbeispiele dieser Erfindung begrenzt. Es ist jedoch offenbar, daß Anderungen und Modifikationen an der Erfindung vorgenommen werden können, wobei einige oder alle ihrer Vorteile erreicht werden, welche in den Bereich der beigefügten Patentansprüche fallen.
Claims (19)
1. Verfahren zum Schützen eines Blockes von "ki"
Datensymbolen gegen Fehler, wobei das Verfahren die
folgenden Schritte umfaßt:
A. Segmentieren des Blockes von ki Datensymbolen
in jeweils i Unterblöcke von k Symbolen und
Codieren jedes der Unterblöcke gemäß einem ersten
Fehlerkorrekturcode, um "i" Pegel-1-Codewörter
zu erzeugen, wobei jedes der Pegel-1-Codewörter
"k" Datensymbole und "r" Redundanzsymbole
enthält, die in einer Gesamtsumme von ri Pegel-1-
Redundanzsymbolen resultieren,
B. Sektionieren der ri Redundanzsymbole der
Pegel-1-Codewörter in "m" (m(r)
Mehrfachsymbolabschnitte R(1), R(2), ..., R(m), die
entsprechende Symbole von jedem der i Codewörter
enthalten,
C. Codieren der entsprechenden Redundanzsymbole in
Abschnitt R(2) von jedem der Pegel-1-Codewörter
gemäß einem Fehlerkorrekturcode, um Pegel-2-
Codewörter zu erzeugen, wobei jedes der
Pegel-2-Codewörter als Informationssymbole "i"
Redundanzsymbole, die mittels des ersten
Fehlerkorrekturcodes erzeugt sind, und "q&sub2;" weitere
Redundanzsymbole enthält, wobei die Symbole so
erzeugt sind, daß sie einem Abschnitt Q(2) der
Redundanzsymbole zugeordnet sind,
D. Wiederholen des Schrittes C für jeden der
verbleibenden R(3), ..., R(m)
Redundanzsymbolabschnitte, wobei das Codieren Abschnitte Q(3),
..., Q(m) der Redundanzsymbole erzeugt, und
E. Zurückhalten der Datensymbole, des Abschnittes
R(1) der Redundanzsymbole und der Abschnitte
Q(2), Q(3), ..., Q(m) der Redundanzsymbole.
2. Fehlerschutzverfahren nach Anspruch 1, bei dem
jeder der R(2), ..., R(m) Abschnitte der r
Redundanzsymbole mittels des gleichen Fehlerkorrekturcodes
codiert ist.
3. Fehlerschutzverfahren nach Anspruch 1, bei dem
jeder der Redundanzsymbolabschnitte mittels eines
verschiedenen Fehlerkorrekturcodes codiert ist,
wobei die Fehlerkorrekturcodes, die verwendet sind,
um jeweils Redundanzabschnitte R(3), ..., R(m) zu
codieren, ausgelegt sind, um weniger Fehler als die
Codes zu korrigieren, die verwendet sind, um den
vorangehenden Abschnitt R(2), ..., R(m-1) zu
codieren.
4. Fehlerschutzverfahren nach Anspruch 1, bei dem das
Verfahren weiterhin den Schritt des Verzahnens der
ki Datensymbole umfaßt.
5. Fehlerschutzverfahren nach Anspruch 1, bei dem das
Verfahren weiterhin die folgenden Schritte umfaßt:
F. Behandeln der Symbole des Abschnittes R(2),
R(3), ..., R(m), die nicht in Schritt E
zurückgehalten sind, als Löschungen,
G. Einfüllen in jedes Pegel-1-Codewort von so
vielen der Löschungen und Korrigieren von so
vielen Fehlern in den Codewörtern als möglich
mittels des ersten Fehlerkorrekturcodes,
H. Behandeln der Datensymbole als fehlerfrei,
falls alle der Redundanzsymbole in dem Pegel-1-
Codewort eingefüllt sind,
I. Einfüllen in jedes Pegel-1-Codewort, in welches
die Symbole des Abschnittes R(2) nicht
eingefüllt sind, der Löschungen in Abschnitt R(2)
mittels der Redundanzsymbole des Abschnittes
Q(2) und des Fehlerkorrekturcodes, der zum
Codieren der Symbole des Abschnittes R(2)
verwendet ist,
J. Korrigieren mittels des ersten
Fehlerkorrekturcodes und der Redundanzsymbole des Abschnittes
R(1) und R(2) von jeglichen Fehlern in den
Pegel-1-Codewörtern, in die die Symbole des
Abschnittes R(2) durch Schritt I eingefüllt sind,
K. falls irgendwelche Redundanzsymbole in die
Pegel-1-Codewörter nicht eingefüllt sind:
i. Einfüllen in den Abschnitt R(3) von
Löschungen mittels der Redundanzsymbole des
Abschnittes Q(3) und des
Fehlerkorrekturcodes, der verwendet ist, um die Symbole
des Abschnittes R(3) zu codieren, und
ii. Korrigieren mittels des ersten
Fehlerkorrekturcodes und der Symbole des Abschnittes
R(1), R(2) und R(3) von jeglichen Fehlern
in den Pegel-1-Codewörtern, in die die
Symbole des Abschnittes R(3) durch diesen
Schritt J eingefüllt sind, und
L. Wiederholen des Schrittes J für jeden
verbleibenden Abschnitt der r Redundanzsymbole.
6. Fehlerschutzverfahren nach Anspruch 5, bei dem
jeder der R(2), ..., R(m) Abschnitte der r
Redundanzsymbole mittels des gleichen Fehlerkorrekturcodes
codiert ist.
7. Fehlerschutzverfahren nach Anspruch 5, bei dem
jeder der Redundanzsymbolabschnitte mittels eines
verschiedenen Fehlerkorrekturcodes codiert wird,
und bei dem die Fehlerkorrekturcodes, die verwendet
sind, um Redundanzabschnitte R(3), ..., R(m) zu
codieren, ausgelegt sind, um weniger Fehler als die
Codes zu korrigieren, die verwendet sind, um
jeweils die Daten und Abschnitte R(2), ..., R(m-1) zu
codieren.
8. Fehlerkorrektursystem zum Codieren eines Blockes
von "ki" Datensymbolen zum Schützen der
Datensymbole gegen Fehler, wobei das System aufweist:
A. eine erste Codierereinrichtung zum Segmentieren
des Blockes von ki Datensymbolen in jeweils "ii"
Unterblöcke von k Symbolen und zum Codieren
jedes der Unterblöcke gemäß einem ersten
Fehlerkorrekturcode, um i Pegel-1-Codewörter zu
erzeugen, wobei jedes der Pegel-1-Codewörter "k"
Datensymbole und "r" Redundanzsymbole enthält,
was in einer Gesamtsumme von ri
Pegel-1-Redundanzsymbolen resultiert,
B. eine Einrichtung zum Sektionieren der ri
Redundanzsymbole der Pegel-1-Codewörter in "m" (m(r)
Mehrfachsymbol-Abschnitte R(1), r(2), ...,
R(m), die entsprechende Symbole von jedem der i
Codewörter enthalten,
C. eine zweite Codierereinrichtung zum Codieren
der entsprechenden Redundanzsymbole in
Abschnitt R(2) von jedem der Pegel-1-Codewörter
gemäß einem Fehlerkorrekturcode, um Pegel-2-
Codewörter zu erzeugen, wobei jedes der
Pegel-2-Codewörter als Informationssymbole "i"
Redundanzsymbole, die mittels des ersten
Fehlerkorrekturcodes erzeugt sind, und "q&sub2;" weitere
Redundanzsymbole enthält, wobei die Symbole so
erzeugt sind, daß sie einem Abschnitt Q(2) der
Redundanzsymbole zugeordnet sind, wobei die
zweite Codiereinrichtung jeden der
verbleibenden Redundanzsymbolabschnitte codiert, um
jeweils Abschnitte Q(3), ..., Q(m) der
Redundanzsymbole zu erzeugen, und
D. eine Einrichtung zum Zurückhalten der
Datensymbole, des Abschnittes R(1) der Redundanzsymbole
und der Abschnitte Q(2), Q(3), ..., Q(m) der
Redundanzsymbole.
9. Fehlerkorrektursystem nach Anspruch 8, bei dem die
zweite Codiereinrichtung jeden der R(2), ..., R(m)
Abschnitte der r Redundanzsymbole mittels des
gleichen Fehlerkorrekturcodes codiert.
10. Fehlerkorrektursystem nach Anspruch 8, bei dem die
zweite Codiereinrichtung jeden der R(2), ..., R(m)
Abschnitte der r Redundanzsymbole codiert, indem
für jeden Abschnitt ein Fehlerkorrekturcode
verwendet wird, der ausgelegt ist, um weniger Fehler als
den Code zu korrigieren, der verwendet ist, um die
Symbole des vorangehenden Abschnittes zu codieren.
11. Fehlerkorrektursystem nach Anspruch 8, bei dem die
erste Codiereinrichtung die ki Datensymbole
verzahnt, bevor diese in die i Abschnitte getrennt
werden.
12. Fehlerkorrektursystem nach Anspruch 8, bei dem das
System weiterhin aufweist:
E. eine erste Korrektureinrichtung, um:
i. die Redundanzsymbole des Abschnittes R(2)
R(m) als Löschungen zu korrigieren und
jegliche fehlerhafte zurückgehaltene Daten
und Symbole des Abschnittes R(1) mittels
des Pegel-1-Fehlerkorrekturcodes zu
korrigieren, und
ii. Behandeln der Datensymbole als fehlerfrei,
wenn alle Redundanzsymbole in das Pegel-1-
Codewort eingefüllt sind, und
F. eine zweite Korrektureinrichtung, um:
i. ihrerseits in die Symbole des Abschnittes
R(2), ..., R(m), die nicht durch die erste
Korrektureinrichtung eingefüllt sind,
mittels des Abschnittes Q(2), ..., Q(m)
Redundanzsymbole und den Fehlerkorrekturcode
einzufüllen, der verwendet ist, um jeweils
die Symbole des Abschnittes R(2), ..., R(m)
zu codieren, und
ii. auf die erste Korrektureinrichtung zur
weiteren Fehlerkorrektur, nachdem jeder der
Abschnitte (R2), ..., R(m) eingefüllt ist,
die Pegel-1-Codewörter anzuwenden.
13. Verfahren zum Erzeugen von
Fehlerkorrektur-Redundanzsymbolen entsprechend einem Block von "ki"
Datensymbolen, wobei das Verfahren die folgenden
Schritte aufweist:
A. Segmentieren des Blockes von ki Datensymbolen
in i Unterblöcke und Codieren der Unterblöcke
über einem Galois-Feld GF(2t) mittels eines
ersten Fehlerkorrekturcodes, um "i" Pegel-1-
Codewörter zu erzeugen, wobei jedes der
Pegel-1-Codewörter "k" Datensymbole und "s"
Redundanzsymbole enthält, wobei der erste
Fehlerkorrekturcode ein Erzeugerpolynom g&sub1;(x) mit
aufeinanderfolgenden Wurzeln in GF(2t) hat:
g&sub1;(x)=(x+αa)*(a+α+1)*(x+αa+2)*(x+αa+3)*... *(x+αa+s)
wobei * eine Galois-Feld-Multiplikation
darstellt und α ein Primitiv-Polynom von GF(2t)
ist und die Redundanzsymbole einem Abschnitt
S(1) der Redundanzsymbole zugeordnet sind,
B. Codieren der Datensymbole zum Erzeugen eines
zweiten Satzes von Redundanzsymbolen, die einem
Abschnitt S(2) zugeordnet sind, in jedem der i-
Pegel-1-Codewörter und der entsprechenden
Symbole in Abschnitt S(1) mittels eines zweiten
Fehlerkorrekturcodes mit einem Erzeugerpolynom
g*&sub2;(x), das gleich zu dem Quotienten eines
Erzeugerpolynoms g&sub2;(x), nämlich
ist, geteilt durch das Erzeugerpolynom g&sub1;(x),
wobei das Polynom g&sub2;(x) eine Dehnung von g&sub1;(x)
ist,
C. Wiederholen des Schrittes B in einer
vorbestimmten Anzahl und Erzeugen von Abschnitten
S(3) ... S(m) der Redundanzsymbole,
D. weiterhin Codieren der Redundanzsymbole des
Abschnittes S(2) ... S(m), um zugeordnete
Abschnitte der Redundanzsymbole Q(2) ... Q(m) zu
erzeugen,
E. Codieren jedes der Abschnitte Q(2) ... Q(m) der
Redundanzsymbole, um Abschnitte ECK(2) ...
ECK(m) der Redundanzsymbole zu erzeugen, und
F. Zurückhalten der Datensymbole, der
Redundanzsymbole der Abschnitte S(1), der
Redundanzsymbole des Abschnittes Q(2) ... Q(m) und der
Redundanzsymbole ECK(2) ... ECK(m).
14. Verfahren nach Anspruch 13, bei dem das Verfahren
weiterhin ein Verzahnen der ki Datensymbole umfaßt.
15. Verfahren nach Anspruch 13, bei dem das Verfahren
weiterhin die folgenden Schritte aufweist:
F. Korrigieren der Datensymbole mittels der
Redundanzsymbole des Abschnittes S(1) und des ersten
Fehlerkorrekturcodes,
G. falls Fehler in den Datensymbolen verbleiben,
Einfüllen in jedes Codewort der
Redundanzsymbole des Abschnittes S(2) mittels der
Redundanzsymbole des Abschnittes Q(2) und des
Fehlerkorrekturcodes, der verwendet ist, um die
Redundanzsymbole des Abschnittes Q(2) zu erzeugen,
H. Korrigieren der fehlerhaften Datensymbole
mittels der in Abschnitt S(2) eingefüllten
Redundanzsymbole und des zweiten
Fehlerkorrekturcodes mit dem Erzeugerpolynom g*&sub2;(x),
1. falls Fehler in den Datensymbolen verbleiben,
Einfüllen in jedes Codewort des nächsten
Abschnittes der Redundanzsymbole S(3), ..., S(m)
mittels der Redundanzsymbole des entsprechenden
Abschnittes Q(3) ... Q(m) und eines dem Pegel
zugeordneten Fehlerkorrekturcodes, und
J. Korrigieren jeglicher Fehler mittels eines
Fehlerkorrekturcodes, der dem Pegel des Codierens
zugeordnet ist.
16. System zum Erzeugen von
Fehlerkorrektur-Redundanzsymbolen entsprechend einem Block von "ki"
Datensymbolen, wobei das System aufweist:
A. eine erste Codiereinrichtung zum Segmentieren
des Blockes von Datensymbolen in i Unterblöcke
und zum Codieren der i Unterblöcke über einem
Galois-Feld GF(2t) mittels eines ersten
Fehlerkorrekturcodes, um "i" Pegel-1-Codewörter zu
erzeugen, wobei jedes der Pegel-1-Codewörter
"k" Datensymbole und "s" Redundanzsymbole
enthält, wobei der erste Fehlerkorrekturcode ein
Erzeugerpolynom g&sub1;(x) mit aufeinanderfolgenden
Wurzeln in GF(2t) hat:
g&sub1;(x)(x+αa)*(a+α+1)*(x+αa+2)*(x+αa+3)*... *(x+αa+s)
wobei * eine Galois-Feld-Multiplikation
bedeutet und α ein Primitiv-Polynom von GF(2t) ist
und die Redundanzsymbole einem Abschnitt S(1)
der Redundanzsymbole zugeordnet sind,
B. eine Codiereinrichtung, um zum Erzeugen eines
Abschnittes der Redundanzsymbole S(2) die
Datensymbole und die Redundanzsymbole des
Abschnittes S(1) in jedem der i
Pegel-1-Codewörter mittels eines zweiten Fehlerkorrekturcodes
mit einem Erzeugerpolynom g*&sub2;(x) zu codieren,
das gleich ist zu dem Quotienten von g&sub2;(x), der
eine gedehnte Version von g&sub1;(x) ist:
dividiert durch g&sub1;(x),
C. eine Codiereinrichtung zum Codieren der
Redundanzsymbole des Abschnittes S(2) zum Erzeugen
eines Abschnittes Q(2) der Redundanzsymbole,
D. eine Codiereinrichtung zum Codieren der
Redundanzsymbole des Abschnittes Q(2), um einen
Abschnitt ECK(2) der Redundanzsymbole zu
erzeugen, und
E. eine Einrichtung zum Zurückhalten der
Datensymbole, der Redundanzsymbole des Abschnittes S(1)
und der Redundanzsymbole des Abschnittes Q(2)
und des Abschnittes ECK(2).
17. System nach Anspruch 16, wobei das System weiterhin
aufweist:
F. eine Codiereinrichtung, um in Pegeln die
Datensymbole und die Abschnitte der Redundanzsymbole
S(i), die in vorhergehenden Pegeln des Codie
rens erzeugt sind, zu codieren, um einen
nächsten Abschnitt S(i+1) der Redundanzsymbole
mittels eines Fehlerkorrekturcodes mit einem
Erzeugerpolynom g*i+1(x) zu erzeugen, das gleich
zu dem Quotientenerzeugerpolynom gi+1(x) ist,
das eine Dehnung des Erzeugerpolynoms gi(x)
ist, das dem vorhergehenden Pegel zugeordnet
ist, geteilt durch das Erzeugerpolynom gi(x),
G. eine Codiereinrichtung zum Codieren jedes der
Abschnitte S(i) der Redundanzsymbole, um einen
anderen Abschnitt der Redundanzsymbole Q(i) zu
erzeugen,
H. eine Codiereinrichtung zum Codieren jedes der
Q(i) Abschnitte der Redundanzsymbole zum
Erzeugen von ECK(i) Abschnitten der
Redundanzsymbole, und
I. eine Einrichtung zum Zurückhalten der
Datensymbole, der Redundanzsymbole des Abschnittes
S(1), der Redundanzsymbole des Abschnittes
Q(i) und von Sätzen der
Redundanzsymbole der Abschnitte ECK(2), .., ECK(i)
18. System nach Anspruch 16, bei dem das System
weiterhin aufweist:
F. eine Einrichtung zum Korrigieren der
Datensymbole mittels der Redundanzsymbole des
Abschnittes S(1) und des ersten Fehlerkorrekturcodes,
G. falls Fehler in den Datensymbolen verbleiben,
eine Einrichtung zum Einfüllen in jedes
Codewort der Redundanzsymbole des Abschnittes S(2)
mittels der Redundanzsymbole des Abschnittes
Q(2) und des Fehlerkorrekturcodes, der zum
Erzeugen der Redundanzsymbole des Abschnittes
Q(2) verwendet ist,
H. Korrigieren der fehlerhaften Datensymbole
mittels der in Abschnitt S(2) eingefüllten
Redundanzsymbole und des zweiten
Fehlerkorrekturcodes mit dem Erzeugerpolynom g*&sub2;(x), das
gleich zu dem Quotienten eines
Erzeugerpolynomes g&sub2;(x) ist, das eine Dehnung des Pegel-1-
Erzeugerpolynomes ist, geteilt durch das Pegel-
1-Erzeugerpolynom.
19. System nach Anspruch 17, bei dem das System
weiterhin umfaßt:
J. eine Einrichtung zum Korrigieren der
Datensymbole mittels der Redundanzsymbole des
Abschnittes S(1) und des ersten Fehlerkorrekturcodes,
K. falls Fehler in den Datensymbolen verbleiben,
eine Einrichtung, um in jedes Codewort
Redundanzsymbole des Abschnittes S(2) einzufüllen,
unter Verwendung der Redundanzsymbole des
Abschnittes Q(2) und des Fehlerkorrekturcodes,
der zum Erzeugen der Q(2) Redundanzsymbole
verwendet ist,
L. Korrigieren der fehlerhaften Datensymbole
mittels der in Abschnitt S(2) eingefüllten
Redundanzsymbole und des zweiten
Fehlerkorrekturcodes mit dem Erzeugerpolynom g*&sub2;(x), das
gleich zu dem Quotienten des Erzeugerpolynoms
g&sub2;(x), das eine Dehnung des
Pegel-1-Erzeugerpolynomes ist, geteilt durch das
Pegel-1-Erzeugerpolynom, ist,
M. falls Fehler in den Datensymbolen verbleiben,
eine Einrichtung, um in jedes Codewort den
Abschnitt der Redundanzsymbole S(i) einzufüllen,
die durch den nächsten Codierschritt erzeugt
sind, mittels des entsprechenden Abschnittes
Q(i) der Redundanzsymbole und des
entsprechenden Fehlerkorrekturcodes,
N. Korrigieren der fehlerhaften Datensymbole
mittels der Redundanzsymbole des eingefüllten
Abschnittes S(i) und des entsprechenden
Fehlerkorrekturcodes, der als ein Erzeugerpolynom
g*i(x) hat, das gleich zu dem Quotienten des
Erzeugerpolynomes gi(x), das eine Dehnung des
Erzeugerpolynomes des vorhergehenden Pegels
ist, geteilt durch das Erzeugerpolynom des
vorhergehenden Pegels, ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/521,224 US5224106A (en) | 1990-05-09 | 1990-05-09 | Multi-level error correction system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69121307D1 DE69121307D1 (de) | 1996-09-19 |
DE69121307T2 true DE69121307T2 (de) | 1997-01-23 |
Family
ID=24075899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69121307T Expired - Fee Related DE69121307T2 (de) | 1990-05-09 | 1991-04-26 | Mehrfachpegel-Fehlerkorrektursystem |
Country Status (5)
Country | Link |
---|---|
US (1) | US5224106A (de) |
EP (1) | EP0458468B1 (de) |
JP (1) | JPH04230124A (de) |
CA (1) | CA2041214A1 (de) |
DE (1) | DE69121307T2 (de) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0481128B1 (de) * | 1990-10-16 | 1998-01-14 | Koninklijke Philips Electronics N.V. | Datenverarbeitungssystem basierend auf einem (N,K)-Symbolkode und mit Symbolfehler-Korrigierbarkeit und mehrfacher Fehlerreparierbarkeit |
US5734826A (en) * | 1991-03-29 | 1998-03-31 | International Business Machines Corporation | Variable cyclic redundancy coding method and apparatus for use in a multistage network |
US5379305A (en) * | 1992-07-20 | 1995-01-03 | Digital Equipment Corporation | Error correction system with selectable error correction capabilities |
US5502732A (en) * | 1993-09-20 | 1996-03-26 | International Business Machines Corporation | Method for testing ECC logic |
AU1544895A (en) * | 1994-02-16 | 1995-09-11 | Philips Electronics N.V. | Error correctable data transmission method and device based on semi-cyclic codes |
AU2905695A (en) * | 1994-06-21 | 1996-01-15 | Michael J. Seo | Method and system for encoding and decoding signals using a fast algebraic error correcting code |
JP3328093B2 (ja) * | 1994-07-12 | 2002-09-24 | 三菱電機株式会社 | エラー訂正装置 |
JPH08293802A (ja) * | 1995-04-13 | 1996-11-05 | Internatl Business Mach Corp <Ibm> | インターリーブ式誤り訂正方法 |
US5898710A (en) * | 1995-06-06 | 1999-04-27 | Globespan Technologies, Inc. | Implied interleaving, a family of systematic interleavers and deinterleavers |
US5983383A (en) * | 1997-01-17 | 1999-11-09 | Qualcom Incorporated | Method and apparatus for transmitting and receiving concatenated code data |
GB2321374A (en) * | 1997-01-21 | 1998-07-22 | Ico Services Ltd | Spread spectrum satellite communication |
US6514140B1 (en) * | 1999-06-17 | 2003-02-04 | Cias, Inc. | System for machine reading and processing information from gaming chips |
JP2004526642A (ja) * | 2001-04-19 | 2004-09-02 | グラハム・パツケージング・カンパニー・エル・ピー | ブロー成型されたプラスチック広口容器用の多機能基部 |
KR20040071765A (ko) * | 2001-12-28 | 2004-08-12 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | Rs 코드들을 기초로 하여 포워드 에러 정정을 이용하는 비동등 에러 보호 |
AU2003211981B8 (en) * | 2002-02-20 | 2009-06-25 | Sony Corporation | Data recording medium, data recording method and apparatus, data reproducing method and apparatus, data transmitting method, and data receiving method |
US7546510B2 (en) * | 2003-12-30 | 2009-06-09 | Sandisk Il Ltd. | Compact high-speed single-bit error-correction circuit |
US20050289433A1 (en) * | 2004-06-25 | 2005-12-29 | Itschak Weissman | Discrete universal denoising with error correction coding |
TWI415416B (zh) * | 2005-09-19 | 2013-11-11 | St Ericsson Sa | 在包含消除表格資料的移動式無線應用中用於校正錯誤的裝置及方法 |
US8219886B1 (en) * | 2006-01-20 | 2012-07-10 | Marvell International Ltd. | High density multi-level memory |
US7721178B2 (en) * | 2006-06-01 | 2010-05-18 | International Business Machines Corporation | Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code |
EP1887446A1 (de) * | 2006-08-02 | 2008-02-13 | Siemens Aktiengesellschaft | Verfahren zur seriellen asynchronen Übertragung von Daten in einer Anordnung zur Überwachung, Steuerung und Regelung einer betriebstechnischen Anlage eines Gebäudes |
KR101254185B1 (ko) * | 2006-08-03 | 2013-04-18 | 삼성전자주식회사 | 엑스트라 ecc가 적용된 정보 저장 매체에 데이터를기록하거나 상기 매체로부터 데이터를 재생하는 장치 및방법 |
US8627167B1 (en) | 2007-01-08 | 2014-01-07 | Marvell International Ltd. | Methods and apparatus for providing multi-layered coding for memory devices |
US8145975B2 (en) * | 2008-02-28 | 2012-03-27 | Ip Video Communications Corporation | Universal packet loss recovery system for delivery of real-time streaming multimedia content over packet-switched networks |
US8402351B1 (en) * | 2009-02-09 | 2013-03-19 | Marvell International Ltd. | Error correction coding with nuisance data |
FR2961613B1 (fr) * | 2010-06-18 | 2012-07-27 | Commissariat Energie Atomique | Procede de protection memoire configurable contre les erreurs permanentes et transitoires et dispositif apparente |
US8832524B2 (en) * | 2011-09-22 | 2014-09-09 | Violin Memory, Inc. | System and method for correcting errors in data using a compound code |
RU2656734C2 (ru) * | 2013-12-27 | 2018-06-06 | Евгений Иванович Пряхин | Способ кодирования и декодирования цифровой информации в виде ультрасжатого нанобар-кода (варианты) |
US9553611B2 (en) * | 2014-11-27 | 2017-01-24 | Apple Inc. | Error correction coding with high-degree overlap among component codes |
US11764813B1 (en) * | 2022-06-07 | 2023-09-19 | Western Digital Technologies, Inc. | Extendable parity code matrix construction and utilization in a data storage device |
US12099409B2 (en) | 2022-06-07 | 2024-09-24 | Western Digital Technologies, Inc. | Adjustable code rates and dynamic ECC in a data storage device |
US12028091B2 (en) | 2022-09-26 | 2024-07-02 | Western Digital Technologies, Inc. | Adjustable code rates and dynamic ECC in a data storage device with write verification |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3629824A (en) * | 1970-02-12 | 1971-12-21 | Ibm | Apparatus for multiple-error correcting codes |
GB2095440B (en) * | 1981-03-23 | 1985-10-09 | Sony Corp | Digital television signal processing |
US4413339A (en) * | 1981-06-24 | 1983-11-01 | Digital Equipment Corporation | Multiple error detecting and correcting system employing Reed-Solomon codes |
BE890280A (fr) * | 1981-09-09 | 1982-03-09 | Belge Lampes Mat Electr Mble | Dispositif de codage et de decodage base sur un code de convolution |
GB2132393B (en) * | 1982-12-17 | 1986-05-14 | Sony Corp | Methods and apparatus for correcting errors in binary data |
NL8300249A (nl) * | 1983-01-25 | 1984-08-16 | Philips Nv | Werkwijze met foutkorrektie voor het overdragen van woordsgewijs gerangschikte data en inrichtingen voor het uitvoeren van de werkwijze. |
US4525838A (en) * | 1983-02-28 | 1985-06-25 | International Business Machines Corporation | Multibyte error correcting system involving a two-level code structure |
JP2533076B2 (ja) * | 1983-04-30 | 1996-09-11 | ソニー株式会社 | エラ−訂正のための符号化方法 |
JPS6069917A (ja) * | 1983-09-26 | 1985-04-20 | Pioneer Electronic Corp | デ−タ伝送方式 |
JPH0812612B2 (ja) * | 1983-10-31 | 1996-02-07 | 株式会社日立製作所 | 誤り訂正方法及び装置 |
US4769818A (en) * | 1984-05-30 | 1988-09-06 | Canadian Patents And Development Limited-Societe Canadienne Des Brevets Et D'exploitation Limitee | Method and apparatus for coding digital data to permit correction of one or two incorrect data packets (bytes) |
JPS61154227A (ja) * | 1984-12-26 | 1986-07-12 | Mitsubishi Electric Corp | 2段符号化方法 |
JPH06101207B2 (ja) * | 1985-03-13 | 1994-12-12 | ソニー株式会社 | 誤り検出及び誤り訂正方法 |
US4706250A (en) * | 1985-09-27 | 1987-11-10 | International Business Machines Corporation | Method and apparatus for correcting multibyte errors having improved two-level code structure |
CA1264091A (en) * | 1986-01-10 | 1989-12-27 | Yoichiro Sako | Generator for error correcting code and decoder for the code |
US4763330A (en) * | 1986-05-06 | 1988-08-09 | Mita Industrial Co., Ltd. | Syndrome calculating apparatus |
EP0261626B1 (de) * | 1986-09-22 | 1994-08-31 | Nec Corporation | Fehlerkorrigierender, bitserieller Dekodierer |
US4782490A (en) * | 1987-03-16 | 1988-11-01 | Cythera Corporation | Method and a system for multiple error detection and correction |
US4856003A (en) * | 1987-05-07 | 1989-08-08 | Digital Equipment Corporation | Error correction code encoder |
US4833679A (en) * | 1987-08-31 | 1989-05-23 | International Business Machines Corporation | Method and apparatus with improved error correction and error information availability |
US4949200A (en) * | 1988-03-31 | 1990-08-14 | Digital Equipment Corporation | Method and apparatus for encoding and mapping magnetic disk sector addresses |
US4989211A (en) * | 1988-05-12 | 1991-01-29 | Digital Equipment Corporation | Sector mis-synchronization detection method |
DE3838234A1 (de) * | 1988-11-11 | 1990-05-17 | Broadcast Television Syst | Verfahren und schaltungsanordnung zur detektion und korrektur von fehlern in datenworten |
-
1990
- 1990-05-09 US US07/521,224 patent/US5224106A/en not_active Expired - Lifetime
-
1991
- 1991-04-25 CA CA002041214A patent/CA2041214A1/en not_active Abandoned
- 1991-04-26 DE DE69121307T patent/DE69121307T2/de not_active Expired - Fee Related
- 1991-04-26 EP EP91303775A patent/EP0458468B1/de not_active Expired - Lifetime
- 1991-05-08 JP JP3102380A patent/JPH04230124A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US5224106A (en) | 1993-06-29 |
EP0458468B1 (de) | 1996-08-14 |
DE69121307D1 (de) | 1996-09-19 |
EP0458468A1 (de) | 1991-11-27 |
CA2041214A1 (en) | 1991-11-10 |
JPH04230124A (ja) | 1992-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69121307T2 (de) | Mehrfachpegel-Fehlerkorrektursystem | |
DE3854393T2 (de) | Verfahren und gerät zur fehlerkorrektur mit mehrfachdurchlauf für produktkode. | |
DE3486408T2 (de) | Verfahren und Vorrichtung zur Dekodierung eines fehlerkorrigierenden Kodes. | |
DE69903188T2 (de) | Mehrstufige fehlererkennungs- und korrekturtechnik für datenspeicher-aufzeichnungsvorrichtung | |
DE3124425C2 (de) | Verfahren und Vorrichtung zu Fehlererkennung und Fehlerkorrektur | |
DE3784741T2 (de) | Dekoder fuer produkt-kodes und verfahren zur dekodierung dieser kodes. | |
DE69932962T2 (de) | Kodierungsverfahren und Speicheranordnung | |
DE3852474T2 (de) | Nachschlagetabellen verwendende Fehlerkorrektur. | |
DE60206419T2 (de) | Löschung und einzelfehlerkorrekturdekoder für lineare blockkodes | |
DE10133595B4 (de) | Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder | |
DE3850192T2 (de) | Verfahren und Vorrichtung zur Fehlerkorrektur bei gespeicherten Daten. | |
DE4324299A1 (de) | Fehlerkorrekturcode-System und -Verfahren | |
DE68920523T2 (de) | Verfahren zur Korrektur von Mehr-Byte-Fehlern. | |
DE112012000385T5 (de) | Korrigieren von Auslöschungen in Speicher-Arrays | |
DE19963683A1 (de) | Architektur zum Decodieren von linearen Blockfehler-Korrekturcodes mit Soft Decision | |
DE3882223T2 (de) | Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden. | |
DE102013016681B4 (de) | Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern | |
DE3231956A1 (de) | Anordnung zum uebertragen von binaerdaten ueber eine vielzahl von kanaelen mit hilfe eines faltungscodes | |
DE69814465T2 (de) | Verfahren und gerät zur datenspeicherung auf magnetischen medien, die fehlerkorrekturkodes enthalten | |
DE3787034T2 (de) | Digitale Signalfehlerkorrektur. | |
DE2262070A1 (de) | Mit schieberegistern arbeitendes fehlerkorrektursystem | |
DE69327683T2 (de) | Erweitertes fehlergeschütztes Kommunikationssystem | |
DE102007046789A1 (de) | N-dimensionales iteratives ECC-Verfahren und Vorrichtung mit kombinierter Lösch- und Fehlerinformation und erneutem Lesen | |
DE3717223A1 (de) | Verfahren und anordnung zum decodieren eines codesymbolblocks, der zwei arten von codewoertern enthaelt, die durch je einen maximalabstandsseparierbaren code geschuetzt sind | |
DE102005022107B4 (de) | Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |