-
Die Erfindung bezieht sich auf ein
Verfahren und auf eine Vorrichtung zur Korrektur von Fehlern in
einem Datenstrom unter Verwendung eines Verfahrens zum Dekodieren
eines cross-interleaved Reed-Solomon-Codes (CIRC).
-
Hintergrund
-
Es besteht ein Bedarf für erhöhte Qualität von Audio-Aufzeichnungs- und
-Wiedergabe-Systemen wie auch bei anderen Arten von Kommunikation.
-
Ein Problem bei Aufzeichnungsmedien
sind die Defekte in den Medien, die von Bereichen mit ungenau aufgezeichneten
digitalen Daten herrühren
oder von Daten, die nicht zuverlässig
wiedergegebenen werden können.
Im Ergebnis treten Fehler in den wiedergegebenen Daten wie auch
in den Übertragungen
von digitalen Daten auf. Während
der Aufzeichnung, der Wiedergabe und der Übertragung von digitalen Daten
treten Fehler in den digitalen Daten mit einer gewissen endlichen
Wahrscheinlichkeit auf. Die Daten setzen sich üblicherweise aus binären Einheiten
zusammen, eine Gruppe von binären
Einheiten (z. B. 8) macht ein Daten-Byte aus, und Gruppen von Bytes (z.
B. 2) machen ein Datenwort aus. Zusätzlich sind die Daten in Datenblöcken angeordnet
(z. B. in Blöcke
mit 32 oder 28 Bytes).
-
Es gibt zwei verschiedene Arten von
Fehlern. Die erste Art ist ein einzelner Bit-Fehler, der die Substitution
eines von zwei möglichen
Werten eines binären
Bits für
seinen entgegengesetzten Wert ist. Solche Fehler treten üblicherweise
willkürlich
in einem digitalen Signal auf. Eine zweite Fehlerart besteht aus
einer kontinuierlichen Sequenz von fehlerhaften Bits. Solche Fehler
werden als Bündelfehler
bezeichnet. Die Länge
dieser Bündel
und die Häufigkeit
ihres Auftretens sind ebenfalls willkürlich.
-
Ein Fehlerkorrektur-Code, der üblicherweise
bei Kompakt-Audio-Platten
verwendet wird, ist ein sogenannter CIRC-Korrektur-Code. CIRC ist ein Akronym
für cross-interleaved
Reed-Solomon-Code. Der CIRC verwendet einen Zweistufen-Prozess. Beim Durchgang
durch einen ersten Kodierer werden 24 aufeinanderfolgende Daten-Bytes,
die ein Daten-Polynom darstellen, durch ein Generator-Polynom geteilt.
Bei diesem Prozess werden 4 Paritäts-Bytes hinzugefügt. Das
Ergebnis ist ein Block von 24 Daten-Bytes und 4 Paritäts-Bytes
(C2-Code). Diese
aufeinanderfolgende Sequenz von Bytes wird mit anderen kodierten
Daten-Bytes verschachtelt oder darin verteilt.
-
Die verschachtelten Daten durchlaufen
einen zweiten Kodierer. Der zweite Kodierer ist identisch mit dem
ersten Kodierer, mit Ausnahme, dass die Bytes wegen der Verschachtelung
in einer anderen Reihenfolge dargestellt werden, wobei Paritäts-Bytes
zusammen mit Daten-Bytes kodiert werden, Blöcke von 28 Bytes (28 Daten-Bytes
plus 4 Paritäts-Bytes)
anstatt von 24 Byte-Blöcken
kodiert werden und 4 zusätzliche
Paritäts-Bytes
hinzugefügt
werden. Das Ergebnis des zweiten Kodier-Prozesses ist ein 32-Byte-Block
(C1-Code), der sich aus 24 Daten-Bytes und 8 Paritäts-Bytes
zusammensetzt.
-
Im Falle des CIRC-Korrektur-Codes
wird der Kodier-Prozess des (28, 24) Reed-Solomon-Codes für 24 Datensymbole
(Bytes) ausgeführt,
wobei jedes Symbol aus 8 Bits besteht. Bei üblichen Audio-Anwendungen umfasst
jeder Abtastwert 16 Bits und wird aus zwei Symbolen von jeweils
8 Bits gebildet. Somit ist jedes 8-Bit-Symbol entweder die obere
oder die untere Seite eines Audio-Abtastwerts von einem der beiden
Kanäle von
stereophonen Audio-Daten.
-
Die kodierten Daten werden optisch
aufgezeichnet und anschließend
wiedergegeben. Nach der Wiedergabe der kodierten Daten gibt es wahrscheinlich
einzelne Bit- oder Bündelfehler
aufgrund von Aufzeichnungs-, Wiedergabe- oder Übertragungs-Problemen.
-
Konventionelle Fehlerkorrektur-Verfahren
sind für
die Verwendung in der CIRC-Dekodierung bekannt. Beispiele solcher
Verfahren sind in US-A-4,546,474, US-A-4,476,562 und US-A-4,497,058
offenbart. Gemäß den konventionellen
Verfahren zum Dekodieren von CIRC-Fehlern läuft die Verarbeitung auf der
Basis eines sogenannten Lösch-Korrektur-Verfahrens.
Bei dem Lösch-Korrektur-Verfahren
wird der Ort der Fehlersymbole durch Zeiger-Informationen angegeben.
Eine Fehlerkorrektur wird mit diesem Fehlersymbol ausgeführt. Im Falle
der oben erwähnten
C1- und C2-Codes
kann die Feststellung und Korrektur von bis zu zwei Fehlern ausgeführt werden.
Wenn jedoch der Fehlerort bereits bekannt ist, kann eine Fehlerkorrektur
von bis zu vier Löschungen
ausgeführt
werden. Um daher die Fehlerkorrektur-Fähigkeit zu erhöhen, ist
die Anwendung des Lösch-Korrektur-Verfahrens
bevorzugt worden. Außerdem
wurde gefunden, dass das Lösch-Korrektur-Verfahren
besonders wirksam bei der Korrektur von Fehlerbündeln ist.
-
Gemäß dem verwendeten konventionellen
Verfahren zum Dekodieren von CIRC-Fehlern wird in dem C1-Dekodierer
eine Korrektur von bis zu zwei Fehlern ausgeführt. Wenn drei Fehler oder
mehr auftreten, die natürlich
nicht korrigiert sind, wird eine Cl-Zeiger-Information zu dem C2-Dekodierer
in der nächsten
Stufe gesendet, so dass eine Fehlerkorrektur in dem C2-Dekodierer
unter Verwendung der Cl-Zeiger-Informationen ausgeführt wird.
-
Die mehrfache Verwendung der CIRC-Korrektur-Codes
bei der Dekodierung führt
zu einer Erhöhung der
Korrekturfähigkeit
von Fehlerkorrektur-Systemen. Konventionelle Dekodier-Verfahren (CIRC-Dekodierer) sind
jedoch nicht in der Lage, Blöcke
mit CIRC-Code mehrfach zu verarbeiten. Um dieses Problem zu lösen, kann
man entweder konventionelle CIRC-Dekodierer
mit zusätzlichen
Mitteln oder Vorrichtungen versehen, die eine mehrfache Verarbeitung
erlauben, oder konventionelle CIRC-Dekodierer für eine mehrfache Verarbeitung
brauchbar machen.
-
Ein Verfahren (konventioneller CIRC-Dekodierer)
für mehrfache
Verarbeitung von CIRC-Codes ist in US-A-4,852,099 offenbart worden.
Das bekannte Verfahren verwendet das Lösch-Korrektur-Verfahren, um
die Korrekturfähigkeit
von Fehlerkorrektur-Systemen zu erhöhen. Es wird vorgeschlagen,
eine C1-Dekodierung und eine C2-Dekodierung zweimal in einer bestimmten
Reihenfolge durchzuführen.
Diese Reihenfolge kann zum Beispiel C1-Dekodierung, gefolgt von
C2-Dekodierung, gefolgt von Cl-Dekodierung, gefolgt von C2-Dekodierung sein.
-
Gemäß diesem Beispiel werden Cl-Code-Worte
einem Cl-Dekodierer
zugeführt,
indem eine tatsächliche
Dekodierung des (32, 28) Reed-Solomon-Codes ausgeführt wird.
Es wird eine Fehlerkorrektur von bis zu zwei Fehlern ausgeführt. Wenn
von dem Cl-Dekodierer drei oder mehr Fehler festgestellt werden,
wird ein C1-Zeiger für
alle Symbole in Cl-Code-Worten gesetzt. Dann werden mittels des
C1-Dekodierers korrigierte Daten
und Fehler-Zeiger in einer Entschachtelungs-Verarbeitungsstufe weiterverarbeitet.
Ein Ausgang des Entschachtelers wird dem C2-Deködierer zugeführt. Eine
Lösch-Korrektur
von bis zu 4 Löschüngen wird
in dem C2-Dekodierer unter Verwendung von C1-Zeiger-Informationen ausgeführt. Bei
Vollendung der Lösch-Korrektur in dem
C2-Dekodierer wird der Cl-Zeiger gelöscht, und es wird keine Zeiger-Information
zu dem zweiten C2-Dekodier-Zyklus übertragen.
-
In einem zweiten Zyklus werden Daten
von dem C2-Dekodierer dem Verschachteler zugeführt, der die Daten in dieselbe
Anordnung zurückführt, die
sie bei der Reproduktion hatten. Danach entspricht die Verarbeitung
in dem zweiten Dekodier-Zyklus
der Verarbeitung in dem ersten Dekodier-Zyklus. Bei Verwendung dieses Dekodierverfahrens
kann eine mehrfache Verarbeitung von CIRC-Codes ausgeführt werden,
aber es wird zusätzliche
Hardware (Verschachtelungs-Block) benötigt.
-
Ein anderes bei der CIRC-Dekodierung
verwendetes Verfahren, das eine mehrfache Verarbeitung von CIRC
benutzt, ist in US-A-4,637,021 offenbart. Fehler-Feststellung und
Fehlerkorrektur werden durch Verarbeitung von Blöcken aus digitalen Daten-Bytes
mit einem C1-Dekodierer und einem C2-Dekodierer erzielt. Um die Rate zu maximieren,
mit der die Daten verarbeitet werden, wirken die Dekodierer C1 und
C2 tatsächlich gleichzeitig
auf Daten ein, die in einem System-Speicher gespeichert sind, wobei
der C1-Dekodierer auf Daten vor dem C2-Kodierer wirkt. Gemäß dem offenbarten
Dekodier-Verfahren des CIRC-Korrektur-Codes wird die Fehlerverarbeitung
bis hin zu Doppelfehlerkorrektur bei der C1-Dekodierung in einer
ersten Stufe ausgeführt, und
eine Doppelfehlerkorrektur wird bei der C2-Dekodierung in der nächsten Stufe
ausgeführt,
wobei auf die C1-Zeiger-Information
Bezug genommen wird, die von dem C1-Dekodierer abgeleitet wird.
In diesem Fall wird die C1-Zeiger- Information nicht dazu verwendet, die
Fehlerkorrektur-Fähigkeit
von Fehlerkorrektur-Systemen zu erhöhen. Die Cl-Zeiger-Information dient zur Prüfung der
Qualität
des Dekodier-Prozesses.
-
Bei dem Verfahren gemäß US-A-4,637,021
werden Daten-Bytes mittels C1- und C2-Dekodierern aus dem System-Speicher
gemäß dem folgenden
Ablauf gelesen. Ein erster C1-Dekodierer
verarbeitet einen Cl-Block aus Daten-Bytes (32 Bytes). Ein erster
C2-Dekodierer verarbeitet dann einen C2-Block von Daten-Bytes (28 Bytes), der
bereits von dem C1-Dekodierer
verarbeitet worden ist; dies beendet einen ersten Durchlauf. Ein
zweiter C1-Dekodierer verarbeitet Daten-Bytes, die bereits durch
den ersten Durchlauf verarbeitet worden sind, und ein zweiter C2-Dekodierer
verarbeitet Daten-Bytes, die bereits durch den ersten Durchlauf
und den zweiten C1-Dekodierer verarbeitet worden sind; dies beendet
einen zweiten Durchlauf. Ein Dekodierer-Zyklus umfasst die Ausführung sowohl
des ersten als auch des zweiten Durchlaufs. Am Ende von jedem Dekodierer-Zyklus
wird ein Adressenzähler
fortgeschaltet, und der Dekodierer-Zyklus wird wiederholt. Neue Daten werden
sofort in Speicherplätze
geschrieben, wenn die Daten (C1-Block) in dem Eingangs-Puffer bereit
sind. Somit schreitet während
der Operation das Lesen der vier Dekodierer kontinuierlich durch
den Speicher fort, bis verfügbare
Daten verarbeitet worden sind. Das Verfahren gemäß US-A-4,637,021 für die Benutzung
bei der CIRC-Dekodierung wird unter Verwendung eines Entschachtelers
und eines speziellen Verfahrens zur Datensteuerung ausgeführt. Ein
Entschachtelungs-Block ist in einem System-Speicher (256 × 32 Bytes)
vorgesehen und besteht aus zwei Blöcken, einem C1-Speicherblock
(128 × 32
Bytes) und einem C2-Speicherblock (128 × 32 Bytes). Der C1-Speicherblock enthält Adressen
in Reihen 112 bis 239. Der C2-Speicherblock enthält Adressen
in Reihen 240 bis 255 und dann in Reihen 0 bis
111. Der System-Speicher ist zirkular. Die am niedrigsten bezifferte
System-Speicher-Adresse "folgt" der am höchsten bezifferten.
Dies ist in 7 dargestellt.
-
Gemäß dem bekannten Verfahren verarbeitet
der erste C1-Dekodierer
den C1-Speicherblock aus 32 Daten-Bytes. Der C1-Dekodierer ist zunächst so positioniert, dass
er den C1-Speicherblock
an der Adresse 112 liest. Bei jedem folgenden Dekodierer-Zyklus
(Ausführung
von zwei Durchläufen
durch die beiden C1- und C2-Dekodierer) wird der C1-Dekodierer so
positioniert, dass er den C1-Speicherblock bei der nächstfolgenden höheren Adresse
liest. Somit wird der C1-Speicherblock
für den
zweiten Zyklus an der Position 113 positioniert.
-
Der erste C2-Dekodierer verarbeitet
einen C2-Speicherblock aus 28 Daten-Bytes. Der C2-Dekodierer ist
zunächst
so positioniert, dass er den C2-Speicherblock bei der Adresse 0 des
System-Speichers liest. Jene Bytes, die den C2-Speicherblock bilden, sind entlang einer
Diagonalen des System-Speichers angeordnet (siehe 7). Jene Bytes, die den C2-Speicherblock
bilden, werden in aufeinanderfolgende Dekodier-Zyklen geändert.
-
Am Beginn des zweiten C1-Durchlaufs
wird der C1-Dekodierer so positioniert, dass er den C1-Speicherblock
an der Adresse 240 des System-Speichers liest. Am Beginn
des zweiten C2-Durchlaufs wird der C2-Dekodierer zunächst so
positioniert, dass er den C2-Speicherblock an der Adresse 113 des
System-Speichers liest. Die Ausführung
der vier Dekodier-Durchläufe
(ein Dekodierer-Zyklus) schreitet kontinuierlich durch den System-Speicher
fort. Wenn sich in dem System-Speicher noch unverarbeitete Daten
befinden, werden die Dekodier-Zyklen fortgesetzt. Wenn alle Daten
in dem System-Speicher korrigiert sind, ist die Operation des Fehlerkorrektur-Systems
beendet.
-
Aus US-A-5,870,366 ist ein Aufzeichnungs/Wiedergabegerät bekannt,
bei dem das Verschachtelungs-Schema des Norm-CIRC-Kodierverfahrens
so modifiziert wird, dass es die Daten eines Datenrahmens nicht
wie üblich über 108
Datenrahmen, sondern über
98 Datenrahmen ausbreitet, was die Größe eines Sektors ist, also
wird durch Anpasung der Verschachtelungstiefe an die Sektorgröße die Anzahl
der Sektoren auf die in einer Lese-Operation Zugriff genommen werden
muss, auf zwei reduziert.
-
Weitere Dokumente, die C1- und C2-Kodier/Dekodier-Prozesse
in Platten-Aufzeichnungs/Wiedergabegeräten beschreiben, sind EP-A-0
652 561 und US-A-5,506,823.
-
Erfindung
-
Das oben beschriebene Verfahren zur
Dekodierung von CIRC-Korrektur-Codes
hat die folgenden Nachteile:
- a) Daten in dem
System-Speicher werden während 256 Zyklen
verarbeitet (vier Dekodier-Durchläufe in jedem Dekodierer-Zyklus).
Sobald alle Daten in dem System-Speicher korrigiert sind, ist die
Operation des Fehlerkorrektur-Systems vollendet. Wenn ausreichend
Daten in dem Eingangs-Puffer verfügbar sind, tritt eine Unterbrechung
in der System-Speicher-Verarbeitung
auf, damit der C1-Speicherblock
in den System-Speicher geschrieben werden kann. Unterbrechungen
können
mehrmals während der
System-Speicher-Verarbeitung (256 Zyklen) auftreten. Daher
können
irgendwelche Daten in dem System-Speicher nicht zweimal verarbeitet
werden (erste C1-, C2-Durchläufe
und zweite C1-, C2-Durchläufe).
- b) Es müssen
gleichzeitig zwei Dekodierer (C1-Dekodierer
und C2-Dekodierer) für
Daten verwendet werden, die in dem System-Speicher gespeichert sind.
Daher ist zusätzliche
Hardware erforderlich.
- c) Das Lösch-Korrektur-Verfahren
für Reed-Solomon-Codes
kann nicht in Verbindung mit dem oben beschriebenen Verfahren verwendet
werden.
-
Der Erfindung liegt die Aufgabe zugrunde,
ein Verfahren und eine Vorrichtung für die Verwendung beim Dekodieren
eines cross-interleaved Reed-Solomon-Codes (CIRC) zu offenbaren,
das bzw. die wirksam Fehler in einem Datenstrom korrigiert, während der
Hardware-Aufwand vermindert wird.
-
Eine weitere Aufgabe der Erfindung
ist das Aufzeigen eines Verfahrens und einer Vorrichtung beim Dekodieren
eines cross-interleaved Reed-Solomon-Codes, das beziehungsweise
die Fehler in einem Datenstrom durch Verwendung des sogenanten Lösch-Korrekturverfahrens
korrigiert.
-
Gemäß einem Aspekt der Erfindung
ist ein Fehlerkorrektur-Verfahren
für die
Verwendung in einem Prozess zum Dekodieren von cross-interleaved
Reed-Solomon-Codes (CIRC) vorgesehen, das Fehler in einem Block
aus 109 Cl-Code-Worten,
von denen jedes aus 32 Daten-Bytes besteht, und in einem Block aus 109
C2-Code-Worten, von denen jedes aus 28 Bytes besteht, korrigiert,
wobei der Block aus Cl-Code-Worten in
einem Speicher positioniert ist, der einen Speicherblock mit Speicherplätzen Nij für
die Daten-Bytes mit i = 0, ..., 217; j = 0, ..., 31 an den Plätzen i =
109, ..., 217 und j = 0, ..., 31 umfasst; wobei der Block aus C2-Code-Worten entlang von
Diagonalen des Speichers lokalisiert ist, wobei die Diagonalen an
den Positionen i = 0, ..., 108 und j = 0 beginnen und an den Positionen
i = 108, ..., 216 und j = 27 enden; wobei ein vorhergehender Block
aus Cl-Code-Worten
im Speicher an den Positionen i = 0, ..., 108 und j = 0, ..., 31
positioniert ist, wobei das Verfahren die folgenden Schritte umfasst:
- a1) Lesen und Dekodieren (450) der
C1-Code-Worte in dem gegenwärtigen
Block aus den Plätzen
Nij unter der Verwendung von Dekodiermitteln
(5), beginnend mit i = 109 und j = 0;
- a2) Korrigieren der C1-Code-Worte wenigstens teilweise;
- b1) Lesen und Dekodieren (460) der C2-Code-Worte aus
den Plätzen
Nij unter Verwendung der Dekodierermittel
(5) entlang den Diagonalen des Speichers, beginnend mit
der Position i = 0 und j = 0; und
- b2) Korrigieren der C2-Code-Worte wenigstens teilweise;
- c) Wiederholen der Schritte a1, a2 und b1, b2.
-
Dieses Verfahren sieht das Lesen
und Dekodieren von C1- und C2-Code-Worten in einer neuen Weise vor.
Dies bedeutet, dass das neue Verfahren spezifische Regelungen mit
sich bringt, bei der Definition welche Datenworte für die C1- und C2-Dekodierung
und für
die Verarbeitungs-Reihenfolge verwendet werden sollen. Der System-Speicher
für eine
Entschachteler-Ausführung
kann im Vergleich zu konventionellen System-Speichern eine kleinere
Größe haben.
Außerdem
braucht nur ein einziger CIRC-Dekodierer zur Ausführung des erfindungsgemäßen Verfahrens
verwendet zu werden.
-
Die Korrektur eines großen Fehlerbündels in
C1-Code-Worten kann sehr wirksam für eine niedrige Eingangs-Fehlerrate
ausgeführt
werden.
-
Gemäß einem anderen Aspekt der
Erfindung ist eine neue Vorrichtung zur Ausübung des oben vorgesehenen
Fehler-Korrekturverfahrens
im Anspruch 11 offenbart.
-
Vorteilhafte Merkmale der Erfindung
sind in den Unteransprüchen
offenbart.
-
Zeichnungen
-
Ausführungsbeispiele der Erfindung
sind in den Zeichnungen dargestellt und werden nachfolgend ausführlicher
erläutert.
In den Zeichnungen stellen dar:
-
1 ein
Beispiel eines System-Speichers, der in Verbindung mit einem konventiellen
Fehlerkorrektur-Verfahren verwendet wird;
-
2 ein
Blockschaltbild eines CIRC-Dekodierers, der zur Ausführung des
erfindungsgemäßen Verfahrens
geeignet ist;
-
3 eine
schematische Darstellung eines Speicherblocks mit Speicherblöcken B1
und B2 gemäß der Erfindung;
-
4 ein
Flussdiagramm des erfindungsgemäßen Verfahrens;
-
5 den
Speicherblock von 3 mit
Speichersektoren;
-
6 den
Speicherblock von 5 mit
in den Speicherblock B2 bewegtem Speicherblock B1; und
-
7 ein
Diagramm, das Ergebnisse eines konventionellen Fehlerkorrektur-Verfahrens
mit dem erfindungsgemäßen Fehlerkorrektur-Verfahren
vergleicht.
-
Ausführungsbeispiele
-
1. System-Komponenten
-
2 ist
ein Blockschaltbild eines erfindungsgemäßen CIRC-Dekodierers.
-
Ein Datenstrom aus einem Erfassungsteil
wird in einer Eingangs-Logik 1 gespeichert. Die Eingangs-Logik 1 ist
in der Lage, 109 C1-Code-Worte (32 Bytes) in einem Eingangs-Puffer zu speichern.
Wenn ausreichend Daten in dem Eingangs-Puffer verfügbar sind,
wird ein Datenblock (119 × 32)
in einen System-Speicher 2 geschrieben, der vorzugsweise
ein RAM ist. Im System-Speicher 2 werden zwei Speicherblöcke B1,
B2 zur Speicherung von Daten-Bytes gebildet.
-
Ein Element 3 "Verzögerung
von einem Symbol" wird
zur Datenverzögerung – wie aus
konventionellen CIRC-Dekodierern bekannt ist – verwendet.
-
Mittel zum Adressieren und Bestimmen
von Speicherplätzen
in dem System-Speicher 2, an denen Lese-, Schreib- und
Fehlerkorrektur-Operationen betrieben werden sollen, sind in einem
Timing- und Steuerelement 4 angeordnet.
-
Zum besseren Verständnis werden
Daten-Bytes im System-Speicher 2 so
betrachtet, als seien sie Elemente eines zweidimensionelen kartesischen
Koordinatensystems, wie in 3 dargestellt
ist. Diese Annahme ist unabhängig
von einer realen Hardware-Ausführung
des System-Speichers 2. Jede vertikale oder i-Achsen-Position
enthält
32 Bytes von C1-Code-Worten (siehe 3).
Jede horizontale oder j-Rchsen-Position stellt
ein 8-Bit-Byte an jeder j-Achsen-Position
dar. Bytes sind der Reihe nach innerhalb jeder j-Position von links nach rechts nummeriert.
Dies entspricht der Systematik des Reed-Solomon-(RS)-Codes. Paritäts-Bytes sind
in den Positionen 28 bis 31.
-
Gemäß 2 ist ein konventioneller RS-Dekodierer 5 mit
dem System-Speicher 2 und dem Timing- und Steuerelement 4 verbunden.
In dem konventionellen RS-Dekodierer 5 wird ein sogenanntes
Lösch-Korrektur-Verfahren
des RS-Codes ausgeführt.
Der RS-Dekodierer 5 ist in der Lage, vier Löschungen
oder zwei Fehler oder irgendwelche Kombinationen von Fehlern und
Löschungen
zu korrigieren gemäß: 2*t +
E < d, worin t
die Zahl der Fehler in einem Code-Wort, E die Zahl von Löschungen
und d der Hamming-Abstand des RS-Codes ist. Für Kompakt-Audio-Platten-Anwendungen
ist d gleich 4.
-
Das Adressieren und Bestimmen von
Plätzen
in dem System-Speicher 2 und
die Steuerung von übertragenen
Daten-Bytes während
Lese-, Schreib- und Korrektur-Operationen wird unter Verwendung
eines Timing- und Steuerelements 4 ausgeführt.
-
Eine Verzögerung von zwei Symbolen wird
in einem Element 6" verzögert von
zwei Symbolen" ausgeführt. Ein
C2-Code-Wort wird korrigiert, nachdem ein zweiter Dekodierer-Zyklus
des CIRC-Dekodierers in einen Ausgangs-Puffer 7 geschrieben
wird.
-
2. Ausführliche
Operationen eines erfindungsgemäßen Fehlerkorrektur-Verfahrens
-
Unter Bezugnahme auf 4 werden Operationen des neuen Dekodierungs-Verfahrens
für mehrfache
Verarbeitung eines CIRC-Korrektur-Codes in Einzelheiten beschrieben.
Sobald in der Eingangs-Logik 1 genügend Daten verfügbar sind,
wird ein Datenblock (109 × 32
Bytes) in i-Positionen 109, 110, ..., 217 des System-Speichers 2 geschrieben
(siehe 3), Schritte 410 und 420.
-
Ein Zähler-Durchlauf eines B1-Speicherblocks
wird zunächst
mit 1 (430 in 4)
initialisiert. Dann wird eine Bedingung Count ps = 2 – ? analysiert,
Schritt 440. Wenn das Ergebnis nein ist, dann wird der
Schritt 450 ausgeführt.
Beim Schritt 450 wird ein RS-Dekodierer 5, der
zu dieser Zeit in der C1-Stufe ist, für das Lesen des C1-Code-Wortes
(32 Bytes entlang j-Positionen für j = 0, 1, ..., 31) an der
i-Position 109 positioniert. Bei jedem folgenden C1-Dekodierer-Zyklus
wird der RS-Dekodierer 5 vorwärts positioniert und liest
das C1-Code-Wort an der folgenden nächst höherwertigen i-Position. Somit
wird während
des zweiten C1-Dekodierer-Zyklus der RS-Dekodierer 5 an
der i-Position 110 positioniert.
In derselben Weise wird die Adressierung fortgesetzt, bis die i-Position
217 für
alle j-Positionen (j = 0, 1, ..., 31) gelesen ist.
-
Bei jedem C1-Dekodierer-Zyklus versucht
der RS-Dekodierer 5 bis zu zwei Fehler zu korrigieren.
wenn drei oder mehr Fehler auftreten, die natürlich nicht korrigiert werden,
werden Lösch-Flags
allen nicht-korrigierten Daten-Bytes des C1-Code-Wortes zugeordnet.
Lösch-Flags
werden in einem zusätzlichen
Speicherblock (nicht dargestellt) des System-Speichers 2 gespeichert.
-
Im allgemeinen führt der RS-Dekodierer
5 (in
der C1-Stufe) kontinuierlich 109 Dekodierungs- und Korrektur-Zyklen
(
450 in
4)
aus. Dann ist der B1-Speicherblock (siehe
3) voll verarbeitet worden, d.h. der erste
Durchlauf der C1-Dekodierung ist vollendet. Danach wird der RS-Dekodierer
5,
der zu dieser Zeit in der C2-Stufe ist, zum Lesen eines C2-Code-Wortes
(
28 Bytes) an der i-Position 0 (460 in
4) positioniert. C2-Code-Worte werden
entlang von Diagonalen von B1- und B2-Speicherblöcken gelesen. Das Adressieren von
B2-Code-Worten (C2-CCW) in Lese-Operationen erfolgt gemäß dem folgenden
Algorithmus:
worin Speicher [i][j] ein
Platz in dem System-Speicher
2 ist.
-
Bei jedem C2-Dekodierer-Zyklus versucht
der RS-Dekodierer 5 bis zu vier Löschungen oder zwei Fehler oder
irgendwelche Kombinationen von Fehlern und Löschungen auf der Basis der
folgenden Bedingung zu korrigieren: 2*t + e < d, worin t die Zahl von Fehlern in
einem Code-Wort, E die Zahl von Löschungen und d der Hamming-Abstand
vom RS-Code ist.
-
Die während der C1-Dekodierungs-Zyklen
zugeordnete Löschungs-Information
(C1-Zähler-Information)
wird bei der C2-Dekodierung und Korrektur-Operationen verwendet.
Beim Schritt 460 werden unkorrigierbare C2-Code-Worte nicht
markiert, d.h. Lösch-Flags
werden nicht zugeordnet.
-
Insgesamt führt der RS-Dekodierer 5 (in
der C2-Stufe) kontinuierlich 109 C2-Dekodierungs- und Korrektur-Zyklen
durch (Schritt 460 in 4).
Nach jenen Operationen werden 109 C2-Code-Worte verarbeitet, und
der erste Durchlauf der C2-Dekodierung ist vollendet. Nach 109 C2-Dekodierungs- und
Korrektur-Zyklen wird der Inhalt des Zählers Count ps (Zähler von
Durchläufen; 470 in 4) erhöht und wird 2.
-
Während
des Schrittes 440 wird erneut die Bedingung Count ps =
2-? analysiert. Wenn das Ergebnis ja ist, muss ein Schritt 480 ausgeführt werden,
und die Lösch-Flags
aller Daten-Bytes in dem B1-Speicherblock werden gelöscht. Dann
wird der RS-Dekodierer 5 (in der C1-Stufe) erneut zum Lesen
von C1-Code-Worten an der i-Position 109 während des Schritts 490 positioniert.
Bei jedem folgenden C1-Dekodierer-Zyklus
wird der RS-Dekodierer 5 vorwärts positioniert, und das C1-Code-Wort
bei der nächstfolgenden
höheren
i-Position wird gelesen. Somit wird während des zweiten C1-Dekodierer-Zyklus
der RS-Dekodierer 5 an der i-Position 110 positioniert.
In derselben Weise wird die Adressierung bis zur i-Position 217
fortgesetzt. Während
jedes C1-Dekodierer-Zyklus versucht der RS-Dekodierer 5 bis
zu zwei Fehler zu korrigieren. Wenn drei oder mehr Fehler auftreten,
die natürlich
nicht korrigiert werden, werden Lösch-Flags allen nicht korrigierten
Bytes des C1-Code-Wortes
zugeordnet.
-
Im allgemeinen führt der RS-Dekodierer 5 (in
der C1-Stufe) kontinuierlich erneut 109 Dekodierungs- und Korrektur-Zyklen durch (Schritt 490 in 4). Dann ist der B1- Speicherblock voll
verarbeitet worden, d. h. der zweite Durchlauf der C1-Dekodierung
ist vollendet. Anschließend
wird der RS-Dekodierer 5 (in der C2-Stufe) erneut positioniert,
um das C2-Code-Wort (28 Bytes) an der i-Position 0 zu lesen. C2-Code-Worte
werden entlang Diagonalen von B2- und B1-Speicherblöcken beim
Schritt 500 gelesen. Das Adressieren von C2-Code-Worten in Lese-Operationen wird
gemäß dem oben
erwähnten
Algorithmus (1) ausgeführt.
-
Der RS-Dekodierer 5 versucht
erneut bis zu vier Löschungen
oder zwei Fehler oder irgendwelche Kombinationen von Fehlern und
Löschungen
durch jeden C2-Dekodierer-Zyklus zu korrigieren. Wenn der RS-Dekodierer 5 nicht
in der Lage ist, das gegenwärtige
C2-Code-Wort zu korrigieren, werden Daten-Bytes mit Flags versehen.
Danach werden die verarbeiteten C2-Code-Worte in den Ausgangs-Puffer 7 geschrieben (siehe 2).
-
Der RS-Dekodierer führt (in
der C2-Stufe) kontinuierlich 109 C2-Dekodierungs- und Korrektur-Zyklen durch.
Nachdem 109 C2-Code-Worte verarbeitet worden sind, ist ein zweiter
Durchlauf der C2-Dekodierung vollendet. Dann wird der B1-Speicherblock mit
Lösch-Informationen
in den B2-Speicherblock
des System-Speichers 7 bewegt (siehe Schritt 510 in 4). Ein Signal ERLEDIGT
wird in dem Timing- und Steuerelement 4 erzeugt. Dieses
Signal gibt die Information, dass alle Daten-Bytes in dem System-Speicher 2 genau zweimal
verarbeitet worden sind. Dann wird der Schritt 410 erneut
ausgeführt.
-
3. Bündelfehler-Korrektur
-
Nachfolgend wird die Bündelfehler-Korrektur
unter Verwendung des erfindungsgemäßen Verfahrens erläutert.
-
A) Korrektur eines C1-Code-Wort-Bündels mit
hoher Eingangs-Fehler-Rate
(C1-Code-Worte werden vollständig
oder nahezu vollständig
zerstört)
-
Ausführliche Operationen des Korrekturverfahrens
des CIRC-Korrektur-Codes
gemäß der Erfindung werden
in Verbindung mit dem Bündelfehler
beschrieben. Es wird angenommen, dass der B2-Speicherblock bereits
korrigiert worden ist (in einer vorhergehenden Stufe) und sich in
dem B2-Speicherblock
keine Fehler befinden. Der B1-Speicherblock wird aus der Eingangs-Logik 1 geladen.
Bei i-Positionen 130, ..., 140 gibt es ein Bündelfehler (11 beschädigte C1-Code-Worte, siehe 5).
-
Der RS-Dekodierer 5 startet
(in der C1-Stufe) und versucht aufeinanderfolgend 109 Cl-Code-Worte
in dem B1-Speicherblock
zu dekodieren und zu korrigieren. Code-Worte bei i-Positionen 130,
..., 140 sind nicht korrigierbar und werden daher mit Flags versehen
(jedem Byte in jedem C1-Code-Wort
wird das Lösch-Flag zugeordnet).
-
Dann startet der RS-Dekodierer 5 (in
der C2-Stufe und versucht nacheinander 109 C2-Code-Worte in B1-
und B2-Speicherblöcken zu
dekodieren und zu korrigieren. Während
dieser Operation muss der RS-Dekodierer 5 (in der C2-Stufe)
Bytes aus den Speichersektoren 2B1 und 1B2 lesen
(siehe 5). Nach Vollendung
des ersten Durchlaufs des RS-Dekodierers 5 (109
Cl-Durchläufe
und 109 C2-Durchläufe)
werden mit Flags versehene Bytes an den i-Positionen (130– 140) innerhalb
des Speichersektors 2B1 korrigiert, während mit Flags versehene Bytes
an den i-Positionen (130–140)
innerhalb des Speichersektors 1B1 unkorrigiert bleiben.
-
In einem zweiten Durchlauf versucht
der RS-Dekodierer 5 (in der C1-Stufe) aufeinanderfolgend
109 C1-Code-Worte in dem B1-Speicherblock zu dekodieren und zu korrigieren.
Code-Worte an den
Positionen 130, ..., 140 werden erneut mit Flags
versehen, aber tatsächlich
sind zu dieser Zeit Fehler nur in dem Speichersektor 1B1 vorhanden.
Dann startet der RS-Dekodierer 5 (in der C2-Stufe) und
versucht aufeinanderfolgend 109 C2-Code-Worte in B1- und B2-Speicherblöcken zu
dekodieren und zu korrigieren.
-
Bei einer nächsten Stufe wird der korrigierte
B1-Speicherblock mit Lösch-Informationen
in den B2-Speicherblock des System-Speichers kopiert (siehe 6). Danach wird ein neuer
Datenblock aus der Eingangs-Logik 1 in den B1-Speicherblock geladen,
und der CIRC-Dekodierer startet erneut. Nun sind (existieren) verbleibende
Fehler in dem Speichersektor 1B2 (Bytes mit Lösch-Informationen).
Der RS-Dekodierer 5 (in
der C1-Stufe) startet und versucht aufeinanderfolgend 109 C1-Code-Worte
in dem B1-Speicherblock
zu dekodieren und zu korrigieren.
-
Dann startet der RS-Dekodierer 5 (in
der C2-Stufe) und versucht aufeinanderfolgend 109 C2-Code-Worte
in B1- und B2-Speicherblöcken
zu dekodieren und zu korrigieren. Während dieser Stufe werden Fehler
im Speichersektor 1B2 (verbleibende Fehler an den i-Positionen
21, ..., 31) korrigiert.
-
Der CIRC-Dekodierer, der das erfindungsgemäße Verfahren
ausführt,
ist in der Lage, 14 beschädigte C1-Code-Worte
(Grenze) mit einer hohen Eingangs-Fehler-Rate zu korrigieren.
-
B) Korrektur eines C1-Code-Wort-Bündels mit
niedriger Eingangs-Fehler-Rate (jedes C1-Code-Wort mit 3 bis 6 Fehlern)
-
Der CIRC-Dekodierer, der das erfindungsgemäße Verfahren
ausführt,
arbeitet sehr wirksam, wenn beschädigte C1-Code-Worte eine niedrige
Eingangs-Fehler-Rate haben. Dies wird nachfolgend erläutert.
-
Bei der C2-Code-Wort-Fehlerkorrektur
(erster Durchlauf des CIRC-Dekodierers) kann der RS-Dekodierer 5 (in
der C2-Stufe), jede
willkürliche
Kombination von Löschungen
(bis zu vier Löschungen)
korrigieren, d.h. während
des zweiten Durchlaufs des CIRC-Kodierers ist der RS-Dekodierer 5 (in
der Cl-Stufe), alle C1-Code-Worte zu korrigieren, die noch nicht
während
des ersten Durchlaufs des CIRC-Dekodierers korrigiert worden sind
(in der Cl-Stufe). Daher ist es während des zweiten Durchlaufs
des CIRC-Dekodierers möglich, alle
C2-Code-Worte zu korrigieren, die während des ersten Durchlaufs
des CIRC-Dekodierers nicht korrigiert worden sind (in der C2-Stufe).
-
Dies kann unter Bezugnahme auf 7 gezeigt werden. In 7 sind Ergebnisse der Fehlerkorrektur für zwei CIRC-Dekodierer dargestellt – ein konventioneller
CIRC-Dekodierer
und ein das erfindungsgemäße Verfahren
ausführender
CIRC-Dekodierer. Ergebnisse eines konventionellen CIRC-Dekodierers
sind durch gestrichelte Linien dargestellt. Ergebnisse eines die
Erfindung verwendenden CIRC-Dekodierers sind als durchlaufende Linien
dargestellt.
-
Ergebnisse sind für die folgenden Fehler-Kombinationen
dargestellt:
- 1. Bündelfehler von 20 C1-Code-Worten
mit 3 Fehlern in jedem C1-Code-Wort (willkürliche Fehler).
- 2. Bündelfehler
von 20 C1-Code-Worten mit 4 Fehlern in jedem C1-Code-Wort.
- 3. Bündelfehler
von 20 C1-Code-Worten mit 5 Fehlern in jedem C1-Code-Wort.
- 4. Bündelfehler
von 20 C1-Code-Worten mit 6 Fehlern in jedem C1-Code-Wort.
- 5. Bündelfehler
von 30 Cl-Code-Worten mit 3 Fehlern in jedem C1-Code-Wort.
- 6. Bündelfehler
von 30 C1-Code-Worten mit 4 Fehlern in jedem C1-Code-Wort.
- 7. Bündelfehler
von 30 C1-Code-Worten mit 5 Fehlern in jedem C1-Code-Wort.
- B. Bündelfehler
von 30 C1-Code-Worten mit 6 Fehlern in jedem C1-Code-Wort.
- 9. Bündelfehler
von 40 C1-Code-Worten mit 3 Fehlern in jedem C1-Code-Wort.
- 10. Bündelfehler
von 40 Cl-Code-Worten mit 4 Fehlern in jedem C1-Code-Wort.
- 11. Bündelfehler
von 40 C1-Code-Worten mit 5 Fehlern in jedem C1-Code-Wort.
- 12. Bündelfehler
von 40 C1-Code-Worten mit 6 Fehlern in jedem C1-Code-Wort.
-
Ergebnisse von Bündelfehler-Korrektur von 20
C1-Code-Worten mit verschiedenen vielen Fehlern in jedem C1-Code-Wort
sind in 7 dargestellt
(Kreise). Der das erfindungsgemäße Verfahren
ausführende CIRC-Dekodierer
ist in der Lage, einen Bündelfehler
von 20 C1-Code-Worten mit 3 und 4 Fehlern in jedem C1-Code-Wort
zu korrigieren. Wenn 5 und 6 Fehler in C1-Code-Worten
auftreten, ist der das erfindungsgemäße Verfahren ausführende CIRC-Dekodierer
nicht in der Lage, einen Bündelfehler
von 20 C1-Code-Worten zu korrigieren. Jedoch ist die Ausgangs-Lösch-Rate
von CIRC-Dekodierern, die das erfindungsgemäße Verfahre ausführen, für Audio-Daten
beträchtlich
niedriger.
-
Für
den das erfindungsgemäße Verfahren
ausführenden
CIRC-Dekodierer
wird eine bessere Fehlerkorrekturleistung bei der Korrektur von
Bündelfehlern
von 30 C1-Code-Worten im Vergleich zu einem konventionellen CIRC-Dekodierer
erreicht. Der das erfindungsgemäße Verfahren
ausführende
CIRC-Dekodierer ist in der Lage, einen Bündelfehler von 30 C1-Code-Worten
mit 3 Fehlern in jedem Code-Wort zu korrigieren. Die Ausgangs-Lösch-Rate
von Audio-Daten in dem das erfindungsgemäße Verfahren ausführenden
CIRC-Dekodierer ist auch niedriger (Ergebnisse sind mittels rechteckiger
Punkte dargestellt). Vorteile des das erfindungsgemäße Verfahren
ausführenden
CIRC-Dekodierers nehmen ab bei weiterem Anwachsen der Eingangs-Fehler-Rate.
-
Begrenzung für sowohl den konventionellen
CIRC-Dekodierer als auch den das erfindungsgemäße Verfahren ausführenden
CIRC-Dekodierer sind Bündelfehler
von 14 (vollständig
beschädigten)
C1 Code-Worten. In diesem Fall unterscheidet sich die Fehlerkorrekturleistung
für einen
konventionellen CIRC-Dekodierer und für einen das erfindungsgemäße Verfahren
ausführenden
CIRC-Dekodierer nicht.