DE3852648T2 - Hypersystolischer reed-solomon-encoder. - Google Patents

Hypersystolischer reed-solomon-encoder.

Info

Publication number
DE3852648T2
DE3852648T2 DE3852648T DE3852648T DE3852648T2 DE 3852648 T2 DE3852648 T2 DE 3852648T2 DE 3852648 T DE3852648 T DE 3852648T DE 3852648 T DE3852648 T DE 3852648T DE 3852648 T2 DE3852648 T2 DE 3852648T2
Authority
DE
Germany
Prior art keywords
cells
message
symbols
stream
cell
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
DE3852648T
Other languages
English (en)
Other versions
DE3852648D1 (en
Inventor
Gadiel Seroussi
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.)
Eastman Kodak Co
Original Assignee
Eastman Kodak Co
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 Eastman Kodak Co filed Critical Eastman Kodak Co
Application granted granted Critical
Publication of DE3852648D1 publication Critical patent/DE3852648D1/de
Publication of DE3852648T2 publication Critical patent/DE3852648T2/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
    • 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)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Description

    Hypersystoloscher Reed-Solomon-Codierer
  • Fehlererkennungs- und Korrektursysteme entfernen in Daten eingeführte Fehler, die durch einen Kanal von einem Sender zu einem Empfänger wandern.
  • In einem solchen System hängt der Sender an jeden Satz von Message-Symbolen einen Satz Redundanzprüfungs-Symbole entsprechend einem Code-Erzeugungs-Polynom G(Z) an, das sowohl dem Sender als auch dem Empfänger bekannt ist. Das so erzeugte Codewort enthält ausreichende Informationen, damit der Sender die während der Übertragung über den Kanal eingeführten Fehler korrigieren kann, solange die Anzahl der fehlerhaften Symbole nicht die Hälfte der Anzahl der Prüfungszeichen überschreitet, und zwar beispielsweise mit Hilfe von Reed-Solomon-Codes. Derartige Fehlererkennungs- und Korrektursysteme sind über einen weiten Bereich von digitalen Systemen nutzbar, einschließlich digitaler Aufzeichnungssysteme, digitaler Speichersysteme und digitaler Kommunikationssysteme.
  • Eine Art eines Fehlererkennungs und -Korrektursystems verwendet Reed-Solomon-Codes zum Aufbau der Redundanzprüfungs-Zeichen (Codieren) am Sender und zur Korrektur von Fehlern (Decodieren) am Empfänger. Der Sender berechnet die Redundanzprüfungs-Symbole aus dem Satz der Message-Zeichen anhand eines standardmäßägen Reed-Solomon-Codierers.
  • Mit Bezug auf Fig. 1 umfaßt ein Reed-Solomon-Codierer einen Eingangsknoten 10, der den Strom von Message-Symbolen in serieller Folge empfängt, und einen Ausgangsknoten 12, von dem die Redundanzprüfungs-Zeichen nach dem Ende des Stroms von Message-Symbolen übertragen werden. Zwischen Eingangsknoten 10 und Ausgangsknoten 12 liegt ein Schieberegister, da entsprechend dem Code-Erzeugungs-Polynom G(Z) verdrahtet ist, wobei das Schieberegister eine Vielzahl von Stufen 14, Galois-Feld-Addierer 16 und Galois-Feld- Multiplizierer 18 umfaßt. Jeder der Galois-Feld-Multiplizierer 18 multipliziert das Rückmeldungs-Signal mit einem bestimmten der Koeffizienten gi des Code-Erzeugungs-Polynoms G(Z), wie in Fig. 1 gezeigt. In dem Reed-Solomon-Codierer aus Fig. 1 ist die Anzahl von Stufen im Schieberegister genau gleich R, der Ahzahl der Redundanzprüfungs-Zeichen.
  • Das Problem mit dem standardmäßigen Reed-Solomon-Codierer aus Fig. 1 hat zwei Seiten, nämlich: (a) Zeitsteuerungsbeschränkungen: Das Rückmeldungs-Netz erfordert, daß alle Stufen 14 synchron arbeiten. Dies wiederum erfordert einen zentralen (globalen) Takt, der an alle Stufen verteilt werden muß. Eine derartige Verteilung zieht lange Verbindungen oder ein komplexes Verteilungsschema nach sich, wobei beides zur Verlangsamung des Systems beiträgt, und zwar aufgrund der vom Verteilungsnetz erzeugten unvermeidbaren Taktversätze. Und (b) Inflexiblität: es ist eine erhebliche Hardware-Änderung erforderlich, um die Anzahl R der an den Block von K Message-Symbolen anzuhängenden Redundanzprüfungs-Zeichen zu ändern.
  • Das Problem besteht darin, wie ein flexiblerer Reed-Solomon-Codierer implementiert werden kann, der systematisch ist (d.h. er reproduziert den Strom von Message-Symbolen sofort, gefolgt von einem Strom von Redundanzprüfungs-Symbolen), der keine globalen Signale aufweist, und der schneller ist als derzeit verfügbare Codierer.
  • Ein bekannter Lösungsansatz für dieses Problem ist die sogenannte "Transformations-Codierung" und -Decodierung, die den Vorteil aufweist, daß sie keine Rückmeldung unter jeder der Zellen des Schieberegisters benötigt. Der Transformations-Codierer eignet sich für eine systolische Implementierung, d.h. eine Implementierung ohne Rückmeldungs- oder globale Signale, in der jede Zelle nur mit seinen unmittelbaren Nachbarzellen verbunden ist. Jedes in einem derartigen Transformations-Codierer erzeugte Symbol ist eine lineare Kombination aller Symbole in der ursprünglichen Message. Eine solche Transformations-Codierung hat folgende Nachteile: (a) die Anzahl der Codierer-Zellen (Schieberegisterstufen) ist gleich K, der Anzahl der Message- Symbole in jedem Block (die normalerweise weitaus größer ist als die in Fig. 1 erforderliche Anzahl R von Zellen), und (b) ist die Codierung nicht systematisch, insofern als die Message- und Redundanz-Informationen nicht unter den vom Transformations-Codierer erzeugten K + R Codewort-Symbolen verteilt wird, so daS der Codierer keine genaue Kopie der ursprünglichen Message ausgibt (was den Decodierungs-Prozeß komplizierter macht) . Da der Transformations-Codierer K-R mehr Zellen als der standardmäßige Reed-Solomon-Codierer benötigt, und da er nicht systematisch ist, ist er keine echte Lösung des Problems.
  • In IEEE Transactions on Computers, Band C-34, Nr. 5, Mai 1985, Seiten 393 - 403, wird ein Pipeline-Reed-Solomon-Decodierer mit systolisch systematischer Schaltung (Fig. 2) beschrieben, der zur Syndromberechnung für einen Reed-Solomon-Code benutzt wird. Diese Schaltung umfaßt R wesentlich gleiche aufeinanderfolgende Zellen für die Galois- Feldarithmetik-Berechnung zur Berechnung von Syndromen eines RS-Codes für die Fehlerkorrektur.
  • Obwohl eine derartige Schaltung auch für die Codierung eines Stroms von Message-Symbolen verwendet werden kann, muß in dieser Schaltung die gesamte Galois-Feldarithmetik-Berechnung innerhalb der aufeinanderfolgenden Zellen durchgeführt werden, was zur Verlangsamung des Codierungsverfahrens führt.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung ist ein hochflexibler, systolischsystematischer Reed-Solomon-Codierer mit R Stufen, die unabhängig voneinander arbeiten (so daß der Codierer systolisch ist), jedes der Message-Symbole empfangen und (ohne Änderung) weitergeben, bevor ein Redundanzprüfungs-Symbol an das Ende des Message-Stroms angehängt wird (so daß der Codierer systematisch ist). Der Codierer umfaßt einen Satz gleicher modularer Zellen, die zur Anpassung an Änderungen in der Anzahl R von Prüfungssymbolen schnell rekonfiguriert werden können.
  • Es ist eine Entdeckung der Erfindung, daß es einen Algorithmus gibt, der für jede Stufe eines R-Stufen-Codierers ohne Bezug auf jegliche in anderen Stufen durchgeführten Berechnungen durchgeführt werden kann, um ein einzelnes von R Redundanzprüfungs-Symbolen zu erzeugen. Es gibt keine Rückmeldung zwischen den einzelnen Zellen, die diesen Algorithmus benutzen, und der Betrieb ist systolisch und systematisch. Der Algorithmus wird in jeder einzelnen der R Stufen durch Auswahl der Werte von zwei Konstanten im Algorithmus angepaßt, wie beschrieben werden wird. Auf der anderen Seite ist jede der die Stufen im Codierer-Schieberegister definierenden Zellen in Hardware-Konfiguration und -Betrieb gleich, wobei eine erhebliche Kostenersparnis erleichtert wird. Da jede der Zellen unabhängig von jeder der anderen Zellen ist, läßt sich die systolische Anordnung von Zellen leicht an Änderungen in der Anzahl R von Prüfungssymbolen anpassen, die an den Block von Message-Zeichen anzuhängen sind.
  • Systolische Architektur
  • Die j-te Zelle der R systolischen Codierer-Zellen führt folgende Operation für jedes der K Message-Symbole ui durch, um das j-te Redundanzprüfungs-Symbol wj zu berechnen:
  • (1) wobei j folgendes beachtet: l< j< R.
  • Jede der Mengen ci und Xi sind in dieser Spezifikation nachfolgend definiert; sie ändern sich jedesmal, wenn ein anderes Message-Symbol ul in der Zelle empfangen wird. Die Mengen dj und yi sind Mengen, die innerhalb der j-ten Zelle konstant sind und sind ebenfalls nachfolgend in der Spezifikation definiert. Eine solche Zelle wird auch als Cauchy-Zelle bezeichnet, entsprechend der Klasse mathematischer Operationen, die in Seroussi und Roth, "On Generator Matrices of MDS Codes," IEEE Transactions on Information Theory, November 1985, Seiten 826-830, beschrieben sind.
  • Im Betrieb sind die Zellen hintereinander angeordnet und verarbeiten jedes aufeinanderfolgende Message-Symbol ui in der Reihenfolge des Eingangs, wobei das aktuelle Message-Symbol an seine nachgelegene, benachbarte Zelle weitergegeben wird, während das nächste Message-Symbol von seiner vorgelegenen, benachbarten Zelle empfangen wird. Wenn das letzte Message-Symbol uk die j-te Zelle verläßt und in Zelle j+1 eintritt, beendet die j-te Zelle ihre Berechnung des Redundanzprüfungs-Symbols wj und hängt wj an das Ende des Message-Stroms an. Auf diese Weise wird ein vollständiger Satz von R Redundanzprüfungs-Symbolen (w&sub1; bis wR) an das Ende des Message-Stroms von K Message-Symbolen angehängt, wenn die Anordnung von R Zellen den Message-Symbolblock systolisch verarbeitet.
  • Jede Zelle kann in Echtzeit aktiviert oder deaktiviert werden, so daß sie entweder ihr berechnetes Redundanzprüfungs-Symbol an den Message-Strom angehängt oder nicht. Auf diese Weise kann die Anzahl R aktiver Zellen (womit die Anzahl R von angehängten Redundanzprüfungs- Symbolen festgelegt wird) in Echt zeit gemäß einer gewünschten Änderung in R erhöht oder gesenkt werden. Weiterhin hängt der Betrieb der systolischen Anordnung von Cauchy-Zellen der Erfindung von der Anzahl K von Message-Symbolen ab, so daß die systolische Anordnung von Cauchy-Zellen dieser Erfindung in Echtzeit Änderungen in K, der Anzahl von Message-Symbolen und/oder R, der Anzahl von Redundanzprüfungs-Symbolen, in jedem Code-Wort vornehmen kann.
  • Global asynchroner Betrieb
  • Wenn am Codierer ein globales Signal anliegt (z.B. der Rückmeldungs-Pfad), muß dieses Signal an einer Zelle erzeugt und synchron mit einer Vielzahl von anderen Zellen getaktet werden. Dies macht eine synchrone Konstruktion mit einem globalen Takt erforderlich.
  • Die Beseitigung des Rückmeldungs-Pfades (und jeglicher anderer globaler Signale) erlaubt ein systolisches Taktverteilungsverfahren, von dem jede Zelle ein Eingangstaktsignal (CK_IN) von ihrer vorhergehenden Zelle erhält und dieses durch ein Ausgangstaktsignal (CK_OUT) an die nachfolgende Zelle weitergibt. Die Tatsache, daß der Takt ebenfalls systolisch ist, wird durch das Präfix "hyper" angezeigt (daher der Begriff "hypersystolischer Codierer") In der Literatur genannte systolische Anordnungen haben einen zentralen (globalen) Takt, der an alle Zellen über eine Art von Verteilungsnetz verteilt werden muß. Wie eingangs erwähnt, setzt dies voraus, daß es entweder lange Verbindungen gibt oder ein komplexes Verteilschema, das auf jeden Fall das System verlangsamt, und zwar aufgrund der vom Verteilungsnetz erzeugten Taktversätze. In einem hypersystolischen System ist die Taktverteilung ideal: es gibt eine sehr kurze Taktleitung von einer Zelle zur nächsten.
  • Während benachbarte Zellen als synchron erachtet werden können (sie tauschen Daten über einen gemeinsamen Takt aus, der von einer zur nächsten übertragen wird), ist das erfindungsgemäße hypersystolische System im ganzen aufgrund der beim Leiten des Taktsignals durch jede Zelle entstehenden Taktversatzes asynchron. Wenn man zwei Zellen betrachtet, die nicht unmittelbar benachbart sind (beispielsweise drei oder vier Zellen voneinander getrennt), ist der akkumulierte Taktversatz groß genug, daß man von asynchronen Zellen sprechen kann (d.h. die Taktsignale liegen willkürlich zueinander).
  • Der hypersystolische Codierer kann daher bei extrem hohen Datengeschwindigkeiten im Bereich von mehreren Gigabit/s arbeiten, was mit Standardkonstruktionen äußerst schwierig, wenn nicht gar unmöglich ist.
  • Die Erfindung wird im folgenden anhand eines in der Zeichnung dargestellten Ausführungsbeispiels näher erläutert.
  • Es zeigen
  • Fig. 1 ein vereinfachtes Blockschaltbild eines Reed-Solomon-Codierers nach dem vorherigen Stand der Technik;
  • Fig. 2 ein vereinfachtes Blockschaltbild des erfindungsgemäßen hypersystolischen Reed-Solomon-Codierers;
  • Fig. 3 ein vereinfachtes Blockschaltbild einer einzelnen Zelle in dem Codierer von Fig. 2;
  • Fig. 4a-4e umfassen gleichzeitig stattfindende Zeitsteuerungsdiagramme, die den Betrieb des hypersystolischen Reed-Solomon-Codierers aus Fig. 2 zeigen;
  • Fig. 5a und 5b zeigen den im hypersystolischen Reed- Solomon-Codierer verwendeten uici, Prozessor aus Fig. 2;
  • Fig. 6a, 6b und 6c zeigen detaillierte Blockschaltbilder der Zellen aus Fig. 3; und
  • Fig. 7a-7h umfassen gleichzeitig stattfindende Zeitsteuerungsdiagramme der den Betrieb der Zellen von Fig. 3 steuernden Signale.
  • Überblick zur systolischen Anordnung
  • Mit Bezug auf Fig. 2 empfängt ein uici Prozessor 20 an seinem Eingang einen Strom von Message-Symbolen ui in Synchronisierung mit einem Taktsignal CK. Der Prozessor 20 überträgt an seinem Ausgang eine verzögerte Version des Stroms von Message-Symbolen ui und eine gepufferte Version des Taktsignals CK. Zusätzlich gibt der Prozessor 20 das nachfolgend zu definierende Produkt uici aus. Diese drei Ergebnisse werden an eine systolische Anordnung gleicher Cauchy-Zellen 22 übergeben. Diese Anordnung verarbeitet den Strom von Message-Symbolen ui und Produkten uici systolisch in Synchronisierung mit dem hypersystolischen Taktsignal CK und addiert einen Strom von Prüfungszeichen am Ende des Message- Stroms. Jede der Zellen hat die in Fig. 3 gezeigte Form, einschließlich eines UC-Eingangs, eines U-Eingangs, eines SMC-Eingangs, eines CK IN-Eingangs, eines UC-Ausgangs, eines U-Ausgangs, eines SMC-Ausgangs und eines CK-OUT-Ausgangs. Die j-te der R Zellen führt beispielsweise den in Fig. 3 gezeigten Algorithmus unter Verwendung aller Message-Symbole ui bis uK und nachfolgend zu definierenden Konstanten dj und yj durch.
  • Sobald das letzte (K-te) Message-Symbol uK in der j-ten Zelle empfangen und verarbeitet wurde, ist die von dieser Zelle durchgeführte Berechnung des j-ten Redundanzprüfungs-Symbols wj beendet, so daß die j-te Zelle an ihrem U-Ausgang unmittelbar nach dem letzten Symbol wj im Message-Strom ausgibt. Das nächste Symbol ist selbstverständlich das Prüfungssymbol wj-1, das von der vorgelegenen, benachbarten Zelle angehängt wurde (die Zelle j-1).
  • Dies wird am besten in Fig. 4 gezeigt. In Fig. 4a ist der SMC-Eingang von Zelle Nummer 1 eine Folge von K logischen "Einsen" (während der ersten K Zyklen des Taktsignals CK), gefolgt von einer Zeichenfolge von R logischen "Nullen" (während der letzten R Zyklen des Taktsignals CK). Somit ist SMCi = 1 für i = 1 bis K, und SMCi = 0 für i = K + 1 bis K + R. Das SMC-Signal dient dazu, die Zellen darüber zu informieren, wenn der Übergang von Message- zu Prüfungssymbolen erfolgt.
  • Desgleichen bildet der U-Eingang von Zelle 1 (Fig. 4b) die K Message-Symbole ui bis uK für die ersten K Zyklen des Taktsignals CK, gefolgt von R Nullen für die letzten R Zyklen des Taktsignals CK. Der U-Ausgang von Zelle Nummer 1 (Fig. 4c) wird mit Hinsicht auf den U-Eingang um einen CK Taktzyklus verzögert und umfaßt die K Message-Symbole u&sub1; bis uK, gefolgt von den Ergebnissen der in Zelle Nummer 1 durchgeführten Berechnung, nämlich dem Redundanzprüfungszeichen w&sub1;. Dies wiederum wird von R-l Nullen gefolgt.
  • Die nächste Zelle, Zelle Nummer 2 (deren Ausgang nicht in Fig. 4 gezeigt wird), hat einen identischen Ausgang, der hinsichtlich des Ausgangs von Zelle 1 um einen CK Taktzyklus verzögert wird, mit der Ausnahme, daß ww (berechnet in Zelle Nummer 2) unmittelbar vor w&sub1; eingefügt wird.
  • Schließlich wird, wie in Fig. 4d gezeigt, der U-Ausgang von Zelle R, die letzte Zelle in der systolischen Anordnung von Zellen 22, hinsichtlich des Ausgangs von Zelle 1 um R Taktzyklen verzögert, und ist damit für die ersten K Taktzyklen tatsächlich identisch, aber überträgt anschließend alle Prüfungszeichen w&sub1; bis wR am Ende des Message-Stroms (wR wird in Zelle R berechnet). Der SMC-Ausgang von Zelle R ist mit dem SMC-Eingang von Zelle 1 identisch, mit der Ausnahme, daß dieser um R Taktzyklen verzögert ist.
  • Jede der Cauchy-Zellen 22 muß alle Message-Symbole im Strom verarbeiten, bevor sie ein entsprechendes Redundanzprüfungs-Symbol erzeugen kann, das an das Ende des Stroms angehängt wird.
  • Grundsätzlich kann man sich Fig. 4 als eine Darstellung eines Prozesses vorstellen, in dem ein langer Zug (Strom) von Eisenbahnwagen (Message-Symbolen) konstant während der Fahrt mit einem weiteren Eisenbahnwagen (Prüfungssymbol) ergänzt wird, während er an regelmäßig gelegenen Bahnhöfen (Zellen) entlang der Eisenbahnlinie vorbei fährt, wobei jeder Bahnhof dafür zuständig ist, seinen eigenen Eisenbahnwagen einzukoppeln, bis der letzte Bahnhof den letzten Eisenbahnwagen an den Zug anhängt, womit der Prozeß abgeschlossen ist.
  • Definition des systolischen Algorithmus
  • Mit Bezug auf den Algorithmus von Gleichung (1) auf Seite 4 ist ui das i-te Message-Symbol im Strom von K Message-Symbolen. ui ist ein m-Bit binäres Byte, und der Codierer von Fig. 2 benutzt einen Reed-Solomon-Code von maximaler Länge N 2m-1 in einem Galois-Feld GF(2m) zur Berechnung der R Redundanzprüfungs-Symbole gemäß einem Code-Erzeugungs-Polynom G(Z). In den folgenden Definitionen ist &alpha; ein Primitivelement des Galois-Feldes GF(2"). (Siehe Elwyn R. Berlekamp, Algebraic Coding Theory, Academic Press, 1968.) Die übrigen Symbole im Algorithmus von Gleichung (1) sind wie folgt definiert:
  • (2) xi = &alpha;-i, wobei l< i< K ist,
  • (3) yj = &alpha;-(K+j), wobei l< j< R ist,
  • (4)
  • wobei l< i< K ist,
  • (5)
  • wobei l< j< R ist
  • In Gleichungen (1)-(5) ist K die Anzahl von Message-Bytes, und der Parameter a ist wie folgt definiert:
  • (6) a (1-L) mod N, (d.h. a ist der positive Rest von L) :N), wobei (&alpha;L die Wurzel niedrigster Ordnung des Code- Erzeugungs-Polynoms G(Z) ist. (Die Menge L wird ausführlicher in US-A-076,579 besprochen.)
  • Mit Bezug auf Fig. 2 empfängt jede Zelle das am Prozessor 20 erzeugte Produkt uici, so daß die Zelle nur für die Durchführung eines Teils der Gleichungsberechnung (1) zuständig ist. Es gibt R Cauchy-Zellen, die den Strom von Produkten uici verarbeiten, und es gibt eine zusätzliche Zelle einer anderen Konstruktion, die zur Implementierung des uici Prozessors 20 für eine Gesamtheit von R+1 Zellen verwendet wird.
  • uici, Prozessor 20
  • Eine Implementierung des uici Prozessors 20 wird in Fig. 5a gezeigt. Der Prozessor 20 umfaßt ein Register 30 mit einem m-Bit Byte, das gleich dem ersten der ci ist, nämlich cl (eine Konstante). Die Definition von c&sub1; wird in Fig. 5a innerhalb von Register 30 angegeben. Dieses Byte (c&sub1;) wird an den Eingang "0" eines Multiplexers 32 angelegt. Der Wert von c&sub1; wird während der Systeminitialisierung in das Register 30 geladen und bleibt während des Betriebs konstant.
  • Das Ausgangssignal von Multiplexer 32 wird an einen Eingang eines Galols-Feld-Multiplizierers 34 angelegt. Das andere Eingangssignal des Galois-Feld-Multiplizierers 34 empfängt ein m-Bit Byte gleich dem Verhältnis ci+1/ci, von dem jedes ci+1 aus dem Vorgänger ci berechnet werden kann. Das Verhältnis wird in Register 36 gespeichert und ist für jeden Wert von i gemäß folgender Berechnung definiert (wie in Fig. 5a innerhalb von Kasten 37 angegeben)
  • 7) Ci+1/ci = (&alpha;a+1-K+&alpha;a=1-i)/(1+&alpha;-i)
  • dabei ist der Bereich von i: 1< i< K-1, und die Menge "a" ist wie zuvor definiert. Das Ausgangssignal von Multiplizierer 34 wird an den Eingang eines Registers 38 angelegt, dessen Ausgangssignal an den Eingang "1" des Multiplexers 32 angelegt wird.
  • Das Register 38 speichert das Ausgangssignal c1*1 des Multiplizierers 34. ci+1 liegt am Eingang des Registers 38 an, während gleichzeitig sein Vorgänger ci an Ausgang von Register 38 anliegt. Das Register 36 liefert dem Multiplizierer 34 für jeden Wert von i das entsprechende Verhältnis ci+1/ci. Sobald der Index i inkrementiert wird, lädt eine Logikschaltung 37 (Fig. 5b) einen neuen Wert von ci+1/ci in das Register 36.
  • Die Logikschaltung 37 berechnet das Verhältnis ci+1/ci für jeden Folgewert in i gemäß Gleichung (7) . Fig. 5b zeigt einen Weg zur Implementierung der Logikschaltung. Ein CSEL- Logiksignal (Fig. 7g) bewirkt, daß ein Multiplizierer 100 eine Konstante &alpha;a+1 wählt, die von einem Register 102 an seinen Eingang 0 angelegt wurde, und zwar unmittelbar vor Eingang des Message-Stroms. (Das Register 102 wird mit dem Wert von &alpha;a+1 während der Systeminitialisierung programmiert und bleibt während des Systembetriebs konstant.) Während des Empfangs des Message-Stroms bewirkt das CSEL-Logiksignal, daS der Multiplizierer an seinem Eingang 1 das von einem Konstantenmultiplizierer 104 angelegte Produkt auswählt. Der Konstantenmultiplizierer 104 multipliziert jeden Wert, der an seinem Eingang anliegt, gemäß den Regeln der Galois-Feld-Multiplikation mit &alpha;a-1 Diese Art des Multiplizierers wird nachfolgend unter bezug auf Fig. 6b näher beschrieben.
  • Die aktuelle Ausgabe von Multiplexer 100 wird in einem Register 106 gespeichert, dessen Inhalt durch den Eingang von Konstantenmultiplizierer 104 umläuft. Der Inhalt des Registers 106 ist der Wert von &alpha;a+1-i. Ein Galois-Feld- Addierer 108 kombiniert diese letzte Menge mit dem Wert einer Konstanten &alpha;a+1-K, die vom Register 110 bereitgestellt wird.
  • Das Register 110 wird mit dem Wert von &alpha;a+1-K während der Systeminitialisierung programmiert und bleibt während des Systembetriebs konstant. Die Ausgabe von Addierer 108 ist der Zähler des Ausdrucks auf der rechten Seite der Gleichung (7) Der Nenner dieses Verhältnisses wird in einer Unterschaltung 102', 104', 106', 108', 110' berechnet, die mit der vorausgehenden Unterschaltung 102, 104, 106, 108, 110 identisch ist, mit der Ausnahme, daS das Register 102' mit dem Wert von &alpha;-1 initialisiert wird, und daS das Register 110' mit dem Wert von 1 initialisiert wird. Der Galois-Feld- Teiler 112 teilt den Zähler von Register 108 durch den Nenner von Register 108', um das Verhältnis ci+1/ci zu erzeugen.
  • Der Betrieb wird durch eine Steuerschaltung 40 in Synchronisierung mit dem SMC-Signal und dem am Eingang CK_IN des Prozessors erhaltenen Taktsignals CK gesteuert. Die Steuerschaltung 40 verteilt eine Version des Taktsignals CK an den Takteingang aller Register in Prozessor 20. Die Steuerschaltung 40 überträgt ebenfalls das CSEL-Auswahlsignal an den Multiplexer 32 und teilt dem Multiplexer 32 mit, welcher seiner beiden Eingänge ("0" oder "1") zu wählen ist. Die Steuerschaltung 40 hält das CSEL-Steuersignal bis kurz vor dem Beginn des Message-Zeichenstroms im logischen Zustand 0 und bewirkt, daß c&sub1; zu diesem Zeipunkt von Multiplexer 32 zum Multiplizierer 34 gesendet wird. Anschließend befindet sich das CSEL-Logiksignal bis zum Ende des Message-Stroms in einem logischen Zustand 1, so daß der Multiplexer 32 die aktuelle Ausgabe des Registers 38 (d.h. ci) an den Multiplizierer 34 anlegt. (Das CSEL-Logiksignal wird in Fig. 7g, wie zuvor erwähnt, gezeigt.)
  • Der Inhalt des Registers 38 (d.h. ci ) wird in einem Galois- Feld-Multiplizierer 42 mit dem Message-Symbol u multipliziert, um das Produkt uici am UC-Ausgang des Prozessors 20 zu erzeugen. Das Message-Symbol ui wird vom U- Eingang des Prozessors 20 durch Zwischenschalten von zwei m- Bit Verzögerungsstufen 44, 46 abgeleitet. Das Eingangssignal zum Prozessor 20 ist das Message-Symbol ui+2, die Ausgabe der Verzögerungsstufe 44 ist die Message ui+1 und die Ausgabe der Verzögerungsstufe 46 ist das Message-Symbol u-. Der SMC-Eingang wird an den Eingang einer Verzögerungsstufe 48 angelegt, deren Ausgang den vorherigen SMC-Impuls, nämlich SMCi, an den SMC-Ausgang von Prozessor 20 anlegt.
  • Zusammenfassend gesagt, erzeugt der Prozessor 20 nacheinander jeden der ci Werte, beginnend mit ci, indem er einfach den aktuellen Wert ci mit einer Rekursionsformel zur Erzeugung des nächsten Wertes ci+1 multipliziert. Der Prozessor 20 multipliziert weiterhin ui mit ci und stellt dieses Produkt an seinem Ausgang UC bereit, während er an seinen anderen beiden Ausgängen das Message-Symbol ui+1 und das Taktsignal SMCi bereitstellt.
  • Cauchy-Zelle 22
  • Die Cauchy-Zelle 22 aus Fig. 3 wird näher in den Fig. 6a - 6c erläutert. Mit Bezug auf Fig. 6a wird das UC-Eingangssignal von Cauchy-Zelle 22 an den Eingang 0 eines Multiplexers 50 angelegt, dessen Ausgangssignal an ein m-Bit A Register 52 angelegt wird. Das Ausgangssignal von A Register 52 wird an einen Eingang eines Galois-Feld-Multiplizierers 54 angelegt. Parameter xi und yj (deren Ableitung in Fig. 6h gezeigt wird) werden zusammen in einem Addierer addiert, nämlich in einem m-Bit exklusiven ODER-Gatter 56, deren Ausgangssignal an ein invertierendes Gerät 58 angelegt wird, das den Galois-Feld-Reziprokwert von dessen Eingangssignals bildet und dieses Ergebnis an den Eingang 0 von Multiplexer 60 anlegt. (Komplexere Galois-Feld-Umkehrstufen werden in Berlekamp, Algebraic Coding Theory, Academic Press, 1968, Seite 36-44, beschrieben.)
  • Der Eingang 1 von Multiplexer 60 empfängt die Konstante dj von einem D Register 62, dessen Inhalt gemäß der Gleichung 5 programmiert ist (wobei j die Anzahl der Cauchy-Zelle 22 in der systolischen Anordnung von Fig. 2 ist) - Der Wert von dj wird während der Systeminitialisierung in das D Register 62 geladen und bleibt während des Betriebs konstant. Das Ausgangssignal von Multiplexer 60 wird an ein B Register 64 angelegt, dessen Ausgangssignal wiederum an einen anderen Eingang des Galois-Feld-Multiplizierers 54 angelegt wird. Das Ausgangssignal von Multiplizierer 54 wird an einen Eingang eines Galois-Feld-Addierers 66 angelegt, dessen Ausgangssignal in einem Akkumulatorregister 68 gespeichert wird. Das Ausgangssignal des Akkumulatorregisters 68 läuft durch ein UND-Gatter 70 zu einem anderen Eingang des Addierers 66 um. Sobald das RCTL-Signal (Fig. 7f) Null ist, bewirkt das UND-Gatter 70, daß der Inhalt des Akkumulatorregisters 68 zur Vorbereitung des nächsten Blocks von K Message-Symbolen auf Null zurückgesetzt wird.
  • Gesamter Zellbetrieb (Fig. 6a)
  • Wie in Fig. 6a gezeigt, ist die Menge 1/(xi+yj) an Eingang 0 des Multiplexers 60 vorhanden, die Menge Q ist an Eingang 1 des Multiplexers 60 vorhanden, und die Menge uici ist an Eingang 0 des Multiplexers 50 vorhanden. Hier ist zu erwähnen, daß der erste Zyklus des Taktsignals derjenige ist, in dem u&sub1; an Eingang U empfangen wird. Demnach ist der "i-te Zyklus" wohldefiniert. Der Zyklus wiederholt sich für jedes Codewort. Während des i-ten Zyklus von Taktsignalen wird das Produkt uici an Eingang UC von Cauchy-Zelle 22 empfangen. (Dies trifft nur zu, bis i K überschreitet, anschließend werden keine weiteren Message-Symbole ui empfangen.) Gleichzeitig sind die ASEL- und BSEL-Steuersignale (Fig. 7c) low, wodurch die Mengen uici und 1/(xi+yj) im Multiplizierer 54 multipliziert werden. Das resultierende Produkt wird zur akkumulierten Summe von vorherigen derartigen Multiplikationen mittels Addierer 66 addiert, die sich ergebende akkumulierte Summe wird im Akkumulatorregister 68 gespeichert. Damit wird am Ende von K Zyklen des Taktsignals die Menge
  • im Akkumulatorregister 68 gespeichert. Diese Menge muß mit dj multipliziert werden, um den Wert wj von Gleichung (1) zu erhalten.
  • An diesem Punkt werden die Steuersignale ASEL und BSEL (Fig. 7c) zu logisch Eins, so daß die Menge dj von Multiplexer 60 an den Eingang des Multiplizierers 54 angelegt wird, während die am Eingang von Akkumulator 68 anliegende akkumulierte Summe von Multiplexer 50 an einen anderen Eingang von Multiplizierer 54 angelegt wird, um die erforderliche Multiplikation mit dj durchzuführen. Nach einem weiteren Taktzyklus ist die Berechnung von wj vollständig beendet.
  • Anschließend wird das das UND-Gatter 70 steuernde Steuersignal RCTL (Fig. 7f) logisch 0, so daS das UND-Gatter 70 eine Null an einen Eingang von Addierer 66 anlegt. Dann wird wj (liegt jetzt am Ausgang des Multiplizierers 54 an) vom Addierer 70 zu Null addiert und an RP-Ausgang 72 des Cauchy-Zellen-Subsystems von Fig. 6a angelegt. Der RP-Ausgang 72 wird mit dem Subsystem von Fig. 6c verbunden, wie nachfolgend besprochen.
  • Ursprung von xj und yj (Fig. 6b)
  • Mit Bezug auf das Subsystem von Fig. 6h wird das Eingangssignal xi des Subsystems von Fig. 6a von einem X Register 74 bereitgestellt, dessen Inhalt für jeden Wert von i (Anzahl der Taktzyklen) gemäß der Gleichung (2) ermittelt wird. Zu diesem Zweck empfängt ein Multiplexer 76 einen Initialwert x&sub1; von Register 78 mit dem gespeicherten Wert xl an seinem Eingang 0. x&sub1; ist der reziproke Wert von &alpha;, nämlich &alpha;&supmin;¹. (Wie zuvor erwähnt, ist &alpha; einfach ein Primitivelement des Galois-Feldes GF(2m)). Der Wert von &alpha;&supmin;¹ wird während der Systeminitialisierung in das Register 78 geladen und bleibt während des Betriebs konstant.
  • Das Ausgangssignal von X Register 74 läuft zu einem Konstantenmultiplizierer 80 um, der das Ausgangssignal des X Registers mit &alpha;&supmin;¹ multipliziert und das resultierende Produkt an Eingang 1 von Multiplexer 76 bereitstellt.
  • Im Betrieb befindet sich das Steuersignal XSEL (Fig. 7e) unmittelbar vor Eintreffen an Zelle j des Stroms von K Message-Symbolen ui in Zustand 0. An diesem Punkt wird der Initialwert x&sub1;, nämlich &alpha;&supmin;¹, durch den Multiplexer 76 in das X Register 74 geladen. Dann tritt das XSEL-Signal in den Zustand 1 ein, und der Inhalt des X Registers 74 läuft in Synchronisation mit dem Taktsignal CK so um, daß es wiederholt mit &alpha;&supmin;¹ multipliziert wird, so daß es &alpha;&supmin;², &alpha;&supmin;³ ...&alpha;- (während des i-ten Zyklus von Taktsignalen) usw wird... Während des i-ten Zyklus von Taktsignalen liegt xi am Ausgang von Register 74 an und wird an den Eingang xi des Addierers 56 (Fig. 6a) angelegt.
  • Eine Implementierung des Konstantenmultiplizierers 80 wird in einer auseinandergezogenen Ansicht in Fig. 6h für das Drei-Bit-Beispiel von GF(2³) gezeigt. In diesem Beispiel sind alle Symbole 3-Bit binäre Zahlen, und der Konstantenmultiplizierer 80 führt eine lineare Transformation für jedes an seinem X- Eingang angelegte 3-Bit-Byte durch, um ein 3-Bit-Produkt-Byte an seinem Z-Ausgang, gleich X multipliziert mit &alpha;&supmin;¹, zu erzeugen. Die lineare Transformation wird in Fig. 6h gezeigt und braucht hier nicht erörtert zu werden.
  • Das Eingangssignal yj von Addierer 56 von Fig. 6a wird einfach aus einem Yj Register 82 genommen, dessen Inhalt gemäß der Gleichung (3) vorbestimmt ist, wobei j gleich der Anzahl der bestimmten Zelle 22 in der systolischen Anordnung von Fig. 2 ist. Der Wert von yj wird während der Systeminitialisierung in das Register 82 geladen und bleibt während des Systembetriebs konstant.
  • Einfügung des Prüfungszeichens wj hinter den Strom von Message-Zeichen ui (Fig. 6c)
  • Die j-te Cauchy-Zelle 22 (Fig. 2) ist für die Einfügung des berechneten Prüfungszeichens wj zuständig, das hinter dem Message-Strom folgt, der von der vorgelegenen, benachbarten Zelle (der J-1-ten Zelle) stammt. Fig. 6c zeigt den Eingang U von der j-ten Zelle 22 und den Ausgang U derselben Zelle, durch die der Message-Strom fließt und wo das Prüfungszeichen wj am richtigen Moment eingefügt werden muß. Ein Multiplexer 90 mit drei Eingängen empfängt den Message-Strom an seinem Eingang D1 durch eine m-Bit Verzögerungsstufe 92 (mit einer Verzögerung von einem Taktzyklus) und an seinem Eingang DIP (ohne Verzögerung) Der Eingang RP des Multiplexers 90 wird mit dem RP-Ausgang 72 des Subsystems von Fig. 6a verbunden, um das Prüfungssymbol w zu empfangen (zur Erleichterung der im richtigen Moment erfolgenden Einfügung von wj nach dem Message-Strom). Der Multiplexer 90 wird über ein dreistufiges Logiksignal OSEL (Fig. 7d) gesteuert. Das Ausgangssignal des Multiplexers 90 läuft durch eine weitere m-Bit Verzögerungsstufe 94, bevor es den Ausgang U von Zelle 22 erreicht.
  • Mit Bezug auf Fig. 7d befindet sich das OSEL-Signal während des Empfangs des Stroms von K Message-Symbolen ui in seinem Zustand D1P, so daß der Multiplexer 90 verzögerungsfrei jedes der ui Message-Symbole von Eingang U empfängt und diese direkt durch die Verzögerungsstufe 94 an den Ausgang U sendet. In diesem Zustand ist die Zelle gegenüber dem Strom von Message-/Prüfungs-Symbolen transparent (ohne Verzögerung). Anschließend geht (in einer Ausführungsform der vorliegenden Erfindung) das OSEL-Signal nach Abschluß des Message-Stroms (nachdem das letzte Message-Symbol uK empfangen wurde) in seinen Zustand RP über. Dies bewirkt, daß das am Rp Ausgang 72 der j-ten Zelle 22 (Subsystem von Fig. 6a) anliegende Prüfungs-Byte w über den RP-Eingang von Multiplexer 90 geladen wird und über die Verzögerungsstufe 94 an den Ausgang U von Zelle 22 (Subsystem von Fig. 6c) gesendet wird. In der Zwischenzeit wird das Prüfungssymbol wj-1 (und seine Vorgänger), das (bis zu diesem punkt) dem letzten Message-Symbol uk unmittelbar gefolgt ist, (für einen Taktzyklus) in der Verzögerungsstufe 92 festgehalten. Am Ende dieses Zyklus verläßt das OSEL-Signal seinen Zustand RP und geht in seinen Zustand D1 über. Somit wird das in der Verzögerungsstufe 92 festgehaltene Prüfungssymbol wj-1 (und alle folgenden Prüfungssymbole) jetzt von Multiplexer 90 von seinem D1-Eingang über die Verzögerungsstufe 94 unmittelbar nach dem letzten Prüfungssymbol wj, das vorher über den Eingang RP des Multiplexers 90 bereitgestellt wurde, zum Ausgang U übertragen. Somit erzeugt das Subsystem von Fig. 6c tatsächlich eine Lücke zwischen dem eingehenden Message-Strom und dem nachfolgenden Strom von Prüfungssymbolen und fügt das in der vorliegenden Zelle berechnete Prüfungssymbol in die Lücke ein.
  • Veränderung der Redundanz während des Betriebs
  • Wenn die Anzahl K von Redundanzzeichen auf R-1 reduziert werden soll, wird die letzte Zelle (Zelle R) in der Anordnung von Fig. 2 "deaktiviert", indem verhindert wird, daß das OSEL-Signal den Zustand D1P ("transparent") jemals verläßt. Weitere Zellen können zur weiteren Reduzierung in R deaktiviert werden. Um R zu erhöhen, können aus den deaktivierten Zellen ausgewählte Zellen wie gewünscht aktiviert werden.
  • Umkehrung der Reihenfolge der Redundanzsymbole
  • In einer alternativen Ausführungsform wird das Prüfungssymbol am Ende des Prüfungs-Byte-Stroms (d.h. nach wj+1) eingefügt (statt zwischen dem Message-Strom und dem nachfolgenden Prüfungs-Byte-Strom), so daß die R Prüfungssymbole wj in den Strom in umgekehrter Reihenfolge zur vorher beschriebenen eingefügt werden. Dieses Merkmal erfordert eine komplexere Steuerung.
  • Code-Wahl
  • In einer alternativen Ausführungsform können ci und dj für jedes Vorkommen von 1< i< K, l< j< R auf 1 gesetzt werden (und damit auf die Multiplikationen mit diesen Parametern verzichten). Tatsächlich vereinfacht dies das System erheblich: es beseitigt den gesamten uici Prozessor sowie die Notwendigkeit, die Eingänge/Ausgänge ui und uici zu trennen. In dieser alternativen Ausführungsform könnte der Codierer die gemäß einem "verallgemeinerten Reed-Solomon-Code" des beispielsweise in der zuvor genannten Publikation von Seroussi und Roth beschriebenen Typs berechneten R Prüfungssymbole dem Message-Strom anhängen.
  • Erzeugung der Steuersignale
  • Die zuvor in Verbindung mit Fig. 6a, b und c sowie Fig. 7a, b, c, d, e und f erörterten Steuersignale ASEL, BSEL, OSEL, XSEL und RCTL werden in Synchronisation mit dem Taktsignal CK innerhalb jeder Zelle von der Steuerlogikschaltung 96 erzeugt, die die Signale SMCi und CK von den Eingängen SMC und CK_IN aus Zelle 22 erhält. Die Steuerlogikschaltung verteilt eine Version des Taktsignals CK an alle Register in Zelle 22. Ein Fachmann kann die Steuerlogikschaltung 96 leicht als programmierbare Logikanordnung (oder etwas ähnliches) gemäß Fig. 7a-7f implementieren.
  • Systolisches Taktsignal
  • Fig. 6c zeigt den Takteingang "CK_IN" der Zelle, die das Taktsignal CK von der vorgelegenen, benachbarten Zelle empfängt. Die Steuerlogikschaltung 96 empfängt das Taktsignal CK von Eingang CK_IN und übergibt es an den Taktausgang CK_OUT der Zelle an die nachgelegene, benachbarte Zelle. Die Zeitsteuerung des Zellbetriebs, die von der Steuerlogikschaltung 96 gesteuert wird, ist daher nur zwischen benachbarten Zellen synchron und andernfalls asynchron. Der Vorteil besteht darin, daß die längste Taktverzögerung die kürzeste Distanz zwischen benachbarten Zellen ist, und das System kann daher mit sehr schnellen Taktfrequenzen arbeiten.
  • Zeichnungsbeschriftung: Fig. 1 (Stand der Technik):
  • a Rückmeldung
  • Fig. 2:
  • 20 uici Prozessor
  • 22 Zelle 1
  • Zelle 2
  • Zelle R
  • b Eingang
  • c Message-Strom
  • d codierter Strom
  • e Ausgang
  • f R Cauchy-Zellen
  • Fig. 3:
  • g UC-Eingang
  • h U-Eingang
  • i SMC-Eingang
  • j CK IN
  • k Zelle J
  • l Uc-Ausgang
  • m U-Ausgang
  • n SMC-Ausgang
  • o CK OUT
  • Fig. 4(a):
  • p SMC-Eingang von Zelle 1:
  • Fig. 4(b):
  • q U-Eingang von Zelle 1:
  • Fig. 4(c):
  • r U-Ausgang von Zelle 1:
  • Fig. 4(d):
  • s U-Ausgang von Zelle r:
  • Fig. 4(e):
  • t SMc-Ausgang von Zelle r:
  • u Anzahl der Taktzyklen i:
  • Fig. 5a:
  • 20 uici Prozessor
  • 30 Register
  • 40 Steuerlogik
  • 32 Multiplexer
  • v CK (an alle Register im Prozessor)
  • Fig. 5b:
  • 102 Konstante
  • 110 Konstante
  • 112 GF-Teiler
  • Fig. 6a
  • g Uc-Eingang
  • w ASEL Steuersignal
  • x RCTL Steuersignal
  • Fig. 6b
  • 78 &alpha;&supmin;¹ Initialwert von x
  • y &alpha;&supmin;¹ Multiplizierer: (3-Bit GF (2³) Beispiel)
  • z XSEL Signal
  • Fig. 6c
  • 96 steuerlogik
  • a' OSEL Logiksignal
  • b' CK (an alle Register in dieser Zelle)
  • Fig. 7(a):
  • c' SCM (Zelle j-i)
  • Fig. 7(b):
  • d' SMC (Zelle j)
  • Fig. 7(h):
  • e' (neuer Zyklus)

