DE3750526T2 - Dekodierer. - Google Patents

Dekodierer.

Info

Publication number
DE3750526T2
DE3750526T2 DE3750526T DE3750526T DE3750526T2 DE 3750526 T2 DE3750526 T2 DE 3750526T2 DE 3750526 T DE3750526 T DE 3750526T DE 3750526 T DE3750526 T DE 3750526T DE 3750526 T2 DE3750526 T2 DE 3750526T2
Authority
DE
Germany
Prior art keywords
circuit
error
syndrome
memory
polynomial
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3750526T
Other languages
English (en)
Other versions
DE3750526D1 (de
Inventor
Tohru Mitsubishi Denki K Inoue
Toshihisa Mitsubishi Nishijima
Yoshiaki Mitsubishi Denki Oda
Minoru Mitsubishi Denki Ozaki
Atsuhiro Mitsubishi Yamagishi
Hideo Mitsubishi Denki Yoshida
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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
Priority claimed from JP61141679A external-priority patent/JPS6379423A/ja
Priority claimed from JP16840286A external-priority patent/JPH0744467B2/ja
Priority claimed from JP61240685A external-priority patent/JPS6394720A/ja
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of DE3750526D1 publication Critical patent/DE3750526D1/de
Publication of DE3750526T2 publication Critical patent/DE3750526T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/033Theoretical methods to calculate these checking codes

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)

