-
Hintergrund der Erfindung
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft eine Vorrichtung zum Korrigieren
von in gespeicherten oder übertragenen
Daten vorhandenen Fehlern und insbesondere eine Vorrichtung zum
Auswerten eines Fehlerauswerter-Polynoms, eines Fehlerlokalisierer-Polynoms
und eines Differentialpolynoms, die bei der Korrektur von Fehlern
in den durch Verwendung eines algebraischen Codes, wie z.B. eines
Read-Solomon-Codes, codierten Daten verwendet werden.
-
2. Beschreibung der zugehörigen Technik
-
Während eines
Prozesses des Übertragens,
Speicherns oder Abrufens von Daten auftretendes Rauschen kann wiederum
Fehler in den übertragenen,
gespeicherten oder abgerufenen Daten verursachen. Entsprechend sind
verschiedene Codierungstechniken, die die Fähigkeit haben, solche Fehler
zu beheben, zum Codieren von zu übertragenden
oder zu speichernden Daten entwickelt worden.
-
Bei
solchen Codierungstechniken wird ein Satz Prüfbits an eine Gruppe von Nachrichten- oder Informationsbits
angehängt,
um ein Codewort zu bilden. Die durch einen Codierer bestimmten Prüfbits werden
zum Erkennen und Korrigieren der Fehler verwendet. In dieser Hinsicht,
behandelt der Codierer die die Nachrichtbits bildenden Bits im Wesentlichen
als Koeffizienten eines binären
Nachrichten-Polynoms und gewinnt die Prüfbits durch Multiplizieren
des Nachrichten-Polynoms R(x) mit einem Codegenerator-Polynom G(x) oder
Dividieren von R(x) durch G(x), um dadurch ein Codewort-Polynom
C(x) bereitzustellen. Das Codegenerator-Polynom wird gewählt, um
einem Codewort gewünschte
Eigenschaften zu verleihen, worauf es so wirkt, dass das Codewort
zu einer bestimmten Klasse von fehlerkorrigierenden Binärgruppencodes
gehört
(siehe z.B. S. Lin et al., "Error
Control Coding: Fundamentals and Applications", Prentice-Hall, 1983).
-
Eine
Klasse von fehlerkorrigierenden Codes sind die hinreichend bekannten
BCH- (Bose-Chaudhuri-Hocquenghen-)
Codes, zu denen der Reed-Solomon-("RS-")
Code gehört.
Die mathematische Grundlage des RS-Codes ist z.B. in der oben erwähnten Veröffentlichung
von Lin at al. und auch in Berlekamp, "Algebraic Coding Theory", McGraw-Hill, 1968,
auf das ferner in U.S. Pat. Nr. 4,162,480 von Berlekamp verwiesen
wird, erklärt.
-
Blahut
E.R.: "Theory and
Practice of Error Control Codes",
1984, Addison-Wesley Publishing Company, London, XP002131806, beschreibt
auf den Seiten 176 bis 193 allgemein die Verwendung des traditionellen Berlekamp-Massey-Algorithmus
zum Decodieren von Bose-Chaudhuri-Hocquenghen-Codes.
-
Zusammenfassung
der Erfindung
-
Die
vorliegende Erfindung stellt ein Verfahren, eine Vorrichtung und
ein auf einem computerlesbaren Medium gespeichertes Computer-Programmprodukt
zum Decodieren einer algebraisch codierten Nachricht bereit. Das
Verfahren umfasst die Schritte des Bestimmens eines ersten Diskrepanz-Anzeigers,
wobei sich die Diskrepanz zwischen einem berechneten und einem vorhergesagten
Wert befindet; Bestimmens eines Fehlerlokalisierer-Polynoms unter
Verwendung des ersten Diskrepanz-Anzeigers und eines zweiten Diskrepanz-Anzeigers
gemäß einem
Algorithmus aus einer ausgewählten
Klasse iterativer Berlekamp-Massey-Decodierungsalgorithmen, wobei
eine nicht korrigierbare Nachricht erkannt wird und der iterative
Berlekamp-Massey-Decodierungsalgorithmus
ein inversionsloser iterativer Berlekamp-Massey-Decodierungsalgorithmus oder ein iterativer
Berlekamp-Massey-Decodierungsalgorithmus mit einem nicht normierten
Polynom-Verschiebungsterm ist; Auswertens einer Zustandssteuervariable
und des ersten Diskrepanz-Anzeigers; selektiven Aktualisierens eines
Hilfspolynoms und des zweiten, auf die Zustandssteuervariable ansprechenden
Diskrepanz-Anzeigers und des ersten Diskrepanz-Anzeigers; Auswertens
der Zustandssteuervariable und des ersten Diskrepanzanzeigers auf
Vorhanden sein der nicht korrigierbaren Nachricht hin; selektiven
Aktualisierens dieser auf die Zustandssteuervariable ansprechenden
Zustandssteuervariable und des ersten Diskrepanz-Anzeigers; und falls Vorhandensein der
nicht korrigierbaren Nachricht erkannt wird, Erzeugen einer wahrnehmbaren
Anzeige der erkannten nicht korrigierbaren Nachricht.
-
Die
Vorrichtung umfasst eine Mehrzahl von Speichergeräten, wobei
ausgewählte
Speichergeräte
von den Speichergeräten
Umlaufspeichergeräte
sind, ausgewählte
andere eine Statussteuervariable, einen Diskrepanz-Anzeiger und
ein Nachricht-Polynom zu speichern vermögen; eine Mehrzahl arithmetischer
Komponenten, die mit der Mehrzahl von Speicherstellen wirksam verbunden
sind, wobei die arithmetischen Komponenten in einem Galois-Feld
wirksam sind; und einen inversionslosen Detektor zum Erkennen einer
nicht korrigierbaren Nachricht, der mit den Speichergeräten und
den arithmetischen Komponenten wirksam verbunden ist, wobei der
Detektor mit ausgewählten
arithmetischen Komponenten und ausgewählten Umlaufspeichergeräten kommuniziert,
um das Nachricht-Polynom auszuwerten und dadurch die Zustandssteuervariable
und den Diskrepanz-Anzeiger zu bestimmen, wobei der Detektor die
Zustandssteuervariable und den Diskrepanz-Anzeiger auf Vorhandensein
einer nicht korrigierbaren Nachricht hin auswertet.
-
Das
Computerprogramm umfasst einen computerlesbaren Programmcode, der
einen Diskrepanz-Anzeiger bestimmt; computerlesbaren Programmcode,
der ein Fehlerlokalisierer-Polynom gemäß einem inversionslosen Berlekamp-Massey-Decodierungsalgorithmus
bestimmt; computerlesbaren Programmcode, der eine vorgebebene Zustandssteuervariable
und den Diskrepanz-Anzeiger auswertet; computerlesbaren Programmcode,
der ein auf die vorgegebenen Zustandssteuervariable und den Diskrepanz-Anzeiger
ansprechendes Hilfspolynom selektiv aktualisiert; computerlesbaren
Programmcode, der die vorgegebene Zustandssteuervariable und den
Diskrepanz-Anzeiger auf das Vorhandensein einer nicht korrigierbaren
Nachricht nach einer Itereration auswertet; computerlesbaren Programmcode,
der die vorgegebene auf einen Wert der vorgegebenen Zustandssteuervariable
und den Diskrepanzanzeiger ansprechende Zustandssteuervariable aktualisiert;
und computerlesbaren Programmcode, der das Vorhandensein der nicht
korrigierbaren Nachricht ohne Wiederberechnen eines Syndrom-Polynoms
verifiziert, falls das Vorhandensein der nicht korrigierbaren Nachricht
erkannt wird.
-
Bevorzugte
Ausführungsformen
der Erfindung sind in den abhängigen
Ansprüchen
angegeben.
-
Kurzbeschreibung
der Zeichnungen
-
1 ist
eine Veranschaulichung eines algebraischen Decodierers gemäß der vorliegenden
Erfindung;
-
2 ist
ein Flussdiagramm eines modifizierten Berlekamp-Massey-Algorithmus
gemäß der vorliegenden
Erfindung;
-
3 ist
ein Blockdiagramm zur Veranschaulichung einer beispielhaften Ausführungsform
der vorliegenden Erfindung;
-
4 ist
ein Blockdiagramm zur Veranschaulichung eines zirkularen Syndromgenerators
gemäß der vorliegenden
Erfindung; und
-
5 ist
ein Logik-Blockdiagramm eines Logikregisters, das in dem in 4 veranschaulichten
zirkularen Syndromgenerator verwendet werden kann.
-
Beispielhafte
Ausführungsformen
der Erfindung
-
Die
vorliegende Erfindung stellt eine Vorrichtung und ein Verfahren
zum Decodieren algebraischer Codes einschließlich BCH-Codes und insbesondere
Reed-Solomon-Codes bereit, so dass nicht korrigierbare Nachrichten
oder Anteile empfangener codierter Daten erkannt werden. Ferner
sieht die vorliegende Erfindung eine flächeneffizientere Geräteimplementierung
des oben erwähnten
Verfahrens vor. Zu Veranschaulichungszwecken wird die vorliegende
Erfindung in Bezug auf eine Untermenge der BCH-Codes, nämlich der
Reed-Solomon- (RS-) Codes beschrieben.
-
Die
Reed-Solomon- (RS-) Codierungstechnik hängt an jeden Block von k Benutzerdatensymbolen
2t Redundanzsymbole an, um einen codierten Nachrichtenblock zu schaffen
(wobei t die ausgelegte Symbolfehlerkorrekturkapazität des Codes
darstellt). Diese 2t Symbole, oder Elemente, werden aus dem Galois-Feld
als die Wurzeln des Generator-Polynoms gewählt. Deshalb gibt es k+2t Symbole
in einem RS-codierten Nachrichtenblock. Der gesamte Nachrichtenblock
wird als Polynom angesehen und bei irgendeinem Galois-Feld-Element
als Polynom ausgewertet. Das Galois-Feld-Element, bei dem das Polynom
ausgewertet wird, wird sich an den/einer Wurzel/n des Generator-Polynoms befindet,
die zur Schaffung des RS-Codes verwendet werden. Der RS-Code betrachtet
die n-Bit-Symbole als Elemente eines Galois-Felds (GF(2n)).
Ein Galois-Feld ist ein endliches Feld, dessen Elemente als Polynome
in a dargestellt werden können, wobei
a eine Wurzel eines irreduziblen Polynoms des Grads n ist. Das RS-Codewort
besteht aus einem Block von n-Bit-Symbolen. Typischerweise werden
n = 8 und die 8-Bit-Symbole
als Bytes bezeichnet. Zur Konstruktion des Galois-Felds GF(2n) ist ein definierendes Polynom F(x) vom
Grad n erforderlich. Außerdem
wird ein primitives Element β so gewählt, dass
jedes Nichtnull-Element von GF(2n) eine
Potenz von β ist.
Dieses Element β ist
nicht unbedingt eine Wurzel von F(x).
-
ARS-Codewort
C wird als ein Polynom C(x) angesehen, und die Redundanzsymbole
werden so gewählt,
dass die Wurzeln von C(x) die Wurzeln eines Generator-Polynoms G(x),
dessen Wurzeln 2t aufeinanderfolgende Potenzen von β sind, enthalten.
Die k Benutzerdatensymbole werden als die Koeffizienten hoher Ordnung
eines Polynoms vom Grad k+2t-1 angesehen, und die Redundanzsymbole
sind die Koeffizienten des Rests, wenn dieses Polynom durch G(x)
dividiert wird.
-
Der
Vorgang des Korrumpierens des ursprünglichen Codeblocks C(x) mit
Fehlern kann als Hinzufügen eines
Fehlerpolynoms E(x) zu C(x) angesehen werden. Das resultierende
korrumpierte Polynom ist als das empfangene Polynom R(x) bekannt,
wobei R(x)=C(x)+E(x). Die v Nichtnull-Glieder des Fehlerpolynoms
enthalten die erforderlichen Informationen zur vollständigen Rekonstruktion
der ursprünglichen
Daten C(x), weil jedes Glied einer Symbolfehlerposition und -größe entspricht.
-
RS-Decodierung
ist typischerweise eine dreiteilig Analyse: (1) Syndromberechnung;
(2) Lösung
der Fehlergröße und Lokalisierer-Polynome;
und (3) Fehlerpositions- und -größenschätzung durch
jeweilige Implementierungen von beispielsweise eines Chien-Such- und des Forney-Algorithmus.
Die Syndrome enthalten Fehlerinformationen getrennt von den eigentlichen
Informationen, die zur Analyse auf Fehler hin vorgesehen sind. Das
Fehlerlokalisierer-Polynom liefert Informationen bezüglich der
Position eines Fehlers im empfangenen Signal, und die Größe des Fehlers
kann durch Verwendung der Größe und der
Lokalisierer-Polynome bestimmt werden.
-
Der
Vorstoß des
RS-Fehlerkorrekturverfahrens besteht in der Rekonstruktion des Fehlerpolynoms E(x).
Drei Polynome werden zum Korrigieren eines empfangenen Polynoms
R(x) verwendet: S(x), ein Syndrom-Polynom; A(x), ein Fehlerlokalisierer-
(oder Fehlerpositions-) Polynom; und M(x), ein Fehlergrößen-Polynom.
Die Syndrome werden durch Auswerten des Polynoms R(x) an den Wurzeln
von G(x) berechnet. Diese Werte werden als Syndrome bezeichnet,
und das Syndrom-Polynom S(x) hat diese Werte als Koeffizienten. Das
Syndrom-Polynom S(x) wird zur Bestimmung des Vorhandenseins von
Fehlern verwendet. Das Fehlerlokalisierer-Polynom A(x) und das Fehlergrößen-Polynom
M(x) werden durch einen Schlüsselgleichungslöser aus
S(x) berechnet. Die Wurzeln des Fehlerlokalisierer-Polynoms A(x)
geben Positionen in den Daten an, die fehlerhaft sind, und das Fehlerlokalisierer-Polynom
A(x) und das Fehlergrößen-Polynom
M(x) werden zum Bestimmen der wahren Werte der fehlerhaften Daten
verwendet.
-
Zwei
häufig
verwendete RS-Fehlerkorrektur-Algorithmen sind der Berlekamp-Massey- und der Euclid-Algorithmus.
Die vorliegende Erfindung gestaltet den Berlekamp-Massey-Algorithmus so um,
dass der typischerweise mit dem traditionellen Berlekamp-Massey(tBM-)
Algorithmus verbundene Inversionsprozess eliminiert wird. Dies ist
wichtig, weil der Inversionsprozess das Bestimmen des Reziproken
bestimmter Galois-Feld-Elemente mittels Division beinhaltet. Division
ist eine zeitraubende arithmetische Operation, deren Implementierung
benötigte
Komponentenfläche
in einer Geräteausführung besetzten
kann. Deshalb kann die vorliegende Erfindung besonders vorteilhaft
sein, wo eine flächeneffiziente
Anordnung eines Decodierergeräts wünschenswert
ist.
-
Für die weitere
Darlegung des Decodierungsprozesses über Galois-Felder, einschließlich tBM,
Chien-Suchen und Forney-Algorithmus, siehe Theory and Practice of
Error Control Codes von Richard E. Blahut (Addison-Wesley, 1983).
-
1 veranschaulicht
eine Implementierung dieses Algorithmus, bei der ein empfangenes
Rohsignal 1 an die RS-Decodierereinheit 2 gerichtet
wird, die zum Bestimmen der Fehlerpositionen und Fehlerwerte verwendet
wird. Signal 1 wird an den Syndromgenerator 3 und
die Verzögerungseinheit 4 geliefert.
Im Syndromgenerator 3 werden die mehreren mit der gewählten Codierung
verbundenen Syndrome 6 abgeleitet und an den Polynomlöser 5 übertragen.
Der Syndromgenerator 3 berechnet ein Syndrom für jede der
2t Wurzeln von G(x). Polynomlöser 6 verwendet
die Syndrome zum Bestimmen der Koeffizienten des Fehlerpositions-Polynoms Λ(x) 7 und
der Koeffizienten des Fehlergrößen-Polynoms
M(x) 8, die wiederum an den Fehlerschätzer 9 übertragen
werden. Schätzer 9 berechnet
ein Fehlersignal 10, das in Summierer 11 mit dem
empfangenen verzögerten
Roheingang 12 kombiniert wird, um korrigierte Daten 13 bereitzustellen.
Schätzer 9 kann
eine Chien-Sucheinheit 14 enthalten, die das Fehlerpositions-Polynom Λ(x) zum Suchen
der Wurzeln des Fehlerlokalisierer-Polynoms, r1,
..., rv, verwendet. Die Chien-Sucheinheit 14 nutzt
typischerweise eine Wurzelfindungstechnik, bei der das Fehlerlokalisierer-Polynom
bei allen Elementen im Feld GF(2n) ausgewertet
wird. Die Wurzeln des Fehlerlokalisierer-Polynoms r1,
..., rv bestimmen die Fehlerpositionen.
Die Fehlerwerte werden dann unter Verwendung der Forney-Algorithmuseinheit 15 bestimmt.
Dann wird der verzögerte
empfangene Roheingang 12 unter Verwendung des Ausgangs
der Forney-Algorithmuseinheit 15 und des von der Verzögerungseinheit 4 übertragenen
empfangenen Roheingangs korrigiert.
-
Traditionell
kann der gewöhnlich
im Polynomlöser
6 verwirklichte
Berlekamp-Massey-(tBM-)
Algorithmus beschrieben werden durch:
r=1,...,
2t, wobei δ
r = 1, falls Δ
r ≠ 0 und 2L
r-1 ≤ r-1,
und andernfalls δ
r = 0. Dann ist Λ
(2t)(x)
das kleinstgradige Polynom mit den Eigenschaften, dass Λ
0 (2t)=1 und
wobei die Anfangsbedingungen Λ
(0)(x)
= 1, B
(0)(x) = 1 und L
0 =
0 sind.
-
Es
ist offensichtlich, dass die in Gleichung 3 angegebene Inversion
eine Divisionsoperation erforderlich macht.
-
Der
tBM-Algorithmus vermag Nachrichten, die ordnungsgemäß decodiert
werden können,
ordnungsgemäß zu decodieren,
in einem nicht korrigierbaren Fall jedoch, der als nicht korrigierbar
erkennbar ist, kann der nicht korrigierbare Fehler unerkannt bleiben
und die Nachricht decodiert werden, als ob sie einen korrigierbaren
Fehler enthielte. Oft kann diese nicht ordnungsgemäß decodierte
Nachricht zusätzliche
Schwierigkeiten schaffen, weil sich der Fehler durch andere Prozesse
in dem tBM verwendenden System fortpflanzen kann.
-
Gemäß der vorliegenden
Erfindung kann der modifizierte Berlekamp-Massey (mBM) durch folgende Gleichungen
beschrieben werden:
wobei: Λ ≠ 0
B
0=1
Δ
–1=1
-
Die
Verwendung von mBM für
RS-Decodierung kann vorteilhaft sein, weil: (1) die Inversion eliminiert wird;
(2) die mit dem mBM-Algorithmus verbundene Steuerstruktur gegenüber der
des tBM vereinfacht wird; und (3) die Beendigungsbedingungen von
tBM so modifiziert werden, dass – falls der Code korrigierbar
ist – andernfalls
nicht durch tBM erkannte Fehler erkannt und als solche gekennzeichnet
werden.
-
Eine
Implementierung des mBM-Algorithmus lautet im Pascal-Code dargestellt
wie folgt:
-
Wenn
ein vorwärts
gerichteter Fehlerkorrektor einen nicht korrigierbaren Fehler ordnungsgemäß erkennt,
wird das Vorhandensein eines solchen Fehlers in der Regel oft in
einem Prozess verifiziert, durch den die Syndrompolynome neu berechnet
werden. Dieser Ansatz kann einen beträchtlichen Nachteil bezüglich der Prozesseffizienz
mit sich bringen. Stattdessen verifiziert eine Ausführungsform
der vorliegenden Erfindung, die eine verbesserte Steuerstruktur
aufweist, das Vorhandensein eines nicht korrigierbaren Fehlers durch
Kontrollieren des Zustands des Polynomlösers 6 am Ende des
Polynomlösungsprozesses.
-
2 ist
ein Beispiel für
eine Ausführungsform
des Prozesses 20, der die obenerwähnte verbesserte Steuerstruktur
im Kontext des in den Gleichungen 4, 5 und 6(a)–(b) dargestellten mBM-Algorithmus
implementiert. Obwohl die hierin beschriebenen Implementierungen
für RS-Standardcodes
mit einer Blocklänge
von beispielsweise 255 Elementen ausgelegt sind, können solche
Implementierungen auch im Kontext von erweiterten Reed-Solomon-Codes
verwendet werden, die in dem hierin aufgeführten Beispiel 256 Elemente
im Nachrichtenblock, d.h. 256 Elemente im zugeordneten Galois-Feld
haben würden.
Es ist wünschenswert,
dass bei Schritt 21 die Steuervariablen DEG, PWR und STATE
sowie Fehlerlokalisierervariablen initialisiert werden. Es ist ferner
wünschenswert,
durch Schritte 23, 24, 25 und 26 2t-mal
zu iterieren, wobei 2t die Anzahl auszuwertender Syndrom-Polynome und t die
Fehlerkorrekturfähigkeit
des vorgewählten
Codes ist. Daher wird bei Schritt 30 ein Zähler benutzt,
der die Anzahl ausgeführter
Interationen verfolgt. Bei der Implementierung der Steuervariablen
sind keine Additionen oder Subtraktionen erforderlich, und es werden
nur Aufwärts-
oder Abwärtszählfunktionen
verwendet. Schritt 23 implementiert im Wesentlichen Gleichung
4, bei der der einer bestimmten Interation zugeordnete Diskrepanzwert
DEL bestimmt wird. Ähnlich
implementiert Schritt 24 Gleichung 5, bei der das Fehlerlokalisierer-Polynom
aktualisiert wird. Bei Schritt 25 wird das Hilfspolynom
Bi gemäß Gleichung
6a in Unterschritt 27 oder Gleichung 6b in Unterschritt 28 auf
der Basis der durch die Logik 26 bestimmten Bedingungen
aktualisiert. Für
Logik 29 ist wünschenswert,
für STATE
= ALPHA und DEL < > null den Datenfluss über eine
Implementierung der Gleichung 6a in Unterschritt 27 zu
leiten; andernfalls wird Unterschritt 28 verwendet, wobei
Gleichung 6b implementiert wird. Im Gegensatz zum tBM-Algorithmus,
bei dem der Polynom-Verschiebungsterm (1 – δr) x
in Gleichung 3 normiert worden ist, macht der mBM-Algorithmus keine
Normierung erforderlich, wobei eine Inversions/Divisionsoperation
vermieden wird. Nachdem das Hilfspolynom bei Schritt 25 aktualisiert
ist, wird der Steuerungszustand bei Schritt 26 aktualisiert.
-
Im
Allgemeinen wird der Grad des Fehlerlokalisierer-Polynoms durch
DEG verfolgt, die ein Aufwärtszähler ist
und den wahren Grad des Fehlerlokalisierer-Polynoms und folglich
die Anzahl der Fehler im Nachrichtenblock beschreibt. Es ist auch
wünschenswert,
ein Fehlerlokalisierer-Polynom zu konstruieren, dessen Wurzeln den
Positionen eines Fehlers gleich sind. Prozess 20 versucht
im Wesentlichen, ein lineares Feedback-Schieberegister (lienar feedback
shift register = LFSR) aufzubauen, das die Werte des Syndrom-Polynoms
vorhersagt. Ein solches LFSR kann zum Finden der Fehlerpositionen
brauchbar sein. Dann gibt der Diskrepanzwert eine Diskrepanz zwischen
dem vorhergesagten Wert des Syndrom-Polynoms und dem Wert des aktuellen
Syndrom-Polynoms preis und fordert zu weiterer Verarbeitung auf,
um die Position der Fehler zu entdecken. PWR ist ein Zähler, der
verfolgt, wie oft die Steuerung vorher in STATE = ALPHA blieb. Es
ist wünschenswert,
STATE so oft im Steuerzustand BETA bleiben zu lassen, wie STATE
vorher in Steuerzustand ALPHA blieb.
-
Zu
den Zwecken der vorliegenden Erfindung kann STATE verwendet werden,
um (1) zu bestimmen, ob die Fehlerkorrekturanalyse dem Fluss von
Gleichung 6a oder 6b folgen sollte; (2) die Bestimmung zu unterstützen, ob
der Grad des Fehlerlokalisierer-Polynoms erhöht werden sollte; und (3) ob
ein nicht korrigierbarer Fehler vorhanden ist. Am Ende von 2t Iterationen
wird der Wert von STATE noch einmal bei Schritt 35 bestimmt.
Ist das Ergebnis STATE = ALPHA, ist der Code potentiell gültig, wenn
andererseits STATE = BETA, wird der Fehler als nicht korrigierbar
gekennzeichnet. Potentiell gültige
Codes, bei denen bei Schritt 35 STATE = ALPHA ist, können auch
einer zusätzlichen
Validierung unterzogen werden, bevor sie anschließend decodiert
werden. Tatsächlich
wird in einer nachfolgenden Operation die Anzahl der Nullen des
Fehlerlokalisierer-Polynoms mit der Wert von DEG verglichen. Eine
Diskrepanz zwischen diesen zwei Werten weist auch auf einen nicht
korrigierbaren Fehler hin.
-
3 ist
eine beispielhafte Ausführungsform
eines Polynomlösers,
der den mBM-Algorithmus
verwendet. Löser 50 kann
ein Syndromgenerator-Register 51, Umlaufsyndromregister 52,
erstes Verzögerungsregister 53,
Lokalisierer-Polynom- (Λi) Register 54, Hilfspolynom- (Bi) Register 55, zweites Verzögerungsregister 56,
einen ersten Multiplizierer 57, zweiten Multiplizierer 58,
Addierer 59, ein Δ-Register 60,
und Δ_-Register 61 aufweisen.
Bei einer anderen Ausführungsform
kann der Syndromgenerator vom Löser 50 getrennt
sein. Es ist wünschenswert,
dass die Multiplizierer 57, 58 und der Addierer 59 auf
Calais-Feld-Elemente wirken. Es ist auch wünschenswert, dass das Register 51 logisch
als zirkulares Register oder eine Schleife angeordnet ist, so dass
bestimmte Registerwerte in einer vordefinierten Sequenz verwendet
werden können.
Ferner ist es wünschenswert,
dass die Register 52, 54 und 55 logisch
als Kellerstapel oder FIFOs angeordnet sind, und auch dass die darin
enthaltenen Werte synchron rotieren. Das Fehlerlokalisierer-Polynom Λi ist
im Register 54 so angeordnet, dass der niederwertigste
Koeffizient oben ist und der Stapel "nach unten wächst", während nachfolgende
Werte bestimmt werden. Es ist wünschenswert,
dass das Umlaufsyndromregister 52 so wirkt, dass der niederwertigste
Koeffizient nach dem unteren Ende des Registers und das höchstwertigste
nach dem oberen Ende ausgerichtet ist.
-
Bei
dem Beispiel von 3 ist die Fehlerkorrekturfähigkeit
t so gewählt,
dass sie 5 Elemente beträgt, und
demgemäss
ist das Syndromregister 51 so ausgelegt, das es 2t, oder
10, einzelne Elemente nutzt. Außerdem
ist das Register 52 zur Verwendung von t Elementen gewählt, Register 54 ist
zur Nutzung von t+1 Elementen gewählt, und Register 55 soll
mit t Elementen wirken.
-
Anfänglich wird
das Umlaufsyndromregister 52 mit Nullen vorgeladen. Wie
im oben erwähnten
Algorithmus ausgedrückt,
umfasst ein anfänglicher
Schritt Berechnen des Diskrepanzwerts DEL, der im Register 60 gespeichert
werden kann. Ein vorheriger Wert für DEL, DEL0, wird im Register 61 bereitgestellt.
Zur Berechnung des Anfangswerts für DEL wird ein erster Syndromwert
S0 in das Register 52 geschoben,
welcher Wert zusammen mit dem Anfangswert von DEL, nämlich DEL0,
und dem t-ten Wert im Lokalisierer-Polynomregister 54 im ersten
Multiplizierer 57 empfangen wird. Nach der angegebenen
Multiplikation und Erstellung eines DEL-Werts werden die Werte in
den Registern 52, 54 und 55 um ein Element
nach unten geschoben. Zuerst sind die Werte im Register 52 null,
mit nachfolgender Taktung treten jedoch aufeinander folgende Werte von
Si in das Register 52 ein und werden
dort für
Taktzyklen, die i = 0 bis 2t-1 entsprechen, hindurchzirkuliert. Während S0 aus dem Register 52 in den ersten
Multiplizierer 57 austritt, werden auch entsprechende Werte von Λ0 an
den ersten Multiplizierer 57 übertragen, so dass der Wert
S0Λ0 bestimmt wird.
-
Gleichzeitig
mit dieser Berechnung wird der Wert B0 aus
dem Register 55 mit dem dann vorhandenen Wert für DEL im
zweiten Multiplizierer 58 multipliziert und das Ergebnis
wird im Addierer 59 mit S0A0 summiert, um den nächsten Wert für DEL zu
erzeugen. Dieser Wert von DEL wird zur Erzeugung des nächsten Werts
für das
Fehlerlokalisierer-Polynoms, nämlich Λ1,
verwendet. Nach dieser Berechnung läuft der Wert So so um, dass
er das erste Verzögerungsregister 53 umgeht
und während
des nächsten
Taktzyklus wieder oben auf dem Stapel in das Umlaufregister 52 eintritt.
Während
dieses nächsten
Taktzyklus wird der Syndromwert S1 ausgerichtet
und mit Λ0 multipliziert und So wird ausgerichtet
und mit Λ1 multipliziert. Dieser Vorgang wird wiederholt, so
dass jeder Syndromwert in der Auswertung des Lokalisiererpolynoms
ordnungsgemäß durchiteriert.
-
Mit
den oben aufgeführten
Informationen vermag ein Fachmann die Weise zu verstehen, auf die
die Werte für
das Fehlerlokalisierer-Polynom Λi und das Hilfspolynom Bi bestimmt
werden. Falls gewünscht
ist, die Werte von Bi durch das Register 55 zu
rotieren, wird ein zweites Verzögerungsregister 56 umgangen.
Falls andererseits die Verwendung eines vorher berechneten Werts
von Bi wünschenswert
ist, wie im oben erwähnten Algorithmus
angegeben, wird der Wert von Bi in das zweite
Verzögerungsregister 56 geleitet.
-
Bei 3 fortfahrend
wird die Berechnung des Größenpolynoms
beschrieben. Bei Beendigung von 2t Iterationen, wie oben beschrieben,
enthält
das Register 52 Werte S4-S8. Im Wesentlichen kann die Bestimmung des
Größenpolynoms
als M(x) = Λ(x)
S(x) mod x2t modelliert werden, wobei die
Multiplikation nach dem 2t-Term abgeschnitten wird. Tatsächlich müssen unter
der Annahme, dass kein nicht korrigierbarer Fehler vorgefunden wurde,
nur t Terme bestimmt werden. Während
der letzten Iterationen der Berechnung des Fehlerlokalisierer-Polynoms
wird das Register 52 mit Nullen geladen, so dass bei Beendigung
von 2t Iterationen alle Speicherstellen im Register 52 einen
Nullwert enthalten. Nach 2t Iterationen werden die Werte
im Register 51 an ihre ursprüngliche Position zurückgebracht,
Register 52 enthält
alle Nullwerte und Register 54 enthält das Fehlerlokalisierer-Polynom, Λi.
Auf eine der Berechnung der Lokalisiererpolynom-Koeffizienten ähnliche Weise werden die Fehlergrößenkoeffizienten
iterativ berechnet. Nach t Iterationen ist S0 am
logischen unteren Ende des Registers 52 und Λ0 am
logischen unteren Ende des Registers 54. Bei Beendigung
von t+1 Iterationen ist das Produkt des Multiplizierers 57 S0Λ0, der erste Term des Fehlergrößenpolynoms.
Der Ausgang des Addierers 59 wird zum logischen oberen
Ende des Registers 55 geleitet, das jetzt zum Aufbau des
Größenpolynoms verwendet
wird. Nach Iteration t+2 wird der Syndromwert So nach dem Lokalisiererwert Λ1 ausgerichtet,
was das Produkt S0Λ1 ergibt;
der Syndromwert S1 wird nach Λ0 ausgerichtet, was das Produkt S1Λ0 ergibt; wobei dessen Summierung S0Λ1 + S1Λ0 ergibt,
was der zweite Term des Fehlergrößenpolynoms
ist. Dieser Prozess geht weiter, bis alle Werte von M(x) so bestimmt
sind. Bei Iteration 2t sind alle Koeffizienten für das Fehlergrößenpolynom
berechnet worden. In diesem Augenblick kann der Datenfluss des Fehlerlokalisierer-Polynoms
im Register 54 und des Fehlergrößenpolynoms im Register 55 aus
dem Löser 50 gelenkt
werden.
-
4 veranschaulicht
eine Ausführungsform
eines zirkularen Syndromgenerators 70, der in 3 als Register 51 – zur Unterbringung
einer Fehlerkorrekturfähigkeit
von t=8 modifiziert – verwendet
werden kann. 5 ist eine Ausführungsform 72 eines
der einzelnen Register 71 im zirkularen Syndromgenerator 70 in 4.
Obwohl ein zirkularer Syndromgenerator gezeigt ist, ist er keinesfalls
die einzige Syndromgeneratorart, die als Register 51 verwendet
werden kann.