Reed-Solomon-Code

Der Reed-Solomon - Code ist ein endliches Feld basierten Korrekturcode , dessen Prinzips ist es, eine bauen formales Polynom von den Symbolen zu übertragen und zu ihm überabtasten . Das Ergebnis wird dann anstelle der ursprünglichen Symbole gesendet. Die Redundanz dieser Überabtastung ermöglicht es dem Empfänger der codierten Nachricht, das Polynom zu rekonstruieren, selbst wenn während der Übertragung Fehler aufgetreten sind .

Geschichte

Dieser Code stammt von Irving S. Reed und Gustave Solomon . Es wurde insbesondere zum Codieren von CDs verwendet .

Überblick

Sei m , n , k , t streng positive ganze Zahlen, so dass . Im Allgemeinen nehmen wir m = 8 (manchmal m = 16), n = 255, k = 239, t = 8. Reed-Solomon-Codes sind Blockcodes. Tatsächlich nehmen sie einen Datenblock fester Größe k als Eingabe , wobei jedes Datenelement ein Elementsymbol des endlichen Feldes mit Elementen ist. Diesem Block werden 2 t Steuersymbole hinzugefügt , wodurch ein Ausgangsblock mit einer festen Größe von n gebildet wird . So haben wir:

Dank der Hinzufügung von Steuersymbolen können mit diesen Codes zwei Arten von Fehlern korrigiert werden:

Wir stellen eine Reed-Solomon-Codierung fest oder .

Wenn die Fehlerlokalisierung nicht im Voraus bekannt ist - was in der Praxis der Fall ist -, ist bekannt, dass die Reed-Solomon-Codierung t Fehler korrigiert .

Da n in der Praxis häufig zu groß ist, kann ein Teil der Informationen vor dem Codieren durch Nullen ersetzt werden und wird nicht übertragen, sondern muss vor dem Decodieren hinzugefügt werden. Wir sprechen in diesem Fall von verkürzten  Reed-Solomon-Codes  .

Man kann sich auch Reed-Solomon-Codes auf beliebigen endlichen Feldern vorstellen.

Ein Beispiel für Reed-Solomon-Code

Es gibt verschiedene Varianten des Reed-Solomon-Codes, die in den letzten Jahrzehnten entwickelt wurden, um Kodierungs- und Dekodierungsprozesse immer schneller zu machen. Eine der möglichen Variationen wird hier vorgestellt.

Zu übermittelnde Informationen

Sei eine Nachricht A, die aus k elementaren Symbolen des endlichen Feldes besteht . Dieses Feld hat das Merkmal 2, was bedeutet, dass es die Berechnungsregel 1 + 1 = 0 oder sogar 1 = -1 erfüllt oder dass es keinen Unterschied zwischen Summe und Differenz gibt. Es hat auch ein sogenanntes primitives Element mit der folgenden Eigenschaft:

Somit können die Nicht-Null-Elemente von als lineare Kombinationen von mit Koeffizienten in {0,1}, aber auch als Potenz von zwischen 0 und geschrieben werden .

Die k Symbole, aus denen die Nachricht A besteht, werden als Koeffizienten eines Polynoms mit einem Grad kleiner oder gleich k & supmin; ¹ betrachtet, dh ein Element von . Dieses Polynom ist die zu übertragende Information und wird erneut notiert .

Codierung

Wir nennen das Generatorpolynom das Polynom vom Grad 2 t, das wie folgt definiert ist:

Dieses Polynom lässt für Wurzeln die .

Wir definieren das Kontrollpolynom als den Rest der euklidischen Division von durch Dieses Polynom hat einen Grad von streng weniger als 2 t . Die Koeffizienten dieses Polynoms bilden den Informationssteuercode A.

Wir definieren dann das Polynom . Dieses Polynom ist von einem Grad kleiner oder gleich . Es hat die Eigenschaft, sich für aufzuheben . (Erinnerung: Wir befinden uns immer noch in einem Feld mit der Eigenschaft 2, also haben + und - den gleichen Effekt.)

Nachrichtenübertragung

Die Koeffizienten des Polynoms werden an den Empfänger übertragen. Während dieser Übertragung können Fehler in Bezug auf bestimmte Koeffizienten auftreten, und der Empfänger empfängt Koeffizienten, die ein Polynom bilden .