Claims (6)

1. Systolisch-systematischer Reed-Solomon-Kodierer zum Kodieren eines Stroms von K Message-Symbolen, wobei der Kodierer eine Vielzahl identischer, aufeinanderfolgender und hintereinandergeschalteter R Zellen (22) aufweist und wobei der Strom von Message-Symbolen durch die Zellenreihe (22) fließt, so daß jede Zelle ein anstehendes Message-Symbol von der ihr vorgeschalteten Nachbarzelle erhält, während sie das vorhergehende Message-Symbol an die ihr nachgeschaltete Nachbarzelle angibt, und wobei jede der Zellen (22) Mittel aufweist zum mindestens teilweisen Durchführen der Galois-Fel darithmetik-Berechnung eines entsprechenden Redundanzprüfungs-Symbols wj nach der Formel:
in Übereinstimmung mit einem Code-Erzeugungs-Polynom aus dem Strom der Message-Symbole, wobei die entsprechenden Redundanzprüfungs-Symbole an das Ende des Stroms von Message-Symbolen angehängt werden, gekennzeichnet durch einen gemeinsamen Prozessor (20) zum einmaligen Errechnen zumindest des Produkts aus ui ci der Galois-Feldarithmetik-Berechnung, um ein Teilergebnis zu erhalten, wobei dieses Teilergebnis nacheinander jeder der R Zellen (22) zugeführt wird.
2. Kodierer nach Anspruch 1, dadurch gekennzeichnet, daß die identischen aufeinanderfolgenden Zellen (22) sogenannte Cauchy-Zellen sind.
3. Kodierer nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der Kodierer einen Strom von K Message-Symbolen u-verarbeitet, wobei der Index i Werte von 1 bis K annehmen kann, und jede der Zellen (22) eines von R Redundanzprüfungs-Symbolen berechnet und der gemeinsame Prozessor (20) folgende Komponenten aufweist:
- Mittel (30) zum Speichern einer ersten Konstante c&sub1;;
- Mittel (37), die für jeden der Indizes i ein Rekurrenzverhältnis ci+1/ci liefern;
- Mittel (34) zum Multiplizieren einer vorgegebenen Konstante ci mit diesem Verhältniswert, um die nächste Konstante ci+1 zu bestimmen; und
- Mittel (42) zum Berechnen des Produkts zwischen jedem Message-Symbol u und der entsprechenden Konstante ci.
4. Kodierer nach Anspruch 3, dadurch gekennzeichnet, daß der Prozessor (20) Mittel aufweist, die den Wert von ui Ci den Zellen (22) zuführt, damit diese die Redundanzprüfungs-Symbole berechnen.
5. Verfahren zum systematisch-systolischen Kodieren eines Stroms von K Message-Symbolen ui, wobei der Index i Werte von 1 - K annehmen kann entsprechend einem Reed-Solomon-Code-Erzeugungs-polynom zum mindestens teilweisen Durchführen in jeder einer Vielzahl identischer aufeinanderfolgender R Zellen (22) einer Galois-Feldarithmetik- Berechnung eines entsprechenden Redundanzprüfungs-Symbols Wj nach der Formel:
aus dem Strom der Message-Symbole und Anhängen der entsprechenden Redundanzprüfungs-Symbole an das Ende des Stroms von Message-symbolen, gekennzeichnet durch eines allen Zellen (22) gemeinsamen Verfahrens zur Berechnung des Produkts aus ui ci, wobei dieses Produkt nacheinander jeder der Zellen (22) zugeführt wird.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß das gemeinsame Verfahren folgende Schritte umfaßt:
- Speichern einer Festkonstante c&sub1;;
- Speichern eines Rekurrenzverhältnisses ci+1/ci für jeden Wert des Index i; und
- Multiplizieren jedes ci mit jedem der Message-Symbole ui für jeden der Werte des Index i.
DE3852648T 1987-10-13 1988-10-05 Hypersystolischer reed-solomon-encoder. Expired - Fee Related DE3852648T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/107,207 US4835775A (en) 1987-10-13 1987-10-13 Hypersystolic reed-solomon encoder
PCT/US1988/003382 WO1989003621A1 (en) 1987-10-13 1988-10-05 Hypersystolic reed-solomon encoder

