DE3422461A1 - Decoder zum decodieren von codewoertern, die blockweise mittels eines reed-solomon-codes gegen mehrere symbolfehler je block geschuetzt sind, und leseanordnung mit einem derartigen decoder fuer optisch lesbare speicherkoerper - Google Patents
Decoder zum decodieren von codewoertern, die blockweise mittels eines reed-solomon-codes gegen mehrere symbolfehler je block geschuetzt sind, und leseanordnung mit einem derartigen decoder fuer optisch lesbare speicherkoerperInfo
- Publication number
- DE3422461A1 DE3422461A1 DE19843422461 DE3422461A DE3422461A1 DE 3422461 A1 DE3422461 A1 DE 3422461A1 DE 19843422461 DE19843422461 DE 19843422461 DE 3422461 A DE3422461 A DE 3422461A DE 3422461 A1 DE3422461 A1 DE 3422461A1
- Authority
- DE
- Germany
- Prior art keywords
- symbols
- block
- error
- code
- code word
- 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.)
- Withdrawn
Links
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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1833—Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Description
PHN 10 710 f £ 4.6.1984.
Decoder zum Decodieren von Codewörtern, die blockweis-e
mittels eines Reed-Solomon-Codes gegen mehrere Symbolfehler
je Block geschützt sind, und Leseanordnung mit einem derartigen Decoder für optisch lesbare Speicherkörper
Die Erfindung betrifft ein Decodersystem zum
Decodieren von Codewörtern, die mittels eines Reed-Solomon-Codes gegen mehrere Symbolfehler je Codewort geschützt sind,
welches Decodersystem Aufnehmermittel zum sequentiellen
Empfangen der Codesymbole zur Bildung eines Codeworts daraus, erste Berechnungsmittel zum Bestimmen einer Reihe von Syndromsymbolen
aus dem Codewort mit Hilfe der Paritätsprüfmatrix fΗ"! des Codes, von den ersten Berechnungsmitteln
gespeiste zweite Berechnungsmittel zum Lösen der Schlüsselgleichung zum Erhalten des Fehlerorters sigma(z) und des
Pehlerauswerters omega(z), von den zweiten Berechnungsmitteln gespeiste dritte Berechnungsmittel zum Erhalten
der Positionen möglich gestörter Godesymbole mit Hilfe der Nullpunkte des Fehlerorters, und von den dritten Berechnungsmitteln
gespeiste vierte Berechnungsmittel zur Bestimmung der gestörten Codesymbolen zugeordneten Symbolfehler mit Hilfe der Nullpunkte zur Darstellung der mittels
Fehlerwert(e) und Positionsdaten von Symbolfehlern korrigierbaren
Codesymbole an einem Benutzerausgang enthält.
Ein derartiges Decodersystem ist aus der US-PS-4 124 174 bekannt, die eine schnelle Decodierung zur
Korrektur von höchstens drei Symbolen in einem Codewort beschreibt. In bestimmten Fällen reicht diese Leistung
nicht aus.
Der Erfindung liegt die Aufgabe zugrunde, ein Decodersystem zu schaffen, das mit hoher Geschwindigkeit
arbeiten kann und in dem sich insbesondere die Verarbeitungsgeschwindigkeit an die Anzahl in Wirklichkeit gefundener
Fehler anpasst, so dass nicht Jedesmal der uxigünstigste
Fall berücksichtigt zu werden braucht, in dem die Eorrekturmöglichkeiten des Codes völlig ausgenutzt werden,
insbesondere durch Vereinfachung der Lösung der Schlüsselgleichung derart, dass die Ergebnisse vorangehender Be-
PHN 10 710 Of S <5/,9?AR1 4.6.1984
rechnungsschritte für folgende Berechnungsschritte verwendet
werden, so dass eine Schalenstruktur entsteht, während für eine bestimmte Anzahl vorläufig festgestellter
Symbolfehler nur eine beschränkte Anzahl zusätzlicher
g Syndromsymbole, häufig kleiner als die Anzahl im Codewoft
vorhandener Syndromsymbole, zur Verwirklichung einer Prüfung der geeigneten Lösung der Schlüsselgleichung vorgesehen wird.
Diese Aufgabe wird erfindungsgemäss dadurch gelöst, dass die zweiten Berechnungsmittel Multiplizierer enthalten
und jeweils für eine angenommene Anzahl (l) von Symbolfehlern je Codewort, ausgehend von einem fehlerfreien (L=O)
Codewort, mittels Berücksichtigung von 2L Syndromsymbolen und der Lösung der dazu beschränkten reduzierten Schlüsselgleichung
nach der Cramerschen Regel, jedoch bei sich von NuIL unterscheidender Diskrepanz IM, durch die Einführung
von zwei weiteren Syndromsymbolen in die aktuelle reduzierte Schlüsselgleichung und durch matrix-inkrementierende Bearbeitungen
eine weitere, weniger reduzierte Schlüsselgleichung lösen, die bei einer Diskrepanz Deltai gleich Null
eine vom Wert der dabei angenommenen Anzahl von Symbolfehlern bestimmte Anzahl (Nmax) Diskrepanzen Deltai mit
nacheinander inkrementierten Anzahlen angenommener Pseudosymbolfehler
bestimmen, jedoch bei einer dann immer noch sich von Null unterscheidenden Diskrepanz Deltai für alle
unbehandelten Anzahlen zur aktuellen erhöhten Anzahl von Symbolfehlern die Ergänzungen der Schlüsselgleichung anbringt
und diese ergänzte Schlüsselgleichung nach obiger Beschreibung lösen. In der Praxis wird in einer Aufeinanderfolge
von Codewörtern der ungünstigste Fall nur selten eintreten, weil fast immer eine grössere Anzahl von Fehlern
in einem Codewort weniger wahrscheinlich als eine kleinere Anzahl von Fehlern ist.
Es ist vorteilhaft, wenn die zweiten Berechnungsmittel mit ersten Detektionsmitteln versehen sind, die eine
aktuelle Anzahl von Symbolfehlern von höchstens zwei detektieren und damit über direkte Lösung einer Fehlerortergleichung
höchstens zweiten Grades direkt die Fehler ortet und auswertet und dagegen erst bei einer höheren Anzahl
10 710 ^α ,Μ,/β1 4.6.1984
34ZZ4 I
detektierter Symbölfehler den Fehlerauswerter berechnet.
In vielen Fällen treten nur wenig Symbölfehler auf, und
zeigt es sich, dass dieser Vorgang eine Beschleunigung ergibt. An sich ist der Vorgang nach dem Stand der Technik
bei einer geringen Anzahl von Symbolfehlern auch kurz, aber diese Technik hat nicht die Möglichkeit, bei der Feststellung
einer grösseren Anzahl von Fehlern noch zu einer Korrektur zu gelangen« Nach dem hier beschriebenen Verfahren
wird bei jeder Störmenge eine angepasste Menge Bearbeitungsschritte durchgeführt.
Es ist vorteilhaft, wenn die dritten Berechnungsmittel mit zweiten Detektionsmitteln versehen sind, die
eine aktuelle Anzahl von drei Symbolfehlern detektieren und dann durch die Lösung einer kubischen Fehlerortergleicliung
Fehler orten und anschliessend auswerten, jedoch bei einer
grösseren detektierten Anzahl von Symbolfehlern einen Chien-Ortungszyklus längs der Reihe von Codesymbolen durchführen,
bis ein Symbolfehler geortet wird, und dann den von diesem Symbolfehler dargestellten Faktor aus dem Fehlerorter
durch Division ermitteln, wodurch die aktuelle Anzahl restlicher Symbolfehler um eine Einheit reduziert wird,
und dass beim Erreichen einer vorgegebenen Anzahl aktueller Symbölfehler die Fehlerortergleichung direkt gelöst wird.
An sich ist das Chien-Ortungsverfahren unsbesondere bei einer grossen Anzahl korrigierbarer Fehler je Codewort
- 10 nach der bevorzugten Ausführungsform - sehr geeignet,
aber auch sehr zeitraubend, und das hier ausgeführte Verfahren
ergibt im grösseren Teil der Fälle eine erhebliche Beschleunigung.
Es ist vorteilhaft, wenn die ersten Berechnungsmittel eine Schleife aufweisen, in der eine EXKLUSIV-ODER-Schaltung
zum Empfangen der Codesymbole, ein Pufferspeicher
zum Speichern der bei einem Codewort gebildeten (vorläufigen) Syndromsymbole und ein Festwertspeicher zum Speichern der
Multiplikationstabellen für die Paritätsprüfmatrix in Reihe geschaltet sind, von der ein Ausgang auf einen weiteren
Eingang der EXKLUSIV-ODER-Schaltung rückgekoppelt ist, und
dass ein weiterer Ausgang des Pufferspeichers mit den zweiten
PHN 10 710 A ,M,/ß1 4,6.1984
Berecianungsraitteln verbunden ist, denen bei vollständiger
Behandlung des betreffenden Codeworts die Reihe endgültiger Syndromsymbole zugeführt wird. Dies ergibt eine preisgünstige
Lösung, die die erforderliche hohe Durchfluss—
geschwindigkeit bewältigen kann.
Es ist vorteilhaft, wenn zum Detektieren des letzten Codesymbols eines Codeworts mit Hilfe eines angehängten
Signalbits ein Signaldetektor vorgesehen ist, von dem ein Ausgang den weiteren Ausgang zur Bereitstellung der
vSchaltung für den Empfang eines nächsten Codeworts aktiviert. Eine derartige Signalisierung gibt eine einfache Verwirklichung
zum Detektieren des Endes eines Codeworts. Insbesondere ist es dadurch möglich, eine Aufeinanderfolge von Codewörtern
mit untereinander verschiedenen Längen zu behandeln, ohne dass diese Längen zuvor bekannt zu sein brauchen.
Es ist vorteilhaft, wenn zweite, dritte und vierte Berechnungsmittel folgende Elemente enthalten: einen Eingangspufferspeicher
zum Speichern zumindest der vollständigen Reihe von Syndromsymbolen, die bei einem Codewort
2" erzeugt wurde, einen Mikrocomputer, einen Ausgangspufferspeicher
zum Speichern einer Reihe von Fehlerortungs- und FeJilerauswer tungssymbolen, die bei einer vollständigen
Reihe zu einem Codewort gehörender Reihe von Syndromsymbolen
erzeugt wurden, und einen zwischen diesen Teilen eingeschalteten
Verbindungsbus, an den weiter eine Log/-Antilog-Tabelleneinrichtung
zur Durchführung von Multiplikationsoperationen an den Symbolen im betreffenden Galois-Körper
angeschlossen ist, sowie einen Datenspeicher, für den Adressen vom Mikrocomputer über den Bus lieferbar sind,
^O sowie einen von einem externen Zeitgeber inkrementierbaren
Zähler. Es zeigt sich, dass durch Zwischenspeicherung eine mittlere Fehlerfrequenz mit derartigen einfachen Mitteln
gut zu behandeln ist, während nur bei verhältnismässig langen Reihen stark gestörter Codewörter ein Überlauf des
(der) Pufferspeicher(s) auftritt. Im Ausführungsbeispiel
wird die Tabelleneinrichtung auch für die Speicherung weiterer Grossen, der weiter unten zu beschreibenden C, D
und K-Tabellen, verwendet. Durch die Einschaltung vieler
PHK1071O
Pufferspeicher 1st weiter eine Rohrleitungsoperation vorteilhaft
verwirklichbar.
Es ist vorteilhaft, wenn an den Bus ein Detektor angeschlossen ist, der durch die Detektion einer zu dem
Codewort gehörenden und ausschliesslich "Null"-Symbole enthaltenden Reihe von Syndromsymbolen unter Umgehung des
Mikrocomputers ein fehlerfreies Codewort detektiert und dann eine nächste Reihe von Syndromsymbolen aufruft. Dies
ergibt eine sehr schnelle Detektion fehlerfreier Codewörter.
Grundsätzlich erwartet man ein verhältnismässig häufiges
Auftreten derartiger fehlerfreier Codewörter, so dass ein geringer Zusatz zur Schaltung einen verhältnismässig
grossen Effekt hat. Im Ausführungsbeispiel wird diese Signalisierung zum schnellen Steuern der Durchführung der
Übertragung der fehlerangebenden Reihen von Symbolen aui' eine Benutzeranordnung verwendet.
Die Erfindung bezieht sich weiter auf eine Leseanordnung für optisch lesbare Speicherkörper, die mit einem
Decodersystem nach obiger Beschreibung versehen ist und die Positionierungsmittel zum Aufnehmen eines derartigen
Speicherkörpers, Antriebsmittel zum Antreiben des Speicherkörpers mit im wesentlichen gleichförmiger Drehgeschwindigkeit
um seine Drehachse, Lesemittel· zum Lesen einer Bitreihe in einer Spur auf dem Speicherkörper mi b Serien-Parallelumwandlung
zum Eingeben in die ersten Berechnungsmittel enthält. Dies gibt eine vorteilhafte Verwendung
der Erfindung, umsomehr, weil die Datenspeicherung auf einem derartigen Speicherkörper einerseits eine grosse
Speicherdichte bietet, aber zum anderen fehleranfällig ist;
also vergrössert sich stark die Zuverlässigkeit.
■ Ausführungsbeispiele der Erfindung werden nachstehend an Hand der Zeichnung näher erläutert. Zunächst
wird im allgemeinen der Code erläutert, anschliessend die benutzte Anordnung und schliesslich die Berechnung und
damit die Korrektur der Fehler beschrieben. Es zeigen
Fig. 1 ein Beispiel einer Paritatsprüfmatrix H
des Codes,
Fig. 2 eine Abspielanordnung für einen Speicher-
PHN 10710 ήΟ -<5" */Ä^/e<
4.6.1984.
körper für digitale optische Aufzeichnung,
Fig. 3 ein Blockschaltbild eines zu verwendenden Mikrocomputers,
Fig. k ein Beispiel der Elemente eines Galois-Körpers
GF(2a4),
Fig. 5 eine Anordnung zur Berechnung der Syndromsymbole,
Fig. 6 eine Anordnung zur Durchführung von Berechnungen in einem Galois-Körper,
Fig. 7 ein allgemeines Ab lauf diagramm der Fehlerkorrekturbearbeitungen
,
Fig. 8a die Schlüsselgleichung und das dazu zu verwendende Lösungsverfahren,
Fig. 8b ein Ablaufdiagramm eines ersten Teils der
Lösung dieser Schlüsselgleichung,
Fig. 9 ein Ablaufdiagramm des zweiten Teils dieser
Lödung,
Fig. 10 ein Ablaufdiagramm zur Lösung einer Gleichung
zweiten Grades,
2Q Fig. 11 ein Ablaufdiagramm zur Bestimmung des
Fehlerauswerters,
Fig. 12 ein AbIaufdiagramm zur Lösung einer Gleichung
dritten Grades,
Fig.. 13 ein Ab lauf diagramm zum Durchführen einer
Chien-Ortungsoperation und zur Bestimmung der Fehlerwerte.
In Fig. 1 ist ein Beispiel einer Paritätsprüfmatrix Z lO eines sog. Reed-Solomon-Blockcodes dargestellt. Eine
Generatormatrix Q&~] für diesen Code wird durch £g3ä !,Η}= 0
gegeben, wobei die Anzahl Zeilen k der Matrix fG3 gleich
der Anzahl k Datensymbolen in einem Codewort oder Block und die Anzahl η Spalte gleich der Gesamtzahl von Symbolen
in einem Codewort einschliesslich der redudanten Symbolen ist. Der Einfachheit halber werden hier nur auf Symbolpegel
systematische Codes betrachtet. Die Generatormatrix kann ohne Änderungen in den Code-Eigenschaften mit einer Austauschmatrix
multipliziert werden, wodurch die Zeilen die Stelle wechseln. Die Matrixelemente sind Elemente eines
Galois-Körpers und bestehen aus einer Anzahl von m Bits
derart, dass 2exp(m)^(η) ist. Der Galois-Körper wird durch
ein zugeordnetes primitives und irreduzierbares Polynom erzeugt. Für die Elemente dieses Galois-Körpers sind die
vier arithmetischen Bearbeitungen definiert. Wenn die
Anzahl zu korrigierender Symbole je Codewort gleich t ist, gilt (n-k) ^(2t-i), wobei weiter gilt η>
ky 0 . Häufig gilt noch, dass die Anzahl redundanter Symbole zweimal die
Höchstzahl zu korrigierender Symbolfehler ist.. Die Grosse
"d" ist der sog. Codeabstand, es gilt d-l=n-k, wobei 2t<d;
W es kann weiter noch gewählt werden, inwieweit der Codeabstand
für die Korrektur benutzt wird.
In Fig. 2 ist eine Abspielanordnung für einen Speicherkörper für digitale optische Fixierung dargestellt.
Der in manchen Ausführungen beidseitig lesbare Speicher-
'5 körper enthält eine Abdeckplatte 24, einen Hohlraum 26 ggf.
mit einer Inertgasfüllung, beispielsweise Argon, eine Schicht 28 die Tellur enthält, und eine Grundschicht 30.
Der Hohlraum wird von einem Abschlussring 32 begrenzt,
der für den luftdichten Abschluss sorgt. Die Information befindet sich in Löchern in der tellurhaltigen Schicht,
die beim Schreiben durch Laserstrahlung eingebrannt wird. An der Stelle eines Lochs ist dabei die Reflektion des
auffallenden Lichts stark verringert. Auf dem Speicherkörper kann eine Polymerschicht angebracht sein, auf der
mit Hilfe einer eingebrachten Rille eine Lesebahn bestimmt ist. Der Speicherkörper ist scheibenförmig, auf dem
(schematisch dargestellte ) Lager 22 gelagert und wird vom Motor 34 auf der Achse 20 angetrieben. Nachstehend
wird nur der Lesevorgang beschrieben. Der Leselaser 36
strahlt ununterbrochen und belichtet während der Drehung der Platte eine umlaufende oder spiralförmige Spur über
das halbspiegelnde Prisma 38 und das Linsensystem 4θ mit Mikroskopobjektiv. Reflektiertes Licht erreicht über das
Linsensystem 4θ und das halbspiegelnde Prisma. 38 den
^5 Detektor 42. Aus dem detektierten Signal gewinnt die Taktextraktionseinrichtung
44 das Taktsignal zurück, mit dem über das Steuerelement 46 die Drehzahl des Motors nachgeregelt
wird. Die genaue Art dieser Nachregelung wird der
PHN 10 710 At & ·#«·#*« 4.6.1984
'u 34224οι
Kürze halber nicht weiter erläutert, ebensowenig wie die Einrichtungen zur Spurnachführung in radialer und in axialer
Richtung in bezug auf die Platte und zum ununterbrochenen Beibehalten einer guten Fokussierung.
Das Ausgangssignal des Detektors 42 wird im Diskriminator 48 in ein binäres Signal mit entstörten Übergängen
umgewandelt. Dieses Signal besteht aus Kanalbits. Der Kanalbitfluss erfüllt vorgegebene Bedingungen, die
in bestimmtem Verhältnis zu den Kanaleigenschaften stehen und für die weitere Beschreibung nicht relevant sind. Der
Kanalbitfluss wird im Element 50 demoduliert, wobei eine Redundanütnenge entfernt wird und nur die Codebits zurückbleiben.
Der Codebitfluss wird in einem Serien/Parallel-Wandler
52 in 8-Bit-Codesymbole umgewandelt, die schliesslieh
an die Decodieranordnung 54 zur Korrektur/Detektion von Fehlern gelangen. In der Anordnung 54 wird weitere,
symbolweise organisierte Redundanz entfernt, so dass am Ausgang 56 die Datensymbole für einen Benutzer erscheinen.
Ggf. kann die Korrektur auch an anderer Stelle erfolgen. Die gegenseitige Synchronisation der Wirkung der Elemente
48 ... 54 ist der Einfachheit halber nicht dargestellt.
In einer weiteren Ausführungsform werden mehrere Bitelemente der Platte zusammen in Codebits umgewandelt, aber der Einfachheit
halber wird dieser Vorgang hier nicht beschrieben. In Fi.g. '} is.t ein Blockschaltbild eines In der
Decoderanordnung 54 zu verwendenden Mikrocomputers mit
Peripheriegeräten dargestellt. Im Ausführungsbeispiel werden
die Berechnungen in einem Mikroprozessor vom Typ 8X3OO oder
8X305 entsprechend der Anleitung des Herstellers durchgeführt. Insbesondere eignet sich dieser Baustein zum Durchführen
von Sechzehn-Bit-Befehlen, die am Bus 58 erscheinen.
Weiter ist ein Dreizehn-Bitbus 60 für Befehlsadressen und
ein Zweirichtungs-Achtbitbus 62 für Eingabe/Abgabe von
Daten vorgesehen. Weiter enthält der Mikroprozessor ein Befehlsregister 64, einige allgemeine Register 66, Schiebelogik
68, Mischungslogik 70, einen Ein/Ausgabepufferspeicher
72, Rotierungslogik 74, Maskierungslogik 76, eine
ALU-Einheit 78, einen Adresmultiplexer 80, ein Adress-
register 82, einen Programmzähler 84, eine Adresserhöhungslogik
86, allgemeine Decodierungs- und Steuerlogik 88, und muss mit einem externen Oszillator/Zeitgeber 90 ausgerüstet
werden. Der Kürze halber wird die Funktion dieses Prozessors
nicht weiter erläutert. Für die Datenspeicherung wird ein Schreib/Lesespeicher mit einer Höchstkapazität von
256 Wörtern von 8 Bits verwendet, für die Daten und Adressen
über den Datenbus in einer Zeitmuitiplexorganisation übertragen werden. Die Befehlszeit beträgt 250 ns, und die
Programmierbarkeit ist leicht.
In Fig. 4 ist eine Tabelle zur Erläuterung der
Bearbeitungen an den Symbolen dargestellt, die hier als Beispiel nur aus vier Codebits bestehen (in Wirklichkeit
bestehen die Symbole aus 8 Bits und gibt es also 256 ver~
schiedene Dateninhalte). Der Galois-Körper GF (2*4) besteht
hier also aus sechzehn Symbolen und wird vom primitiven und irreduzierbaren Polynom erzeugt, das hier die Form
x(exp4) + χ -S- 1 hat. Es ist hier und auch in GF (2*4) mehr
als eine Möglichkeit für dieses Polynom angegeben. Die Elemente des Galois-Körpers sind zweimal angegeben, einmal
als eine Potenzreihe des primitiven Elements a und einmal als eine Vektordarstellung, insbesondere als eine zu jeder
jeweiligen Potenz von a zugeordnete Bitreihe. In einem Galois-Körper sind die vier arithmetischen Bearbeitungen
definiert. Addier- und Subtrahiervorgänge können im Mikrocomputer bitweise durchgeführt werden, beispielsweise:
(OHO) + (1011) = (HOI), wobei die Addition bitweise
modulo-2 durchgeführt wird. Multiplikations- und Teilungsvorgänge erfolgen leichter unter Verwendung von Logarithmen
mit der Basis a. In einer Logarithmen tafel arbeiten das Codesymbol als Adresse und die Exponenten der Basis als
Daten. In einer Antilogarithmentafel wirkt dieser Exponent
als Adresse und das Codesymbol als Daten. Beispiel: .......
(OHO) S (IOII) gibt a(exp5) *'a(exp7) = a(exp12) gibt (1 111 \
*° Die Division erfolgt auf entsprechende Weise, wobei immer
modulo-2 exp(m)-1 gerechnet wird, in diesem Beispiel ist also m = 4.
Fig. 5 zeigt eine Anordnung zur Berechnung dgr
PHN 10 710 -jlf- Vd "9/.77AR1 4.6.1984
20 Syndromsymbole je Codewort. Diese Anordnung verfügt über zwei Betriebsarten: in der ersten Betriebsart werden die
Symbole eines Rahmens oder eines Codeworts empfangen, und in der direkt nachfolgenden zweiten Betriebsart werden
die zwanzig Syndromsymbole einem Ausgang für Weiterverarbeitung zugeführt. Die Information erreicht den Eingang
byteseriell und wird in den zwei FIFO-Speichern 302, 3Onzwischengespeichert;
in diesem Teil beträgt die Breite der Symbole 8 Bits, während ein neuntes Bit zugeführt wird, das
^q normalerweise den Wert Null, aber für das letzte Symbol
eines Rahmens den Wert 1 hat. Die Ausgänge der FIFO-Speicher
sind mit zwei Bausteinen 306 und 308 verbunden; sie sind Bausteine der bekannten TTL-Reihe Typ SN74S135 mit der
vierfachen EXKLUSIV-ODER/NICHT-ODER-Funktion, und die be-
^g nutzte Bezeichnung "S135" ist also eine Kurzbezeichnung,
Das Zusatzbit, das das letzte Symbol angibt, wird der weiter unten zu beschreibenden Zeitfolgesteuerung zugeführt.
Die Elemente 313 und 315 vom Typ SI63 steuern die Tabellenwahl
zwischen den Tabellenanordnungen 320, 322 und 324;
bei der Darstellung eines neuen Codesymbols am Ausgang werden sie jeweils auf Null zurückgestellt. Das Element
vom Typ S273 arbeitet mit einer Datenbreite von 8 Bits und ist ein achtfacher Datenflipflop mit Rückstellmöglichkeit.
Die Elemente 312 und 314 bearbeiten je vier Bits parallel
und bilden einen FIFO-Speicher mit einer Datentiefe von 2 κ 12 = 24 Symbolen. Sein Ausgang ist mit einem Baustein
318 vom gleichen Typ wie der Baustein 310 verbunden; zum
anderen ist der Ausgang 316 der Elemente 312 und 314 für
den Anschluss weiterer Bausteine verfügbar (in Fig. 6) zum 3Q Abgeben der Syndromsymbole.
Die Bausteine 320, 322 und 324 sind programmierbare
Festwert-(PROM)-Spelcher mit je einer Kapazität von 2k a 8 Bits. Sie enthalten die Elemente der Paritätsprüfmatrix.
Beim Empfang des ersten Codesymbols haben alle Syndromsymbole den Wert Null. Diese vorläufigen Syndromsymbole
werden je mit der zugeordneten Reihe der Paritätsprüfmatrix multipliziert, während jedes so gewonnene Produkt
zu dem neu empfangenen Codesymbol zur Bildung eines
näheren Syndromsymbols addiert wird. Bei jedem empfangenen
Codesymbol werden so zwanzig Syndromsymbole neu formiert. Nach dem Empfang -des letzten Codesymbols sind die zwanzig
endgültigen Syndromsymbole für Weiterverarbeitung fertig.
Der Pufferspeicher 312/3I4 hat ausreichende Kapazität für
die zwanzig Syndromsymbole; die darüber hinausgehende
Kapazität wird nicht verwendet. Die Zeitsteuerung gibt unter der Steuerung des neunten Symbolbits, das das letzte Symbol
des Codeworts identifiziert, und also nach der Bildung der endgültigen Syndromsymbole ein Ubernahmesteuersignal auf .
die Schaltung nach Fig. 6 zum Übernehmen der Syndromsymbole an den Eingängen 334 und 336, die an den Ausgang 316 angeschlossen
sind.
Fig. 6 zeigt eine Anordnung zum Durchführen von Berechnungen in einem Galois-Körper, der an den insgesamt
8 Bits breiten Eingängen 334 und 336 vom Ausgang 316 der
Fig. 5 gespeist wird. Die Elemente 338 und 34O bilden wieder
einen FIFO-Pufferspeicher mit einer Datentiefe von 2 s 64 =
128 Symbolen. Dies reicht also für mehr als sechs Rahmen aus, so dass eine Sicherheitsspanne vorhanden ist. Wenn
ein Rahmen wenig fehlerhafte Symbole enthält, verläuft die Verarbeitung in der Schaltung nach Fig. 6 sehr rasch, aber
die Verarbeitung erfordert mehr Zeit, je nachdem die Anzahl fehlerhafter Symbole ansteigt. Durch die Pufferung braucht
" nur die mittlere Rahmenverarbeitungszeit in der Schaltung
nach Fig. 6 über eine Reihenfolge von sechs aufeinanderfolgenden Rahmen der Zuführungsgeschwindigkeit am Eingang
3OO zu entsprechen. Wenn dieser Mittelwert zu hoch wird,
könnte der Pufferspeicher überlaufen. In diesem Fall wird noch der Eingang 300 gesperrt, was bedeutet, dass der
Speicherkörper eine zusätzliche Umdrehung ausführen soll, während der keine weitere Information abgegeben werden kann.
Der Baustein 342 ist ein 8 Bits breiter invertierender
Pufferspeicher mit Drei-Zustandsausgang (niedrig, hoch bzw.
" mit einer hohen Impedanz abgeschlossen), dessen Ausgang
an den 8-Bitbus 344 angeschlossen ist. An diesem Bus erscheinen
invertierte Datensignale. Auf entsprechende Weise ist der Datenausgang auch mittels eines 8-Bitpufferspei-
PHN 10 710
3A22461
chers 3k6 und eines FIFO-Pufferspeichers 3^8, 350 mit einer
Datentiefe von 64 Symbolen gebildet. Hier erscheint die
Information, die die ggf. gestörten Symbole identifiziert, d.h. nacheinander die Position des gestörten Codesymbols
und der Wert des Fehlers. Der Wert muss bitweise modulo-2 zum gestörten Symbol addiert werden, um den richtigen Wert
zu erhalten. Nach der hier üblichen Verfahrensweise wird
die Information für jeden Rahmen oder für jedes Codewort wie folgt formatiert:
00, Fehl er anzeiger eihe ( xi , yi ) , 00.
00, Fehl er anzeiger eihe ( xi , yi ) , 00.
Für NuIL Fehler bedeutet dies also die Reihe 00,00. Für
jedes gestörte Symbol wird diese Reihe um zwei Zusatz—
symboie erweitert, zunächst um den Fehlerort und dann um
den Fehlerwert. Für ein unkorrigierbares Codewort ist die '5 Reihe FF, 00. Zur Durchführung der eigentlichen Berechnungen
ist der Mikrocomputer 352 nach Fig. 3 vorgesehen.
Zunächst ist sein Datenanschluss mit dem Bus verbunden. Weiter ist der Adressausgang (nur die elf Bits niedrigster
Wertigkeit der Adresse werden verwendet) an die PROM-Speicher 354, 356, 358 vom Typ S191 oder 3636 angeschlossen.
Die ersten zwei werden zum Erzeugen 16 Bits breiter Befehle
am Befehlseingang des Mikrocomputers 352 parallel geschaltet.
Der dritte PROM-Speicher 358 wird zum Erzeugen weiterer
S teuer si £.711 ale verwendet. Auf diese Weise können diese letzton
s(Air- schnell erzeugt werden, wofür kein Transport über
den Bus '}kk notwendig ist: letzteres würde nämlich relativ
langsam erfolgen. An den Ausgang des PROM-Speichers 358 ist eine rückstellbare 8 Bits breite Flipflop-Schaltung
vorn Typ S273 zum Zwischenspeichern der Steuerinformation für übrige Teile der Schaltung angeschlossen; dadurch verbessert
sich die Verfügbarkeit dieser Steuerinformation
und kann die Schaltung ohne diese Vorkehrung schneller arbeiten: Denn diese Information kann zuvor verfügbar gemacht
werden, so dass nicht im letzten Augenblick noch ein Maschinenzyklus durchgeführt zu werden braucht.
Der Bus ist weiter an den Baustein 362 angeschlossen, der ein NICHT-UND-Gatter mit 8 Eingängen bildet, so
dass detektiert werden kann, ob ein Informationsbyte mit
10 710 rf Vd 3A22461 ^.6.1984
dem ¥ert Null am Bus erscheint. Dieser Baustein bildet einen Detektor für den Nullwert von Syndromsymbolen und
Fehlerortungen für die Zeitfolgesteuerung. In vielen Fällen ist ein erhaltener Rahmen fehlerfrei; dabei sind alle Syndromsymbole
gleich Null und kann sofort der Syndromvorrat des folgenden Rahmens behandelt werden ohne dass sogar der
Mikrocomputer eine Vielzahl von Berechnungen durchzuführen braucht. Das Element 364 ist eine achtfache transparente
Triggerschaltung (latch), die als Adressregister für den
PROM-Speicher 368 vom bereits beschriebenen Typ dient.
Es enthält für den betreffenden Galois-Körper gültige Logarithmen- und Antilogarithmentabellen, wie bereits beschrieben,
sowie Tabellen für die noch zu beschreibenden "C-", "D-" und "K-"-Grossen. Mit der so gebildeten Schleife läs«t
sich sehr rasch eine Datenkonversion durchführen, wobei ein Zusatzsteuersignal aus dem Element 36O die Gattung der Konversion
(5 verschiedene) angibt.
Das Element 370 ist ein RAM-Speicher vom Typ 8X350 mit einer Kapazität von 256 χ 8 Bits und mit einer Taktfrequenz
bis zu 10 MHz ansteuerbar; dieser Takt wird extern erzeugt und steuert gleichfalls die Zeitsteuerung und die
Bildung der Syndromsymbole. Die 8-Bitadressen können zunächst über den Bus 344 über die zwei parallel geschalteten Multiplexer
372 und 374 vom Typ S157 zugeführt werden, die von
Ausgangssignalen des Elements 36Ο gesteuert werden. Sie
können weitere Adressinformation aus dem .Element '}7^>
vom Typ S04, einer sechsfachen Umkehrstufe, erhalten. Letztere
wird von den zwei parallel geschalteten Vierbitzählern 38Ο
und 382 vom bereits erwähnten Typ angesteuert, von denen
nur fünf Ausgangsbits parallel verwendet werden. Das sechste Adressbit wird durch die Zeitsteuerung gebildet. Auf diese
Weise können auch sehr rasch hintereinander Adressreihen aus dem Speicher 370 gelesen und darin eingeschrieben werden,
ohne dass andere Informationen als die Daten am Bus 344
erforderlich sind. Das Element 378 ist ein Multiplexer vom
bereits beschriebenen Typ, der durch Steuerausgangssignale des Mikrocomputers 352 bzw. durch Signale der externen
Zeitsteuerung gespeist wird. Es arbeitet mit für die Steue-
PHN ίο 710 4i >* .Μ./£1 4.6.1984
rung ties Speichers 370, in dem es Zwischendaten verschiedener
Art in jeweiligen Unterteilen dieses Speichers speichern kann. Die verschiedenen Betriebsartsteuerbits können von
dieser Anordnung zugeführt werden. Die Elemente 380 und
S sind Zähler (siehe Fig. 5)5 die Ausgänge gelangen an die
Triggerschaltung 376 und weiter an die Multiplexer 372 und
374, so dass sehr rasch eine Aufeinanderfolge verschiedener
Betriebsarten steuerbar ist. Insbesondere kann die beschriebene Organisation sehr rasch in verschiedenen Teilen des
Speichers 370 wahlfrei Adressreihenfolgen abtasten. DIE FEHLERBERECHNUNG: .
Das AuHführungsbeispiel arbeitet mit einem Codewort
von ii Codenymbolen, das nach einem systematischen Code gegen
hörhstens zehn auf beliebige Weise gestörten Codewörtern
mittels einer Anzahl von zwanzig redundanten Codesymbolen geschützt ist. Die Anordnung kann ohne Zusätze eine Anzahl
von 24 redundanten Codesymbolen behandeln, wie dies u.a. durch die Kapazitäten der Elemente 320-324, 312, 314 in
Fig. 5 bestimmt ist. Aus theoretischen Gründen kann die Länge des Codeworts bis höchstens 255 Codesymbole erweitert
werden, aber die kleinste sinnvolle Länge eines Codeworts ist 21 Symbole, d.h. 1 Datensymbol und 20 Redundanzsymbole.
Alle Symbole bestehen aus 8 Bits. Das benutzte Generatorpojynom
des Codes hat folgende Form:
f.(x) = (x - a*o)(x - aÄi) (x-aÄ1<>),
wobei das Produkt wieder in GF (2Λ8) berechnet wird. Alle
richtigen Codewörter sind ein Vielfaches dieses Generatorpolynoms und haben die gleichen Nullpunkte wie das Generatorpolynom.
In Fig. 7 ist ein allgemeines Ab lauf diagramm der
Fehlerkorrekturbearbeitung dargestellt. Im Block 100 wird
die Operation gestartet, und am Ende der Operation ist das ganze Codewort, beispielsweise in einem ausreichend grossen
RAM-Speieher, zur Bearbeitung in der Schaltung von Fig.5
verfügbar. Im Block 102 wird durch Multiplikation mit der Paritätsprüfmatrix Γ Hl das Syndrom bestimmt, es gibt also
in der bevorzugten Ausführungsform (n-k) = 20 Symbole.
Diese Bearbeitung erfolgt in der Schaltung nach Fig. 5 und
PHN 10 710 '1t >5 «/4^/1» 4 4.6.1984
34224ο ι
im betreffenden Galois-Körper.
Die weiteren Bearbeitungen werden in der Schaltung nach. Fig. 6 durchgeführt. Zunächst wird im Block 104 die
Schlüsselgleichung gelöst, die folgende Form hat:
fi+S(z)*1 ac sigma(z) =^ omega(z) mod z*(2t+i),
vgl. das Buch "Algebraic Coding Theory" von Erwin P.Berlekantp^
McGrawHill, S. 178 ff. Es wurde bewiesen, dass für jedes
korrigierbare Fehlermuster die Polynome sigma(z) und omega(z) gefunden werden können, dabei ist die Grosse S(z) das von
M den Syndromsymbolen gebildete Polynom.
Die Grosse sigma(z) ist das Fehlerorterpolynom. Die Grosse omega(z) ist das Fehlerauswerterpolynom; beide
Polynome müssen zur Bestimmung der Korrektur berechnet werden. In der Bezeichnung nach Berlekamp bedeutet das verbindende
Symbol =φ "ist kongruent mit", d.h.: es besteht
ein Polynom C(z), so dass das linke Glied des Terms gleich C(z) st z"(2t+i) + omega(z) ist. Es sei noch darauf hingewiesen,
dass der Term "1+S(z)" in der Schlüsselgleichung durch nS(z)" ersetzt werden darf: wenn für ζ ein Wert eingesetzt
wird, für den ein Fehler aufgetreten ist, hat das Orterpolynom auch den Wert gleich Null.
Anschliessend wird ein Fehlerzähler L postuliert: er gibt eine laufende Einschätzung des Grades des Fehlerorterpolynoms,
Wenn dieser Grad gleich Null ist, sind aucli alle Syndromsymbole selbst gleich Null und wird das Code-.
wort als fehlerfrei betrachtet, dies ist im Ablaufdiagramm
nicht gesondert angegeben: das System kann dann direkt nach Block 122 gehen: stop.
Die Strategie der Lösung der Fehler ist jetzt wie folgt: es wird das einfache Fehlermuster gesucht (kleinste
Anzahl gestörter Symbole), das mit dem gefundenen Syndrommuster nicht strittig ist; der diesem zugrunde liegende
Gedanke ist, dass eine geringere Anzahl von Fehlern nahezu stets wahrscheinlicher als eine grössere Anzahl von Fehlern
ist. Das Syndrompolynom wird dabei als das Quotient zweier anderer Polynome möglichst einfacher Form dargestellt, insbesondere
mit möglichst niedrigem Grad. Wenn eine Lösung mit einer bestimmten Anzahl von Symbolfehlern gefunden wird,
ZO
PHN 10 710 *<5 ^Ä??Afi1 4.6.1984
wird nicht erschöpfend, jedoch nur unter Berücksichtigung
einer beschränkten Anzahl weiterer Syndromsymbole versucht,
ob eine weitere Lösung gefunden werden kann. An sich ist es grundsätzlich oft möglich, ein Codewort mit einem komplizierteren
Fehlermuster zu finden, das der gleichen Syndromkonfiguration genügt, aber die Möglichkeit eines derartigen
Fehlers ist an sich sehr klein, und ausserdem ist die Möglichkeit klein, dass die dabei postulierte Anzahl von
Fehlern noch im korrigierbaren Vertbereich liegt. Schliesslieh
wird im Block 104 der Fehlerhilfszähler LH gleich dem
Fehlerzähler L. Am Ende des Blocks 104 ist dabei die Anzahl der Symbolfehler bekannt.
Im Block 106 wird detektiert, ob die Fehleranzahl gleich "1" ist. Xn diesem Fall werden im Block 124 der
Fehlerorter und der Fehlerwert des einen gestörten Symbols direkt bestimmt. Ist das Ergebnis im Block 106 negativ (Ν),
wird im Block 108 detektiert, ob zwei Symbolfehler eingetreten sind. Venn das Ergebnis dieser Detektion positiv ist
(Υ) , können im Brock 126 durch die Lösung einer quadratisehen
Gleichung (siehe Fig. 10) die Stellen und mit Hilfe der Werte der Syndromsymbole die Werte der zwei Störsymbole
ivel'undeii werden (Block 126). 1st die Fehleranzahl grosser
alt* zwei, kann dies nach dem dargestellten Verfahren nicht
direkt erfolgen und muss zunächst im Block 110 der Fehlerauswerter
bestimmt werden, was anhand der Fig. 11 ausführlicher beschrieben wird. Wenn der Block 110 durchlaufen
ist, wird im Block 112 detektiert, ob der Fehlerzähler L den Wert "drei" hat. Hat diese Detektion ein positives
Ergebnis (Υ), geht das System zum Block 118 weiter. Wenn
3^ diese Detektion ein negatives Ergebnis hat (Ν), wird im
Block 114 ein Chien-Suchzyklus durchgeführt. Wenn dabei
ein gestörtes Symbol gefunden wird, wird der betreffende Nullpunkt durch Teilung ermittelt, wodurch der Grad des
Fehlerorters um eine Einheit herabgesetzt wird. Auch die " Hilfsfehlerzählergrösse wird dabei dekrementiert. Dieser
Suchzyklus wird weiter unten anhand der Fig. 12 näher beschrieben.
Die Hilfsfehlerzählergrösse gibt die Anzahl
noch im Fehlerorter arbeitender Fehler an. Im Block 116
/ή
wird detektiert, ob die Fehl erhilf szälilergrösse jetzt den
Wert "drei" hat. Für die Dauer des negativen Ergebnisses geht das System (jedesmal) zum Block 114 zurück und führt
dabei einen weiteren Suchzyklus nach Chien aus. Wenn es beispielsweise zehn gestörte Symbole gibt, muss der Block
114 siebenmal durchlaufen werden. Wenn im Block 116 die
Detektion ein positives Ergebnis hat, wird im Block 118 die restliche kubische Gleichung gelöst. Schliesslich
werden vom Block 118 ausgehend im Block 120 die eigentliehen
Störsymbolwerte gefunden. Für die Fälle mit 1 oder Fehlern wurde dies bereits in den Blöcken \2.h und 126 gemacht.
Im Block 122 ist das ganze Codewort kori-j.giei· t ujid
kann unter bestimmten Bedingungen eine neue Reihe von Syndromsymbolen aus dem Pufferspeicher herangezogen werden,
wenn das eben bearbeitete Codewort nicht das letzte zu bearbeitende Codewort war. In der Schaltung nach Fig. 6
wird nicht die eigentliche Korrektur durchgeführt, sondern werden nur die Fehlerortungen Xi und die Fehlerwerte Yi
für Weiterverwendung dem System zugeleitet. Das vereinfachte AbIaufdiagramm nach Fig. 7 enthält nicht die Blöcke,
die detektieren, ob eine Fehlerkorrektur ausgeschlossen worden ist. Es zeigt sich, dass durch das weitgehende Umgehen
der Bearbeitungen im Block 1i4 ein schnell arbeitendes
Verfahren geschaffen ist. Denn es wird stets der Wert LH='j
geprüft, und in den meisten Fällen beantwortet dieser Block
dies bereits in einem der ersten Durchgänge positiv. Eh
ist möglich, das dargestellte Ablaufdiagramm zu ändern.
Dabei muss stets berücksichtigt werden, dass die Suchzyklen nach Chien verhältnismässig lange dauern und somit
die Verarbeitungszeit stark belegen könnten. Jedoch an sich könnte im Block 116 geprüft werden, ob die Fehlerhilfszählgrösse
gleich 2 oder gleich 1 ist, so dass danach nur eine Gleichung zweiten Grades bzw. ersten Grades zu lösen
ist. Auch ist es im Prinzip möglich, einen Fehlerorter vierten Grades oder höheren Grades "direkt" ohne die Chien-Suchzyklen
zu lösen, aber auch dieses Verfahren ist kompliziert. Manchmal ist es vom verfügbaren Mikrocomputer abhängig
bzw. von den Eigenschaften des Kanals, der die Fehler
PHN 10 710 *β ^Ay^ARI 4.6.1984
vei'ursacht ,welcher Wertbereich gewählt wird.
DIE LOSUNG DER SCHLUSSELGLEICHUNG:
Fig. 8b, 9 zeigen ein detailliertes AbIaufdiagramm
der Lösung der Schlüsselgleichung (Block 104 in Fig. 7)· Dabei zeigt Fig. 8a den Grundsatz der Lösung einer Matrixgleichung
nach der sog. Cramerschen Regel. Venn das Produkt einer rechteckigen Matrix mit η « η Elementen mit einem
unbekannten Vektor gleich einem bekannten Vektor, beide von η Elementen, ist, können die Elemente x1 ... xn des
unbekannten Vektors durch jeweiliges Substituieren des bekannten Vektors in die Spalte der Matrix mit gleicher
Rangrmmmer wie die unbekannte Vektorkomponente und durch
die TeiLung der Determinante dieser geänderten Matrix
durch die Determinante der ungeänderten Matrix gefunden
werden. Ein mögliches Lösungsverfahren ist, dass dies zunächst
für den Wert η = 10 durchgeführt wird, was eine sehr ausgedehnte Berechnung ist. Ausserdem müsste diese
Berechnung für η = 9> für η = 8 wiederholt werden, bis die
Lösung gefunden wird. Dabei ergibt der Start mit η = 0 und die Wiederholung der Berechnung für immer höhere Werte
von η keine Zeitersparung, weil dann stets bis zum Wert η = 10 weitergegangen werden müsste, so dass das Verfahren
noch mehr Zeit nehmen würde. Denn nur der höchste Wert von ii, dor eine Lösung gibt, ist der richtige. Daher ist dieses
be^rli ι· i elione Lösungsverf ahren , das mit "bru t e- force ttVer fahre) ι
zu bezeichnen ist, nicht gewählt. Die beschriebene Lösung
geht zwar vom Wert η = 0 aus, aber enthält eine inhärente Prüfung auf die Richtigkeit, so dass mit sehr grosser
Wahrscheinlichkeit die Anzahl bestimmter Fehler auch die richtige Anzahl ist. Ausserdem werden stets früher berechnete
Teilergebnisse in später durchzuführenden Berechnungen rriitverwendet ,· so dass eine zusätzliche Zeiteinsparung erfolgt.
Dabei vertritt die Lösung der Schlüsselgleichung im Ablaufdiagramm nach Fig. 7 nur einen einzigen Bearbeitungsblock
und sind also häufig noch weitere Bearbeitungen erforderlich. Bei der Lösung der Schlüsselgleichung wird
im zu beschreibenden Verfahren jeweils eine nur geringe Anzahl von Fehlern angenommen und werden die Ergebnisse
/3
dieser Annahme an der wirklichen Syndromkonfiguration geprüft. Insbesondere wenn die Anzahl wirklich gestörter
Symbole im Codewort klein ist, bietet das dargestellte Verfahren eine schnelle Lösung dadurch, dass nur wenig
Bearbeitungen möglich sind. Dadurch kann die Decodierung mit dem bereits dargestellten Mikrocomputer erfolgen,
während die Bearbeitung auf dem Pegel der Codewörter dennoch nahezu immer in Echtzeitbetrieb in bezug auf den Empfang
der Codewörter ausführbar ist.
In Fig. 8a ist zunächst nochmals die formalisierte
Schlüsselgleichung S(z) * sigma(z) = omega(z) dargestellt.
Darin ist die Schlüsselgleichung in Elementen für den Fall von zehn Symbolfehlern ausgeschrieben; die linke Matrix
besteht aus 10 κ 10 Elementen, in denen alle Syndromsymboie
dargestellt sind. Die weiteren Spalten sind zwei Vektoren von je zehn Elementen, wobei der rechte Vektor' wieder aus
Syndromsymbolen aufgebaut ist. Für eine geringere Anzahl
aufgetretener Symbolfehler ist die Determinante der Matrix jedoch gleich Null, so dass keine Lösung gefunden wird.
Dabei muss eine kleinere Matrix genommen werden. Darunter ist der Fall für drei Fehler angegeben. Faktisch muss die
grösste Matrix gefunden werden, von der die Determinante noch gerade nicht gleich Null ist. Unten in der Figur ist
die in Elementen ausgeschriebene Gleichung zur Bestimmung des zweiten Koeffizienten von sigma(z) ausgeschrieben,
wenn es tatsächlich zehn Symbolfehler gibt. Nach dem beschriebenen Berechnungsverfahren wird jedoch von einer
möglichst kleinen Matrix zur Berechnung von sigma(z) ausgegangen, während davor eine Anzahl Prüfschritte durchgeführt
wird. Dabei wird davon ausgegangen, dass die Schlüsselgleichung auch einen Teil der weiteren Prüfung beschreibt.
Um von einer kleineren Matrix auf eine grössere überzugehen, werden die bereits gefundenen Ergebnisse verwendet,
so dass nur matrix-imkrementierende Schritte erforderlich sind, um bei der grösseren Abmessung wieder die Lösung der
Matrixgleichung zu versuchen. So wird jeweils nur ein Inkrement der Cramerschen Regel durchgeführt.
In Fig. 8b fängt das Verfahren im Block 130 an.
PHN 10 710
in
£0 3422461 4.6.1984
an dessen Ende alle Syndromsymbole verfügbar sind und damit auch, die Schlüsselgleichung formuliert werden kann. Zunächst
wird im Block 132 die aktuelle Syndromnummer N an Null
angeglichen, dies ist die Anzahl zur Verwirklichung der Cramerschen Regel der bisher verwendeten Syndromsymbole.
Diese Anzahl ist (also) gleich dem Zweifachen der bisher angenommenen Anzahl von Symbolfehlern. Diese letzte Anzahl
ist mit "L" bezeichnet, was auch der Grad von sigma(z) ist. Drei Grossen werden 1 angeglichen, und zwar der nullte Koeffizient
sigmaü von sigma(z), eine zugeordnete Hilfsgrösse olsigmaü und eine Hilfsgrösse oldeltai bei der Diskrepanzgrösse
Deltai; die Hilfsgrössen dienen zur Rettung der zugeordneten "echten" Grossen. Anschliessend wird im Block 134
geprüft, ob die ganze Reihe von Syndromsymbolen berücksich— 1S tigt ist. Wenn das so ist, ist das Verfahren nach Fig.8b,
jedenfalls beendet und geht das System zum Block 106 in Fig.7 (eigentlich zum Block 110). Wenn im Block 134 die Prüfung
negativ ist, geht das System zum Block I36. Darin wird die
erste Diskrepanz Deltai als ein In-Produkt eines Teils des
aktuellen Syndromvektors und des transponierten aktuellen Fehlerorters berechnet: diese Diskrepanz ist somit eine
skalare Grosse. Beim ersten Durchgang ist die Diskrepanz aJ so f.? L eich dem ersten Syndromsymbol. Der aktuelle SyndromvekLür
ist also die nächste Zeile der Matrix in Fig.8a beim nächsten Inkrementierungsschritt. Der aktuelle Fehlerorter
ist dabei der bisher gültige Fehlerortervektor einschliesslich des Koeffizienten sigmaO. Beim zweiten Durchgang enthalten
die Faktoren zwei Terme und steigen so auf einen maximalen Wert von neun an.
Im Block 138 wird geprüft, ob die Diskrepanz Deltai
gleich Null ist. Wenn das nicht so ist, (N) geht das System zum Block 14o. Im Block 14o wird das heue Polynom sigma(z)
bestimmt, das bei jedem Durchgang einen zusätzlichen Term bekommt. Auch die alten Koeffizienten erfahren dabei eine
Änderung. Dies geschieht mittels der bei Fig. 8a beschriebenen Cramerschen Regel mit einer Matrix/Vektorabmessung,
die dabei um jeweils eine Einheit grosser wird. So wird darin zunächst die zweite Diskrepanz Delta2 wie die erste
Diskrepanz berechnet, aber über eine Reihe von Syndromsymbolen, die über 1 Symbol verschoben ist. Weiter wird
die Fehlerzählergrösse L inkrementiert und ein Hilfsvektor Capdelta(1...L) bestimmt, deren Anzahl von Komponenten
gleich dem Wert der Fehlerzählergrösse ist. Die erste Komponente, wird aus dem ersten Koeffizienten des aktuellen
Fehlerorters unter Mitberücksichtigung der Diskrepanzen bestimmt. Für Rangnummer i grosser als 1 wird die Komponente
Capdelta(i) aus der aktuellen Komponente von sigma(z) mit nächstniedrigerem Rang und die in einem früheren Berechnungsschritt
gerettete Komponente von sigma(z) mit zweitniedrigerem Rang bestimmt. Schliesslich werden die aktuellen
Komponenten von sigma(z) gerettet und dann mit den berechneten Komponenten von Capdelta mit zugeordnetem Rang
und die Anzahl berücksichtigter Syndromsymbole aktualisiert. Schliesslich wird der Wert von Deltai gerettet. Auf diese
Weise werden die Determinanten der Cramerschen Regel jeweils
mit einer Zeile + Spalte ergänzt, ohne dass sie insgesamt erneut zu berechnen sind. Danach geht das.System zum
Block 134 zurück.
Wenn die Prüfung im Block I38 positiv ist (Υ),
geht das System zum Block 142 weiter. Darin wird die laufende Syndromnummer (= die Anzahl berücksichtigter Syndromsymbole)
inkrementiert. Das bedeutet, dass eine "zu grosse" Anzahl von Symbolfehlern angenommen wird, die nur echten
Symbolfehlern entsprechen, wenn das positive Ergebnis im
Block 138 voreilig war. Wenn das Ergebnis im Block I38
gerechtfertigt war, sind die Zusatzsymbolfehler nur Pseudo-Symbolfehler.
Weiter wird die erste Diskrepanz Deltai wieder berechnet: faktisch ist dies die gleiche Grosse wie
die zweite Diskrepanz im Block 14O. Im Block 144 wird geprüft,
ob diese erste Diskrepanz gleich Null ist. Ist das Ergebnis positiv, geht das System zum Block 146, in dem
geprüft wird, ob die laufende Syndromnummer grosser oder gleich einer Obergrenze Nmax ist. Diese Grösse ist im
System für jeden Wert von L, die Einschätzung der Anzahl von Symbolfehlern, gegeben; sie ist immer grosser als die
Anzahl im Block I36 berücksichtigter Syndromsymbole. Für
viele Werte von L ist diese Anzahl Nmax kleiner als 20,
es ist beispielsweise eine feste Anzahl höher als die aktuelle Anzahl N im Block 136, beispielsweise gleich 2L+4;
die Wahl wird durch die Art der erwarteten Fehler und die zulässige Möglichkeit einer unrichtigen Detektion bestimmt.
Der Wert von Nmax kann sowohl geradzahlig als auch ungeradzahlig sein. Je grosser der Wert von Nmax gewählt wird,
umso kleiner ist die Möglichkeit, dass ein angenommener Wert der Fehlerzählergrösse unrichtig ist; zum anderen wird
Rechenzeit erspart, indem nur diese letzte Schleife einige Male durchlaufen wird. Solange die Prüfung im Block i46
negativ ist, geht das System jedesmal zum Block 142 zurück;
dabei wird immer die nächste Diskrepanz bestimmt, wobei also die Rangnummer der berücksichtigten Syndromsymbole um
eine Einheit erhöht wird; ihre Anzahl bleibt immer gleich (L+1). Wenn die Obergrenze für Nmax erreicht ist, geht das
System vom Block 146 direkt zum Block 106 in Fig. 7· Wenn
das Ergebnis im Block 144 negativ ist, geht das System zum Eingang in Fig. 9. Damit ist Fig. 8b beschrieben.
Das AbIaufdiagramm nach Fig. 9 zeigt den zweiten
Teil der Lösung der Schlüsselgleichung und wird vom Block 1^4 in Fig. ob erreicht; die Figur zeigt einen einzigen
Eingang im Block 148. Der Eintritt in dieses AbIaufdiagramm
kann als ein Misserfolg des Verfahrens in Fig.8b beschrieben
werden; in der Praxis wird dieser Misserfolg nur bei besonderen Kombinationen von Symbolfehlern auftreten. An sich
sind die in Fig. 9 dargestellten Massnahmen aus dem erwähnten
Buch von Erwin R.Berlekamp, Paragraph 7«4, S. 184,
bekannt. Die Massnahmen nach Fig. 8b liefern dabei häufig eine beschleunigte Bearbeitung. Verschiedene Bearbeitungsblöcke zeigen Operationen entsprechend denen im Block 14O
in Fig. 8b. Im Block 148 wird der Wert der Fehlerzählergrösse
L in einer Hilfsvariablen LO gerettet, und anschliessend
wird der Wert von L neu berechnet. Beim Verlassen des Blocks 14O in Fig.8b galt N = 2L, aber im Block 142 war
der Wert von N einmal oder mehrere Male inkrementiert. Der neue Wert der Fehlerzählergrösse wird damit grosser als
der alte. Im Block 150 wird detektiert, ob der Wert von L
grosser als 10 ist. Wenn das so ist, geht das System zum
Block 152 weiter, und es wird signalisiert, dass das Codewort
nicht decodierbar ist. Ggf. kann noch ein Versuch angestellt werden, die Information auf andere Weise zu rekonstruieren
(beispielsweise durch abermaliges Aufrufen des ganzen Codeworts bei der Datenquelle), aber diese Art von Techniken
sind an anderen Stellen ausführlich beschrieben. Wenn die Anzahl postulierter Fehler L noch innerhalb der gestellten
Grenzen liegt, wird im Block 154 eine Reihe von Capdelta-Grossen
bestimmt, und zwar für alle zulässigen Werte der laufenden Grosse i. Ausserhalb dieses Bereichs werden alle
Capdelta-Grössen auf Null gestellt. Weiter werden alle bekannten Koeffizienten des Fehlerorters sigma(z) in entsprechenden
Hilfsvariablen gerettet. Die erste Diskrepanz
^5 wird in der Grosse oldeltai gerettet, und alle Koeffizienten
des Fehlerorters werden mit den zugeordneten Grossen capdelta wie im' Block 140 aktualisiert.
Im Block 156 wird eine Hilfsgrösse J eingeführt,
die die Anzahl der Inkrementierungen der Cramerschen Regel und damit die Anzahl zusätzlich zu berücksichtigender
Syndromsymbole angibt. Die Blöcke I58 und 160 bilden eine
Schleife. Darin werden zunächst die Grossen J, N inkrementiert, die Diskrepanzen werden neu berechnet, die relevanten
Capdelta werden aktualisiert bzw. auf Null zurückgestellt
und die Koeffizienten des Fehlerorters aktualisiert.
Schliesslich wird detektiert, ob die Grosse J noch innerhalb
der gestellten Grenzen liegt. Solange dies der Fall ist, durchläuft das System die Schleife. Wenn J = L - LO ist,
ist die Schleife eine ausreichende Anzahl Male durchlaufen.
Dabei geht das System zum Block 162, in dem die Reihe im
Block I54 geretteter Koeffizienten des Fehlerorters sigma(z)
über 1 oder mehrere Indexstellen in bezug auf den geretteten Wert von L verschoben wird, während die übrigen Koeffizienten
auf Null gestellt werden. Schliesslich wird die
■" Anzahl berücksichtigter Syndromsymbole inkrementiert und
geht das System zum Block 13^- in Fig. 8b zurück. Damit ist
Fig. 9 beschrieben sowie die Lösung der Schlüsselgleichung insgesamt. Der einzige Ausgang neben dem Block 152 führt
zum Block 106 in Fig. 7. Die Blöcke 106, 108 und 124 in
Fig. 7 werden nicht weiter erörtert.
In Fig. 10 ist eine Detaillierung des Blocks 126 nach. Fig. 7 zur Bestimmung zweier Fehlersymbole dargestellt.
Der einzige Eingang führt zum Block 164. Darin wird geprüft,
ob der Koeffizient sigmai des Fehlerorters sigma den Wert
Null hat. Dies würde bedeuten, dass die Fehler zusammenfallen, und das ist wegen der gev?ählten Begriffsbestimmung
von "Fehler" nicht möglich. Wenn die Antwort im Block 164 }q positiv ist, wird das Codewort im Block 166 als undecodierbar
betrachtet. Der Block 166 entspricht also dem Block 1^2
in Fig. 9. Eine andere und immer verwirklichbare Behandlungsweise wäre die Ausführung eines Sprunges und die Rückkehr
zum Block 146 in Fig. 8b, so dass einige zusätzliche ^g Diskrepanzen geprüft werden können. Wenn im Block 164 das
Ergebnis negativ ist, wird im Block 168 eine erste Protofehlerposition
Chi., bestimmt, was mit einer Tabelle erfolgt; wie erwähnt ist diese Tabelle im Element 368 in Fig. 6 gespeichert.
Die Protofehlerposition steht im Zusammenhang mit der' echten Fehlerposition, aber die Fehlerposition
kann an diesem Punkt des Verfahrens noch nicht bestimmt werden. Im Block I70 wird die Spurgrösse des betreffenden
Koeffizienten bestimmt; dies ist eine an sich herkömmliche Operation. Wenn diese Spur ungleich Null ist, geht das
System zum Block 172 und wird das Codewort als undecodierbar
betrachtet. Auch in diesem Falle darf der Sprung zum Block 14ö in Fig. 8b ausgeführt werden; es ist dabei noch eine
Massnahme zu treffen, damit das System nicht unendlich lang in einer so zu bildenden Schleife verbleiben kann. Wenn
die Prüfiang im Block 170 positiv ist, kann der Fehler bestimmt
werden. Zunächst werden im Block 174 die endgültigen
Fehlerpositionen durch Inkrementierung in GF(2A8) der ersten
Protof ehlerposition CtLi1 und durch Multiplikation mit dem
Koeffizienten sigmai des Fehlerorters sigina1,2 bestimmt.
Wenn beispielsweise Chi.. = a*i ist, ist das Codesymbol mit
der Rangnummer (i) fehlerhaft. Im Block I76 wird zunächst
der vorläufige Fehlerwert I ermittelt, und daraus werden die eigentlichen Fehlerwerte mittels des Koeffizienten
sigmai und des Syndromsymbols SO bestimmt. Der Block 122
ist an Hand der Fig.7 beschrieben. Faktisch stellt der Block 176 die Blöcke 110 und 120 für diese Anzahl von Symbolfehlern
dar.
Für eine grössere Anzahl von Symbolfehlern wird
zunächst der Fehlerauswerter omega(z) bestimmt, was in
Fig. 11 dargestellt ist, siehe Block 110 in Fig. 7. Der Fehlerauswerter wird als das Produkt des Syndrompolynoms S(z).
und des Fehlerorterpolynoms sigma(z) bestimmt, so dass omegal = S1 s. sigmaO + SOstsigmai ;
omega2 = S2 s sigmaO + SI * sigmai + So se sigma2, usw.
Das Verfahren verfügt über einen einzigen Eingang im Block 178} darin wird die Hilfsgrösse I auf Null zurückgestellt.
Im Block 180 wird eine zweite Hilfsgrösse J auf Null zurückgestellt
sowie ein vorläufiger Koeffizient des Fehlerauswerters.
Die Grossen I und J sind Rangnummern und haben keine physische Bedeutung. Die Blöcke 182 und 184 bilden
eine Schleife, in der jeweils ein Koeffizient des Fehlerauswerterpolynoms aktualisiert und die Hilfsgrösse J erhöht
wird. Wird J grosser als I, ist der betreffende Koeffizient
vollständig bestimmt und wird im Block 186 der Wert von I zur Behandlung des folgenden Koeffizienten des Fehlerauswerterpolynoms
inkrementiert. Wenn die Werte von I und L
gleich sind, ist das vollständige Polynom bestimmt und
^5 geht das System zum Block 112 in Fig.7 weiter.
In Fig. 12 ist ein Ablauf diagramm zur Lösung; der
kubischen Gleichung dargestellt, siehe Block 118 in Fig.7.
An sich ist die Lösung von Gleichungen zweiten und drillen
Grades in einem Galois-Körper in einem Ar tike L von R.T.Cltieii
in I.E.E.E. Transactions on Information Theory, März 1969»
S. 329 ff., beschrieben. Diese Veröffentlichung gibt auch
die Lösungen für Gleichungen vierten und fünften Grades an, aber in der beschriebenen bevorzugten Ausführungsform werden
diese Lösungen nicht verwendet. Die Figur zeigt einen einzigen Eingang im Block I90, der von einem der Blöcke 112
und 116 in Fig. 7 erreichbar ist 5 diese letzten Blöcke
sind wegen ihrer inneren Einfachheit nicht näher beschrieben. Zunächst werden im Block I90 die zweiten und dritten Koeffi-
zienten sigma(i,2) des Fehlerorterpolynoms geprüft. Venn
diese Prüfung positiv ist, geht das System zum Block 192
weiter. Da werden nacheinander eine Hilfsgrösse I und eine Hilfsgrösse Jl bestimmt, die Elemente eines Galois-Feldes
sind. Diese letzte Bestimmung erfolgt wieder mit einer Tabelle (Element 368). Im Block 194 wird geprüft, ob die
Grosse I gleich einer Potenz (3n) des primitiven Elements a des Galois-Körpers ist. Wenn das nicht der Fall ist, geht
das System zum Block 198 weiter und wird das Codewort als
undecodierba.r betrachtet. Wenn die Prüfung im Block 19^
jjosiLiv ist, geht das System zum Block 196 weiter und werden
die drei verschiedenen vorläufigen Fehlerortungen Chi.. „ „
vorläufig festgestellt. Danach geht das System zum Block weiter. Wenn die Prüfung im Block 190 negativ ist, geht
das System zum Block 200. Dort wird, wie angegeben, ein Wert für die Hilfsgrösse J berechnet und daraus mittels einer
von "D" angegebenen Funktionsübersetzungstabelle ein Wert für die Hilfsgrösse I berechnet. Diese Ubersetzungstabelle
ist wieder im Element 368 in Fig. 6 gespeichert. Im Block
202 wird anschliessend geprüft, ob es sich um einen sog. Bahndarsteller (orbital representative) handelt. Diese
Darstellung wird in der erwähnten Veröffentlichung näher erläutert. Wenn das nicht der Fall ist, geht das System
/,um Block 198 weiter und wird das Codewort als unkorrigierbar·
tuitreacfatet. Wenn die Prüfung im Block 202 positiv ist,
geht das System zum Block 2O4 weiter. Zunächst wird mit der früher beschriebenen C-Tabelle eine erste Hilfsgrösse ma.
und daraus eine zweite Hilfsgrösse nup bestimmt. Anschliessend
wird die früher beschriebene Hilfsgrösse I (Block 200) aktualisiert. Schliesslich werden in diesem Block die
vorläufigen Positionen der drei Fehler bestimmt. Danach geht das System zum Block 206 weiter, der auch vom Block
aus erreicht wurde. Im Block 206 werden die vorläufigen Positionen der drei Fehler mittels des zweiten Koeffizienten
des Fehlerorters sigma(z) zum Erhalten der endgültigen Positionen aktualisiert, und das System geht zum Block
weiter. Im Block 208 wird geprüft, ob der Wert der Fehlerzählergrösse
den Wert drei hat, mit dem geprüft wird, ob
ίο 710 27 J42Z46 I ^.6.
vor dem Erreichen dieses Punkts der Behandlung ein Chien-Suchzyklus
erfolgt ist. Die Fehler sind jetzt alle bekannt, und das System geht zum Block 210 weiter. Darin wird zunächst
die Hilfsgrösse F bestimmt. Danach werden die Fehlerwerte
Y(1,2,3) mit Hilfe der Koeffizienten omega(i,2,3)
des früher bestimmten Fehlerauswerters und der aktuellen Fehlerpositionen x(i,2,3) bestimmt. Danach ist das betreffende
Codewort vollständig durchgearbeitet. Faktisch bildet der Block 210 eine schnellere Ausführung der Behandlung
im Block 120 für drei Fehler.
Ein erster Teil der Fig. 13 zeigt die eigentliche Chien-Suchoperation. Der Eingangsblock dieses Teils ist der
Block 210 und wird vom Block 188 in Fig. 11 erreicht unter der Bedingung, dass der Grad des Fehlerorters sigma(z)
grosser als 3 ist. Wenn das nicht der Fall ist, geht das System dort zum Block 190 in Fig. 12 weiter. Zunächst wird
nunmehr der Hilfsfehlerzähler gleich L und die Anzahl geprüfter
Codesymbole N auf Null zurückgestellt. Danach wird die Grosse sum bestimmt. Es gilt nämlich, dass die Invertierten
der Wurzel des Fehlerorters sigma(z). die Stellen der Fehler angeben; auf gleiche Weise geben jedoch die
Wurzeln des Fehlerorters mit umgekehrter Koeffizientenreihe
(inverse polynomial) auch die Fehlerorte. Nach dieser Bestimmung
im Block 220 wird im Block 224 der Wert der Grosse
sum geprüft. Solange der Wert dieser Grosse sum sich von
Null unterscheidet, wird eine Schleife durchlaufen, die
aus den Blöcken 222, 226, 228, 220 besteht. Darin wird jeweils die Anzahl geprüfter Codesymbole inkrementiert
und die Grosse sum neu berechnet. Nur wenn der Wert von N
die zulässige Länge der Codewörter übersteigt, wird das betreffende Codewort im Block 216 als undecodierbar betrachtet.
Wenn beim Durchlaufen der Schleife (was unter Umständen etwa hundertmal erfolgen ,kann, d.h. gleich der
Länge des Codeworts in Symbolen weniger 3) die Grosse sum den Wert Null bekommt, ist damit in einem derartigen Chien-Suchzyklus
ein Fehlersymbol gefunden und kann die betreffende Wurzel des Fehlerorters durch Division ermittelt
werden. Zunächst wird im Block 232 der Fehlerorter des
betreffenden Störsymbols festgelegt, danach wird die Fehlerhilf
szählergrosse um eine Einheit verringert und schliesslicli
wird der Grad des Fehlerorters durch Division herabgesetzt. Im Block 23k wird detektiert, ob die Fehlerhilfszählergrösse
den Wert 3 hat. Solange diese Prüfung negativ ist, geht das System (jedesmal) zum Block 226 zurück; es zeigt sich, dass
die Störsymbole nach ansteigender Rangnummer gefunden werden. An sich ist eine anders programmierte Reihenfolge genau so
gut. Wenn die Prüfung im Block 23^· positiv ist, geht das
System zum Block 190 in Fig. 12 weiter. Wenn alle Fehlerortungen
gefunden sind, werden im Block 236 die Störsymbole bestimmt. Danach ist das Codewort vollständig behandelt.
Faktisch verwirklicht der Block 236 die Vorgänge im Block
12(J für eine Fehler anzahl von vier oder darüber.
Wenn andererseits im Block 208 in Fig. 12 die Prüfung negativ ist, sind noch mehr als drei Fehler aufgetreten,
und das System geht weiter zum Block 212 in Fig. 13. Das bedeutet, dass zu diesem Zeitpunkt alle Fehler gefunden
sind, die letzten drei in dem eben zuvor durchlaufenen Teil
der Fig. 12, aber dass der Block 210 nicht zutrifft. Alle Fehler müssen jetzt ausgearbeitet werden. Der Eingangsblock
212 ist ein anderer Eingang nach Fig. I3 als der, der
von den Blöcken 134 bzw. 146 in Fig. 8 verwendet wurde.
Im Block 212 wird geprüft, ob die ersten drei Fehlerortungen ,je grosser sind als die vierte. Wenn die Prüfung positiv ist,
wird im Block 214 geprüft, ob alle drei Fehlerortungen in der betrachteten Höchstlänge eines Codeworts von η Codesymbolen
(beispielsweise in einem Ausführungsbeispiel IO8
Symbole) liegen. Wenn eine der beiden Prüfungen in den Blöcken 212, 214 negativ ist, geht das System zum Block 216
weiter und wird das betreffende Codewort als undecodierbar betrachtet. Wenn beide Prüfungen positiv sind, geht das System
zum Block 236 weiter und berechnet die Fehlerwerte für
alle gefundenen Symbolfehler (mindestens vier und höchstens zehn im Ausführungsbeispiel). Danach geht das System zum
Block 122 weiter, und die Behandlung des betreffenden Codeworts ist beendet.
S3
- Leerseite -
Claims (6)
1. Decodierungssystein zum Decodieren von Codewörtern,
die mittels eines Reed-Solomon-Codes gegen mehrere Symbolfehler
je Codewort geschützt sind, welches Decodersystem
Aufnehmermittel zum sequentiellen Empfangen der Codesymbole zur Bildung eines Codeworts daraus, erste Berechnungsmittel
(102) zur Bestimmung einer Reihe von Syndromsymbolen
aus dem Codewort mittels der Pari tat sprüf matrix £_HJ des
Codes, von den ersten Berechnungsmitteln gespeiste zweite Berechnungsmittel (ΐθ4) zur Lösung der Schlüsselgleichung
zum Erhalten des Fehlerorters sigma(z) und des Fehlerauswerters omega(z), von den zweiten Berechnungsmitteln gespeiste dritte Berechnungsmittel zum Erhalten der Positionen
möglich gestörter Codesymbole mittels der Nullpunkte des Fehlerorters und von den dritten Berechnungsmitteln gespeiste
vierte Berechnungsmittel zur Bestimmung der zu gestörten Codesymbolen gehörenden Symbolfehler mittels der
erwähnten Nullpunkte zur Darstellung der mittels Fehlerwert (e) und Positionsdaten von Symboli'ehlern korrigierbaren
Codesymbole an einem Benutzerausgang enthält, dadurch
gekennzeichnet, dass die zweiten Berechimngsmittel Multiplizierer
enthalten, die jeweils für eine angenommene Anzahl (L) von Symbolfehlern je Codewort, ausgehend von
einem fehlerfreien (L = θ) Codewort, unter Berücksichtigung von 2L Syndromsymbolen und durch die Lösung der dazu beschrankten
reduzierten Schlüsselgleichung nach der Cramer— sehen Regel, jedoch bei sich von Null unterscheidender
Diskrepanz deltai, mittels Einführung zweier weiterer
Syndromsymbole in die aktuelle reduzierte Schlüsselgleichung und matrixinkrementierende Bearbeitungen eine weitere,
weniger reduzierte Schlüsselgleichung lösen (i4o), die bei
einer Diskrepanz delta! (i30) gleich Null eine vom Wert
der dabei angenommenen Anzahl von Symbolfehlern bestimmte Anzahl (Nmax) Diskrepanzen delta! mit nacheinander er-
PHN 10 710 yd 4.6.1984
höhten Anzahlen angenommener Pseudo-Symbolfehler bestimmen 042), jedoch bei einer dann immer noch sich von Null
unterscheidenden Diskrepanz deltai für alle unbehandelten
Anzahlen zu der aktuellen erhöhten Anzahl von Symbolfehlern die Ergänzungen der Schlüsselgleichung anbringen (i48, 154 162)
und diese ergänzte Schlusselgleichung nach obiger
Beschreibung lösen,
2. Decodersystem nach Anspruch 1, dadurch gekennzeichnet,
dass die zweiten Berechnungsmittel mit ersten Detektionsnii t telri versehen sind, die eine aktuelle Anzahl von
Symbol fehlern von höchstens zwei detektieren (106, IO8)
und damit durch direkte Lösung einer Fehlerortergleichung höchstens zweiten Grades direkt die Fehler ortet und auswertet
(124, 126) und dagegen erst bei einer höheren Anzahl de fcektierter Symbolfehler den Fehlerauswerter berechnet (Ί 10).
3. Decodersystem nach Anspruch 2, dadurch gekennzeichnet,
dass die dritten Berechnungsmittel mit zweiten Detektionsmitteln versehen sind, die eine aktuelle Anzahl von
drei Symbolfehlern detektieren und dann durch die Lösung einer kubischen Fehlerortergleichung die Fehler orten und
anschliessend auswerten, jedoch bei einer grösseren detektierten
Anzahl von Symbolfehlern einen Chien-Ortungszyklus
J än/v* tier Reihe von Codesymbolen durchführen, bis ein
Symbol fehler geortet wird, und dann den von diesem Syrnbolfehl
ei- dargestellten Faktor aus dem Fehlerorter durch
Division ermitteln (114), wodurch die aktuelle Anzahl restlicher Symbolfehler um eine Einheit reduziert wird, und
dass beim Erreichen einer vorgegebenen Anzahl aktueller restlicher Symbolfehler die Fehlerortergleichung direkt
gelöst wird ( 1 18) .
4. Decodersystem nach Anspruch 1, 2 oder 3, dadurch gekennzeichnet, dass die ersten Berechnungsmittel eine
Schleife aufweisen, in der eine EXKLUSIV-ODER-Schaltung
(306, 308) zum Empfangen der Codesymbole, ein Pufferspeicher
(312, 314) zum Speichern der bei einem Codewort gebildeten
(vorläufigen) Syndromsymbol und ein Festwertspeicher (320, 322, 324) zum Speichern der Multiplikationstabellen für
die Paritätsprüfmatrix in Reihe geschaltet sind, von der
PHN 10 710 ^i 4.6.1984
ein Ausgang auf einen weiteren Eingang der EXKLUSIV-? Schaltung rückgekoppelt ist, und dass ein weiterer Ausgang
(316) des Pufferspeichers mit den zweiten Berechnungsmitteln
verbunden ist, denen bei vollständiger Bearbeitung des betreffenden Codeworts die Reihe endgültiger Syndromsymbole
zugeführt wird.
5. Decodersystem nach Anspruch 4, dadurch gekennzeichnet, dass für die Detektion des letzten Codesymbols eines
Codeworts mit Hilfe eines angehängten Signalbits ein Signaldetektor vorgesehen ist, von dem ein Ausgang den weiteren
Ausgang zur Bereitstellung der Schaltung für den Empfang eines nächsten Codeworts aktiviert.
6. Decodersystem nach einem der Ansprüche 1 bis 5»
dadurch gekennzeichnet, dass zweite, dritte und vierte Berechnungsmittel folgende Elemente enthalten: einen Eingangspuffer
(338, 34o) zum Speichern zumindest der· vollständigen
Reihe von Syndromsymbolen, die bei einem Codewort erzeugt wurde, einen Mikrocomputer (352), einen Ausgangspuffer
(348, 350) zum Speichern einer Reihe von Feh.le.rortungs-
und Fehlerauswertungssymbolen, die bei einer vollständigen Reihe zu einem Codewort gehörender Reihe von
Syndromsymbolen erzeugt wurde, und einen zwischen diesen Teilen geschalteten Verbindungsbus (344), an den weiter
eine Log/Antilog-Tabelleneinrichtung (364, 368) zur Durchführung
von Multiplikationsoperationen an den Symbolen im betreffenden Galois-Körper angeschlossen ist, sowie
einen Datenspeicher (37θ), für den Adressen vom Mikrocomputer
über den Bus(380, 382) lieferbar sind, sowie einen von einem externen Zeitgeber inkrementierbaren Zähler.
7· Decodersystem nach Anspruch 6, dadurch gekennzeichnet,
dass auch an den Bus ein Detektor (362) angeschlossen ist, der durch Detektion einer zu einem Codewort gehörenden
und auschliesslich "Null"-Symbole enthaltenden Reihe von Syndromsymbolen unter Umgehung des Mikrocomputers ein
fehlerfreies Codewort detektiert und dann eine nächste Reihe von Syndromsymbolen aufruft.
8, Leseanordnung für optisch lesbare Speicherkörper,
mit einem Decodersystem nach einem der Ansprüche 1 bis 7»
PHN 10 710 25 4.6.1984
mit Positionierungsmitteln zum Aufnehmen eines derartigen Speicherkörpers, mit Antriebsmitteln zum Antreiben des
Speicherkörpers mit im wesentlichen gleichförmiger Umdrehungsgeschwindigkeit um seine Drehachse, mit Lesemitteln
zum Lesen einer Bitreihe in einer Spur auf dem Speicherkörper mit Serien-Parallel-Umwandlung zum Eingeben in die
ersten Berechnungsmittel.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NL8302214A NL8302214A (nl) | 1983-06-22 | 1983-06-22 | Dekodeerinrichting voor het dekoderen van kodewoorden die bloksgewijs middels een reed-solomon-code tegen meerdere symboolfouten per blok beschermd zijn, en uitleesinrichting voor optisch uitleesbare opslaglichamen welke uitleesinrichting voorzien is van zo een dekodeerinrichting. |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3422461A1 true DE3422461A1 (de) | 1985-01-03 |
Family
ID=19842050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19843422461 Withdrawn DE3422461A1 (de) | 1983-06-22 | 1984-06-16 | Decoder zum decodieren von codewoertern, die blockweise mittels eines reed-solomon-codes gegen mehrere symbolfehler je block geschuetzt sind, und leseanordnung mit einem derartigen decoder fuer optisch lesbare speicherkoerper |
Country Status (8)
Country | Link |
---|---|
US (1) | US4642808A (de) |
JP (1) | JPS6037833A (de) |
CA (1) | CA1220865A (de) |
DE (1) | DE3422461A1 (de) |
FR (1) | FR2549319B1 (de) |
GB (1) | GB2142752B (de) |
NL (1) | NL8302214A (de) |
SE (2) | SE460243B (de) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0282877A1 (de) * | 1987-03-10 | 1988-09-21 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Verfahren und Einrichtung zur Steuerung der Fehlerkorrektur innerhalb einer Datenübertragungssteuerung bei von bewegten peripheren Speichern, insbesondere Plattenspeichern, eines Datenverarbeitungssystems gelesenen Daten |
EP0413856A1 (de) * | 1989-08-24 | 1991-02-27 | Koninklijke Philips Electronics N.V. | Verfahren und Einrichtung zur Decodierung von wortgeschützten Codewörtern durch einen nichtbinären BCH-Code gegen mindestens einen Symbolfehler |
FR2714498A1 (fr) * | 1993-12-28 | 1995-06-30 | Mitsubishi Electric Corp | Décodeur exécutant une correction d'erreurs et procédé de décodage avec correction d'erreurs. |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728227B2 (ja) * | 1985-06-07 | 1995-03-29 | ソニー株式会社 | Bch符号の復号装置 |
US5003539A (en) * | 1986-04-11 | 1991-03-26 | Ampex Corporation | Apparatus and method for encoding and decoding attribute data into error checking symbols of main data |
JPS63503016A (ja) * | 1986-04-11 | 1988-11-02 | アムペツクス コーポレーシヨン | 主データの誤差チエツク記号に属性データを符号化及び復号化するための装置及び方法 |
US4763330A (en) * | 1986-05-06 | 1988-08-09 | Mita Industrial Co., Ltd. | Syndrome calculating apparatus |
US4730321A (en) * | 1986-05-30 | 1988-03-08 | Quantum Corporation | Disk drive with improved error correction code |
US4845713A (en) * | 1987-06-08 | 1989-07-04 | Exabyte Corporation | Method and apparatus for determining the coefficients of a locator polynomial |
US5001715A (en) * | 1988-05-12 | 1991-03-19 | Digital Equipment Corporation | Error location system |
US6023782A (en) * | 1996-12-13 | 2000-02-08 | International Business Machines Corporation | RAM based key equation solver apparatus |
US6173429B1 (en) * | 1997-03-14 | 2001-01-09 | Harris Corporation | Apparatus for providing error correction data in a digital data transfer system |
US6704902B1 (en) * | 1998-09-07 | 2004-03-09 | Sony Corporation | Decoding system for error correction code |
US6279137B1 (en) | 1998-12-08 | 2001-08-21 | Lsi Logic Corporation | System and method for a storage-efficient parallel Chien Search |
US6175941B1 (en) * | 1998-12-08 | 2001-01-16 | Lsi Logic Corporation | Error correction apparatus and associated method utilizing parellel processing |
US6961879B1 (en) * | 2000-05-23 | 2005-11-01 | Zoran Corporation | Apparatus and method for counting error rates in an optical compact disc storage system |
US20140055290A1 (en) | 2003-09-09 | 2014-02-27 | Peter Lablans | Methods and Apparatus in Alternate Finite Field Based Coders and Decoders |
US7865806B2 (en) * | 2006-03-03 | 2011-01-04 | Peter Lablans | Methods and apparatus in finite field polynomial implementations |
KR101437396B1 (ko) * | 2008-02-27 | 2014-09-05 | 삼성전자주식회사 | 레이턴시를 줄일 수 있는 에러 정정 블록을 포함하는메모리 시스템 및 그것의 에러 정정 방법 |
JP5525498B2 (ja) * | 2011-09-13 | 2014-06-18 | 株式会社東芝 | 誤り検出装置 |
RU2613760C2 (ru) * | 2015-06-04 | 2017-03-21 | Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования "Санкт-Петербургский государственный университет телекоммуникации им. проф. М.А. Бонч-Бруевича" | Устройство мажоритарного декодирования кода Рида-Соломона по k-элементным участкам кодовой комбинации |
CN111726124B (zh) * | 2019-03-21 | 2023-09-29 | 博通集成电路(上海)股份有限公司 | 用于纠错的电路及其方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4142174A (en) | 1977-08-15 | 1979-02-27 | International Business Machines Corporation | High speed decoding of Reed-Solomon codes |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3648236A (en) * | 1970-04-20 | 1972-03-07 | Bell Telephone Labor Inc | Decoding method and apparatus for bose-chaudhuri-hocquenghem codes |
US3781791A (en) * | 1971-12-13 | 1973-12-25 | Bell Telephone Labor Inc | Method and apparatus for decoding bch codes |
US3771126A (en) * | 1972-04-10 | 1973-11-06 | Bell Telephone Labor Inc | Error correction for self-synchronized scramblers |
GB2093238B (en) * | 1981-02-18 | 1985-04-17 | Kokusai Denshin Denwa Co Ltd | Error correcting system for simultaneous errors in a code |
-
1983
- 1983-06-22 NL NL8302214A patent/NL8302214A/nl not_active Application Discontinuation
-
1984
- 1984-06-16 DE DE19843422461 patent/DE3422461A1/de not_active Withdrawn
- 1984-06-19 FR FR8409563A patent/FR2549319B1/fr not_active Expired
- 1984-06-19 SE SE8403269A patent/SE460243B/sv not_active IP Right Cessation
- 1984-06-19 SE SE8403269D patent/SE8403269L/xx not_active Application Discontinuation
- 1984-06-20 GB GB08415675A patent/GB2142752B/en not_active Expired
- 1984-06-21 CA CA000457106A patent/CA1220865A/en not_active Expired
- 1984-06-22 JP JP59127723A patent/JPS6037833A/ja active Granted
-
1986
- 1986-01-30 US US06/824,299 patent/US4642808A/en not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4142174A (en) | 1977-08-15 | 1979-02-27 | International Business Machines Corporation | High speed decoding of Reed-Solomon codes |
Non-Patent Citations (4)
Title |
---|
G.C. Clark, Jr., J.B. Cain "Error-Correction Coding for Digital Communications" N.Y. 1982, S. 195-214 |
I.N. Bronstein, K.A. Semendjajew "Taschenbuch der Mathematik", Moskau 1956, S. 127-129 |
J.L. MASSEY "Step-by-Step Decoding of the Bose-Chaudhuri-Hocquenhem Codes" in: IEEE Trans. Vol. IT-11, Okt. 1965, S. 580-585 * |
R.T. CHIEN "Cyclie Decoding Procedures for Bose-Chaudhuri-Hocquenghem Codes" in: IEEE Trans. on Inf. Theory, Okt. 1964, S. 357-363 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0282877A1 (de) * | 1987-03-10 | 1988-09-21 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Verfahren und Einrichtung zur Steuerung der Fehlerkorrektur innerhalb einer Datenübertragungssteuerung bei von bewegten peripheren Speichern, insbesondere Plattenspeichern, eines Datenverarbeitungssystems gelesenen Daten |
EP0413856A1 (de) * | 1989-08-24 | 1991-02-27 | Koninklijke Philips Electronics N.V. | Verfahren und Einrichtung zur Decodierung von wortgeschützten Codewörtern durch einen nichtbinären BCH-Code gegen mindestens einen Symbolfehler |
FR2714498A1 (fr) * | 1993-12-28 | 1995-06-30 | Mitsubishi Electric Corp | Décodeur exécutant une correction d'erreurs et procédé de décodage avec correction d'erreurs. |
NL9402204A (nl) * | 1993-12-28 | 1995-07-17 | Mitsubishi Electric Corp | Fout-corrigerende decodeerinrichting en foutcorrectiedecodeerwerkwijze. |
US5684810A (en) * | 1993-12-28 | 1997-11-04 | Mitsubishi Denki Kabushiki Kaisha | Error correcting decoder and error correction decoding method |
Also Published As
Publication number | Publication date |
---|---|
JPH0553087B2 (de) | 1993-08-09 |
SE8403269D0 (sv) | 1984-06-19 |
GB8415675D0 (en) | 1984-07-25 |
JPS6037833A (ja) | 1985-02-27 |
FR2549319B1 (fr) | 1986-12-12 |
FR2549319A1 (fr) | 1985-01-18 |
GB2142752A (en) | 1985-01-23 |
US4642808A (en) | 1987-02-10 |
CA1220865A (en) | 1987-04-21 |
SE8403269L (sv) | 1984-12-23 |
SE460243B (sv) | 1989-09-18 |
NL8302214A (nl) | 1985-01-16 |
GB2142752B (en) | 1986-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3422461A1 (de) | Decoder zum decodieren von codewoertern, die blockweise mittels eines reed-solomon-codes gegen mehrere symbolfehler je block geschuetzt sind, und leseanordnung mit einem derartigen decoder fuer optisch lesbare speicherkoerper | |
DE2916710C2 (de) | ||
DE10133595B4 (de) | Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder | |
DE69834542T2 (de) | Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke | |
DE2657826A1 (de) | Einrichtung zur fehlererkennung und fehlerkorrektur im speichersystem einer dv-anlage | |
DE102007038114A1 (de) | Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren | |
DE102007058828A1 (de) | Speicherbauelement und Fehlerkorrekturverfahren | |
DE2834963A1 (de) | Verfahren und einrichtung zur fehlerkorrektur von uebertragenen daten | |
DE102011085602B4 (de) | Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz | |
DE2060643B2 (de) | Schaltungsanordnung zur Korrektur von Einzelfehlern | |
DE3231956A1 (de) | Anordnung zum uebertragen von binaerdaten ueber eine vielzahl von kanaelen mit hilfe eines faltungscodes | |
EP0545498B1 (de) | Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen | |
DE102017110389B4 (de) | Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes | |
DE102018103408B3 (de) | Integrierte schaltung und verfahren zum verarbeiten eines codierten nachrichtenworts | |
DE3717223A1 (de) | Verfahren und anordnung zum decodieren eines codesymbolblocks, der zwei arten von codewoertern enthaelt, die durch je einen maximalabstandsseparierbaren code geschuetzt sind | |
DE69732076T2 (de) | Reed-Solomon Dekodierer mit universeller Prozessoreinheit und speziellen Schaltungen | |
DE4105860C2 (de) | Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten | |
DE102005022107B9 (de) | Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge | |
DE102013112195A1 (de) | Speichercontroller, der Teildaten in einer Speichervorrichtung ändert, sowie Verfahren zum Ändern von Teildaten davon | |
DE2217935B2 (de) | Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht | |
DE3404417A1 (de) | Codierer-pruefschaltungsanordnung | |
DE69837784T2 (de) | Verbessertes fünf-fehler-korrektursystem | |
DE60104338T2 (de) | Vorrichtung und verfahren zur turbo decodierung mit signaturdatenvergleich als abbruchkriterium | |
DE1474037B2 (de) | Paritaetspruefverfahren und -pruefeinrichtung fuer datenverarbeitende maschinen | |
DE69911488T2 (de) | Vorrichtung zur Fehlerkorrektur und optischer Plattenspieler damit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8127 | New person/name/address of the applicant |
Owner name: PHILIPS ELECTRONICS N.V., EINDHOVEN, NL |
|
8128 | New person/name/address of the agent |
Representative=s name: PETERS, C., DIPL.-ING., PAT.-ASS., 22335 HAMBURG |
|
8127 | New person/name/address of the applicant |
Owner name: KONINKLIJKE PHILIPS ELECTRONICS N.V., EINDHOVEN, N |
|
8139 | Disposal/non-payment of the annual fee |