Der Empfänger testet dann, ob für alle i zwischen 1 und 2 t wir haben . Wenn ja, wird davon ausgegangen, dass kein Übertragungsfehler aufgetreten ist . Es findet die Information A in den k -1 -Koeffizienten der Terme höchsten Grades des Polynoms .

Wenn mindestens einer der Werte ungleich Null ist, ist bei mindestens einem der Koeffizienten ein Übertragungsfehler aufgetreten. Der Empfänger ist jedoch der Ansicht, dass die Anzahl der betroffenen Koeffizienten kleiner oder gleich t ist . Unter dieser Annahme kann die anfängliche C-Nachricht rekonstruiert werden.

Korrektur von Fehlern

Wenn verschieden ist , das heißt , ein Polynom vom Grad weniger als oder gleich n -1 ist , und mit einer Anzahl von Nicht-Null - Koeffizienten. Nach der Hypothese nehmen wir an, dass dies kleiner oder gleich t ist . Lassen Sie uns posieren:

, Und die wobei unterschiedliche Indizes , die zwischen 0 und variieren kann n -1.

ist dem Empfänger derzeit unbekannt. Es ist für diesen zu bestimmen:

Die Anzahl der Fehler , die Reihen, in denen sich diese Fehler befinden, die Werte dieser Fehler.

Sobald diese Informationen rekonstruiert wurden, kann der Empfänger das Polynom bestimmen und die ursprüngliche Nachricht rekonstruieren . Dazu folgen wir den folgenden fünf Schritten.

1) Berechnung von Syndromen: Wir berechnen die 2 t- Größen , sogenannte Syndrome . Da und dass die Null sind, haben wir auch:

Dies liefert 2 t Gleichungen, deren Unbekannte und mehr in Nummer 2 t sind . Das System ist jedoch nicht linear und seine Auflösung ist technisch.

2) Bestimmung der Anzahl der Fehler: Wir betrachten das Polynom, dessen Wurzeln die Umkehrungen von sind . Dieses Polynom dehnt sich in der Form aus . Wir können überprüfen, ob die dem Empfänger unbekannten Koeffizienten ein lineares Gleichungssystem erfüllen, wobei die j- te Gleichung für j von 1 bis 1 variiert  :

tatsächlich :

Darüber hinaus ist der größte Wert kleiner oder gleich t, für den die Determinante dieses Systems ungleich Null ist, genau die Zahl , die der Anzahl der übertragenen Fehler entspricht. Wir beginnen daher mit , und wenn die Determinante Null ist, nehmen wir ab, bis wir eine Determinante ungleich Null erhalten.

3) Bestimmung des Ortes der Fehler: Sobald dies bestimmt ist, wird das System gelöst, das das Polynom definiert . Wir suchen nach den Wurzeln dieses Polynoms, dessen Umkehrungen die Werte von ergeben . Für jedes r zwischen 1 und , suchen wir die Leistung von so dass . Die Reihen der übertragenen Fehler wurden somit bestimmt .

4) Bestimmung des Wertes der Fehler: Die nunmehr bekannt ist, kann man das System , dessen allgemeine Gleichung lösen und deren Unbekannten sind die , die es ermöglichen , die Werte dieser Unbekannten zu bestimmen. Dies sind die Werte der gemachten Fehler.

5) Korrektur der empfangenen Nachricht: Wenn wir das und das kennen , kennen wir das Polynom und damit die ursprüngliche Nachricht

Löschfehler

Wenn die Informationen auf ein Medium wie eine CD oder DVD geschrieben werden, können Löschfehler auftreten. Der Fehler ist genau lokalisiert, aber dort können keine Informationen gelesen werden. Wir können jedoch die gelöschten Symbole mit Hilfe der durch die Syndrome gegebenen Gleichungen wiederherstellen. Da die Orte bekannt sind, dass die Unbekannten die einzigen Werte sind und wir 2 t- Gleichungen haben, können wir das Löschen von Symbolen korrigieren .

Anwendungen