Publications (2)

Publication Number Publication Date
DE3852648D1 DE3852648D1 (en) 1995-02-09
DE3852648T2 true DE3852648T2 (de) 1995-08-17

Family

ID=22315424

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3852648T Expired - Fee Related DE3852648T2 (de) 1987-10-13 1988-10-05 Hypersystolischer reed-solomon-encoder.

Country Status (4)

Country Link
US (1) US4835775A (de)
EP (1) EP0393080B1 (de)
DE (1) DE3852648T2 (de)
WO (1) WO1989003621A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4996690A (en) * 1988-08-26 1991-02-26 Stac Electronics Write operation with gating capability
US5130990A (en) * 1990-02-15 1992-07-14 The United States Of America, As Represented By The Administrator, National Aeronautics And Space Administration VLSI architecture for a Reed-Solomon decoder
US5115436A (en) * 1990-05-04 1992-05-19 Bell Communications Research Forward error correction code system
US5659780A (en) * 1994-02-24 1997-08-19 Wu; Chen-Mie Pipelined SIMD-systolic array processor and methods thereof
US5761220A (en) * 1994-09-19 1998-06-02 Cirrus Logic, Inc. Minimum latency asynchronous data path controller in a digital recording system
US5553272A (en) * 1994-09-30 1996-09-03 The University Of South Florida VLSI circuit structure for determining the edit distance between strings
US5778009A (en) * 1995-06-14 1998-07-07 Quantum Corporation Dedicated ALU architecture for 10-bit Reed-Solomon error correction module
US6405339B1 (en) * 1999-08-31 2002-06-11 International Business Machines Corporation Parallelized programmable encoder/syndrome generator
WO2001024379A2 (de) * 1999-09-25 2001-04-05 Manfred Rieck Verfahren und vorrichtungen zum erzeugen eines die korrektur von übertragungsfehlern ermöglichenden digitalen codes und zum fehlerkorrigierenden decodieren eines solchen codes
US6738942B1 (en) 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system
US6694476B1 (en) 2000-06-02 2004-02-17 Vitesse Semiconductor Corporation Reed-solomon encoder and decoder
US8707143B1 (en) * 2011-06-13 2014-04-22 Altera Corporation Multiplication-based reed-solomon encoding architecture
US10445323B2 (en) * 2015-09-30 2019-10-15 University Of Virginia Patent Foundation Association rule mining with the micron automata processor
US10181864B2 (en) 2016-02-26 2019-01-15 Altera Corporation Methods and apparatus for performing reed-solomon encoding

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4584686A (en) * 1983-12-22 1986-04-22 Optical Storage International Reed-Solomon error correction apparatus
US4665523A (en) * 1984-02-15 1987-05-12 Stanford University Method and means for error detection and correction in high speed data transmission codes
US4747103A (en) * 1985-03-21 1988-05-24 Canon Kabushiki Kaisha Signal processing apparatus for correcting decoding errors