Description

    HINTERGRUND DER ERFINDUNG Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft einen Dekodierer zum Korrigieren eines Fehlers in Reed-Solomon (RS) - Codes.
  • Beschreibung des Standes der Technik
  • Es gibt bereits einen Dekodierer der Euclids Dekodiermethode zum Dekodieren der RS, BCH, oder Goppa-Codes benutzt. Euclids Dekodiermethode wurde von Sugiyama et al. 1974 endeckt (Sugiyama, Kasahara, Hirasawa und Suberikawa "Discussion of the Goppa Code," Electronic Communications Society Technical Study Report, PRL 73-77, Seiten 11-20 (1974)). Der Goppa Code ist eine große Klasse linearer Codes, die durch eine bemerkenswerte Technik zum Projizieren von Codevektoren auf rationale Gleichungen definiert sind und eine Unterklasse der BCH Code enthalten. Selbstverständlich ist er anwendbar auf den RS Code. Diese euclidische Dekodiermethode ist leichter zu lösen als Petersons Algorithmus und ist viel leichter zu verstehen als Berlekamps Algorithmus.
  • Das Dekodieren eines RS Codes besteht aus folgenden vier Schritten:
  • (1) Auffinden des Syndroms.
  • (2) Auffinden eines Fehler-Lokator-Polynoms und eines Fehler-Evaluator-Polynoms aus dem Syndrom.
  • (3) Bestimmen einer Fehlerstelle aus dem Fehler- Lokator-Polynom unter Benutzung von Chiens Algorithmus.
  • (4) Bestimmen eines Fehlerwertes aus dem Fehler- Evaluator-Polynom.
  • Euclids Algorithmus wird in obigem Schritt (2) benutzt. In Euclids Dekodiermethode für Goppa Codes wird das Syndrom-Polynom deffiniert durch
  • wobei αi ein Element von GF(q) ist, das verschieden für i ist und G(z) ein Goppapolynom ist, das die Bedingung
  • erfüllt, wobei ai ein Element von GF(q) ist. Für RS Codes gilt:
  • G(z) = Z2t
  • wobei t die Anzahl der korrigierbaren Fehler ist und mit der Minimaldistanz d wie folgt in Relation steht:
  • t = [(d - 1)/2]
  • Das Gausssche Symbol [x] stellt die größte ganze Zahl nicht größer als x dar. Für RS Codes wird Gleichung 1:
  • Nun soll das Syndrom Sj (j = 0, 1, . . . 2t - 1) aus dem aufgenommenen Vektor gefunden werden. Wenn der aufgenommene Vektor r(X) = r&sub1; + r&sub2;X + . . . + rnXn-1 ist, dann ist der Fehlervektor e(X) = e&sub1; + e&sub2;X + . . . + enXn-1, und die Wurzel des Erzeugungspolynoms ist g(x) = αγ, αγ+1, . . . , αγ+i-2, dann ist:
  • Nun ist die Relation zwischen Sj und S(z) zu betrachten. Wenn γ = 1 ist, dann ist S(z) durch die Formel:
  • gegeben. Andererseits kann Gleichung 3 wie folgt umgeformt werden:
  • Durch Umrechnung von (2t - 1 - j) zu j in Gleichung 7 erhält man
  • Durch Vergleichen der Gleichungen 6 und 8 erhält man
  • Dadurch kann S(z) durch Sj gegeben sein.
  • Aus der obigen Relation kann Gleichung 3 durch
  • gegeben sein. Als nächstes wird Gleichung 3 wie folgt umgeformt
  • Nun lasse man E einen Satz von Fehlerorten sein (i ist Element hiervon und ei = 0), und
  • Dann wird Gleichung 13
  • Gleichung 17 wird Schlüsselgleichung genannt und kann normalerweise nicht gelöst werden. Jedoch hat, wenn die Anzahl der Fehler geringer als t ist, jedes Fehlermuster ein anderes Syndrom-Polynom, so daß η(z) und σ(z) eindeutig aus S(z) bestimmt werden können.
  • Fig. 13 zeigt ein Flußdiagramm zum Bestimmen einer Lösung der Schlüsselgleichung unter Benutzung von Euclids Algorithmus. Dessen Symbol [.] steht für einen Divisionsquotienten. Aus Gleichung 14 folgt, das Fehler- Lokator-Polynom σ(z) ist,
  • Durch Ersetzen der Stellen α&sub1; bis αn in σ(z) erhält man eine Fehlerstelle αi die durch
  • σ (αi) = 0 (19)
  • gegeben ist. Diese Methode wird Chiens Algorithmus genannt. Der Fehlerwert ei an der Fehlerstelle i wird aus dem Fehler-Lokator-Polynom σ(z) durch Euclids Algorithmus erhalten, das Fehler-Evaluator-Polynom η(z) und die Fehlerstelle i werden durch Chiens Algorithmus erhalten. Aus Gleichungen 14 und 15 folgt
  • Durch Durchführen formaler Differenzierung aus Gleichung 20 erhält man
  • Durch Substituieren der Fehlerstellen αi für z in Gleichung 22 erhält man
  • Ähnlich wie Gleichung 22 erhält man durch Substituieren von αi in Gleichung 23
  • Aus Gleichung 23 und 24 wird der Fehlerwert durch
  • ei = η(αi)/σ(αi)
  • bestimmt. Wenn der Fehler ein einfacher Fehler ist, wird der Fehlerwert durch
  • ei = η(z) und deg. η(z) = 0 (26)
  • bestimmt.
  • Zum Beispiel wird nun ein RS Code (15, 7, 9) auf GF(2&sup8;) unter Benutzung von Euclids Dekodiermethode dekodiert. Wenn man das primitive Polynom p(X) und das Erzeugungspolynom g(X) als:
  • setzt, dann wird der übertragende Vektor v und der empfangene Vektor r wie folgt sein:
  • v = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  • r = (0, 0, α&sup7;&sup9;, α&sup8;&sup8;, α¹&sup7;&sup5;, α³, 0, 0, 0, 0, 0, 0, 0, 0, 0).
  • Die Syndrome S&sub0; bis S&sub7; für den empfangenen Vektor sind durch
  • S&sub0; = α&sup8;¹ + α&sup9;¹ + α¹&sup7;&sup9; + α&sup8; =α²²&sup4; (29)
  • S&sub1; = α&sup8;³ + α&sup9;&sup4; + α¹&sup8;³ + α¹³ = α&sup7;&sup4; (30)
  • S&sub2; = α²&sup5; + α&sup9;&sup7; + α¹&sup8;&sup7; + α¹&sup5; = α103 (31)
  • S&sub3; = α²&sup7; + α¹&sup0;&sup0; + α¹&sup9;¹ + α²³ = α¹&sup6;&sup0; (32)
  • S&sub4; = α&sup8;&sup9; + α¹&sup9;³ + α¹&sup9;&sup5; + α²&sup8; = α¹&sup4;¹ (33)
  • S&sub5; = α&sup9;¹ + α¹&sup0;&sup6; + α199 + α³³ = α&sup5;&sup5; (34)
  • S&sub6; = α&sup9;³ + α¹&sup0;&sup9; + α¹&sup0;³ + α³&sup8; = α&sup6;&sup7; (35)
  • S&sub7; = α&sup9;³ + α¹¹² + α²&sup0;&sup7; + α&sup4;³ = α²¹¹ (36)
  • Das Syndrom-Polynom S(z) wird durch
  • S(z) = α²²&sup4; + α74z + α1103Z2 + α180z3 + α141z4 + α85z5 + α87z6 + α211z7 (37)
  • gegeben.
  • Da die Anzahl der korrigierbaren Fehler t 4 ist, wird das Goppa-Polynom G(z) durch
  • G(z) = Z³ (38)
  • gegeben.
  • Das Fehler-Lokator-Polynom s(z) und das Fehler- Evaluator-Polynom η(z) wird unter Benutzung des Flußdiagrammes der Fig. 13 bestimmt.
  • Die Anfangswerte werden wie folgt gesetzt:
  • M&sub1; < -- Z²
  • M&sub2;(z) < -- S(z)
  • U&sub1;(z) < -- 0
  • U&sub2;(z) < -- 0
  • U&sub1;'(z) < -- &alpha;&sup0;
  • Schritt 1
  • Q(z) = &alpha;&sup4;&sup4;z + &alpha;¹&sup7;&sup5;
  • R(z) = &alpha;²²&sup8;z&sup6; + &alpha;²&sup4;&sup8;z&sup5; + &alpha;²¹¹z&sup4; + &alpha;&sup4;¹z³ + &alpha;¹&sup9;&sup9;z² + &alpha;¹&sup9;&sup9;z² + &alpha;³&sup6;z + &alpha;&sub1;&sub4;&sub4;
  • U&sub1;(z) = &alpha;&sup4;&sup4;z + &alpha;¹&sup7;&sup5;
  • U&sub2;(z) = &alpha;&sup0;
  • deg R(z) = 6 > t - 1 = 3
  • Die Vorbereitung für den nächsten Schritt (im folgenden wird das gleiche angewendet, ist wie folgt:
  • M&sub1;(z) &larr; M&sub2;(z)
  • M&sub2;(z) &larr; R(z)
  • U&sub1;'(z) &larr; U&sub1;(z)
  • Schritt 2
  • Q(z) = &alpha;²&sup5;³z + &alpha;²&sup4;&sup9;
  • R(z) = &alpha;&sup7;&sup7;z&sup5; + &alpha;²²&sup6;z&sup4; + + &alpha;²³z³ + &alpha;&sup8;&sup5;z² + &alpha;¹³²z + &alpha;¹²&sup5;
  • U&sub1;(z) = &alpha;²&sup7;z² + &alpha;&sup4;&sup7;z + &alpha;¹&sup5;&sup8;
  • U&sub2;(z) = &alpha;&sup4;&sup4;z + &alpha;¹&sup7;&sup5;
  • deg R(z) = 5 > t - 1
  • Schritt 3
  • Q (z) = &alpha;¹&sup5;¹z + &alpha;²²&sup7;
  • R(z) = &alpha;¹&sup8;&sup9;z&sup4; + &alpha;²³&sup9;z³ + ¹³¹z² + &alpha;²²z + &alpha;¹
  • U&sub1;(z) = &alpha;¹&sup7;&sup8;z³ + &alpha;&sup7;&sup4;z² + &alpha;&sup5;&sup5;z + &alpha;²²&sup9;
  • U&sub2;(z) = &alpha;²&sup7;z² + &alpha;&sup4;&sup7;z + &alpha;¹&sup5;&sup4;
  • deg R(z) = 4 > t - 1
  • Schritt 4
  • Q(z) = &alpha;¹&sup8;²Z + &alpha;¹³&sup8;
  • R(z) = &alpha;&sup4;&sup5;z³ + &alpha;²¹&sup6;z² + &alpha;&sup5;&sup6;z + &alpha;&sup4;¹
  • U&sub1;(z) = &alpha;&sup4;&sup5;z³ + &alpha;²¹&sup6;z² + &alpha;&sup5;&sup6;z + &alpha;¹&sup7;&sup5;
  • U&sub2;(z) = &alpha;¹&sup7;&sup5;z³ + &alpha;&sup7;&sup4;z² + &alpha;&sup5;&sup5;z + &alpha;²²&sup9;
  • deg R(z) = 3 > t - 1
  • An diesem Punkt endet das Vorgehen nach Euclids Algorithmus und das Fehlerpolynom &sigma;(z) und das Fehlerberechnungspolynom &eta;(z) sind durch
  • (z) = (&alpha;³&sup5;z&sup4; + &alpha;¹&sup5;&sup6;Z³ + &alpha;&sup7;&sup0;Z² + &alpha;¹&sup4;&sup9;z + &alpha;&sup7;²)/&alpha;³&sup6; = z&sup4; + &alpha;&sup7;&sup0;z³ + &alpha;²³&sup9;z² + &alpha;&sup8;²Z + &alpha;²&sup4;¹ (39)
  • (z) = (&alpha;&sup4;&sup5;z³ + &alpha;²¹&sup6;z² + &alpha;&sup5;&sup6;z + &alpha;&sup4;¹)/&alpha;³&sup6; = &alpha;²¹&sup4;Z³ + &alpha;¹³&sup0;z² + &alpha;²&sup5;&sup5;z + &alpha;²¹&sup0; (40)
  • gegeben.
  • Die Fehlerstelle und der Wert wird aus den Polynomen bestimmt. Die herkömmliche Technik zum Bestimmen einer Fehlerstelle ist Chiens Algorithmus. Wenn die folgenden Werte,
  • &alpha;&sub3; &rarr; &alpha;²&sup5;³, &alpha;&sub4; &rarr; &alpha;²&sup5;², &alpha;&sub5; &rarr; &alpha;251, &alpha;&sub6; &rarr; &alpha;²&sup5;&sup0;,
  • in Gleichung 18 substituiert werden, wird &sigma;(z) = 0, was anzeigt, daß &alpha;²&sup5;³, &alpha;²&sup5;², &alpha;²&sup5;¹ und &alpha;²&sup5;&sup0; wie folgt von &sigma;(z) sind und die Fehlerstellen 3, 4, 5 und 6 sind. Dadurch wird &sigma;(z) gleich
  • &alpha;(z) = (z - &alpha;²&sup5;³)(z - &alpha;²&sup5;²)(z - &alpha;²&sup5;¹)(z - &alpha;¹&sup5;&sup0;).
  • Die Fehlerwerte werden aus den Polynomen bestimmt. Die formale Differentiation &sigma;(z) wird durch
  • &sigma;' (z) = (z - &alpha;²&sup5;³)(z - &alpha;²&sup5;²)(z - &alpha;²&sup5;¹) + (z - &alpha;²&sup5;³)(z - &alpha;252)(z - &alpha;²&sup5;&sup0;) + (z- &alpha;²&sup5;³)(z - &alpha;²&sup5;¹)(z - &alpha;²&sup5;&sup0;) + (z -&alpha;²&sup5;²)(z - &alpha;²&sup5;¹)(Z - &alpha;²&sup5;&sup0;) bestimmt.
  • Die Fehlerwerte e&sub3;, e&sub4;, e&sub5; und e&sub6; für die jeweiligen Fehlerquellen werden durch die Polynome &sigma;(z) und &eta;(z) bestimmt.
  • e3 = &eta;(&alpha;²&sup5;³)/&sigma;'(&alpha;²&sup5;³) = &alpha;¹&sup9;.
  • e4 = &eta;(&alpha;²&sup5;²)/&sigma;'(&alpha;²&sup5;²) = &alpha;&sup8;&sup8;.
  • e5 = &eta;(&alpha;²&sup5;¹)/&sigma;'(&alpha;251) = &alpha;¹&sup7;&sup5;.
  • e6 = &eta;(&alpha;²&sup5;&sup0;)/&sigma;'(&alpha;²&sup5;&sup0;) = &alpha;³.
  • Fig. 14 zeigt in Blockdarstellung einen konventionellen Dekoder aus einem Viel-Stufen-Schiebe-Register 109 zum Weiterleiten des empfangenen kodierten Wortes, einem Addierer 110, einem Syndromberechnungsschaltkreis 111, einem Fehlerstellenpolynom ableitenden Schaltkreis 112, einem Chien suchenden Schaltkreis 113, einem Synchronisationsschaltkreis 114 und einem Sequenzkontrollschaltkreis 115, einer Eingabeschnittstelle 116 zum Aufnehmen kodierter Wörter, und einer Ausgabeschnittstelle 117 zum Senden der korrigierten Information.
  • Im Betrieb wird dann, wenn ein kodiertes Wort in den Synchronisationsschaltkreis 14 durch das Eingabeendgerät 116 eingegeben wird, der Synchronisationsschaltkreis den Kopf des empfangenen Wortes erfassen. Als Antwort auf das Erfassungsergebnis beginnt der Sequenzkontrollschaltkreis 115 seinen Betrieb. Das empfangene kodierte Wort wird also in den Syndromberechnungsschaltkreis 111 durch das viel-Stufen-Schiebe-Register 109 eingegeben. Das berechnende Syndrom aus dem Schaltkreis 111 wird an den Fehlerstellenpolynom ableitenden Schaltkreis 112 gegeben, um ein Fehlerstellenpolynom zu schaffen, das dann in den Chiensuchschaltkreis 113 zur Durchführung der Chiensuche gegeben wird.
  • Wie Fig. 15 in dem Chiensuchschaltkreis zeigt, ist der Koeffizient jedes Bestandteiles des Fehlerpolynoms
  • &sigma;(x) = &sigma;&sub0; + &sigma;1X + &sigma;2X2 + . . . +&sigma;t-1xt-1
  • in ein n-bit Register K gesetzt, in das Taktimpulse eingegeben werden. Wenn eine bestimmte Anzahl von Taktimpulsen eingegeben ist wird die Ausgabe an der Ausgabeschnittstelle 302 Null werden. Wenn die Anzahl der Taktimpulse, die eingegeben ist i ist, dann ist &alpha;i die Wurzel von &sigma;(x). Dieser Prozeß wird Chiensuche genannt. Gleichzeitig ist das aufgenommene vierte Wort aus dem Viel-Stufen-Schiebe-Register 203 sequenziell vom Kopf her ausgegeben. Diese Ausgabe ist mit der Chiensuchoperation, die im Schaltkreis 113 durchgeführt wird, synchronisiert. Wenn sie als Wurzel des Fehlerlokatorpolynoms &sigma;(x) in der Chiensuche gefunden wird, wird die Ausgabe des Viel-Stufen-Schiebe-Registers 203 in dem Korrekturschaltkreis 206 korrigiert.
  • Fig. 16 zeigt einen konventionellen zusammengesetzten Schaltkreis, der sowohl Syndrom und Chiensuchschaltkreise besitzt. In diesem zusammengesetzten Schaltkreis wird ein Syndrom wie folgt bearbeitet. Eine Aufeinanderfolge von 8-bit Wörtern, die an dem Eingabeendgerät 301 aufgenommen wird, wird durch einen Schalter Sx und die Addierer A&sub0;, A&sub1;, . . . A&sub1;&sub5; in ein Galois-Feld GF(2&sup8;) in ein Array von 8-bit Registern L&sub0;, L&sub1;, . . . L&sub1;&sub5; eingegeben, die zum Zwischenspeichern geleert wurden. Die zwischengespeicherten Inhalte der Register L&sub1;, L&sub2;, . . . , L&sub1;&sub5; werden mit den konstanten &alpha;, &alpha;2, . . . , &alpha;¹&sup5; im Galois-Feld GF(2&sup8;) in die Multiplizierer B&sub1;, B&sub2;, . . . B&sub1;&sub5; multipliziert und an die Addierer A&sub1;, A&sub2;, . . . A&sub1;&sub5; zum Berechnen der Summen mit der nächsten Eingabe an der Eingabestelle 301 gegeben. Die Summen werden in den Registern L&sub1;, L&sub2;, . . . L&sub1;&sub5; zwischengespeichert. Der Inhalt des Registers L&sub1; wird auf die nächste Eingabe ohne Multiplikation im Addierer A&sub0; addiert und die Summe wird in das Register L&sub0; zwischengespeichert. Wenn alle aufgenommenen Wörter eingegeben sind, werden die Schalter Sw0, Sw1, . . . Sw15 an die Kontakte U gebracht, so daß die berechneten Syndrome durch die Register L&sub0;, L&sub1;, . . L&sub1;&sub5; nacheinander geschoben werden und an der Ausgabestelle 303 ausgegeben werden.
  • Die Chiensuche wird wie folgt durchgeführt. Die Inhalte der Register L&sub0;, L&sub1;, . . . L&sub8; werden in den Summierschaltkreis 304 gegeben, um die Summe der Chienalgorithmen
  • 8
  • &Sigma; &sigma;j(&alpha;j)i
  • j=0
  • an die Ausgabestelle 302 zu geben.
  • Der obige konventionelle Dekoder hat die folgenden Nachteile.
  • Zunächst benötigt der Prozeß sehr viel Zeit, da der Algorithmus zum Auffinden der Fehlerstellen und der Auswertepolynome völlig von der Durchführung des Programms abhängig ist.
  • Als zweites wird der Fehlerstellen ableitende Schaltkreis kompliziert, da das aufgenommene Wort in das Viel-Stufen-Schiebe-Register zwischengespeichert wird, das auf der Basis der Fehlerstelle, die in dem Chiensuchschaltkreis gefunden ist, korrigiert, was eine große Anzahl von Stufen des Viel-Stufen-Schiebe-Registers erfordert.
  • Als drittes wird, wenn der Code zur Bearbeitung verkürzt wird, z. B. die Stelle 158 bis 258 als 0 angenommen und Fehler bis zur Stelle 148 zur Korrektur erfaßt werden sollen, das konventionelle System eine Berechnung für &alpha;&supmin;²&sup5;&sup4;, &alpha;&supmin;²&sup5;³, . . . , &alpha;&supmin;¹&sup4;&sup8; durchführen, die als 0 angenommen wurden und nicht wirklich in dem verkürzten Prozeß existieren, so daß Computerzeit verschwendet wird. Wenn der multiplizierende Schaltkreis durch einen dividierenden Schaltkreis ersetzt wird und der anfängliche Wert i = 254 zur Berechnung benutzt wird, ist die Verzögerungszeit ausreichend, um den obigen Nachteil zu eliminieren. Jedoch ist der dividierende Schaltkreis im allgemeinen komplizierter und benötigt mehr Zeit zur Berechnung als der multiplizierende Schaltkreis.
  • Als viertes wird mit einem Kodierer, der häufig mit dem Dekodierer angeordnet ist, sogar der zusammengesetzte Schaltkreis sowohl Syndrom und Chiensuchschaltkreise besitzen, aber immer noch in seiner Größe verbesserbar bleiben.
  • Zusammenfassung der Erfindung
  • Es ist Aufgabe der Erfindung, einen Hochgeschwindigkeitsdekodierer zu schaffen, der eine geringere Anzahl von Schritten im Algorithmus zum Auffinden der Fehlerstellen und der Auswertepolynome benötigt.
  • Es ist eine weitere Aufgabe der Erfindung, einen Dekodierer zu schaffen, der kein Viel-Stufen-Schiebe- Register benutzt, um so die Behandlung eines langen kodierten Wortes zu erleichtern.
  • Es ist eine weitere Aufgabe der Erfindung, einen Dekodierer zu schaffen, der dazu fähig ist, Berechnungen an Orten, wo keine tatsächlichen Werte vorliegen, ohne Benutzung eines Divisionsschaltkreises auszulassen, um so eine Fehlerstelle mit geringerer Verzögerungszeit aufzufinden.
  • Es ist eine weitere Aufgabe der Erfindung, einen kompakten Dekoder/Kodierschaltkreis zu schaffen.
  • Nach einem Vorschlag der Erfindung wird der Grad des n-ten Polynoms durch eine Vorrichtung bestimmt, die aus arithmetischen Einheiten besteht, wodurch die Anzahl der Schritte in Algorithmen zur Bestimmung des Polynoms verringert wird.
  • Nach einem anderen Vorschlag der Erfindung wird das aufgenommene Wort in dem Speicher gespeichert, und die Adresse des Speichers wird auf der Basis der Fehlerstelle von dem Chiensuchschaltkreis bestimmt, um das aufgenommene Wort an der Adresse zu korrigieren, wodurch ein Viel-Stufen-Schiebe-Register eliminiert wird.
  • Nach wiederum einem anderen Vorschlag der Erfindung werden die Koeffizientenregister eines Chiensuchschaltkreises und die Addierer für die Elemente eines Galoisfeldes derart kombiniert, daß keine Berechnung für die Elemente des Galois-Feldes ausgeführt wird, die mit Fehlerstellen korrespondieren, die nicht existieren.
  • Nach wiederum einem anderen Vorschlag der Erfindung teilen sich Dekoder und Kodierer einige Hardware- Komponenten, um so ein kompaktes System zu schaffen.
  • Weitere Aufgaben, Merkmale und Vorteile der Erfindung werden aus der nachfolgenden Beschreibung in Zusammenhang mit den beigefügten Zeichnungen verdeutlicht.
  • Kurzbezeichnung der Zeichnungen
  • Fig. 1 zeigt ein Blockdiagramm eines Dekodiersystems, das die vorliegende Erfindung verkörpert.
  • Fig. 2 ist ein Blockdiagramm des Syndrom-Chiensuchberechnungsschaltkreises der Fig. 1.
  • Fig. 3 ist ein Blockdiagramm eines logischen Schaltkreises des finiten Feldes für das System der Fig. 1.
  • Fig. 4 ist ein Blockdiagramm des Programmabschnittes des logischen Schaltkreises des finiten Feldes der Fig. 3.
  • Fig. 5 ist ein Blockdiagramm der arithmetischen und der logischen Sektion des Systems der Fig. 3.
  • Fig. 6 ist ein Blockdiagramm des Galois-logischen Teils der Fig. 3.
  • Fig. 7 ist ein Blockdiagramm der Galois-logischen Einheit zur Benutzung in dem Galoislogischen Abschnitt der Fig. 6.
  • Fig. 8 ist ein Diagramm eines logischen Schaltkreises des Grad-Zwischenspeicher-Schaltkreises zur Benutzung in dem arithmetischen und logischen Abschnitt der Fig. 5.
  • Fig. 9 ist ein Beispiel eines logischen Schaltkreisdiagramms des Quadrier-Schaltkreises des Galois-logischen Einheit der Fig. 7.
  • Fig. 10 (A) und (B) sind Tafeln, die die Inhalte der RAM-Speicher Ma und Mb und eines Datenregister-Files enthalten, der nach dem Algorithmus geändert wird.
  • Fig. 11 ist ein detailliertes Blockdiagramm des Chiensuchschaltkreises der Fig. 1.
  • Fig. 12 ist ein Blockdiagramm des Schaltkreises der sowohl als Syndromberechnungsschaltkreis und als Prüfsymbolberechnungsschaltkreis zur Kodierung benutzt wird.
  • Fig. 13 ist ein Flußdiagramm, das den Algorithmus zur Bestimmung einer Fehlerstelle in dem Chienschaltkreis zeigt.
  • Fig. 14 ist ein Blockdiagramm eines herkömmlichen Dekoders.
  • Fig. 15 ist ein Blockdiagramm eines herkömmlichen Chienschaltkreises.
  • Fig. 16 zeigt einen Schaltkreis, der sowohl zur konventionellen Syndromberechnung und als Chiensuchschaltkreis benutzt wird.
  • Beschreibung der bevorzugten Ausführungsbeispiele
  • Bezugnehmend auf Fig. 1 ist ein Dekodiersystem nach der vorliegenden Erfindung gezeigt. Es besteht aus einem Finites-Feld Logik-Schaltkreis 123 zur Berechnung eines finiten Feldes, wie z. B. Ableiten einer Fehlerstelle oder eines Fehlerpolynoms, einem Verzögerungsspeicher 124 zum Speichern eines aufgenommenen Codewortes, einem Syndrom/Chiensuchberechnungsschaltkreis 125 zur Durchführung einer Syndromberechnung oder einer Chiensuchoperation, und einem Steuerschaltkreis 126 zur Überwachung des Finites-Feld Logik-Schaltkreises 123 des Syndrom/Chiensuchberechnungsschaltkreises 125 und des Verzögerungsspeichers 124, um diese zu steuern und die Übertragung von Daten zwischen diesen auf Kodieren oder Dekodieren zu justieren und eine Fehlerstellenadressausgabe aus dem Syndrom/Chiensuchberechnungsschaltkreis zu speichern.
  • Wie Fig. 2 zeigt, besteht der Syndrom/Chiensuchberechnungsschaltkreis 125 aus einem Syndrom/Chiensuchlogikabschnitt 118, der die gleiche Funktion besitzt, wie der konventionelle Schaltkreis in einem Adresserzeugungsschaltkreis 119, der synchron mit dem Chiensuchlogikschaltkreis 118 zu betreiben ist. Daher wird der Adresserzeugungsschaltkreis 119 in Form eines Taktschaltkreises des Substraktionstyps angeordnet. Der Syndrom/Chiensuchschaltkreis 125 besitzt auch einen Takteingabeanschluß 120, einen Ausgabeanschluß 121 des Adresserzeugungsschaltkreises 119 und eine Ausgabestelle 122, die anzeigt, daß die Ausgabe an der Stelle 121 die Wurzel eines Fehlerstellenpolynoms erfaßt hat. Wie Fig. 1 zeigt, sind der Finites-Feld Logik-Schaltkreis 123, der Verzögerungsspeicher 124 und der Syndrom/Chiensuchlogikschaltkreis 125 jeweils mit Daten und Steuerungsbussen 127 und 128 verbunden. Ein Anschluß des Speichers 124 ist mit einem externen Datenbus 129 für die Eingabe eines aufgenommenen kodierten Wortes und der Ausgabe des korrigierten Wortes verbunden.
  • Im Betrieb wird ein aufgenommenes kodiertes Wort an den Verzögerungsspeicher 124 durch einen externen Datenbus 129 gegeben. Das kodierte Wort wird dann an den Syndrom/Chiensuchberechnungsschaltkreis 125 gegeben, um ein Syndrom zu schaffen, von dem der Finites-Feld Logik-Schaltkreis 123 ein Fehlerstellen- und ein Bestimmungspolynom ableitet. Das Fehlerstellenpolynom wird an den Syndrom/Chiensuchlogikabschnitt 118 zur Durchführung der Chiensuche gegeben, um den Finites- Feld Logikschaltkreis 123 eine Adresse korrespondierend mit einer Wurzel eines Fehlerstellenpolynoms einzugeben. Der Adresserzeugungsschaltkreis 119 zur Ausgabe der Adresse wird als Subtraktionszähler synchron mit dem Syndrom/Chiensuchlogikschaltkreis 118 betrieben. Der Finites-Feld Logikschaltkreis 123 berechnet einen Fehlerwert aus dem Chiensuchergebnis und korrigiert den Inhalt an der Fehlerstellenadresse des Verzögerungsspeichers 124, der von dem Syndrom/Chiensuchalgorithmus 125 empfangen wurde. Die Daten- und Kontrollsignale im obigen Betrieb werden durch den Datenbus 127 und den Kontrollbus 128 übermittelt. Darauf wird der korrigierte Inhalt der Ausgabe auf den externen Bus 129 durch den Speicher 124 ausgegeben.
  • Wie im obigen beschrieben, arbeitet der Adresserzeugungsschalter 119 synchron mit dem Syndrom/Chiensuchschaltkreis 118, um eine Fehlerstellenadresse in dem Speicher 124 zu berechnen, und der Fehlerkorrekturcode kann durch den Finites-Feld Logikschaltkreis 123 oder den Verzögerungsspeicher 124 zum Speichern des aufgenommenen kodierten Wortes dekodiert werden, so daß ein viel-Stufen-Schieberegister, das in der herkömmlichen Bauweise benötigt wird, eliminiert werden kann.
  • Obwohl das obige Ausführungsbeispiel auf das Dekodieren von nicht-binären kodierten Worten angewendet wurde, das die Berechnung eines Fehlerwertes erfordert, kann die Erfindung auch auf das Dekodieren von binären kodierten Wörtern angewendet werden, die keine solche Berechnung erfordern. In diesem Fall kann der Inhalt des Verzögerungsspeichers 124 invertiert werden, indem die Adressausgabe des Syndrom/Chiensuchberechnungsschaltkreises 125 verwendet wird.
  • Bezugnehmend nun auf Fig. 3 wird ein Finites-Feld Logikschaltkreis dargestellt, der aus einem Programmabschnitt I, einem arithmetischen und logischen Abschnitt II und einem Galois-logischen Abschnitt III besteht.
  • In Fig. 4, in dem Programmabschnitt I, wird ein, eine Sprungadresse setzender Schaltkreis 1 vorgesehen, um eine Adresse festzusetzen, an die gesprungen wird. Ein Programmzähler 2 besitzt Adressen von 0 bis 1023 und ermöglicht entweder bedingtes oder unbedingtes Springen abhängig von einem "Zustandsmerker" (engl. flag) -Status. Ein Programm ROM 3 enthält ein ausführbares Steuerprogramm. Ein Zwischenspeicher-Register 4 speichert Kommandos.
  • Wie Fig. 5 darstellt, werden, in dem arithmetischen Logikabschnitt 11 Zähler 5 und 6 dazu vorgesehen, aufwärts bis 81 oder abwärts bis 0 zu zählen. Adressdaten, Zwischenspeicher-Schaltkreise 7 und 8 werden z. B. für Adressen des Indexsystems benutzt. Adressaddierer 9 und 10 besitzen z. B. 6-bit Konfiguration. Der obige sprungsetzende Schaltkreis enthält Start, Rücksetz und Steuerungsschaltkreise des Dekoders und erlaubt bedingtes Springen abhängig von externen oder internen "Zustandsmerker"-Status.
  • Wie Fig. 6 zeigt, werden, in dem Galois-logischen Abschnitt III "Zustandsmerker"-Register F&sub1; und F&sub2; im wesentlichen für Eingabe und Ausgabezwecke jeweils benutzt. RAM A 11 und RAM B 12 sind arbeitende Random Access Memories. In Fig. 5 wird eine arithmetische und logische Einheit (ALU) 13 dargestellt. Ein Datenregister-File 14 besitzt z. B. eine Kapazität von 5 Bits · 4 Wörtern und vier Adressen AD1, AD2, AD3 und AD4. Ein Grad-Zwischenspeicher-Schaltkreis 15 gibt dem Datenregister-File 14 ein schreibverbietendes Signal als Antwort auf eine bestimmte "Zustandsmerker"- Setzung. Ein Selektor 16 wird vorgesehen, um Datenleitungen (Ca, A, P, Cb) auszuwählen. Register 17 und 18 werden vorgesehen, um Datenleitungen (R, A, P) auszuwählen und zu verschieben, die an die ALU 13 eingeben. A steht für Daten für die ALU 13, P steht für Daten, Ca für einen Wert des Zählers 5, Cb für einen Wert des Zählers 6, R für einen Wert des Datenfiles 14. "Zustandsmerker"-Register F&sub3; und F&sub4; speichern die Status der jeweiligen Zähler.
  • Fig. 6 besitzt eine Galois-logische Einheit (GLU) 19, einen logischen Prozessor 20 zum Durchführen der Operation X + Z, X/Y, X*Y + Z, und X²*Y + Z in dem Galois-Feld. F&sub5; ist eine Status "Zustandsmerker"- Ausgabe aus der GLU 19, und F&sub6; und F&sub7; sind Status "Zustandsmerker"-Ausgaben von der ALU 13. Ein inverses Element ROM 21 ist ein ROM zur Division in dem Galois- Feld und besitzt eine Kapazität von 256 bytes in diesem Ausführungsbeispiel. Register 22, 23 und 24 werden vorgesehen, um Datenleitungen auszuwählen und zwischenzuspeichern (P, A, B), die an die GLU 19 gegeben werden. P steht für Daten, A und B sind Kontakte zum Auswählen der Daten von RAM 11 und RAM 12 jeweils. Selektoren 25 und 26 besitzen ein Eingabeendgerät 1 an das Daten aus der Umwelt gefüttert werden, so daß der Syndrom oder Chiensuchschaltkreis und ein Endgerät V an das die Berechnungsergebnisse der GLU 19 gegeben werden. Ein Selektor 27 für die Datenlinien (V, A, B, R) gibt an den Bus aus. St, Er und Ew sind jeweils "Zustandsmerker"- Register zum Anzeigen ob, oder ob nicht, die Einheit arbeitet, ob ein Bedürfnis zum Lesen vom Bus besteht, und ob ein Bedürfnis zur Ausgabe von Daten an den Bus besteht.
  • In Fig. 7 ist die GLU 19 dargestellt, bestehend aus einem Quadrier-Schaltkreis 28, fünf Selektoren 29, 30, 31, 32 und 33, einem multiplizierenden Schaltkreis 34 in dem Galois-Feld, einem addierenden Schaltkreis 35 in dem Galois-Feld und einem Zwischenspeicher-Register 36.
  • In Fig. 8 wird der Grad-Zwischenspeicher-Schaltkreis 15, der aus einem Endgerät M1 besteht, an das ein Grad-Zwischenspeicher-Kommando gegeben wird, vier Endgeräte W1, W2, W3 und W4 an die jeweiligen Schreibkommandos an Adressen AD1, AD2, AD3 und AD4 gefüttert werden und einem "Zustandsmerker"-Signal-Eingabeendgerät FL gezeigt. Vier Endgeräte EN1, EN2, EN3 und EN4 an die jeweilige Schreib-Ermöglichungssignale an den Adressen AD1, AD2, AD3 und AD4 Flip-Flops R1, R2, R3 und R4, fünf Gatterschaltkreise G1, G2, G3, G4 und GS, einem Takteingabeendgerät T und einem Rücksetzsignal- Eingabeendgerät R.
  • In Fig. 9 ist der Quadrier-Schaltkreis gezeigt, in dem ein Element X in dem Galois-Feld an das Endgerät A0, A1, . . . , A7 eingegeben wird, quadriert wird und der Wert X² an die Endgeräte Y0, Y1, . . . , Y7 ausgegeben wird. Zum Beispiel ist, wenn &alpha;' (01000000) eingegeben wird und &alpha;² (00100000) ausgegeben wird, A0 = 0, A1 = 1 und A2 = A3 = . . . A7 = 0 eingegeben und Y0 = Y1 = 0, Y2 = 1, Y3 = Y4 = . . . Y7 = 0 ausgegeben. In Fig. 4, 5 und 6 wird die Zahl benachbart zu / die Anzahl der Leitungen anzeigen. Zum Beispiel wird /6 sechs parallele Leitungen anzeigen.
  • Wie der Dekodierer eine Fehlerstelle bestimmt und einen Wert aus einem Syndrom, wird unter Bezugnahme auf die Zeichnungen beschrieben werden.
  • Als erstes wird beschrieben, wie die Anfangswerte bis zum Punkt b der Fig. 13 gesetzt werden. Die Register 17, 18, 22, 23 und 24, der Datenregister-File 14, die Zähler, das RAM A 11, das RAM B 12 werden freigemacht. Die Koeffizienten "01" von M&sub1;(z) = z¹&sup6; und die Koeffizienten "01" von U1'(z) = 1 werden an das RAM A 11 gegeben. Der Ausdruck "xx" bedeutet Hexadezimaldaten. Die Zähler 5 und 6, die die RAM-Adressen zum Schreiben der obigen Daten anzeigen, stellen die Grade der entsprechenden Polynome dar. Zum Beispiel werden, was die Koeffizienten "0&sub1;" von M&sub1;(z) = z¹&sup6; und die Koeffizienten "01" von U&sub1;'(z) = 1 an die Adressen "10" und "00" geschrieben. Die Indexregister ADLA 7 und ADLB 8 werden benutzt, so daß M&sub2;(z), U&sub1;'(z), M&sub1;(z) und U&sub2;(z) nicht überlappen dürfen. Der höchste Grad 10' von M&sub1;(z) = z¹&sup6; wird an AD2 des Datenregisterfiles 14 gegeben.
  • Die Syndromdaten S&sub1;&sub5;, S&sub1;&sub4;, . . . , S&sub1;, S&sub0;, die aus der Syndromberechnung erhalten werden, werden sequentiell vom höchsten Grad an an das Register 24 durch das Endgerät 8 als Koeffizienten eines Syndrompolynoms S(z) = S&sub1;&sub5; z¹&sup5; + S&sub1;&sub4; z¹&sup4; + . . . + S&sub1;z + S&sub0;. Die Koeffizienten S&sub1;&sub5;, S&sub1;&sub4;, . . . , S&sub1;, S&sub0;, die in dem Register 24 zwischengespeichert sind, werden an das RAM A 11 gegeben, wie sie sind. An diesem Punkt, wenn die GLU 19 bemerkt, daß die Koeffizienten von S(z) nicht "00" sind, gibt sie eine "1" an das "Zustandsmerker"-Register F5. Zur gleichen Zeit wird eine Unterscheidung durch den Selektor 16 gemacht, so daß die Daten Ca des Zählers 5 an AD1 des Registerfiles 14 gegeben werden. Wenn das Eingeben der S(z) an das RAM A 11 beendet ist, wird der höchste Grad von S(z) an AD1 des Registerfiles 14 mittels des Grad- Zwischenspeicher-Schaltkreises 15, wie im folgenden beschrieben, gespeichert. Die Datenzuordnungen in den RAMs 11 und 12 und dem Datenregisterfile 14 zum Zeitpunkt, wenn das erste Setzen beendet ist (am Punkt b der Fig. 13) werden in der Spalte a der Fig. 10 dargestellt.
  • Der Betrieb des Grad-Zwischenspeicher-Schaltkreises, eines der Merkmale der Erfindung, wird im folgenden beschrieben. Ein Beispiel des Grad-Zwischenspeicherregisters ist in Fig. 8 dargestellt. In diesem Beispiel wird, wenn das Endgerät M1 gleich "1" ist der Grad- Zwischenspeicher-Schaltkreis arbeiten. Das Signal "1" an den Endgeräte W1, W2, W3 oder W4 bedeutet ein Schreibkommando an AD1, AD2, AD3 oder AD4 des Datenregisterfiles 14 und das Signal "0" an dem Ausgabeendgerät EN1, EN2, EN3 oder EN4 macht AD1, AD2, AD3 oder AD4 ein Schreiben möglich. Zum Beispiel kann, wenn es erwünscht ist, dem höchsten Grad von S(z) an die Adresse AD1 des Datenregister-Files 14 zu schieben, die folgende Prozedur durchgeführt werden.
  • Als erstes wird ein Signal "1" an das Endgerät Ml gegeben, bevor die Koeffizienten von S(z) an das Register 24 gegeben werden. Das "Zustandsmerker"-Eingabeendgerät FL wird an das "Zustandsmerker"-Register F5 am Endgerät T5 angeschlossen und hat eine Ausgabe "0". Ein Signal "1" wird an das Endgerät W1 zum Schreiben von AD1 gegeben. Die Eingabe "1" an das Endgerät M1 wird in dem Flip-Flop R1 zwischengespeichert in zeitlicher Übereinstimmung mit dem Takt T. Wenn die Ausgabe Q des Flip- Flops R1 "0" ist oder seine Ausgabe QC "1" ist, gibt das Gatter G1 auf jeden Fall "1" aus, so daß das Ausgabeendgerät EN1 immer "0" ausgibt, wenn das Eingabeendgerät W1 "1" ist, wodurch das Schreiben ermöglicht wird. Die Flip-Flops R2 und R3 werden unter Rücksetzbedingungen gehalten.
  • Andererseits wird, wenn ein Signal "1" am Endgerät Ml zwischengespeichert ist und die Ausgabe Q des Flip- Flops R1 "1" ist oder die Ausgabe QC "0" ist, die Bedingung QC des Flip-Flops R3 an das Gatter G1 ausgegeben. Die Flip-Flops R2 und R3 werden aus der Rücksetzbedingung für eine halbe Takteinheit gelöst, nachdem Q des Flip-Fops R1 "1" wird. An diesem Punkt wird ein Signal "1" an QC des Flip-Flops R3 ausgegeben, so daß das Gatter G1 "1" ausgibt. Wenn das Endgerät W1 "1" ist, gibt das Ausgabeendgerät EN1 "0" aus, wodurch Schreiben ermöglicht gesetzt wird.
  • Wenn die ersten Nicht-Null Daten eingegeben werden, wird darauf S(z) an die GLU 19 gegeben und das "Zustandsmerker"-Register FS wird "1". Wenn das Endgerät FL "1" aufnimmt, speichert das Flip-Flop R2 "1" zum Zeitpunkt des Ansteigens des Taktimpulses T zwischen. Gleichzeitig werden die Daten des Zählers 5 an AD1 des Datenregisterfiles 14 zwischengespeichert. Die Daten sind dann der höchste Grad von S(z). Nach dem Zwischenspeichern von "1", ändert das Flip-Flop R2 sein Q von "0" zu "1". Die Signaländerung gibt "1" an das Taktendgerät des Flip-Flops R3, das daraufhin seine Ausgabe QC auf "0" ändert und dieses hält, bis ein Rückstellsignal an das Flip-Flop gegeben ist. Die Signaländerung auf "0" an QC bewirkt, daß das Gatter G1 "0" ausgibt. Dies ist ein Schreiben-Unterbinden- Kommando an den Registerdaten-File 14, wodurch die das Schreiben ermöglichenden Anschlüsse EN1, EN2, EN3 und EN4 auf "1" gebracht werden, unabhängig von den Bedingungen an den Schreibsteuer-Eingabeanschlüssen W1, W2, W3 und W4. Demzufolge wird keine Schreiboperation im Datenregister-File 14 ausgeführt. Diese Bedingung wird beibehalten, bis das Kommando auf dem Grad- Zwischenspeicherschaltkreis freigegeben wird oder der Anschluß M1 "0" aufnimmt, um dem Flip-Flop R1 zu erlauben, "0" zwischenzuspeichern, so daß der höchste Grad von S(z) an AD1 des Datenregisterfiles 14 gespeichert wird.
  • Der Betrieb des Schleifenabschnittes der die Punkte j und 1 der Fig. 13 enthält, wird nun beschrieben. Wie am besten in Fig. 13 dargestellt ist, wird die Division und Aufsummierung der Produkte eines Polynoms in dem Galois-Feld benutzt. In dem Dekoder nach der Erfindung werden diese Arbeitsschritte in der GLU 19 durchgeführt. Ein Aufbau der GLU 19 wird in Fig. 7 dargestellt. Ein Quadrierschaltkreis 28 in dem Galois-Feld ist aus einer Gruppe von Gattern zusammengesetzt, um so X² auszugeben, wenn ein Element X in das Galois-Feld eingegeben wird. In GF(2&sup8;) zum Beispiel ist dies ein logischer Schaltkreis, wie er in Fig. 9 dargestellt ist. Ein inverses Element-ROM-Schaltkreis 21 ist dazu ausgelegt, Y-1 auszugeben, wenn ein Element Y in dem Galois-Feld als Adresse eingegeben wird. Ein Multiplizierschaltkreis 34 in dem Galois-Feld besteht aus einer Gruppe von Gattern, um so ein Produkt der Ausgaben aus den Wählelementen 29 und 30 auszuwählen. Ein Additionsschaltkreis 35 in dem Galois-Feld besteht aus einer Gruppe von Gattern, die in Form einer XOR-Logik angeordnet sind, um eine Summe von Ausgaben aus dem Register 24 und dem Selektor 29 auszugeben. Mit diesen logischen Schaltkreisen und Selektoren 29, 30, 31 und 32 können verschiedene Operationen wie z. B. X + Z, X/Y, X * Y + Z und X²*Y + Z durchgeführt werden. Der Zwischenspeicher 36 und der Selektor 33 ermöglichen auch einen Pipelineprozeß.
  • Als erstes wird der Algorithmus der Division eines Polynoms beschrieben. Die Register X 22 und Y 23 werden freigelöscht. Der Koeffizient des höchsten Grades eines Polynoms M&sub1;(z) wird an das Register X 22 gegeben und die Koeffizienten eines Polynoms M&sub2;(z) werden an das Register Y 23 gegeben, um eine Division X/Y durchzuführen. Diese Ausgabe ist der Koeffizient des höchsten Grades eines Quotientenpolynoms Q(z). Der höchste Grad des Quotientenpolynoms Q(z) kann durch ein Füttern des Registers T 18 mit den höchsten Grad von M&sub1;(z) das an AD2 des Datenregister-Files 14 gespeichert ist, erhalten werden, und das Register U 17 mit dem höchsten Grad von M&sub2;(z) an AD1 des Datenregisterfiles gespeichert, um eine Subtraktion T - U in der ALU 13 durchzuführen. Dieses Ergebnis wird an AD1 des Datenregisterfiles 14 gespeichert.
  • Dann werden die Koeffizienten des obigen Quotientenpolynoms Q(z) in dem Register Y 23 zwischengespeichert, und die Koeffizienten der Grade niedriger als der höchste Grad von M&sub2;(z) werden in das Register X 22 in der Reihenfolge ihres Grades eingegeben und die Koeffizienten niedrigeren Grades als die höheren Grades von M&sub1;(z) werden an das Register Z 24 in der Reihenfolge ihres Grades gespeichert, um eine Produkt und Additionsoperation X*Y + Z durchzuführen, um das verbleibende Polynom für die Koeffizienten von Q(z) zu finden. An diesem Punkt wird der Grad-Zwischenspeicher-Schaltkreis betrieben, um die höchsten Grade des verbleibenden Polynoms an AD2 des Datenregisterfiles 14 zu speichern. Das hierdurch erhaltene Polynom wird auch auf dem RAM B 12 überschrieben, der M&sub1;(z) speichert. Zu diesem Zeitpunkt wird "00" an die Adresse geschrieben, wo der Koeffizient des höchsten Grades von M&sub1;(z) gespeichert ist.
  • Als nächstes wird ein Teil des Betriebes zum Bestimmen von U&sub1;(z) beschrieben, indem die Tatsache benutzt wird, daß der Koeffizient des höchsten Grades des gleichen Q(z) in dem Register Y 23 zwischengespeichert ist. Als erstes hatten die Grad-Daten an die Koeffizienten von Q(z) oder die Daten an AD4 des Datenregisterfiles 14 und die höchsten Grad-Daten von U&sub1;'(z) oder die Daten an AD3 des Datenregisterfiles 14 in die ALU 13 addiert, um den höchsten Grad des Ausgabepolynoms zu bestimmen. Dann werden die Koeffizientendaten von Q(z), die in dem Register Y 23 zwischengespeichert sind, so wie sie sind zwischengespeichert. Die Koeffizienten von U&sub1;'(z) an das Register X 22 in Reihenfolge nach dem höchsten Grad eingegeben und die Koeffizienten U&sub2;(z) werden an das Register Z 24 in Reihenfolge vom höchsten Grad des Ausgabepolynoms an eingegeben, um eine Operation X*Y + Z in der GLU 19 durchzuführen und die Ausgabe an das RAM B 12, wo U&sub2;(z) gespeichert ist, zu überschreiben.
  • Die obige Operation wird wiederholt, bis der 0te- Gradkoeffizient von Q(z) bestimmt ist, wodurch R(z) und U&sub1;(z) gegeben sind. Da die U&sub1;'(z)-Daten in dem RAM A 11 verbleiben, kann U&sub2;(z) bestimmt werden, ohne jegliche Berechnung auszuführen. Die Datenzuordnung in RAM A 11 und RAM B 12 und dem Datenregisterfile 14 nach Beendigung des ersten Durchlaufs der Operation am Punkt j der Fig. 13 ist in der Spalte b der Fig. 10 gezeigt.
  • Der Betrieb unterhalb des Punktes j der Fig. 13 wird nun beschrieben. Um den Grad von R(z) zu bestimmen, werden die Grad-Daten von R(z) oder die Daten an AD2 des Datenregister-Files 14 in das Register U 17 gegeben und die Konstante t - 1 wird in das Register T 18 gegeben, um die Operation T - U in der ALU 13 durchzuführen. Als Antwort auf ein Arbeitsmoduskommande wird das "Zustandsmerker"-Register F7 eine true/false-Entscheidung unter einer der Bedingungen T &ge; U, T > U, T &le; U, oder T < U fällen. Im Fall von true gibt es "1" aus. Hier wird angenommen, daß ein Modus von T &ge; U ausgewählt ist. Nun soll das "Zustandsmerker"-Register F7 in Beziehung auf T - U Berechnungsergebnisse untersucht werden. Das "Zustandsmerker"-Register F7 wird mit der Eingabe des Sprungadress-Setzschaltkreises 1 verbunden, so daß dann, wenn der Zustandsmerker F7 "1" ist, als Antwort auf ein bedingtes Sprungkommando gesprungen wird und die Wiederholungsschleife verlassen wird. Wenn Zustandsmerker F7 "0" oder R(z) > als t - 1, wird die oben bezeichnete Operation wiederholt nach der Operation W nach der Fig. 13. Dies jedoch fordert nur offensichtliche Veränderungen der Datenzuordnung in RAMs 11 und 12 und dem Datenregisterfile 14. Das bedeutet, daß in einem zweiten Zyklus der Operation die Datenausgabe aus dem RAM A 11 im ersten Operationszyklus aus dem RAM B 12 ausgegeben wird und die Daten von dem RAM B 12 aus dem RAM A 11 ausgegeben werden. Die Daten aus dem RAM A 11 werden an das RAM B 12 ausgegeben und die Daten aus dem RAM B 12 werden an das RAM A 11 ausgegeben, um die Datenzuordnung bei AD1 und AD2 des Datenregisterfiles 14 vorzunehmen, ohne die Operation zu verändern. Auf diese Art wird die Verarbeitungsgeschwindigkeit vergrößert, indem zwei RAMs vorgesehen werden, um Datentransfer zu eleminieren. Die Operation bei dem wenigstens drei Schritte mit Hilfe eines einzelnen RAMs benötigt, kann in zwei Schritten durch Lesen der Eingabedaten aus dem ersten RAM und Eingeben des Ergebnisses der Berechnung an das zweite RAM vorgenommen werden, um die Verarbeitungsgeschwindigkeit zu steigern.
  • Die entsprechenden Datenzuordnungen in den RAMs A 11 und B 12 und den Datenregisterfile 14 in dem zweiten Durchlauf an den Punkten von j und l sind jeweils in den Spalten d und e der Fig. 10 gezeigt. Die Datenzuordnungen an den Punkten j und l in den geraden und den ungeraden Anzahlen von Verarbeitungszyklen sind in den Spalten f und g oder h oder i der Fig. 10 jeweils gezeigt. Die Datenzuordnungen im Fall des höchsten Grades von R(z) unterhalb von t - 1 und wobei die Bearbeitung die Schleife verläßt, werden in der Spalte j in der Fig. 10 dargestellt. In der Vorbereitung für die Chiensuche werden &eta;(z) und &sigma;(z) immer in RAM A 11 gespeichert.
  • Anschließend wird das Vorgehen zum Korrigieren aus den Fehlerstellen und Auswertungspolynomen &sigma;(z) und &eta;(z) beschrieben. Als erstes wird die Fehlerstelle i und das Element &alpha;i, das die Stelle i in dem Galois-Feld beschreibt, festgestellt, indem eine Chiensuche basierend auf den erhaltenen Fehlerstellenpolynom &sigma;(z) durchgeführt wird. Der Fehlerwert wird aus dem erhaltenen Fehlerstellenpolynom &sigma;(z), dem Fehlerauswertungspolynom &eta;(z) und dem Galois-Element &alpha;i bestimmt. Wie in Gleichungen 39 und 40 dargestellt ist, ist
  • (z) = U&sub1;(z) = K&sigma;&sub0;(z)
  • (z)= R(z) = K&eta;&sub0;(z)
  • wobei &sigma;&sub0;(z) und &eta;&sub0;(z) Gleichungen mit den Koeffizienten höchsten Grades sind, die normalisiert sind auf &alpha;&sub0;(='01'). Angenommen E sei ein Satz von Fehlerstellen, dann ist
  • Dadurch wird die Chiensuche keinen Einfluß auf K haben. Die Ableitung &sigma;'(z) von &sigma;(z) wird durch Durchführen formeller Differenzierung bestimmt, und ein Fehlerwert ei wird durch
  • ei = &eta;(&alpha;i)/&sigma;'(&alpha;i).
  • gegeben.
  • Da = ei = k&eta;&sub0;(&alpha;i)/K&sigma;&sub0;'(&alpha;i),
  • ist, besteht keine Auswirkung auf K. Daher ist es nicht notwendig, &sigma;(z) und &eta;(z) zu normalisieren, um die Fehlerstelle i und die Fehlerwerte ei zu bestimmen. Die Ableitung &sigma;'(z) wird ein Polynom mit Bestandteilen, deren Grade nur gerade Zahlen sind, so daß es mit hoher Geschwindigkeit unter Benutzung der Formel X²*Y + Z in der GLU 19 errechnet werden kann. Die Fehlerstelle i und der Fehlerwert ei, der so erhalten wird, werden zur Korrektur der Fehler benutzt.
  • Wie oben beschrieben ist, wird nach der Erfindung die Bestimmung der Grade eines Polynoms, die viele Schritte erfordert und viel Zeit benötigt, um Euclids Algorithmus auszuführen, durch Benutzung gemeinsamer arithmetischer Einheiten beschleunigt und das Verfahren wird mittels eines Zwischenspeicherschaltkreises zum Zwischenspeichern der Daten der Grade, die zur Ausführung der Polynomberechnung benötigt werden, beschleunigt. Obwohl die Koeffizienten höchsten Grades eines Fehlerstellenpolynoms &sigma;(z) und eines Auswertepolynoms &eta;(z) zu 1 normalisiert sind (- &alpha;&sup0;), wird die Fehlerstelle i und das Fehlermuster ei in der Mitte der Operation bestimmt, wenn Euclids Algorithmus beendet ist, um die Anzahl der Arbeitsschritte (oder der Zeit) zu verringern. Zusätzlich kann-die herkömmliche GLU nur eine Multiplikation X*Y, eine Addition X + Y oder eine Division X/Y in einem Rechenschritt durchführen, aber nach der Erfindung kann auch die Operation X*Y + Z oder X² *Y + Z in dem Galois-Feld schnell in einem einzigen Schritt ausgeführt werden, indem ein Multiplizier- oder Quadrierschaltkreis benutzt wird, der zur Ausführung von einem einzigen Schritt fähig ist. Da ein Paar von RAMs in der GLU vorgesehen sind, um die Verarbeitungsgeschwindigkeit zu erhöhen, ist ein Dekodierer mit einer großen Minimaldistanz (d ) 10-30) möglich.
  • Die Syndromberechnungs- und Chiensuchoperation in dem Syndrom/Chiensuchlogikabschnitt 118 wird mit Bezug auf Fig. 16 beschrieben. Als erstes werden die Register L&sub0; bis L&sub1;&sub5; freigelöscht. Der Schalter Sx wird angeschaltet und die Schalter SW&sub0; sowie SW&sub1;&sub5; werden auf die W Seite gelegt. Die aufgenommenen Daten werden nacheinander auf das Eingabeendgerät 301 gegeben. Die Eingabedaten werden dann auf die Daten addiert, die durch Multiplizieren der Ausgabe jedes Registers Li(i - 0 bis 15) erzeugt werden, um &alpha;i in dem Finites-Feld Multiplizierer Bi(i = 1 bis 15), wobei &alpha; das Element eines finiten Feldes ist, in jedem Finites-Feld Addierschaltkreis A&sub1;( i = 0 bis 15). Die Aufgabe wird in jedem Register Li(i = 0 bis 15) zwischengespeichert. Das obige wird von den aufgenommenen Daten rn - 1 bis r&sub0; wiederholt, um jedes Register Li(i = 0 bis 15) mit folgenden Daten zu versehen:
  • L&sub1; = ri = S&sub1;
  • L¹ = ri i = S&sub1;
  • . . .
  • Lj - ri ji = Sj
  • . . .
  • L&sub1;&sub5; = ri 15i = S&sub1;&sub5;
  • Dieses sind die Syndrome der aufgenommenen Daten rn-1 bis r&sub0;. Nun lasse man Si (i = 0 bis 15) die Daten jedes Registers li (i = 0 bis 15) sein. Wenn die Syndrome S&sub0; bis S&sub1;&sub5; bestimmt werden, wird der Wiederholvorgang beendet und die Schalter SW&sub0; und SW&sub1;&sub5; werden auf die U-Seite gelegt. Die Syndrome S&sub1;&sub5; und S&sub0; werden aufeinanderfolgend aus dem Ausgabeabschnitt 303 durch Rechtsverschieben der Register L&sub0; bis L&sub1;&sub5; ausgegeben.
  • Die Ausgabesyndrome werden in den finiten Feldlogikschaltkreis 123 über den Datenbus 127 in Fig. 1 ausgegeben, wobei ein Fehlerstellenpolynom &sigma;(z) und ein Fehlerstellenpolynom &eta;(z) bestimmt werden. Das Fehlerstellenpolynom &eta;(z), das durch
  • &sigma;(z) = &sigma;&sub0; + &sigma;1z + &sigma;2z2 + . . . + &sigma;tzt,
  • bestimmt ist, wird umgeformt in
  • '(z) = &sigma;t + &sigma;t-1z + . . . + &sigma;0zt
  • das dann an den Datenbus 127 vom höchsten Grad gegeben wird.
  • Wie Fig. 11 darstellt, kann dies durch Kombinieren der Koeffizienten des Fehlerstellenpolynoms und der Elemente des Galois-Feldes derart erhalten werden, daß die Koeffizienten (&sigma;t, &sigma;t-1, . . . , &sigma;&sub0; mit dem &alpha;&sup0; Multiplizierer, dem &alpha;¹ Multiplizierer, . . . , dem &alpha;t Multiplizierer korrespondieren.
  • Wenn man nun die Codelänge n = 148 annimmt, die Anzahl der Informationssymbole k = 132 und die Anzahl der korrigierten Fehler t = 8 an der Minimaldistanz von 17, und das Syndrompolynom S(z)
  • ist, dann wird das Fehlerstellenpolynom
  • sein, wenn sich ein Fehler an der Stelle i befindet. &sigma;(&alpha;-i) in dem das korrespondierende Element &alpha;-i in dem Galois-Feld ist gegeben durch
  • Nimmt man nun
  • &sigma;j.i = &sigma;j&alpha;-1.j (52)
  • dann ist
  • &sigma;i,254 = &sigma;j&alpha;-(255-1)j = &sigma;j&alpha;j (53)
  • Daher erhält man folgende Gleichung
  • &sigma;j,i-i = &sigma;j&alpha;-(i-1)j = &sigma;j,i&alpha;j (54)
  • in dem Chiensuchschaltkreis, wobei Gleichung 54 rekursiv berechnet ist, um eine Fehlerstelle koresspondierend zu &alpha;-i bei der die Summe Null ist, auszugeben. Bei dieser Methode wird die Art einer Grundgleichung der Gleichung 50 in der Form von &alpha;-i (&alpha;-2 = &alpha;254-i) sein, und die Berechnung muß für jede Fehlerstelle 254, 253, , 148 ausgeführt werden. Wie Gleichung 53 zeigt, wird die Berechnung in der Reihenfolge von der Stelle 255 zu der Stelle 0 durchgeführt. Jedoch gibt es keine tatsächlichen Werte an den Stellen 254 bis 148 für abgekürzte zyklische Codes, und es ist offensichtlich, daß keine Fehler an diesen Stellen sind. Daher wird Gleichung 49 wie folgt umgeformt:
  • Wenn ein Fehler an einer Stelle i ist, folgt
  • Wenn man annimmt,
  • dann ist
  • daher erhält man die folgende Gleichung
  • die ermöglicht, eine Chiensuche mit hoher Geschwindigkeit durchzuführen. Wie aus Gleichung 58 offenbar wird, wird erfindungsgemäß die Berechnung von der Stelle 0 aus durchgeführt, wodurch das Berechnen der Stellen 148 bis 254 eliminiert wird, an denen keine tatsächlichen Werte abgekürzte zyklische Codes vorliegen, wodurch die Verzögerungszeit minimiert wird.
  • Wenn die Chiensuche durchgeführt wird, indem der Schaltkreis der Fig. 16 benutzt wird, werden die Register L&sub0; bis L&sub1;&sub5; im voraus freigelöscht. Auch wird der Schalter Sx ausgeschaltet und die Schalter SW&sub0; bis SW&sub1;&sub5; werden auf die U-Seite gedreht. Dann werden die Koeffizienten von &sigma;(z) an das Eingabeendgerät 301 in Reihenfolge vom höchsten Grad her eingegeben und die Register L&sub0; bis L&sub1;&sub5; werden nach rechts geschoben, bis &sigma;t in das Register L&sub0;5 eingegeben wird. An diesem Punkt werden die Schalter SW&sub0; bis SW&sub1;&sub5; auf die W Seite gedreht. Die Register L&sub0;, L&sub1;, . . . , Lt speichern &alpha;t, &alpha;t-i . . . , &alpha;&sub0; jeweils zwischen. Wenn die Dateneingabe durch den Schalter Sx Null in den Finites-Feld Addier-Schaltkreisen A&sub0; bis A&sub1;&sub5; ist, werden die Ergebnisse die gleichen sein, wie in der Fig. 11 dargestellt, z. B. korrespondieren jeweils die Register L&sub0; bis Lt in Fig. 16 jeweils mit K&sub0; bis Kt in Fig. 11 und auf gleiche Weise korrespondieren die finite Feld-Multiplizierer Bi bis BT jeweils mit M&sub1; bis Mt. Der &alpha;&sub0; Multiplizierer kann lediglich eine Zeile sein. Der Summenschaltkreis 304 ist äquivalent mit dem
  • t
  • &Sigma; Addierer.
  • j=0
  • In diesem Fall ist der Addierer ein Galois-Feld.
  • Die Register Lt+1 bis L&sub8; werden mit der Eingabe des Summenschaltkreises 304 verbunden aber sie speichern Null zwischen und haben keinen Einfluß auf die Chiensuche. Die Ausgabe des Summenschaltkreises 304 wird in den Null-Entscheidungsschaltkreis 4A eingegeben. In dem Fall, daß nur Nullen vorliegen, wird ein "Zustandsmerker" am Ausgabeendgerät 122 erzeugt.
  • Der Adressgeneratorschaltkreis 119 berechnet die Stellenadresse in dem Verzögerungsspeicher in Übereinstimmung mit der Chiensuche. Das "Zustandsmerker"-Signal und die Fehlerstellenadresse werden in den Kontrollschaltkreis 126 über den Kontrolldatenbus 128 in der Fig. 1 eingegeben. Wenn ein Zustandsmerker erzeugt ist, speichert der Kontrollschaltkreis 126 die Fehlerstelle und gibt dann, wenn die Chiensuche beendet ist, das Element eines finiten Feldes korrespondierend zur Fehlerstelle in den Finites-Feld Logikschaltkreis 123 über den Datenbus 127.
  • Basierend auf diesen Daten bestimmt der Finites-Feld Logikschaltkreis 123 den Fehlerwert aus dem Fehlerstellenpolynom &sigma;(z) und das Fehlerstellenauswertepolynom &eta;(z) um die Korrektur vorzunehmen. Dadurch komplettiert das Dekodiersystem der Fig. 1 das Dekodieren.
  • Andererseits wird das Kodieren in dem Syndrom/Chiensuchberechnungsschaltkreis der Fig. 1 ausgeführt; die Syndrom/Chiensuchlogikoperation wird durch den Syndrom/Chiensuchberechnungsschaltkreis 125 der Fig. 1 durchgeführt. Der Rest der Logigkoperation wird durch den Finites-Feld Logikschaltkreis 123 durchgeführt. Insbesondere wird die Syndromausgabe aus dem Syndrom/- Chiensuchberechnungs-Schaltkreis 125 in den Finites- Feld Logikschaltkreis 123 eingegeben. Die Eingabesyndrome werden in dem RAM A 11 der Fig. 6 gespeichert. Dies ist mit der Tatsache vereinbar, daß die Syndrome in dem Syndromberechnungsabschnitt 316 der Fig. 12 gespeichert werden. Die Daten, die in dem ersten Speicher der Fig. 12 gespeichert wurden, wurden in das Register Y 23 aufeinanderfolgend eingegeben. Die Syndromdaten in dem RAM A 11 werden in das Register X 22 eingegeben und das RAM B 12 wird an die Stelle des zweiten Speichers 314 der Fig. 12 gesetzt. Die Daten werden in das Register Z 24 eingegeben, um eine Finites-Feld Logik X Y + Z in der GLU 20 durchzuführen. Die Ergebnisse werden zurück an das RAM B 12 gegeben, um die Prüfsymboldaten in gleicher Weise, wie in dem Schaltkreis der Fig. 12 zu bestimmen.
  • Die Prinzipien des Vorgehens in diesen Schaltkreis werden nun beschrieben. Der Syndromvektor S eines aufgenommenen Wortvektors am Eingabeendgerät 301 wird durch
  • gegeben, wobei H eine Paritätsprüfmatrix ist und T ihre transponierte Matrix. Der aufgenommene Wortvektor wird durch
  • gegeben, wobei ri der Informationssymbolabschnitt ist, rc der Prüfsymbolabschnitt und 0c und 0i die Nullsymbole sind. Das Symbol [X : Y] bedeutet eine Anfügung (Konkatenation) Y nach X. Wenn es keinen Fehler gibt, wird der Syndromvektor S gegeben durch
  • so daß das Kodieren äquivalent zur Berechnung eines Vektors ist, der Gleichung 63 erfüllt. Das bedeutet, daß von den Gleichungen 62 und 63 abgeleitet werden kann:
  • Da H durch die folgende Gleichung (66) gegeben ist
  • wird, wenn der aufgenommene Vektor [0i: rc) ist, das imaginäre Syndrom Si gegeben sein durch
  • Dadurch ist re gegeben durch
  • wobei
  • Der Schaltkreis der Fig. 12 wird so aufgebaut, daß er Gleichung 68 lösen kann. Als Antwort auf obige Eingabeinformation hat der Syndromberechnungsschaltkreis 316 ein imaginäres Syndrom Si berechnet. Die Elemente &alpha;&sup0; von A-1, die in dem ersten Speicher 312 gespeichert sind, werden in Reihenfolge gelesen und mit dem Syndrom Si im Multiplizierschaltkreis 311 multipliziert, und das Produkt wird an den Addierer 313 gegeben.
  • Der zweite Speicher 314 der in seinem ursprünglichen Zustand freigelöscht wurde, arbeitet mit dem Addierer 313 zusammen, um die jeweiligen Terme von A-1 und Si zu berechnen, um eine kumulative Summe jedes Terms zu erhalten. Endlich wird das Register 315 ein Prüfsymbol rc zwischenspeichern, das dann an das Endgerät 310 ausgegeben wird.

Claims (8)

1. Ein Fehlerkorrekturkodier/Dekodiersystem mit einem Speicher zum Speichern eines aufgenommenen kodierten Wortes,
einem Finiten-Feld-Logik-Schaltkreis zum Ableiten eines Fehlerstellenpolynoms und einem Fehlerauswertepolynom aus dem aufgenommenen Wort, wobei der Finite-Feld- Logik-Schaltkreis umfaßt:
- arithmetische und logische Mittel zum Bestimmen der Grade der beiden Polynome, wobei die arithmetischen und logischen Mittel einen Speicher zum Speichern von Zwischendaten in der Berechnung beider Polynome besitzen,
- Galois-logischen Mittel, die empfänglich sind für diese Grade, um die beiden Polynome zur Korrektur eines Fehlers zu lösen, und
- Program-Mitteln zum Steuern der Galois-logischen Mittel und der arithmetischen und logischen Mittel,
einem Syndrom/Chiensuch-Berechnungsschaltkreis zum Bestimmen eines Syndroms und einer Fehlerstelle aus den Ergebnissen, die von dem Finiten-Feld-Logik-Schaltkreis ausgegeben sind, und
einem Adresserzeugungs-Schaltkreis, der in Form eines Zählschaltkreises des Subtraktionstyps angeordnet ist, der auf eine Fehlerstelle empfänglich ist, um eine Adresse in dem Speicher zu erzeugen, so daß das aufgenommene Wort an der Adresse geholt und korrigiert werden kann und der synchron mit dem Syndrom/Chiensuch- Berechnungsschaltkreis arbeitet.
2. Ein Fehlerkorrektur/Kodier/Dekodiersystem nach Anspruch 1, dadurch gekennzeichnet, daß die Galoislogischen Mittel drei logische Register und zwei Mehrzweckspeicher besitzen.
3. Ein Fehlerkorrekturkodier/Dekodiersystem nach Anspruch 1, dadurch gekennzeichnet, daß die Galoislogischen Mittel eine Fehlerstelle &alpha;i bestimmen und ein Fehlermuster ei ohne Normalisierung des Auswertungspolynoms
&sigma;(z) = K · &sigma;&sub0;(z) bestimmen,
wobei das Auswertungspolynom &eta;(z) = K · &eta;&sub0;(z) ist.
4. Ein Fehlerkorrekturkodier/Dekodiersystem nach Anspruch 1, dadurch gekennzeichnet, daß die Galoislogischen Mittel einen Quadrierschaltkreis in einem Galoisfeld haben.
5. Ein Fehlerkorrekturkodier/Dekodiersystem nach Anspruch 1, dadurch gekennzeichnet, daß der Speicher der Arithmetik- und Logikmittel ein Grad-Zwischenspeicher- Schaltkreis zum Verhindern jeglichen Schreibens auf den Speicher besitzt, wenn ein vorbestimmter Zustandsmerker in einem vorbestimmten Intervall gesetzt ist.
6. Ein Fehlerkorrekturkodier/Dekodiersystem nach Anspruch 1, dadurch gekennzeichnet, daß
- die Galois-logischen Mittel einen ersten Mehrzweckspeicher und
- einen zweiten Mehrzweckspeicher haben,
wobei die arithmetischen und logischen Mittel einen Speicher zum Zwischenspeichern eines Grades eines Polynoms besitzen,
wobei die ersten und zweiten Mehrzweckspeicher so angeordnet sind, daß eine Dateneingabe von dem ersten Mehrzweckspeicher in den zweiten Mehrzweckspeicher im nächsten Arbeitsschritt eingegeben werden kann,
die Dateneingabe aus dem zweiten Mehrzweckspeicher in den ersten Mehrzweckspeicher im nächsten Arbeitsschritt eingegeben werden kann, und
daß der Speicher der arithmetischen und logischen Mittel Datenzuordnungen zu einer ersten Adresse und einer zweiten Adresse für ein Vorgehen ohne jeglichen Datentransfer austauschen kann.
7. Ein Fehlerkorrekturkodier/Dekodiersystem nach Anspruch 1, dadurch gekennzeichnet, daß der Syndrom/Chiensuch-Berechnungsschaltkreis zur Bestimmung einer Fehlerstelle von beiden Polynomen enthält:
einen Addierer zum Berechnen von
t
&Sigma; &sigma;j&alpha;i(t-1)
j=0
für das Fehlerstellenpolynom
t
&sigma;(z) = &Sigma; &sigma;jzj
j=0
wobei &alpha; ein Element in dem Galoisfeld ist, i eine Fehlerstelle und t die Anzahl der korrigierten Fehler; und
einen Entscheidungsschaltkreis zum Entscheiden, ob die Gleichung
t
&Sigma; &sigma;j&alpha;i(t-1)
j=0
erfüllt, wodurch ein Element &alpha; bestimmt wird, das &sigma;(&alpha;) = 0 erfüllt.
8. Ein Fehlerkorrekturkodier/Dekodiersystem nach Anspruch 1, dadurch gekennzeichnet, daß der Syndrom/Chiensuch-Berechnungsschaltkreis enthält:
- einen ersten Speicher zum Speichern vorbestimmter Konstanten,
- einen Multiplizierschaltkreis zum Multiplizieren einer Syndromausgabe aus den Syndromberechnungsmitteln mit Konstanten, die aufeinanderfolgend aus dem ersten Speicher eingelesen sind, und
- einen Summierschaltkreis zum Aufsummieren der Multiplikationsergebnisse in Reihenfolge aus den Multiplikationsschaltkreisen, um hiervon die Summe zu erhalten, um so ein Prüfsymbol zur Informationseingabe an die Syndromberechnungsmittel zu geben.
DE3750526T 1986-06-18 1987-06-19 Dekodierer. Expired - Fee Related DE3750526T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP61141679A JPS6379423A (ja) 1986-06-18 1986-06-18 チエンサ−チ回路
JP16840286A JPH0744467B2 (ja) 1986-07-17 1986-07-17 符号化回路
JP61240685A JPS6394720A (ja) 1986-10-08 1986-10-08 誤り訂正符号の復号化回路

Publications (2)

Publication Number Publication Date
DE3750526D1 DE3750526D1 (de) 1994-10-20
DE3750526T2 true DE3750526T2 (de) 1995-01-12

Family

ID=27318297

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3750526T Expired - Fee Related DE3750526T2 (de) 1986-06-18 1987-06-19 Dekodierer.

Country Status (4)

Country Link
US (1) US4841300A (de)
EP (1) EP0249982B1 (de)
CA (1) CA1291819C (de)
DE (1) DE3750526T2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2625055B1 (fr) * 1987-12-17 1993-09-24 Alcatel Thomson Faisceaux Procede de detection d'effacements affectant une liaison hertzienne numerique et chaine de reception mettant en oeuvre un tel procede
ATE116081T1 (de) * 1989-08-24 1995-01-15 Philips Nv Verfahren und einrichtung zur decodierung von wortgeschützten codewörtern durch einen nichtbinären bch-code gegen mindestens einen symbolfehler.
US5099482A (en) * 1989-08-30 1992-03-24 Idaho Research Foundation, Inc. Apparatus for detecting uncorrectable error patterns when using Euclid's algorithm to decode Reed-Solomon (BCH) codes
JP2504312B2 (ja) * 1990-08-29 1996-06-05 三菱電機株式会社 プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
US5343481A (en) * 1991-01-07 1994-08-30 Kraft Clifford H BCH error-location polynomial decoder
EP0611054B1 (de) * 1993-01-22 1998-04-08 Canon Kabushiki Kaisha Vorrichtung und Verfahren zur Ableitung von Polynomialmengen
US5517509A (en) * 1993-03-31 1996-05-14 Kabushiki Kaisha Toshiba Decoder for decoding ECC using Euclid's algorithm
US5463642A (en) * 1993-06-29 1995-10-31 Mitsubishi Semiconductor America, Inc. Method and apparatus for determining error location
JP3160448B2 (ja) * 1993-11-30 2001-04-25 富士通株式会社 データ訂正装置
US5642367A (en) * 1994-02-07 1997-06-24 Mitsubishi Semiconductor America, Inc. Finite field polynomial processing module for error control coding
JPH10112659A (ja) * 1996-10-08 1998-04-28 Canon Inc 誤り訂正復号装置
JP3850511B2 (ja) * 1997-05-07 2006-11-29 日本テキサス・インスツルメンツ株式会社 リードソロモン復号装置
US6154868A (en) * 1997-07-18 2000-11-28 International Business Machines Corporation Method and means for computationally efficient on-the-fly error correction in linear cyclic codes using ultra-fast error location
US6154869A (en) * 1998-02-03 2000-11-28 Texas Instruments Incorporated Combined error position circuit and chien search circuit for reed-solomon decoding
US6374383B1 (en) * 1999-06-07 2002-04-16 Maxtor Corporation Determining error locations using error correction codes
EP1460765A1 (de) * 2003-03-19 2004-09-22 STMicroelectronics S.r.l. Fehlerkorrekturmethode für als Symbolsequenz codierte digitale Daten
JP4891704B2 (ja) * 2006-08-28 2012-03-07 株式会社東芝 半導体記憶装置
JP5259343B2 (ja) * 2008-10-31 2013-08-07 株式会社東芝 メモリ装置
US9954553B1 (en) * 2015-06-05 2018-04-24 Altera Corporation Circuitry and methods for continuous parallel decoder operation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4099160A (en) * 1976-07-15 1978-07-04 International Business Machines Corporation Error location apparatus and methods
US4162480A (en) * 1977-01-28 1979-07-24 Cyclotomics, Inc. Galois field computer
US4142174A (en) * 1977-08-15 1979-02-27 International Business Machines Corporation High speed decoding of Reed-Solomon codes
US4389636A (en) * 1980-11-03 1983-06-21 Riddle H S Jun Encoding/decoding syncronization technique
JPS5992688A (ja) * 1982-11-19 1984-05-28 Fuji Photo Film Co Ltd 適応形画像圧縮方式
US4567594A (en) * 1983-06-07 1986-01-28 Burroughs Corporation Reed-Solomon error detecting and correcting system employing pipelined processors
US4605921A (en) * 1983-06-20 1986-08-12 Riddle Herbert S Digital word-framing technique and system
US4584686A (en) * 1983-12-22 1986-04-22 Optical Storage International Reed-Solomon error correction apparatus
JPH071876B2 (ja) * 1983-12-29 1995-01-11 ソニー株式会社 Bch符号の復号装置
US4649541A (en) * 1984-11-21 1987-03-10 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Reed-Solomon decoder

Also Published As

Publication number Publication date
CA1291819C (en) 1991-11-05
DE3750526D1 (de) 1994-10-20
EP0249982B1 (de) 1994-09-14
EP0249982A2 (de) 1987-12-23
US4841300A (en) 1989-06-20
EP0249982A3 (en) 1990-12-27

Similar Documents

Publication Publication Date Title
DE3750526T2 (de) Dekodierer.
DE3854791T2 (de) Reed-Solomon Code verwendendes Fehler-Korrektur-Verfahren
DE3854939T2 (de) Bch-fehlerkorrekturkode-dekodierungsverfahren in echtzeitbetrieb
DE3486408T2 (de) Verfahren und Vorrichtung zur Dekodierung eines fehlerkorrigierenden Kodes.
DE3382661T2 (de) Korrektur von fehlerbuendeln in datengruppen.
DE3882223T2 (de) Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden.
DE69834542T2 (de) Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke
DE68924944T2 (de) Fehlerkorrekturschaltung.
DE3650335T2 (de) Rechenverfahren und -gerät für endlichfeldmultiplikation.
DE3784459T2 (de) Arithmetische und logische einheit fuer elemente von galois-feldern.
US5631914A (en) Error correcting apparatus
DE3852474T2 (de) Nachschlagetabellen verwendende Fehlerkorrektur.
DE69919199T2 (de) Vorwärtsfehlerkorrektur
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE3787900T2 (de) Verfahren und Gerät zur Erzeugung von Prüfungs-Byten zur Fehlerdetektion für einen Datenblock.
DE69019777T2 (de) Datenstrom-Rahmensynchronisation.
DE10133595A1 (de) Pufferschaltung, Speicherzugriffsverfahren, Speicherbauelement und Reed-Solomon-Decoder
DE2106314B2 (de) Anordnung zur Fehlererkennung und -korrektur in einem aus b Bits bestehenden Byte eines K Datenbytes enthaltenden Datenblocks
DE4140018A1 (de) Verfahren und schaltungsanordnung zum decodieren von rs-codierten datensignalen
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE69121733T2 (de) Technik zum eingebauten Selbsttest für Nur-Lese-Speicher
US4627058A (en) Code error correction method
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE69126459T2 (de) Fehlerkorrektursystem fähig zur Verbesserung des Kopfteils eines Paketes durch Verwendung eines Reed-Solomon-Codes
DE68925378T2 (de) Verfahren und Schaltung zur Daten-Fehler-Erkennung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8339 Ceased/non-payment of the annual fee