Für die CD werden 2 Reed-Solomon-Codierungen verwendet (CIRC-Code für Cross Interleaved Reed-Solomon-Code). Wir codieren ein erstes Mal mit einem Code C1 = RS (28, 24), dann verschachteln wir (dies ermöglicht es, die Informationen zu verteilen, um den Zügen aufeinanderfolgender Fehler besser zu widerstehen, die einen Kratzer verursachen können, der viele Bytes lokal zerstört) dann werden die verschachtelten Daten erneut mit einem Code C2 = RS (32, 28) codiert. Die Idee ist, dass der erste Code es ermöglicht, das Umgebungsrauschen zu beseitigen. Wenn er jedoch nicht korrigiert werden kann (z. B. wenn ein Fehlerstoß auftritt), wird der Block gelöscht (da wir doppelt so viel korrigieren können, werden nur falsche Zeichen gelöscht). und dann wird der Code deinterlaced . Somit wird der Informationsverlust über einen großen Datenbereich verwässert, wodurch der Code diese Löschungen korrigieren kann.

Für die DVD gilt das gleiche Prinzip wie für die CD, wir haben einen Code PI = RS (182, 172) und einen Code PO = RS (208, 192)

Satellitenübertragung

Für DVB lautet die Codierung RS (204, 188, t = 8).

Datenübertragung

In ADSL / ADSL2 / ADSL2plus ist die Codierung häufig RS (240, 224, t = 8) oder sogar RS (255, 239, t = 8).

Beispiel

für DVB ist die Codierung RS (204, 188, t = 8)

Für 188 (= k) Bytes am Eingang werden 16 (= 2 t ) Fehlerkorrekturbytes addiert  , was 204 am Encoderausgang ergibt.

8 Bytes (= t) von 204 können korrigiert werden.

Wenn mehr als 8 Bytes als fehlerhaft erkannt werden, wird der Benutzerdatenblock als fehlerhaft markiert. Es wird dann kein Fehler korrigiert

Die Schwäche

Aufgrund der geringen Anzahl von Symbolen, die durch die Reed-Solomon-Codierung korrigiert werden können, ist diese Codierung im Fall von Impulsrauschen mit langer Dauer oder regelmäßigem Zufallsrauschen sehr schlecht.

Verwendung in einem Modem mit Faltungscodierer

Modem synoptisch mit reed-solomon.png

Im Allgemeinen wird bei der Übertragung in einem Modem (ADSL, IDR / SMS-Satellitenmodem, DVB-S usw.) die durch einen Interleaver verstärkte Reed-Solomon-Codierung von einem Faltungscodierer begleitet. Beim Empfang werden die vom Viterbi- Decoder nicht korrigierten Restfehler dann in den Originalblöcken deinterlaced und vom Reed-Solomon-Decoder im Umfang seiner Korrekturleistung korrigiert.

Der Zweck des Deinterlacers besteht darin, beim Empfang einen Burst gruppierter und häufig nicht korrigierbarer Fehler (Impulsrauschen) durch eine Vielzahl verteilter und häufig korrigierbarer Fehler für den Reed-Solomon-Decoder zu ersetzen.

Externe Links

Verweise

  1. (in) IS Reed, G. Solomon, "  Polynomcodes über einige endliche Felder  " , J. Soc. Indus. Appl. Mathematik. , N o  8,1960, p.  300-304
  2. Pascal Boyer, kleiner Begleiter von Zahlen und ihren Anwendungen , Calvage und Mounet,2019648  p. ( ISBN  978-2-916352-75-6 ) , VI. Kryptographie, Kap.  8.4 („BCH-Codes“), S.  560-562.
  3. (in) D. Gorenstein, N. Ziegler, "  Eine Klasse von Fehlerkorrekturcodes in Symbolen  " , J. Soc. Indus. Mathematik. Appl. , N O  9,1961, p.  207-2014
  4. (in) WW Peterson, "  Codierungs- und Fehlerkorrekturverfahren für die Bose-Chaudhuri-Codes  " , IRE Trans. Informieren. Theorie , n o  IT-6,1960, p.  459-470
  5. (in) Maria Bras-Amoros "  Ein Dekodierungsansatz für Reed-Solomon-Codes aus ihrer Definition  " , Amer. Mathematik. Monthly , vol.  125, n o  4,April 2018, p.  320-338
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">