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 speicherkoerper

Info

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
Application number
DE19843422461
Other languages
English (en)
Inventor
Constant Paul Marie Jozef Eindhoven Baggen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Philips Gloeilampenfabrieken NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Philips Gloeilampenfabrieken NV filed Critical Philips Gloeilampenfabrieken NV
Publication of DE3422461A1 publication Critical patent/DE3422461A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1575Direct 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive 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.
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)

PHN 10 710 '29 PATENTANSPRÜCHE
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.
DE19843422461 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 Withdrawn DE3422461A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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