-
Die Erfindung betrifft ein Verfahren zur Rückgewinnung verlorener Daten und zur Korrektur korrumpierter Daten, die von einer Sende-Vorrichtung zu einer Empfangs-Vorrichtung übertragen werden. Zuerst wird ein Kodieren der Daten mittels eines Kodierers durchgeführt, der mit der Sende-Vorrichtung verbunden ist. Anschließend werden die Daten über ein Übertragungssystem von der Sende-Vorrichtung zu der Empfangs-Vorrichtung übertragen, und die Daten werden vorzugsweise unter Anwendung eines Low-Density-Parity-Check-Verfahrens mittels eines mit der Empfangs-Vorrichtung verbundenen Dekodierers dekodiert, wobei während des Dekodierens die verlorenen Daten wiederhergestellt werden und die korrumpierten Daten korrigiert werden.
-
Bei den übertragenen Daten kann es sich z. B. um einen Audio- oder Video-Stream handeln. Von einer Sende-Vorrichtung, die diese Daten verfügbar macht, werden die Daten z. B. zu einer mobilen Empfangs-Vorrichtung übertragen. Die mobile Empfangs-Vorrichtung kann z. B. ein Mobiltelefon, ein PDA oder eine andere mobile Endvorrichtung sein. Alternativ können die Daten auch von einer Sende-Vorrichtung zu einer stationären Empfangs-Vorrichtung übertragen werden.
-
Zu den Beispielen von Normen, die zur Übertragung von Daten an mobile Endvorrichtungen verwendet werden, zählen DVB-H, MBMS und, wie in naher Zukunft zu erwarten ist, DVB-SH. Das Konzept, das hier vorgeschlagen wird, funktioniert auch bei Punkt-zu-Punkt-Verbindungen.
-
Zur Gewährleistung einer guten Übertragungsqualität ist es erforderlich, die korrekte Übertragung von Daten oder Datenpaketen an die Empfangs-Vorrichtung zu verifizieren. Es existieren verschiedene Verfahren zur Rückgewinnung verlorener Daten und zur Korrektur korrumpierter Daten, die nicht korrekt an die Empfangs-Vorrichtung übertragen wurden.
-
Ein bekanntes Verfahren zur Rückgewinnung verlorener Daten ist das Low-Density-Parity-Check(LDPC-)Verfahren oder der Low-Density-Parity-Check-Code. Dieses Verfahren wird an einem sogenannten Lösch-Kanal angewandt. Neben einer Anwendung durch Kodieren auf der Ebene der Physical Layer existieren weitere Anwendungsmöglichkeiten auf dem Gebiet des Packet-Erasure-Channel (PEC).
-
1 zeigt schematisch ein Beispiel der Rückgewinnung verlorener Daten und der Korrektur korrumpierter Daten gemäß dem Stand der Technik. In 1 ist der Fall dargestellt, in dem gewünscht ist, eine Anzahl k von Informationspaketen von einer Sende-Vorrichtung (linke Seite) zu einer Empfangs-Vorrichtung (rechte Seite) zu übertragen. Unter Verwendung eines Paketebenen-Kodierers auf der Sende-Seite werden die k Informationspakete und die m Paritätspakete zu n = m + k Codewort-Paketen zusammengefügt. Auf der Ebene der Physical Layer werden die Pakete durch einen Fehlerkorrekturcode (z. B. einen Turbocode) und einen Fehlerdetektionscode (z. B. einen Cyclic Redundancy Check, CRC) gesichert, so dass korrumpierte Pakete entfernt werden können. Auf den Ebenen oberhalb des Physical Layer werden Pakete entweder korrekt empfangen oder dahingehend als verloren angesehen, dass sie gelöscht worden sind, da der CRC ein korrumpiertes Paket in der Physical Layer detektiert hat. Von den darüberliegenden Schichten aus wird somit der Übertragungskanal als ein sogenannter Lösch-Kanal angesehen, wobei die Pakete die Transmissionseinheiten repräsentieren. In der Praxis jedoch tritt der Fall ein, dass der CRC versagt, was zu Fehlern bei Paketen führt, die als korrekt markiert sind. Ein derartiges CRC-Versagen verursacht eine Verschlechterung der Leistung.
-
Auf der Empfangs-Seite werden die empfangenen Codewort-Pakete durch den Paket-Ebenen-Dekodierer dekodiert, so dass die verlorenen Pakete rückgewonnen werden und die korrumpierten Daten korrigiert werden.
-
Die Rückgewinnung verlorener Daten und die Korrektur korrumpierter Daten kann unter Nutzung einer Redundanz der Daten realisiert werden. Der von dem Paket-Ebenen-Dekodierer gehandhabte Kodiervorgang wird gewöhnlich bit-weise (oder byte-weise) unter Verwendung eines Kodierers mit einem Generic Binary Linear Block Code durchgeführt. Das Dekodieren wird anschließend durch Lösen des Gleichungssystems durchgeführt, das durch die Parity-Check-Matrix H des Codes definiert ist.
-
Zur Rückgewinnung verlorener Pakete kann die Maximalwahrscheinlichkeitsdekodierung (ML) verwendet werden, um die Löschungen rückzugewinnen. Das Problem, mit dem jeder Dekodierer konfrontiert wird, nachdem er die Symbole von dem Lösch-Kanal empfangen hat, kann anhand der Lösung der folgenden Gleichung beschrieben werden:
-
Hier bezeichnet
den Satz gelöschter (korrekt empfangener) Symbole und
die Submatrix, die aus den entsprechenden Spalten der Parity-Check-Matrix zusammengesetzt ist. Ein korrekter Weg zum Lösen linearer Gleichungen besteht in der Anwendung des Gaußschen Eliminationsverfahrens. Bei großen Blocklängen jedoch würde dies zahlreiche Operationen erfordern (z. B. zahlreiche Additionen für den speziellen Fall von GF(2)) und wäre somit zu zeitaufwendig. Deshalb wurden in
DE 10 2009 017 540 einige intelligente Gaußsche Eliminationstechniken vorgeschlagen, die sich die Dünnbesetztheit der der Parity-Check-Matrix zunutze machen. Das Ziel besteht darin, eine zeit aufwendige Brute-Force-Gauß-Elimination nur an einer kleinen Submatrix anzuwenden. Zu diesem Zweck wird
einfach durch Reihen und Salten-Permutationen in eine niedrigere Triangularform gebracht. Dieser Schritt könnte jedoch durch einige Spalten blockiert werden, und die entsprechenden Symbole werden als Referenzsymbole oder Pivots bezeichnet. Als nächstes werden diese Spalten von
zu einer separaten Matrix P bewegt, und der Triangularisierungsvorgang kann fortgesetzt werden. Als Endergebnis können sämtliche gelöschten Symbole als eine Kombination von Referenzsymbolen repräsentiert werden, und somit reicht es aus, eine Gaußsche Elimination nur an Teilen von P vorzunehmen. Falls die Anzahl von Pivots gering ist, ist P klein, und die Gaußsche Elimination verläuft schnell. Die Gaußsche Elimination hat eine Komplexität O(n
3), wobei n hier für die Blocklänge steht. Falls z. B. die Blocklänge des Codes verdoppelt wird, ist eine Dekodiergeschwindigkeit zu erwarten, die (zumindest bei großen Blocklängen) achtmal niedriger ist.
-
Der smarte Gaußsche Eliminationsvorgang wird im Folgenden detaillierter beschrieben. Die Matrix
kann in verschiedene Submatrizes unterteilt werden, wie
2 zeigt. Bei den Hauptteilen handelt es sich um A, das den Teil in Triangularform repräsentiert, B, das der Teil ist, der in Triangularform gebracht werden soll, D, das zu Beginn eine dünnbesetzte Matrix ist, jedoch am Ende ausgenullt wird, Z, das nur Nullen enthält, und P, das aus den Spalten besteht, die den Referenzsymbolen entsprechen. Am Ende kann P in einen dünnbesetzten höheren und einen dichten niedrigeren Teil unterteilt werden. Nun kann der folgende Algorithmus angewandt werden:
- 1. Suchen nach jeder Reihe ersten Grades in B. Der Grad einer Reihe (Spalte) ist definiert durch die Anzahl der Einträge, die sie enthält. Zu Beginn ist B gleich Falls keine Reihe ersten Grades gefunden wird, wird mit Schritt 4 fortgefahren.
- 2. Nur Anwenden von Spalten- und Reihen-Permutationen, um den einzelnen einen Eintrag in der Reihe ersten Grades auf die obere linke Seite von B zu bewegen.
- 3. Vergrößern von i und k um eins. Auf diese Weise wird A in jedem Schritt größer, während die Bemessung von B schrumpft. Zu Beginn existiert A nicht.
- 4. Falls keine Reihe ersten Grades gefunden werden kannte (vgl. Schritt 1), Verschieben einer definierten Spalte von B und Z zu P. Somit wird auch j um eins reduziert. Ganz zu Beginn existiert P nicht. Welche Spalte von B und Z gewählt wird, um zu P bewegt zu werden, wird durch die Pivoting-Strategie definiert.
- 5. Wiederholen der Schritte 1 bis 4, bis dim(P) ≠ 0 × l, wobei l eine beliebige positive Ganzzahl ist.
- 6. Ausnullen von D. Nun wird der untere Teil von P, der als Pl bezeichnet wird, dicht.
- 7. Durchführen einer Brute-Force-Gauß-Elimination an Pl. Die Brute-Force-Gauß-Elimination besteht aus zwei Schritten (zur Veranschaulichung siehe 3):
a. einem Vorwärts-Eliminations-Schritt, um die Matrix Pl in eine obere Triangularform zu bringen:
Betrachtet wird der Satz von GleichungenHier handelt es sich bei nur um die unbekannten Pivots, und somit um einen Sub-Satz der ursprünglichen Unbekannten Der Vektor s* ist der entsprechende bekannte Term, der durch Multiplikation des entsprechenden Teils der Parity-Check-Matrix mit den entsprechenden Code-Symbolen entsteht. Hier sind die bekannten Code-Symbole xK eine Permutation derjenigen in Gleichung (1). Dann werden (gewichtete) Reihen-Additionen durchgeführt, um Pl in eine obere Triangularform zu bringen.
Nach dem Vorwärts-Eliminations-Schritt erhält man einen modifi zierten Satz von GleichungenDie Matrix entspricht hier Pl in der oberen Triangularform. S' ist der bekannte Term, auch als Syndrom bezeichnet. Er entsteht durch Multiplikation der bekannten Code-Symbole und des entsprechenden Teils der Parity-Check-Matrix H'K·x'K.
b. einem Rückwärts-Eliminations-Schritt, um die Pivots zu erhalten.
- 8. Falls die Gaußsche Elimination erfolgreich war, wird eine erneute Rückwärts-Elimination vorgenommen, um die verbleibenden Unbekannten rückzugewinnen. Andernfalls ist das Dekodieren fehlgeschlagen.
-
Im Fall nicht detektierter Fehler in den Codewort-Symbolen wird das gesamte Codewort korrumpiert, was aufgrund der Tatsache der Fall ist, dass das fehlerhafte Codewort-Symbol (oder -Paket) in mehreren Additionen involviert ist. Dies führt zu einem Mindestwert für den Fehler. Dies ist gezeigt in 6a, oberste Kurve, BEEC (keine Fehlerkorrektur).
-
Ein Nachteil des beschriebenen smarten Gaußschen Eliminationsverfahrens besteht darin, dass es weder in der Lage ist, Fehler in dem Codewort zu detektieren, noch dazu, diese zu korrigieren, was zu einem Leistungsverlust führt.
-
Die Druckschrift – LIVA, G. [et al.]: Pivoting Algorithms for Maximum Likelihood Decoding of LDPC Codes over Erasure Channels. In: IEEE Global Telecommunications Conference, 2009, S. 1–6. – ISBN 978-1-4244-4148-8-beschreibt ein Verfahren zur Rückgewinnung verlorener Daten unter Verwendung von LDPC Codes. Konkret werden verschiedene Pivoting Algorithmen für Maximum Likelihood Decoding bei LDPC Codes vorgestellt.
-
Es ist Aufgabe der vorliegenden Erfindung, ein Verfahren zur Rückgewinnung verlorener Daten und zur Korrektur korrumpierter Daten zu schaffen, das die Möglichkeit bietet, mehrere Fehler zu detektieren und einzelne Codewort-Fehler zu korrigieren.
-
Diese Aufgabe wird durch die Merkmale gemäß Anspruch 1 der Erfindung gelöst.
-
Das Verfahren zur Rückgewinnung verlorener Daten und zur Korrektur korrumpierter Daten weist folgende Schritte auf:
- – Kodieren der Daten durch einen Kodierer, der mit der Sende-Vorrichtung verbunden ist,
- – Übertragen der Daten aus der Sende-Vorrichtung an die Empfangs-Vorrichtung über eine Übertragungs-Vorrichtung und
- – Dekodieren der Daten durch einen mit der Empfangs-Vorrichtung verbundenen Dekodierer, wodurch während des Dekodierens eine Rückgewinnung verlorener und/oder korrumpierter Daten durch Lösen des Gleichungssystems einer Parity-Check-Matrix H durchgeführt wird.
-
Ein übertragenes Codewort wird auf der Empfängerseite in einen korrekt empfangenen Teil und den gelöschten Teil unterteilt (siehe Gleichung (1)). Danach werden einige Manipulationen durchgeführt (z. B. die Anwendung von Schritten der smarten Gaußschen Elimination). Generell kann die Erfindung mit jedem Satz von Gleichungen wie in Gleichung 1 angegeben angewendet werden. Als erster Schritt ist jedoch erforderlich, die Matrix
in eine derartige Form zu bringen, dass der untere Teil (b-a Reihen) nur Null-Einträge enthält. Eine Dreiecksform ist nicht erforderlich, in der Praxis jedoch wünschenswert (→ Rückwärts-Substitution). Man erhält einen modifizierten Satz von Gleichungen (siehe
4):
-
entspricht
nachdem einige Operationen an
vorgenommen worden sind (z. B. Schritte einer smarten Gaußschen Elimination), wodurch diese Operationen dazu führen, dass der untere Teil von
nämlich
nur aus Nullen besteht. x'
K entspricht bekannten Codewort-Symbolen und
einigen unbekannten Codewort-Symbolen, z. B. als kleiner Anteil sämtlicher Unbekannten (z. B. Pivots im Fall einer smarten Gaußschen Elimination).
-
Zu beachten ist wiederum, dass die hier aufgeführte Gleichung bereits eine Transformation der Gleichungen auf der Empfangs-Seite ist. Jegliche Transformation ist zulässig. Als Ergebnis wird jedoch ein Satz von Gleichungen benötigt, bei denen der untere Teil der Matrix auf der linken Seite null ist (der obere Teil ist nicht notwendigerweise dreieckig).
-
Das Verfahren gemäß der Erfindung weist ferner folgende Verfahrensschritte auf:
- – Multiplizieren korrekt empfangener Symbole x'K mit dem entsprechenden Teil H'K der Parity-Check-Matrix H, wobei diese Multiplikation ein (teilweises) Syndrom s' ergibt,
- – Prüfen der unteren b-a Reihen des Syndroms s' auf Nicht-Null-Einträge, wobei die Reihen, die Nicht-Null-Einträge enthalten, markiert werden. Es wird nur der untere Teil des Syndroms ausgewertet, da Widersprüche nur dort beobachtet werden können.
-
Gemäß der Erfindung werden die folgenden Verfahrensschritte angewandt, um ein einzelnes fehlerhaftes Symbol in dem übertragenen Codewort zu korrigieren:
- – Prüfen, welche Spalten H'K in der Berechnung der identifizierten Reihen mit den Nicht-Null-Einträgen in dem Syndrom s' involviert sind,
- – wobei, falls exakt eine Spalte identifiziert wird, das entsprechende Symbol in dem Codewort identifiziert wird, und
- – Korrigieren des fehlerhaften Symbols in dem Codewort durch Subtraktion des identifizierten Nicht-Null-Syndrom-Werts von dem fehlerhaften Symbol. Zu beachten ist, dass im Fall eines einzelnen Fehlers sämtliche Nicht-Null-Einträge in den unteren b-a Reihen gleich sind. Falls sie nicht gleich sind, muss angenommen werden, dass mehrere Fehler vorhanden sind und der Algorithmus nicht angewandt werden kann.
-
Die Matrix
an der das Verfahren gemäß der Erfindung angewandt wird, kann jede beliebige Matrix sein, die in Beziehung zu den gelöschten Symbolen steht, wie z. B. die durch Gleichung (1) bestimmte Matrix. Vorzugsweise wird das Verfahren gemäß der Erfindung an einer Submatrix P
l der Parity-Check-Matrix
angewandt, die gemäß dem in
DE 10 2009 017 540 beschriebenen Verfahren generiert worden ist.
-
Die Hauptidee für die Fehlerkorrektur, auf der die Erfindung basiert, liegt in der Tatsache begründet, dass normalerweise mehr Parity-Check-Gleichungen verfügbar sind, als zum Rückgewinnen der Löschungen benötigt werden (b > a). Diese Parity-Check-Gleichungen können dann verwendet werden, um eine Prüfung auf Inkonsistenzen und somit auf Fehler in den Paketen vorzunehmen. Falls keine oder nur wenige zusätzliche Parity-Check-Gleichungen verfügbar sind, könnte der Fehler möglicherweise unentdeckt bleiben. Jedoch sind in diesem Bereich von Löschmöglichkeiten, der nahe an der Auslastung liegt, die BER/PER-Kurven nicht von den Mindestwerten der Fehler dominiert, die durch falsch markierte Codewort-Symbole verursacht werden. Nachstehend folgt eine detaillierte Beschreibung einer bevorzugten Ausführungsform des verbesserten Dekodierers.
-
Für den Moment sei angenommen, dass keine Fehler existieren. Nach dem Durchführen der Schritte 1.–6. der smarten Gaußschen Elimination erhält man eine dichte Matrix Pl (vgl. 2) mit der Dimension a × b. Generell enthält diese Matrix mehr Reihen als Spalten (a ≤ b), Falls die Anzahl der Reihen kleiner ist als die Anzahl der Spalten, ist es nicht möglich, eine Gaußsche Elimination an der Matrix vorzunehmen, und somit kann das System von Gleichungen nicht gelöst werden. Es sei angenommen, dass dies nicht der Fall ist. In diesem Fall ist ein Dekodieren möglich. Um dies vorzunehmen, werden standardgemäße Gaußsche Eliminationen durchgeführt. Es wird begonnen mit (gewichteten) Reihen-Additionen, um die Matrix in eine obere Triangularform zu bringen (Vorwärts-Eliminations-Schritt). Dann wird eine Rück-Substitution durchgeführt. Unter der Annahme, dass die Matrix Pl einen vollen Rang hat, d. h. rank(Pl) == a, können die gelöschten Code-Symbole gelöst werden; andernfalls schlägt das Dekodieren fehl. Da Pl den Rang a hat, erhält man b-a Gleichungen, die durchgehend Nullen aufweisen. Zu beachten ist, dass sämtliche Reihen-Additionen (und -Multiplikationen) auch an dem bekannten Term durchgeführt werden müssen.
-
Eine effiziente Implementierung der Einzelfehler-Mehrfachlöschungs-Dekodierung kann formal in der folgenden Weise dargestellt werden:
- 1. Ausgehend von dem Satz von Gleichungenwobei den unbekannten (bekannten) Vektor von Symbolen bezeichnet und den entsprechenden Teil der Original-Parity-Check-Matrix bezeichnet, wird – falls möglich – eine in der Größe reduzierte Matrix berechnet, an der eine Brute-Force-Gauß-Elimination vorgenommen werden kann. Eine effiziente Implementierung für Codes, die dünnbesetzte Parity-Check-Matrizes aufweisen, ist durch die Schritte 1.–6. der smarten Gaußschen Elimination repräsentiert. Die Matrix wird auf Pl in 2 reduziert. Mit a ist die Anzahl der Spalten bezeichnet, und mit b ist die Anzahl der Reihen von Pl bezeichnet.
- 2. Nun wird der Schritt der vorwärtsgerichteten Gaußschen Elimination durchgeführt.
a. Falls rang (Pl) == a, wird eine Vorwärts-Elimination an der Matrix vorgenommen. Man erhält ein Gleichungssystem (vgl. 3). Es sei daran erinnert, dass dem Wert Pl in der oberen Triangularform entspricht.
i. Falls a == b, ist keine Fehlerkorrektur möglich. Es wird fortgefahren mit Schritt 6.
ii. Andernfalls wird mit Schritt 3 fortgefahren.
b. Falls rang (Pl) ≠ a, wird das Dekodieren gestoppt, und Ausgeben einer Fehlermeldung.
- 3. Es wird detektiert, ob das Codewort Fehler enthält.
a. Falls a == b, ist keine Fehlerkorrektur möglich. Es wird mit Schritt 6 fortgefahren.
b. Falls a < b, wird der Vektor S'' berücksichtigt, der aus den Reihen a + 1, ..., b des Syndrom-Vektors S' besteht. Zu beachten ist, dass die Elemente des Syndrom-Vektors Pakete mit einer bestimmten Größe sein können. Es muss eine Prüfung auf Nicht-Null-Einträge in S'' durchgeführt werden. Es sei angenommen, dass e ein Vektor ist, der die Reihen-Nummern der detektierten Nicht-Null-Einträge in enthält.
i. Falls e leer ist, sind keine Fehler in dem Codewort gefunden worden. Es wird mit Schritt 6 fortgefahren.
ii. Falls e nicht leer ist und die Nicht-Null-Einträge des Syndroms nicht den gleichen Wert haben, sind mehrere Fehler detektiert worden. Eine Korrektur ist nicht möglich. Das Dekodieren wird gestoppt, und es liegt ein Signal-Dekodierungs-Versagen aufgrund mehrerer Fehler vor.
iii. Andernfalls wird mit 4. fortgefahren.
- 4. Das fehlerhafte Symbol wird identifiziert. Deshalb wird die Submatrix H''K berücksichtigt, die aus den Reihen a + 1, ..., b von H'K besteht. In H''K wird nach Spalten mit Nicht-Null-Einträgen nur an den Reihen gesucht, die durch e angegeben sind.
a. Falls keine Spalten gefunden werden, ist keine Fehlerkorrektur möglich. Das Dekodieren wird gestoppt, und es liegt ein Signal-Dekodierungs-Versagen aufgrund eines Fehlers in dem Codewort vor.
b. Falls mehrere Spalten gefunden werden, ist keine Fehlerkorrektur möglich. Das Dekodieren wird gestoppt, und es liegt ein Signal-Dekodierungs-Versagen aufgrund eines Fehlers in dem Codewort vor.
c. Falls eine einzelne Spalte gefunden wird, ist eine Fehlerkorrektur möglich. Die Nummer der Spalte wird mit t gekennzeichnet. Es wird mit dem nächsten Schritt fortgefahren.
- 5. Es wird eine einzelne Fehlerkorrektur durchgeführt. Deshalb wird ein Nicht-Null-Eintrag des reduzierten Syndroms s' genommen und von dem Code-Symbol subtrahiert, das der identifizierten Spalte t entspricht. Für GF(2) und die Erweiterungsfelder von GF(2) entspricht die Subtraktion einer Addition.
- 6. Das Syndrom s' wird durch die folgenden Verfahrensschritte korrigiert:
a. Identifizieren sämtlicher Elemente des Syndroms s', für die das fehlerhafte Code-Symbol in der Berechnung berücksichtigt worden ist.
b. Subtrahieren des aus dem reduzierten Syndrom s'' erhaltenen Fehlermusters von den identifizierten Reihen von s', wodurch im Fall eines einzelnen Fehlers das Fehlermuster durch sämtliche Nicht-Null-Reihen von s'' gegeben ist.
- Als Alternative ist es möglich, das Syndrom s' aus s' = H'K·x'K neu zu berechnen, wobei der korrigierte Wert des Code-Symbols in x'K berücksichtigt wird. Bei dem oben vorgeschlagenen Ansatz ist s'' der untere Teil von s'.
- 7. Es wird eine Rücksubstitution durchgeführt, und die unbekannten Pivots werden unter Berücksichtigung der korrigierten Version des Syndroms s' erhalten.
- 8. Falls die Gaußsche Elimination erfolgreich war, wird die Rücksubstitution oder alternativ ein iterativer Dekodierschritt durchgeführt, um die verbleibenden Unbekannten zu gewinnen. Andernfalls ist das Dekodieren fehlgeschlagen.
-
Ferner ist vorzuziehen, dass
einer Submatrix P
l entspricht, die durch die folgenden Schritte generiert wird:
- – Bringen von in eine Triangularform mittels Spalten- und/oder Reihen-Permutationen,
- – Verschieben von Spalten einer Submatrix B von die den Triangularisierungsvorgang blockieren, in eine Submatrix P von so dass der Triangularisierungsvorgang fortgesetzt werden kann, bis die Parity-Check-Matrix H mit Ausnahme der Submatrix P in eine Triangularform gebracht wird,
- – wobei Pl dem dichten unteren Teil der Submatrix P entspricht, nachdem die Submatrix D von ausgenullt worden ist.
-
Im Folgenden werden bevorzugte Ausführungsformen der Erfindung im Zusammenhang mit den Figuren detaillierter beschrieben.
-
1 zeigt ein Flussdiagramm der Datenübertragung zwischen einer Sende-Vorrichtung und einer Empfangs-Vorrichtung, wie sie auch bei dem Verfahren gemäß der Erfindung praktikabel ist,
-
2 zeigt die Generierung der Submatrix Pl der Parity-Check-Matrix H gemäß dem Stand der Technik,
-
3 zeigt die Notation nach Anwendung der Vorwärts-Elimination und der Rück-Substitution,
-
4 zeigt eine Darstellung der Submatrizes H'
K und
sowie ihrer jeweiligen Submatrizes,
-
5, 6a und 6b zeigen die Lösch-Wahrscheinlichkeit gegenüber der Codewort-Fehlerrate.
-
Die 1 und 2 sind bereits in der Einführung der vorliegenden Anmeldung beschrieben worden.
-
Aufgrund von Reihen-Addierungen als Teil der smarten Gaußschen Elimination ändert sich die Matrix P
l(H
* K) zu
Die Matrizes H'
K,
und ihre Submatrizes H''
K und
sind in
4 gezeigt.
-
Für die Einzelfehler-Korrektur kommt den Submatrizes eine Schlüsselrolle zu.
-
Nachstehend wird ein Beispiel eines binären Gleichungssystems nach dem Schritt der Vorwärts-Elimination (Schritt 2.) beschrieben. Bei der Matrix, die
entspricht, handelt es sich hier um die 8×3-Matrix auf der linken Seite.
-
Zu beachten ist, dass der untere Teil nur Nullen enthält. Auf der rechten Seite ist die 8×5-Matrix H'
K gezeigt, welche die Kombinationen der bekannten Pakete zum Erhalt der Unbekannten beschreibt. Es wird eine neue, vereinfachte Notation eingeführt: x
1, ..., X
5 repräsentieren die korrekt empfangenen Code-Symbole, und x
6, ..., X
8 die gelöschten Symbole, die den Pivots entsprechen. Dies führt zu:
-
Setzt man die korrekt empfangenen Symbole/Pakete auf [0 0 0 0 0]T kann man das Syndrom auf der rechten Seite berechnen. Aus Gründen der Einfachheit bestehen die Pakete hier nur aus Bits, jedoch gelten sämtliche Erwägungen auch für Pakete mit größeren Bemessungen.
-
-
Wie ersichtlich ist, existieren noch 5 überflüssige Gleichungen, die auf beiden Seiten Null betragen.
-
Es sei nun angenommen, dass eines der bekannten Symbole einen Fehler enthält. Dies entspricht hier dem Umdrehen eines Bits in dem bekannten Term. Falls das fehlerhafte Symbol x
1 ist, erhält man:
-
Die vorstehend aufgeführten Gleichungen sind nicht mehr konsistent. Es ist ersichtlich, dass sich in den Reihen 4 und 8 Widersprüche ergeben (0 = 1). Somit lassen sich die überschüssigen Gleichungen nutzen, um den Fehler zu detektieren. Die Fehlerkorrektur kann nun in der folgenden Weise durchgeführt werden. Die Reihen 4 und 8 des Syndroms sind dahingehend identifiziert worden, dass sie von dem Fehler beeinträchtigt sind. Mit Hilfe der Matrix H'K wird eine Suche nach Code-Symbolen durchgeführt, die in der Berechnung der 4ten und 8ten Reihe des Syndroms, jedoch nicht in den Reihen 5, 6 und 7 involviert sind. Dies bedeutet, dass nach Spalten von H'K gesucht wird, bei denen die Reihen 4 und 8 Nicht-Null-Einträge enthalten und die Reihen 5, 6 und 7 Null-Einträge enthalten. Falls man in der Lage ist, eine derartige Spalte zu identifizieren, besteht auch die Möglichkeit, das fehlerhafte Code-Symbol zu identifizieren. In dem hier angeführten Fall wird die Spalte 1 identifiziert. Um das fehlerhafte Code-Symbol zu korrigieren, kann man hier das identifizierte Code-Symbol x1 und den Nicht-Null-Syndrom-Eintrag in der Reihe 4 des Syndroms einem xor-Vorgang unterziehen. Alternativ könnte auch der Nicht-Null-Syndrom-Eintrag in der Reihe 8 verwendet werden.
-
Ferner muss vor dem Auflösen des Gleichungssystems das Syndrom korrigiert werden. Dies kann hier durchgeführt werden, indem die Reihe 1 (optional auch Reihe 4 und 8) des Syndroms einem xor-Vorgang mit dem Nicht-Null-Syndrom-Eintrag in der Reihe 4 (oder der Reihe 8) des Syndroms unterzogen wird. Dies führt zu dem ursprünglichen Satz von Gleichungen (erstes Beispiel ohne Fehler), das gelöst werden kann, z. B. durch Rück-Substitution.
-
Da in der Praxis eine CRC-Prüfung angewandt wird, ist die Wahrscheinlichkeit, dass in einem Codewort ein Fehler auftritt (CRC-Versagen), relativ niedrig und kann z. B. in der Größenordnung von 10–6 bis 10–8 liegen. Somit ist die Wahrscheinlichkeit, dass mehr als ein Fehler in einem Codewort vorhanden ist, sehr niedrig.
-
In 5 sind Simulationsergebnisse für einen (2048, 1024) generalisierten unregelmäßigen Repeat-Accumulate-(GeIRA)Code angegeben, der für das ML-Dekodieren konzipiert ist. Die Code-Leistung ist über den BEC unter effizienter ML-Dekodierung und über den BEEC unter SEME-Dekodierung und ohne Fehlerkorrektur simuliert worden. Die Simulationsergebnisse zeigen, wie in den drei Fällen LDPC-Codes nahe an die durchschnittliche Leistung eines beliebigen Code-Systems gelangen, zumindest herunter bis hin zu moderaten bis niedrigen Blockfehler-Wahrscheinlichkeiten. Die Leistung für den gleichen LDPC-Code bei eher komplexer iterativer (IT) Dekodierung unter Verwendung welcher Werte ist ebenfalls für drei Fälle angegeben: für den BEC (d. h. p = 0), für den BEEC mit IT-Lösch-Dekodierung (d. h. keine Fehler-Korrektur), und für den BEEC mit soft-input logarithmischen Wahrscheinlichkeitsverhältnissen (LLRs), die entsprechend den Kanal-Fehler-/Lösch-Wahrscheinlichkeiten gesetzt sind. Die Leistung bei IT-Dekodierung an dem BEC zeigt deutlich den Kodiergewinn-Verlust in Bezug auf den ML-Dekodierer-Fall. Von dem IT-Dekodierer wird eine Blockfehler-Rate Pe = 10–4 bei e ≃ 0,39 erzielt, während bei ML-Dekodierung das Target bei e ≃ 0,46 erzielt wird. Auf dem BEEC-Kanal ist der SEME-Dekodierer leistungsfähiger als der IT-Dekodierer, bis hin zu nur noch moderaten Fehlerraten (Pe ≃ 103). Wenn jedoch die Lösch-Wahrscheinlichkeit abnimmt, konvergiert die Leistungsfähigkeit der SEME-Algorithmen zu einer Blockfehler-Wahrscheinlichkeit Pe ≃ 2·104, was aufgrund der begrenzten (einfachen) Fehlerkorrekturfähigkeit des Algorithmus selbst der Fall ist. Da der IT-Dekodierer nicht auf das Korrigieren einzelner Fehler beschränkt ist, ist bei niedrigen Lösch-Wahrscheinlichkeiten das IT-Dekodieren leistungsfähiger als der SEME-Algorithmus. Dieser Effekt kann von einem hybriden SEME-/IT-Dekodierer genutzt werden; beispielsweise könnte der IT-Dekodierer jedes Mal verwendet werden, wenn mehrere Fehler von dem SEME-Dekodierer detektiert werden. Dennoch kann in zahlreichen praktischen Fällen die BEEC-Fehler-Wahrscheinlichkeit deutlich unter p = 10–5 liegen, was zu einem (viel) niedrigeren Mindestwert für den Fehler bei dem SEME-Algorithmus führt und somit die Notwendigkeit einer IT-Dekodierstufe reduziert wird. Tatsächlich wird der Zuwachs in dem Mindestwert für den Fehler aufgrund der Einzelfehler-Korrekturfähigkeit des SEME-Algorithmus bei niedrigeren Fehlerwahrscheinlichkeiten p verstärkt. In 6(a) und 6(b) sind die Begrenzungen der durchschnittlichen, für ein beliebiges System bestehenden Blockfehler-Wahrscheinlichkeit für den Fall von n = 1000, k = 500 und für zwei BEEC-Fehler-Wahrscheinlichkeiten, p = 10–6 und p = 10–8, gezeigt. Während in dem ersteren Fall der Mindestwert für den Fehler um 3 Größenordnungen reduziert wird, trifft in dem letzteren Fall bei SEME-Dedodierung die Blockfehler-Wahrscheinlichkeit bei Pe > 10–10 auf den Mindestwert für den Fehler, nahezu um 5 Größenordnungen tiefer im Vergleich zu dem Fall, dass keine Fehlerkorrektur durchgeführt wird. Zu beachten ist, dass die Begrenzung (13) in den Mindestwerten für den Fehler im Fall von SEME-Dekodierung eine präzise Einschätzung der Blockfehler-Wahrscheinlichkeit für e → 0 liefert. Tatsächlich liegt für n = 1000, k = 500, p = 10–6 der geschätzte Mindestwert für den Fehler bei P- SEME, BEEC / e, R(nk) ≈ 4.99·10–7 wie 6(a) zeigt, während dies für n = 1000, k = 500, p = 10–8 bei P- SEME, BEEC / e, R(n, k) ≈ 5·10–11 der Fall ist, wie 6(b) zeigt.
-
Das hier vorgeschlagene Verfahren kann bei sämtlichen Typen kommerzieller drahtloser und verdrahteter Systeme angewandt werden. Normalerweise ist die Annahme, dass eine Fehlerdetektion an der Physical Layer mit niedriger Wahrscheinlichkeit versagt, bei den meisten Kommunikationssystemen realistisch. Wie oben aufgezeigt, verursacht dies einen nicht vernachlässigbaren Mindestwert für den Fehler. Die vorgeschlagenen Modifikationen des effizienten ML-Dekodierers machen es möglich, eine Einzelfehler-Korrektur auch an Plattformen mit niedrigerer Rechenleistung durchzuführen, und reduzieren somit den Mindestwert für den Fehler. Der Dekodier-Algorithmus kann mit jedem beliebigen linearen Block-Code verwendet werden. Dennoch besteht das Haupt-Target des hier vorgeschlagenen Dekodierers in den Low-density-Parity-Check-Codes (LDPC), was aufgrund von deren effizienten Kodier- und Dekodiereigenschaften der Fall ist.