Also Published As

Publication number Publication date
WO1989003621A1 (en) 1989-04-20
US4835775A (en) 1989-05-30
EP0393080A1 (de) 1990-10-24
DE3852648D1 (en) 1995-02-09
EP0393080B1 (de) 1994-12-28

Similar Documents

Publication Publication Date Title
DE3852648T2 (de) Hypersystolischer reed-solomon-encoder.
DE3879493T2 (de) Verfahren und geraet zur fehlerkorrektur.
DE3650335T2 (de) Rechenverfahren und -gerät für endlichfeldmultiplikation.
DE3119669C2 (de)
DE69834542T2 (de) Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke
DE19747774B4 (de) Reed-Solomon-Decoder zur Verwendung beim verbesserten Fernsehen (ATV)
DE69117857T2 (de) Gerät und Verfahren zur Parallelgeneration von zyklischen redundanten Prüfungskoden
DE2204766C2 (de) Codeumsetzer für Datenverarbeitungssysteme
DE3787900T2 (de) Verfahren und Gerät zur Erzeugung von Prüfungs-Byten zur Fehlerdetektion für einen Datenblock.
DE2942825A1 (de) Verfahren und vorrichtung zur verarbeitung sequentiell uebertragender digitaler informationsworte
DE1905138A1 (de) Fehlerbuendei korrigierende Entschluesselungseinrichtung
EP0545498B1 (de) Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen
DE60124851T2 (de) Vorrichtung und Verfahren zur Fehlererkennung in einem CRC Code mit invertierten Paritätsbits
DE2320422A1 (de) Verfahren zur fehlererkennung
DE69020951T2 (de) Kodiereinrichtung für einen Fehlerprüfungs- und Fehlerkorrekturkode.
DE3006958A1 (de) Digitalsignal-uebertragungssystem
DE2217935C3 (de) Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE2053836C3 (de) Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen
DE2324538A1 (de) Digitale nachrichtenuebertragungsanordnung
DE69332937T2 (de) Korrekturverfahren für verlorengegangene Daten und Schaltung dafür
DE3856035T2 (de) Schaltung mit grosser bandbreite und verfahren zur reed-solomon-kodierung, dekodierung und fehlerkorrektur
DE3752367T2 (de) Fehlerkorrekturgerät
DE1449334A1 (de) Datenverarbeitungsanlage
DE3104762C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee