-
Die
Erfindung betrifft ein Verfahren zum Wiederherstellen verlorener
und/oder beschädigter
Daten, die von einer Sendevorrichtung an eine Empfangsvorrichtung übertragen
werden.
-
Bei
den übertragenen
Daten kann es sich beispielsweise um Audio- oder Videostreams handeln.
Diese werden von einer Sendevorrichtung, die die Daten zur Verfügung stellt,
beispielsweise an eine mobile Empfangsvorrichtung übermittelt.
Bei der mobilen Empfangsvorrichtung kann es sich beispielsweise
um ein Mobiltelefon, ein PDA oder ein anderes mobiles Endgerät handeln.
Alternativ können
auch Daten von einer Sendevorrichtung an eine stationäre Empfangsvorrichtung übertragen
werden.
-
Verwendete
Standards zum Übertragen
von Daten an mobile Endgeräte
sind beispielsweise DVB-H, MBMS sowie in naher Zukunft DVB-SH.
-
Um
eine gewünschte Übertragungsqualität zu sichern,
ist es notwendig, die korrekte Übermittlung
der Daten oder Datenpakete an die Empfangsvorrichtung zu überprüfen. Durch
verschiedene Verfahren können
verlorene und/oder beschädigte
Daten, die nicht korrekt an die Empfangsvorrichtung übertragen
wurden, wiederhergestellt werden.
-
Ein
bekanntes Verfahren zum Wiederherstellen verlorener und/oder beschädigter Daten
ist das Low-Density-Parity-Check-Verfahren oder der Low-Density-Parity-Check-Code.
Dieses wird auf einem sogenannten Erasure-Channel angewendet. Neben einer Anwendung
durch Codieren auf der Ebene des Physical Layer existieren auch
Anwendungen im Bereich eines Packet-Erasure-Channels (PEC).
-
In 1 ist
die Wiederherstellung verlorener und/oder beschädigter Daten gemäß dem Stand
der Technik beispielhaft dargestellt. Es soll eine Anzahl von k
Informationspaketen von einer Sendevorrichtung (linke Seite) an
eine Empfangsvorrichtung (rechte Seite) übermittelt werden. Durch einen
Packet-Level-Encoder
auf der Sendeseite werden die k Info-Packets und die m Parity-Packets zu n = m
+ k Codeword-Packets zusammengesetzt. Auf der Ebene des Physical
Layer sind die Pakete gesichert durch einen Fehlerkorrekturcode
(beispielsweise einen Turbocode) und einen Fehlererkennungscode (beispielsweise
durch einen Cyclic Redundancy Check, CRC), so dass beschädigte Pakete
entfernt werden können.
Auf den Ebenen oberhalb des Physical Layer werden Pakte entweder
korrekt empfangen oder als verloren betrachtet, indem sie gelöscht werden,
da der CRC im Physical Layer ein beschädigtes Paket erkannt hat. Der Übertragungskanal wird
daher von dem darüber
liegenden Schichten als ein sogenannter Erasure-Channel angesehen,
wobei die Pakte die Übertragungseinheiten
darstellen. Auf Empfängerseite
werden die empfangenen Codeword-Packets durch den Packet-Level-Decoder
decodiert, so dass die verlorenen und/oder beschädigten Daten wiederhergestellt
werden können.
-
Das
Wiederherstellen verlorener und/oder beschädigter Daten kann durch eine
Redundanz der Daten realisiert werden. Der Encoding-Vorgang durch
den Packet-Level-Encoder erfolgt üblicherweise bitweise (oder
byteweise) durch Verwendung eines Encoders mit einem Generic-Binary-Linear-Block-Code.
Das Decodieren erfolgt anschließend durch
Lösen des
Gleichungssystems, das durch die Parity-Check-Matrix H des Codes
definiert ist. Derartige Decoder, die auf der Gauß-Elimination
basieren, zeigen mit zunehmender Blocklänge stark ansteigende Komplexität, so dass
hohe Datenraten of nicht erreicht werden können.
-
Prinzipiell
bietet eine Verwendung eines Low-Density-Parity-Check-Codes als
Linear-Block-Code zwei Hauptvorteile: Der verwendete Maximum-Likelihood-Decoder (bzw. die
Gauß-Elimination)
kann durch einen Iterativen Decoder ersetzt werden. Dies hat eine
Obergrenze hinsichtlich der Fähigkeit
zur Folge, beschädigte
oder verlorene Daten wiederherzustellen. Ferner ist es für LDPC-Codes möglich, den
Maximum-Likelihood-Decoder dadurch zu vereinfachen, dass ausgenutzt
wird, dass die Parity-Check-Matrix dünn besetzt ist.
-
Eine
Verringerung der Komplexität
des Maximum-Likelihood-Decoders führt zu einer verbesserten Performance,
ist aber dennoch komplexer verglichen mit dem Iterativen Verfahren.
In 9 ist die Performance eines Low-Density-Parity-Check-Codes
mit n = 1024 und k = 512 dargestellt. Hierbei ist die Codeword-Error-Rate
(CER), d. h. der Decodierungsfehler unter Verwendung eines Maximum-Likelihood-Decoders
und eines Iterativen Decoders in Abhängigkeit von der Erasure-Channel-Wahrscheinlichkeit ε dargestellt.
Als Referenzkurve ist die Singleton-Untergrenze dargestellt. Der
Maximum-Likelihood-Decoder
nähert
sich in seiner Leistungsfähigkeit
dieser theoretischen Grenze.
-
Von
großer
Wichtigkeit ist in einer mobilen Broadcasting-Anwendung die Fähigkeit
der Packet-Level-Codes, mit Signalabschwächungen oder -ausfällen umzugehen,
so dass die meisten der verlorenen oder beschädigten Datenpakete ohne einen Retransmission-Request
wiederhergestellt werden können.
Besonders bevorzugt werden softwareimplementierte Packet-Level-Decoder angewendet,
da sie keinen hohen Implementierungsaufwand erfordern, leicht und
flexibel upgedated werden können und
durch Terminals angespasst werden können, die kein hierfür spezifisches
Hardwaredesign aufweisen müssen.
Nachteilig an bisher bekannten Verfahren ist, dass entweder durch
den Iterativen Decoder ein schnelles und effizient arbeitendes Decoderverfahren
angewendet werden kann, das jedoch schlechte Recoveryergebnisse
liefert, oder durch den Maximum-Likelihood-Decoder ein Verfahren
mit verbesserten Recoveryergebnissen angewendet wird, das jedoch
eine hohe Komplexität
und u. U. eine eingeschränkte
Felxibilität
aufweist.
-
DE 10 2004 053 656
B4 beschreibt ein Verfahren zur Verarbeitung von Signalen
unter Verwendung von blockbasierten Fehlerschutzcodes. Empfangsseitig
wird ein LDPC-Decoder verwendet, wobei die LDPC Paritätsprüfmatrix
einem korrespondierenden Tanner Graphen zugeordnet wird, in dem durch
iterativen Nachrichtenaustausch von variablen Knoten- und Prüfknoten-Zustandsinformationen
als Wahrscheinlichkeitswerte der Bitbelegung jeweiliger variablen
Knoten und Prüfknoten
des zugeordneten Tanner Graphen Übertragungsfehler
erfasst und durch die in den Iterationsschritten des LDPC-Decoders fortgeführte quellenstatistische
Bewertung der Bitbelegung der Knoten und durch daraus resultierende
Aktualisierungen der Zustandsinformationen des jeweiligen Variablen
Knotens, Bitfehlerkorrekturen am Ende eines Iterationsschrittes
vorgenommen werden. Innerhalb eines Iterationsschrittes des LDPC-Decoders
teilt der jeweilig aktive Variablen Knoten die variablen Knoten-Zustandsinformation
neben dem Prüfknoten
auch einem Schwellwertregler mit, wobei der Schwellwertregler die
Variablen-Zustandsinformation
mit einem eingegebenen Schwellwert vergleicht.
-
WO 2007/072721 A1 beschreibt
ein Verfahren zum Generieren einer Inspektionsmatrix, durch das
eine Parity-Check-Matrix für
einen LDPC-Incoder generiert wird.
-
Aufgabe
der Erfindung ist es, ein Verfahren zum Wiederherstellen verlorener
und/oder beschädigter
Daten, die von einer Sendevorrichtung an eine Empfangsvorrichtung übertragen
werden, zu schaffen, das eine bessere und/oder weniger aufwändige Wiederherstellung
der Daten erlaubt.
-
Die
Lösung
der Aufgabe erfolgt erfindungsgemäß durch die Merkmale des Anspruchs
1.
-
In
einem Verfahren zum Wiederherstellen verlorener und/oder beschädigter Daten,
die von einer Sendevorrichtung an eine Empfangsvorrichtung übertragen
werden, erfolgt zunächst
ein Codieren der Daten durch einen mit der Sendevorrichtung verbundenen
Encoder. Hierbei kann es sich beispielsweise um einen Packet-Level-Encoder
handeln. Die Daten werden von der Sendevorrichtung über eine Übertragungsvorrichtung
an die Empfangsvorrichtung übertragen.
Als Übertragungsvorrichtung
im Sinne der Erfindung wird jegliche Vorrichtung verstanden, die
eine Übertragung
von Daten von der Sendevorrichtung an die Empfangsvorrichtung und/oder
umgekehrt ermöglicht.
Beispielsweise kann die Übertragungsvorrichtung
dadurch ausgebildet sein, dass ein mobiles Broadcasting-System (beispielsweise
DVB-H oder MBMS) verwendet wird. Auch können die Daten beispielsweise über UMTS übermittelt
werden.
-
Durch
einen mit der Empfangsvorrichtung verbundenen Decoder werden die übertragenen
Daten unter Verwendung eines Low-Density-Parity-Check-Verfahrens decodiert,
wobei beim Decodieren verlorene und/oder beschädigte Daten wiederhergestellt
werden.
-
Das
Dekodieren erfolgt durch das Lösen
des Gleichungssystems der Parity-Check-Matrix
H. Hierbei wird die Parity-Check-Matrix H durch Spalten- und/oder Zeilenvertauschungen
in eine Dreiecksform gebracht. Spalten einer Submatrix B der Matrix
H, die den Triangularisationsprozess behindern, werden in eine Submatrix
P der Matrix H verschoben, so dass der Triangularisationsprozess
fortgeführt
werden kann, bis die Matrix H außer der Submatrix P vollständig in
eine Dreiecksform gebracht wurde. Auf einen Teil P1 der Submatrix
P wird das Gaußsche
Eliminationsverfahren angewendet. Erfindungsgemäß erfolgt die Auswahl der Spalte
oder der Spalten der Submatrix B, die in die Submatrix P verschoben
werden, basierend auf dem Gewicht der Spalte oder dem Gewicht der
mit der Spalte verbundenen Zeilen der Submatrix B. Das Gewicht einer
Spalte ist definiert als die Anzahl der Nicht-Null-Stellen in der
Spalte. Selbiges gilt für
das Gewicht einer Zeile.
-
Zum
Lösen des
Gleichungssystems der Parity-Check-Matrix H wird diese in mehrere
Submatrizen aufgeteilt. Dies ist in 2 dargestellt.
Die Hauptbestandteile der Matrix sind A, das den Teil darstellt,
der sich in Dreiecksform befindet und B, das den Teil darstellt,
der in die Dreiecksform gebracht werden muss. D ist zu Anfang eine
dünn besetzte Matrix,
wird jedoch schließlich
ausgenullt. Z weist nur Nullen auf. Als P wird die Submatrix bezeichnet,
in die die Spalten der Submatrix verschoben werden, die den Triangularisationsprozess
behindern.
-
Prinzipiell
wird zu Anfang der erfindungsgemäßen Verfahrens
ein iterativer Decoder verwendet, um das lineare Gleichungssystem
zu lösen.
Wie im weiteren Verlauf der vorliegenden Anmeldung beschrieben,
reicht die Verwendung des iterativen Decoders aus, um in einem Großteil der
Fälle,
die beschädigten
oder verlorenen Daten wieder herzustellen. Das iterative Decodieren
basiert auf dem sogenannten Message-Passing (MP) Algorithmus, bei dem
keine Zeilenadditionen durchgeführt
werden und der damit keine hohe Rechenintensität erfordert. In einem weiteren
Decodierungsschritt wird ein Maximum-Likelihood-Decoder verwendet,
wobei dieser Decodierungsschritt nur dann durchgeführt wird, wenn
die Daten mit Hilfe des iterativen Decoders nicht ausreichend wieder
hergestellt werden können. Einzelheiten
zu diesem sogenannten Hybriddecoder werden in den folgenden Teilen
der vorliegenden Anmeldung erläutert.
Zunächst
wird jedoch beschrieben, wie der Prozess des Maximum-Likelihood-Decoding
und hier insbesondere der Triangularisationsprozess durch das sogenannten
Pivoting verbessert werden kann.
-
Ziel
des erfindungsgemäßen Verfahrens
ist es, den Bereich der Parity-Check-Matrix H auf den das Gaußsche Eliminationsverfahren
angewendet wird, so klein wie möglich
zu halten, da dieses Verfahren aufgrund der notwendigen Zeilenadditionen für große Matrizen
eine hohe Rechenleistung erfordert. Die Komplexität des Maximum-Likelihood-Verfahrens
ist O(n3), wobei n die Blocklänge, das
heißt die
Anzahl der Spalten der Parity-Check-Matrix H ist. Wird nur auf einen
kleinen Teil der Parity-Check-Matrix H das Gaußsche Eliminationsverfahren
angewandt, so kann die erforderliche Rechenleistung erheblich reduziert
werden. Hierzu wird die Submatrix A wie in 2 dargestellt,
schrittweise vergrößert. Durch
das bewusste Auswählen
der Spalte oder der Spalten der Submatrix B, die in die Submatrix
P verschoben werden, ist es möglich,
die Submatrix A in eine Dreiecksform, beispielsweise in die untere
Dreiecksform, zu bringen und gleichzeitig die Submatrix P so klein
wie möglich
zu halten, so dass der Rechenaufwand für das Gaußsche Eliminationsverfahren,
das auf die Submatrix P angewandt wird, minimiert werden kann. Beispielsweise
kann durch gezielte Spaltenwahl die Spaltengröße der Submatrix P auf die
Hälfte
bis ein Drittel reduziert werden, zum Beispiel von 90 auf etwa 30–40, was
sich in der Ausführungsgeschwindigkeit
des Decoders bemerkbar macht.
-
Bevor
das Gaußsche
Eliminationsverfahren auf die Submatrix P angewandt wird, wird die
Submatrix A in die Diagonalform gebracht und die Submatrix D ausgenullt.
Das Gaußsche
Eliminationsverfahren muss somit nur auf den unteren Teil der Submatrix
P, nämlich
auf P1 angewandt werden. P1 ist dicht besetzt. Wenn die Gaußsche Elimination
von P1 erfolgreich durchgeführt
wurde, können
die übrigen
Unbekannten iterativ oder durch Rücksubstitution bestimmt werden.
Das iterative Verfahren ist hierbei bevorzugt. Dieses wird auf die
ursprüngliche
Matrix angewendet, in dem die nunmehr ermittelten Unbekannten verwendet
werden.
-
Eine
Möglichkeit,
die jeweiligen Spalten der Submatrix B bewusst auszuwählen, die
in die Submatrix P verschoben werden, ist, diejenige Spalte zu wählen, die
das höchste
Gewicht aufweist. Bei mehreren Spalten mit gleichem Gewicht wird
eine Spalte zufällig
ausgewählt,
die in die Submatrix P verschoben wird.
-
Alternativ
ist es möglich,
diejenige Spalte oder diejenigen Spalten der Submatrix B in die
Submatrix P zu verschieben, die mit der Zeile mit dem niedrigsten
Gewicht verbunden sind. Bei mehreren Zeilen mit dem gleichen niedrigsten
Gewicht wird diejenige Zeile mit dem höchsten kumulativen Spaltengewicht
ausgewählt
und die mit ihr verbundenen Spalten der Submatrix B bis auf eine
Spalte in die Submatrix P verschoben. Das kumulative Spaltengewicht
einer Zeile ist definiert als die Summe der Gewichte aller mit dieser
Zeile verbundenen Spalten. Hierbei kann diejenige Spalte, die nicht
in die Submatrix P verschoben wird, beliebig gewählt werden. Bei mehreren Zeilen
mit dem gleichen niedrigsten Gewicht und dem gleichen kumulativen
Spaltengewicht kann eine Zeile zufällig ausgewählt und die mit ihr verbundenen
Spalten bis auf eine in die Submatrix P verschoben werden.
-
Weiterhin
ist es alternativ möglich,
diejenige Spalte der Submatrix B in die Submatrix P zu verschieben,
die mit der größten Anzahl
an Zeilen mit einem Gewicht von zwei verbunden ist. Bei mehreren Spalten,
die mit der gleichen Anzahl von Zeilen mit einem Gewicht von zwei
verbunden sind, kann eine Spalte zufällig ausgewählt werden. Sofern die Prüfung nach
Spalten, die mit Zeilen mit einem Gewicht von zwei verbunden sind,
ergibt, dass keine solchen Spalten existieren wird die jenige Spalte
der Submatrix B in die Submatrix P verschoben, die das höchste Gewicht
aufweist, wobei bei mehreren Spalten mit gleichem Gewicht eine Spalte
zufällig
ausgewählt wird,
die in die Submatrix P verschoben wird.
-
In
einem weiteren Algorithmus ist es möglich, jedes mal wenn eine
Spalte der Submatrix B den Triangularisationsprozess behindert,
einen Tanner-Graph für
die verbleibenden Variable Nodes der Submatrix B zu erstellen. In
einem ersten Schritt senden im Tanner-Graph alle Variable Nodes
ihren Grad an alle mit ihnen verbundenen Check Nodes. Der Grad eines
Variable Nodes entspricht der Anzahl der mit ihm verbundenen Check
Nodes. In einem weiteren Schritt wählt jeder Check Node aus den übermittelten
Graden den niedrigsten aus und sendet ihn an alle mit ihm verbundenen
Variable Nodes. Hierbei wird der Grad des jeweiligen variablen Nodes
an den gesendet wird, bei der jeweiligen Auswahl des niedrigsten
Grades unberücksichtigt
gelassen, so dass einem variablen Node nie sein eigener Grad zurückgesendet
wird. Dies bedeutet, dass demjenigen Variable Node mit dem niedrigsten
Grad nicht sein eigener Grad sondern der Grad eines anderen Variable Nodes
mit dem gleichen Grad oder der zweit niedrigste Grad eines anderen
Variable Node übermittelt wird.
-
In
einem weiteren Schritt addiert jeder Variable Node die von den mit
dem jeweiligen Variable Node verbundenen Check Nodes empfangenen
minimalen Grade und seinen eigenen Grad und sendet diese Summe an
alle mit ihm verbundenen Check Nodes. Hierbei wird der minimale,
das heißt
der niedrigste Grad der von einem bestimmten Check Node empfangen
wurde, bei der Bildung der Summe der minimalen Grade, die an diesen
bestimmten Check Nodes zurückgesandt
werden soll, nicht berücksichtigt.
Dies bedeutet, dass jeder Check Node von jedem mit ihm verbundenen
Variable Node eine Summe erhält,
die den minimalen Grad, der von diesem Check Node an den jeweiligen
Variable Node übermittelt
wurde, nicht enthält.
-
Die
bisher beschriebenen Verfahrensschritte werden n Mal wiederholt.
Beispielsweise sind 10 Wiederholungen möglich. Anschließend wird
der Variable Node mit der größten Summe
an minimalen Graden und seinem eigenen Grad als Spalte bestimmt,
die von der Submatrix B in die Submatrix P verschoben wird.
-
In
einem weiteren alternativen Verfahren wird ebenfalls ein Tanner-Graph
für die
verbleibenden Variable Nodes der Submatrix B erstellt, wenn eine
Spalte der Submatrix B den Triangularisationsprozess behindert.
Anschließend
werden die folgenden Schritte durchgeführt:
Zunächst erfolgt
ein Suchen von Variable Nodes, die durch Check Nodes mit einem Grad
von 2 direkt miteinander verbunden sind. Diese Variable Nodes und die
mit ihnen verbundenen Check Nodes mit einem Grad von 2 werden zu
einem sogenannten Super Variable Node zusammengefasst. An dieser
Stelle können
Check Nodes identifiziert werden, die mehr als eine Verbindung zu
einem Super Variable Node aufweisen. Dies bedeutet, dass ein deratiger
Check Node zu mehreren Variable Nodes aus diesem Super Variable
Node eine Verbindung aufweist. Da ein Super Variable Node dadurch
definiert ist, dass sämtliche
Variable Nodes bekannt sind, sobald ein Variable Node aus diesem
Super Variable Node bekannt ist, können die Mehrfachverbindungen
eines solchen Check Nodes zum Super Variable Node bis auf eine ignoriert
werden. Somit kann der Grad dieses Check Nodes reduziert werden.
Sofern außer
den Verbindungen zu dem Super Variable Node nur eine zusätzliche
Verbindung von diesem Check Node zu einem weiteren Variable Node
besteht, entsteht hier ein Check Node mit einem Grad von 2.
-
Somit
ist es möglich,
weitere Check Nodes mit einem Grad von 2 zu kreieren, so dass möglicherweise
weitere Variable Nodes oder Super Variable Nodes entstehen, die
durch Check Nodes mit einem Grad von 2 direkt miteinander verbunden
sind. Diese können
zusammen mit den mit ihnen verbundenen Check Nodes mit einem Grad
von 2 zu einem erweiterten Super Variable Node zusammengefasst werden,
jedoch nur dann, wenn diese mindestens einen Key-Node besitzt. Die
genannten Verfahrensschritte werden so lange wiederholt, bis keine
Erweiterung des Super Variable Nodes mehr möglich ist. Im Folgenden werden
die Begriffe „erweiterte
SVN” und „SVN” als gleichwertig
angesehen.
-
Schließlich wird
derjenige Variable Node oder Super Variable Node mit dem höchsten Grad bestimmt.
Handelt es sich dabei um eine Super Variable Node, so wird von der
Submatrix B in die Submatrix P diejenige Spalte verschoben, die
dem Key-Node der Super Variable Node entspricht. Handelt es sich
bei dem Node mit dem höchsten
Grad um eine einfache Variable Node, so wird die entsprechende Spalte
von der Submatrix B in die Submatrix P verschoben.
-
Der
Grad eines Super Variable Nodes ist als die Anzahl der abgehenden
Verbindungen zu Check Nodes außerhalb
dieses Super Variable Nodes definiert.
-
Vorraussetzung
für das
genannte Verfahren ist, dass für
jeden Super Variable Node ein sogenannter Key-Node existieren muss,
wobei ein Key-Node ein Variable Node ist, der Teil des Super Variable
Nodes ist und der, wenn er bekannt ist, die Lösung des Super Variable Nodes
ermöglicht.
Ist also dieser Key-Node bekannt, beispielsweise durch einen später folgenden
Gauß-Eliminationsschritt
angewendet auf P1, so lassen sich alle anderen Variable Nodes der
betreffenden Super Variable Node mit Hilfe eines Iterativen Decoding
Schritts wiederherstellen.
-
Nach
einer Verschiebung einer oder mehreren Spalten, die durch die genannten
Verfahren ausgewählt
wurde, von der Submatrix B in die Submatrix P kann der Triangularisationsprozess
so lange fortgesetzt werden, bis erneut eine Spalte des Triangularisationsprozess
behindert, so dass erneut eine oder mehrere Spalten von der Submatrix
B in die Submatrix P verschoben werden müssen.
-
Der
Triangularisationsprozess ist dadurch gekennzeichnet, dass der einzige
Eintrag mit einem Wert von 1 einer Zeile mit einem Gewicht von 1
der Submatrix B durch Zeilen- und/oder Spaltenvertauschungen in
die linke obere Ecke der Submatrix B verschoben wird und anschließend die
Submatrix A der Matrix H, die sich bereits in Dreiecksform befindet,
um eine Spalte und eine Zeile vergrößert wird, so dass die Submatrix
B um die gleiche Zeile und Spalte verkleinert wird. Hierbei wird
die Matrix in die untere Dreiecksform gebracht.
-
Im
Folgenden wird die prinzipielle Arbeitsweise des Hybriddecoders,
das heißt
der Verbindung aus einem iterativen Decoder in einem ersten Decodierungsschritt
und einem Maximum-Likelihood-Decoder in einem zweiten Decodierungsschritt
erläutert.
-
Erfindungsgemäß wird in
einem ersten Decodierungsschritt ein Iterativer Decoder verwendet. In
einem zweiten Decodierungsschritt wird ein Maximum-Likelihood-Decoder
verwendet, wobei der zweite Decodierungsschritt insbesondere ausschließlich dann
durchgeführt
wird, wenn die Daten mit Hilfe des Iterativen Decoders nicht ausreichend wiederhergestellt
werden können.
-
Mit
anderen Worten wird zunächst
der erste Decodierungsschritt mit Hilfe des Iterativen Decoders durchgeführt. Sofern
es gelingt, die verlorenen und/oder beschädigten Daten durch den Iterativen Decoder
wiederherzustellen, werden die wiederhergestellten Daten ausgegeben.
Sofern eine Wiederherstellung der Daten durch den Iterativen Decoder nicht
vollständig
gelingt es aber unbedingt gewünscht
wird, wird der zweite Decodierungsschritt mittels des Maximum-Likelihood-Decoders
eingeleitet. Hierdurch kann die Häufigkeit, in der der Maximum-Likelihood-Decoder
verwendet wird, verringert werden. Betrachtet man beispielsweise
die Performanceverläufe
gemäß 9 und
geht man weiterhin von einer Channel-Erasure-Rate ε von 0,4
aus, so ist der Iterative Decoder im Durchschnitt in 2% der Fälle nicht
in der Lage, die beschädigten
und/oder verlorenen Daten wiederherzustellen. Daher würde im dargestellten
Beispiel der Maximum-Likelihood-Decoder nur in 2% der Fälle verwendet
werden. Da der Iterative Decoder in den restlichen 98% der Fälle verwendet
wird und seine Anwendung schneller und einfacher vonstatten geht,
bietet das erfindungsgemäße Verfahren
eine erhebliche Vereinfachung beim Wiederherstellen verlorener und/oder
beschädigter
Daten. Insbesondere kann es auch bei Empfangsvorrichtungen angewendet
werden, die über
einen leistungsschwächeren
Prozessor verfügen,
der beispielsweise nicht zu einer dauerhaften Durchführung des
Maximum-Likelihood-Verfahrens geeignet ist. Gemäß dem Stand der Technik wäre es bei
einem derartigen Prozessor bisher nur möglich, das Iterative Decodierungsverfahren
anzuwenden, was zu einer Verschlechterung der Recovery-Rate führen würde. Durch
das erfindungsgemäße Verfahren
ist es auch bei leistungsschwächeren
Prozessoren möglich,
eine hohe Recovery-Rate zu erreichen. Erfindungsgemäß kann daher
durch das vorgeschlagene Verfahren die Performance eines Maximum-Likelihood-Decoders
mit einer weniger komplexen Anwendung erreicht werden.
-
Sowohl
der Encoder, der mit der Sendevorrichtung verbunden ist, als auch
der Decoder, der mit der Empfangsvorrichtung verbunden ist, können als Hardware
oder Software ausgebildet sein. Insbesondere können der Encoder und/oder der
Decoder als eine Software ausgebildet sein, die in der Sendevorrichtung
und/oder der Empfangsvorrichtung implementiert ist.
-
Vorzugsweise
findet das Codierung und Decodieren der Daten auf Packet-Level, d. h. im Network-Layer
des OSI-Schichtenmodels statt.
-
Um
die im zweiten Decodierungsschritt für den Maximum-Likelihood-Decoder
benötigte
Rechenleistung zu verringern, wird eine LDPC-Matrix im Decoder verwendet.
Dies führt
einerseits zwar zu einer schlechteren Recovery-Rate, ermöglicht andererseits
aber ein schnelleres und weniger rechenintensives Decodierungsverfahren.
Die Datenpakete, die weder durch den Iterativen Decoder noch durch den
Maximum-Likelihood-Decoder wiederhergestellt werden konnten, werden
als nicht korrekt übermittelt betrachtet,
so dass ihre erneute Übermittlung
durch die Sendevorrichtung veranlasst werden kann.
-
Vorzugsweise
erfolgt zum Verringern der Komplexität des Maximum-Likelihood-Decoders
die Definition eines Abbruchparameters, wobei die Berechnungen zur
Wiederherstellung verlorener und/oder beschädigter Daten durch die Maximum-Likelihood-Decoder
abgebrochen werden, falls der Wert alpha in der strukturierten Gauß-Elimination,
die durch den Maximum-Likelihood-Decoder
durchgeführt
wird, die Größe des gewählten Abbruchparameters überschreitet.
Der Abbruchparameter definiert vorzugsweise eine Obergrenze für die Größe der verwendeten
Matrix, auf die das Gaußsche
Eliminationsverfahren angewandt wird.
-
Prinzipiell
kann ein Maximum-Likelihood-Decoder zur Verwendung mit Low-Density-Parity-Check-Codes
auf intelligenten, effizienten Gauß-Eliminationsmethoden im Binärfeld basieren, wie
sie beispielsweise in „D.
Burshtein und G. Miller, „An
efficient maximum likelihood decoding of LDPC codes over the binary
erasure channel”,
IEEE Transactions an Information Therory, volume 50, no. 11, pp.
2837–2844,
November 2004” oder „E. Paolini,
G. Liva, M. Balazs und M. Chiani, „Generalized IRA Erasure Correcting
Codes for Hybrid Iterative/Maximum Likelihood Decoding” submitted
to IEEE Communication Letters 2008” beschrieben sind. Vorzugsweise wird
die sogenannte strukturierte Gauß-Elimination verwendet. Weitere
Details zur Definition des Abbruchparameters sind in der Figurenbeschreibung
in Zusammenhang mit 10 der vorliegenden Anmeldung
dargestellt.
-
Vorzugsweise
werden die Berechnungen zur Wiederherstellung verlorener und/oder
beschädigter Daten
durch den Maximum-Likelihood-Decoder abgebrochen, falls der Wert
alpha in der strukturierten Gauß-Elimination,
die durch den Maximum-Likelihood-Decoder durchgeführt wird,
die Größe des gewählten Abbruchparameters überschreitet.
Der Wert alpha in der strukturierten Gauß-Elimination wird ebenfalls
im Zusammenhang mit 10 in der Figurenbeschreibung
der vorliegenden Anmeldung näher beschrieben.
-
Die
Größe des Abbruchparameters
kann durch einen Anwender der Empfangsvorrichtung, anhand der verfügbaren Rechenleistung
der Empfangsvorrichtung, anhand der aktuellen Belastung eines Prozessors
der Empfangsvorrichtung, anhand eines gewünschten Quality of Service
und/oder anhand der verfügbaren
Kapazität
eines Energiespeichers der Empfangsvorrichtung gewählt werden.
So ist es beispielsweise möglich,
durch eine Erhöhung
des Abbruchparameters eine Verbesserung der Recovery-Rate zu erreichen.
Hierdurch ist eine Verbesserung des Quality of Service möglich. Wird
dagegen der Abbruchparameter verringert, so kann beispielsweise
die aktuelle Belastung eines Prozessors der Empfangsvorrichtung
oder der Stromverbrauch der Empfangsvorrichtung verringert werden.
-
Somit
wird durch die Definition des genannten Abbruchparameters ein zusätzlicher
Freiheitsgrad geschaffen, durch den es möglich wird, den Decoder der
Empfangsvorrichtung an vorhandene Randbedingungen anzupassen und
damit benutzerfreundlicher und/oder zuverlässiger zu gestalten.
-
Vorzugsweise
erfolgt bei einem Abbruch der Berechnung der Wiederherstellung der
verlorenen und/oder beschädigten
Daten durch den Maximum-Likelihood-Decoder nur ein Ausgeben der
korrekt übertragenen
und/oder wiederhergestellten Daten durch den Decoder. Ferner kann
durch den Decoder eine Fehlermeldung erzeugt werden. Eine Fehlermeldung
bedeutet insbesondere, dass die nicht wiederhergestellten Daten
oder Datenpakete als vermisst gemeldet werden, so dass eine erneute Übermittlung
angestoßen
wird.
-
Eine
unabhängige
Erfindung betrifft die Verwendung eines Verfahrens, insbesondere
wie es in der vorliegenden Anmeldung beschrieben ist, zur kabellosen
oder kabelgebundenen Datenübertragung zwischen
einer Sendevorrichtung und einer Empfangsvorrichtung.
-
Im
Folgenden werden bevorzugte Ausführungsformen
der Erfindung anhand von Figuren erläutert.
-
Es
zeigen:
-
1 einen
Ablaufplan der Datenübertragung
zwischen einer Sendevorrichtung und einer Empfangsvorrichtung wie
sie auch im erfindungsgemäßen Verfahren
stattfinden kann,
-
2 die
Parity-Check-Matrix H während des
Triangularisationsprozesses (linke Seite) und nach dem Pivotisieren
(rechte Seite),
-
3 u. 4 die
Pivotgröße α, die die Blocklänge der
Submatrix P darstellt in Abhängigkeit von
verschiedenen Overheads,
-
5 eine
Darstellung der Super Variable Nodes des fünften erfindungsgemäßen Algorithmus,
-
6 eine
Darstellung der Pivotgröße α, die die
Blocklänge
der Submatrix P darstellt, in Abhängigkeit vom Overhead für den fünften erfindungsgemäßen Algorithmus,
-
7 die
Codeword-Error-Rate (CER) in Abhängigkeit
von der Channel-Erasure-Rate ε mit dem
ersten der erfindungsgemäßen Algorithmen
-
8 eine
Darstellung der erreichbaren Geschwindigkeit mit dem ersten der
erfindungsgemäßen Algorithmen,
-
9 eine
graphische Darstellung der Codeword-Error-Rate in Abhängigkeit
von der Channel-Erasure-Rate,
-
10a–10c eine Darstellung der Berechnungen zur
strukturierten Gauß-Elimination,
-
11 eine
graphische Darstellung der Codeword-Error-Rate in Abhängigkeit
von der Channel-Erasure-Rate mit verschiedenen Abbruchparametern α gemäß einer
möglichen
Ausführungsform der
Erfindung,
-
12 eine
schematische Darstellung einer Sende- und Empfangsvorrichtung zur
Durchführung des
erfindungsgemäßen Verfahrens,
und
-
Aus 2 geht,
wie bereits beschrieben, hervor, auf welche Weise die Submatrix
A vergrößert wird,
indem Spalten der Submatrix B in die Submatrix P verschoben werden.
Die rechte Seite der 2 stellt die Matrix H dar, nachdem
die Submatrix D ausgenullt wurde, so dass das Gaußsche Eliminationsverfahren
nur noch auf die Submatrix P1 angewandt werden muss.
-
Die 3 und 4 stellen
die Pivotgröße α, nämlich die
Blocklänge
der Submatrix P, das heißt die
Anzahl der Spalten, die verschoben wurden, in Abhängigkeit
vom Overhead dar. Der Overhead ist hierbei abhängig von der Channel-Erasure-Rate.
Es wurde die durchschnittliche Pivotgröße α für verschiedene Overheads bei
hundert unterschiedlichen Versuchen simuliert. Hierbei wurde ein
Irregular Repeat Accumulate (IRA) (2048, 1024) Code verwendet. Im
besten Fall kann ein derartiger Code 1024 Auslöschungen tolerieren. Daher
kann der Overhead ausgedrückt
werden als Overhead = 1024 – tatsächliche
Anzahl von Auslöschungen
im Codeword.
-
Die
Simulationsergebnisse für
die ersten vier erfindungsgemäßen Algorithmen
sind in 3 dargestellt, wobei der obere
Verlauf ein Verfahren darstellt, bei dem Spalten beliebig, das heißt zufällig in die
Submatrix P verschoben wurden. Aus Gründen der Übersichtlichkeit wurden in 4 die
ersten vier erfindungsgemäßen Algorithmen
noch einmal gesondert auf einer anderen Skala dargestellt. Für alle Algorithmen
ist erkennbar, dass α mit
steigendem Overhead kleiner wird. Dies liegt teilweise daran, dass
H T / K
, nämlich
die Matrix, die dem ML-Decoder übergeben
wird, kleiner wird, da zahlreiche Gleichungen bereits gelöst wurden.
Wichtiger jedoch ist die Tatsache, dass der Triangularisationsprozess
nicht so häufig
behindert wird, da die Zeilengewichte in der Submatrix B mit größeren Overheads
kleiner werden.
-
Vergleicht
man die vier verschiedenen Algorithmen in 4 ist festzustellen,
dass sie eine ähnliche
Performance erzielen. Für
schnelle Anwendungen ist Algorithmus 1 aufgrund seiner Einfachheit
am geeignetsten. Um ein kleinstmögliches α zu erlangen,
wird vorgeschlagen, Algorithmus 4 zu verwenden. Für alle Algorithmen
ist ein großer
Unterschied zum Verfahren aus dem Stand der Technik (Random Pivoting
aus 3) erkennbar. Hierbei muss festgehalten werden,
dass die Komplexität
des Gaußschen Eliminationsverfahrens
kubisch mit der Blocklänge α ansteigt.
-
Der
vierte erfindungsgemäße Algorithmus kann
mathematisch wie folgt dargestellt werden: jeder Variable Node übermittelt
eine Nachricht zu den verbundenen Check Nodes, wobei die Nachricht
berechnet wird als:
wobei m
I→J die
Nachricht beschreibt, die von einem bestimmten Variable Node I zu
dem Check Node J übermittelt
wird. m
I←J ist
die Nachricht von einem beliebigen Check Node j zu dem Variable
Node I und M' ist
die Anzahl aller ungelöste
Check Nodes in der Submatrix B. Zusammengefasst ist die Nachricht
eines Variable Nodes I zu einem Check Node J zusammengesetzt aus
dem Grad des Variable Nodes und der Summe aller ankommenden Nachrichten
(m
I←J), außer der
Nachricht von dem Check Node J. Zu Beginn sind alle eingehenden
Nachrichten = 0.
-
Jeder
Check Node übermittelt
Nachrichten zu den verbundenen Variable Nodes gemäß:
-
Hier
stellt mI<-J die
Nachricht vom Check Node J zum Variable Node I dar und N' die Anzahl der ungelösten Variable
Nodes in der Submatrix B. mI->J stellt die Nachricht von einem
beliebigen Variable Node I zum Check Node J dar. Schließlich übermittelt Check
Node J nur die Nachricht mit dem kleinsten Wert zum Variable Node
I ohne dass die Nachricht, die vom Variable Node I empfangen wurde,
berücksichtigt
wird. Anschließend
wird für
jeden Variable Node ein Wert berechnet, der sich zusammensetzt aus
der Summe aller Nachrichten und dem Grad dieses Nods und der variable
Node mit dem höchsten Wert
wird der Liste der Pivots, nämlich
der Submatrix P hinzugefügt.
Es muss beachtet werden, dass eine größere Anzahl an Iterationen
zu besseren Ergebnissen führt,
jedoch auch mehr Zeit erfordert. Für die Simulation in den 3 und 4 wurden
zehn Iterationen durchgeführt.
-
Im
Folgenden wird der fünfte
erfindungsgemäße Algorithmus
nochmals kurz erläutert.
-
Vor
der detaillierten Beschreibung der neuen Pivotisierungsstrategie
sollen einige Definitionen eingeführt werden. Im Folgenden wird
nicht länger
auf Reihen und Spalten Bezug genommen, sondern es wird die graphische
Wiedergabe des Codes zugrundegelegt. Hier entspricht jede Reihe
einem Check Node (CN), und jede Spalte entspricht einem Variable
Node (VN). Ein CN(i) ist mit VN(j) verbunden und umgekehrt, falls
der entsprechende Eintrag H(i, j) in der Parity-Check-Matrix des
Codes den Wert Eins hat. Der Grad eines CN (VN) ist die Anzahl verbundener
VNs (CNs) und entspricht somit den zuvor eingeführten Reihen-(Spalten-)Gewichtungen.
Ein Super Variable Node (SVN) ist ein Variable Node, der aus mehreren
Check Nodes und Variable Nodes besteht. Er ist derart ausgebildet,
dass er mindestens eine spezielle VN, die als Key-Node bezeichnet
wird, beinhalten muss. Ist diese Key-Node in dem SVN bekannt, können sämtliche
anderen VNs in dem SVN einfach durch iterative Decodierung gewonnen
werden können.
In einem Tanner Graphen, welche anfänglich nur aus CNs und VNs
besteht, können
Super Variable Nodes wie folgt generiert werden:
- 1.
Es wird ein Check Node zweiten Grades gewählt, der nicht Teil eines SVN
ist; falls keiner existiert, kann kein SVN generiert werden, und der
Algorithmus ist beendet.
- 2. Der gewählte
Check Node zweiten Grades und beide verbundenen VNs oder SVNs werden
zu einer als SVN bezeichneten Einheit zusammengefasst. In dem zweiteiligen
Schaubild kommt dem SVN die Rolle eines (hochgradigen) VN zu (vgl. 5 unten).
Dabei ist zu beachten, dass jede SVN mindestens einen Key-Node besitzen
muss.
- 3. Falls weitere Check Nodes zweiten Grades mit dem SVN verbunden
sind, werden diese und die verbundenen VNs oder SVNs dem SVN hinzugefügt. Dabei
ist zu beachten, dass jede SVN mindestens einen Key-Node besitzen
muss.
- 4. Falls Mehrfachverbindungen existieren, werden sämtliche
Mehrfachverbindungen mit Ausnahme eines einzigen zwischen dem SVN
und den verbundenen CNs ignoriert, und der Grad der betreffenden
CNs wird um deren Anzahl reduziert.
- 5. Die Schritte 3 und 4 werden wiederholt (Dies ist die sogenannte
Wachstumsphase), bis keine weiteren Zusammenschlüsse mehr möglich sind.
- 6. Es erfolgt eine Rückkehr
zu Schritt 1, um weitere SVNs zu identifizieren.
-
Der
oben aufgeführte
Algorithmus wurde unter Verwendung verschiedener LDPC-Codes getestet. Üblicherweise
bleiben nach dem ersten iterativen Dekodierungs-Schritt zahlreiche
ungelöste
Gleichungen zweiten Grades übrig,
so dass mehrere SVNs generiert werden können. Da die Kenntnis eines
VN in einem SVN ausreicht, um sämtliche
anderen VNs in diesem Super Node zu gewinnen, ist es sinnvoll, diese
als eine Einheit zu betrachten. Eine weitere Eigentümlichkeit
der hier erörterten
LDPC-Codes besteht in den Loops in dem Schaubild des Codes, die auch
als Girth bezeichnet werden. Dies ist der Grund dafür, dass
mehrere Verbindungen zwischen einem CN und einem SVN auftreten.
Würde man
diese entfernen, könnten
zusätzliche
Gleichungen zweiten Grades generiert werden, so dass das SVN weiter wachsen
könnte.
Durch das Ignorieren von Mehrfachverbindungen nehmen nicht nur Gleichungen, die
ursprünglich
zweiten Grades sind, sondern auch Gleichungen höheren Grades an der Generierung
eines SVN teil. Selbstverständlich
sind die Anzahl von SVNs und die Größe, d. h. die Anzahl der innen
befindlichen VNs, klar von der Code-Konzeption abhängig.
-
5 zeigt
die vereinfachte Graph-Struktur eines LDPC-Codes, der SVNs enthält. Check
Nodes sind durch Quadrate, Variable Nodes durch Kreise und Super
Variable Nodes durch konzentrische Kreise dargestellt. Es ist offensichtlich,
dass SVNs üblicherweise
höhere
Grade aufweisen, da sie aus mehreren VNs gebildet sind. Zu beachten
ist, dass der Grad eines SVN durch die Anzahl ausgehender Verbindungen
bestimmt ist, d. h. Verbindungen zu CNs, die keine Mitglieder des
SVN sind. Sämtliche
Verbindungen zu CNs innerhalb des Super Node werden beim Berechnen
des Grads nicht einbezogen. Ein Einblick in die innere Struktur
eines SVN wird im unteren Teil von 5 gegeben.
-
Nach
dem Erzeugen der SVNs soll eine Pivotisierungsstrategie auf dieses
vereinfachte Schaubild angewandt werden.
- 1.
Falls die Triangulierung nicht fortgesetzt werden kann, wird das
SVN oder VN mit dem höchsten
Grad eliminiert. Bei der Eliminierung einer SVN wird immer nur die
zur Key-Node gehörige Spalte
entfernt. Ansonsten wird hier kein weiterer Unterschied zwischen
SVNs und VNs gemacht wird. Ein SVN entspricht einfach einem VN eines (hohen)
Grads. Als Konsequenz ist nur der Grad des Node und nicht der Typ
(VN oder SVN) von Bedeutung.
- 2. Im Fall mehrerer Nodes (SVNs, VNs) gleichen Grades kann nach
Belieben einer von ihnen gewählt
werden.
-
6 stellt
die Größe der Blocklänge α in Abhängigkeit
von verschiedenen Overheads dar. Hierbei sind die erfindungsgemäßen Algorithmen
1 und 4 sowie der erfindungsgemäße Algorithmus
fünf, der
gerade beschrieben wurde, dargestellt. Als Algorithmus sechs ist
ein aus dem Stand der Technik bekannter Algorithmus dargestellt.
-
In 7 ist
die Codeword-Error-Rate eines Maximum-Likelihood-Decoders, in dem
einer der erfindungsgemäßen Algorithmen
implementiert wurde, im Vergleich zu einem iterativen Decoder dargestellt. Es
ist erkennbar, dass es sinnvoll ist, den Maximum-Likelihood-Decoder
zu verwenden, wenn ε zwischen
0,4 bis etwas unter 0,5 liegt. Bei Werten von ε kleiner als 0,4 kann der iterative
Decoder eingesetzt werden. Die hierbei erzielbaren Geschwindigkeiten sind
in 8 dargestellt, wobei erkennbar ist, dass der iterative
Decoder für
Werte ε größer als
0,43 sehr hohe Geschwindigkeiten erzielt, was daran liegt, dass
der iterative Decoder die einen Großteil Daten nicht wieder herstellen
kann. In 8 ist erkennbar, dass für Werte
von ε kleiner
als 0,43 auch im hybriden Decoder lediglich der iterative Decoder
verwendet wird, da dieser die verlorengegangenen Daten in fast allen
Fällen
wieder herstellen kann. Der Maximum-Likelihood-Decoder wird praktisch
nur bei größeren Channel-Erasure-Rates
angewandt.
-
10 stellt
den prinzipiellen Ablauf einer Gauß-Elimination dar. U stellt
eine Untermatrix von H dar und wird ausgebildet durch die Spalten
von H, die sich an den Stellen verlorener und/oder beschädigter Datenpakete
befinden. Zur Vereinfachung wurde in 10 angenommen,
dass die gelöschten
Pakete alle benachbart, d. h. zusammenhängend und am Ende des Packet-Level-Codewords angeordnet
sind. Um das Gleichungssystem zu lösen, muss U in die Diagonalform
gebracht werden. Dies ist möglich, wenn
U die größtmögliche Anzahl
unabhängiger
Zeilen und Spalten aufweist, das heißt, dass das Rand U der Anzahl
der gelöschten
Pakete entspricht (Full-Rank-Kriterium).
-
Die
strukturierte Gauß-Elimination
erfolgt folgendermaßen:
Zunächst
wird U in eine annähernd dreieckige
Form gebracht. Dies erfolgt durch einfache Permutationen der Zeilen/Spalten
(10a). In einem zweiten Schritt wird
die Matrix B in 10a durch Zeilensummen
gleich Null gesetzt, so dass eine Struktur gemäß 10b entsteht.
Die genannten ersten zwei Schritte ergeben eine Komplexität von O(u2), wobei u die Größe der gelöschten Bitmuster darstellt.
-
In
einem dritten Schritt wird eine „Brute-Force-Gauß-Elimination” auf die
Matrix A' in 10b angewandt. Dies führt zu der Identitätsmatrix
I. Der dritte Schritt hat eine Komplexität von O(alpha3),
wobei alpha die Anzahl der Spalten der Matrix A' darstellt.
-
Es
ist ersichtlich, dass das Gleichungssystem durch die Matrix im rechten
Teil der 10c dargestellt ist, durch
Rücksubstitution
lösbar
ist. Das beschriebene Verfahren ist ausschließlich dann anwendbar, wenn
U das Kriterium „Full
Rank” erfüllt.
-
Die
Komplexität
eines derartigen Decoders wird bereits für mittlere Blocklängen durch
die Größe von alpha
bestimmt. Die Komplexität
des Iterativen Decoders ist linear, bietet aber eine verringerte
Decodierleistung.
-
Da
für viele
Anwendungen, wie beispielsweise Audio- oder Videostreaming auf mobilen
Endgeräten
die Prozessorleistung nicht für
ein dauerhaftes Maximum-Likelihood-Decoding
ausreicht, kann durch das erfindungsgemäße Verfahren dennoch eine verbesserte
Datenübertragung
auf die genannte Geräte
erfolgen. Neben der Verwendung des Iterativen Decoders im ersten
Decodierungsschritt und die Verwendung des Maximum-Likelihood-Decoders
im zweiten Decodierungsschritt, sofern der erste Decodierungsschritt
nicht erfolgreich war, bietet die Veränderung des Parameters a weitere
Anpassungsmöglichkeiten.
Dieser Parameter definiert vorzugsweise die Obergrenze der Größe der Matrix
A'. Die Komplexität des dargestellten Maximum-Likelihood-Algorithmus
wird durch alpha nämlich
der Anzahl von Spalten der Matrix A' bestimmt. Alpha hängt hauptsächlich von der Channel-Erasure-Rate ε ab, d. h.
je höher
die Wahrscheinlichkeit einer Löschung
von Daten auf dem Kanal ist, desto höher ist alpha. Für geringe Channel-Erasure-Wahrscheinlichkeiten
kann alpha den Wert null annehmen.
-
Die
Anpassung der Komplexität
des Maximum-Likelihood-Decoders erfolgt dadurch, dass sofern, nachdem
U gemäß 10a in die Dreieckform gebracht wurde,
alpha den Wert des Parameters a übersteigt,
der Decoder eine Fehlermeldung ausgibt und ausschließlich die
korrekt übertragenen und/oder
wiederhergestellten Datenpakete ausgibt. Allein schon durch die
Verwendung eines Iterativen Decoders und die anschließende Verwendung
eines Maximum-Likelihood-Decoders, sofern eine Wiederherstellung
der Daten durch den Iterativen Decoder nicht gelingt, erreicht man
die Leistungsfähigkeit
eines Maximum-Likelihood-Decoders, jedoch mit einer geringeren Komplexität. Durch
die anschließende Anpassung
des Parameters a kann die Komplexität des Decoders weiterhin reduziert
werden, dadurch, dass eine Obergrenze für die Größe der Matrix definiert wird,
auf die die Gauß-Elimination
angewandt ist. Hierdurch wird der Maximum-Likelihood-Decoder bereits
zu einem frühen
Zeitpunkt gestoppt. Durch den genannten Schritt, nämlich die
Anpassung des Parameters a, erfolgt ein Verschieben der Leistungsfähigkeit
des Decoders. Je größer a ist,
desto näher wird
die Komplexität
und die Performance des Decoders am Maximum-Likelihood-Verfahren
sein. Je niedriger a ist, desto näher wird die Komplexität und die
Performance des Decoders am Iterativen Verfahren sein.
-
In 11 ist
die Codeword-Error-Rate in Abhängigkeit
von ε für verschiedene
Werte des Parameters a dargestellt. Die verwendeten Werte sind a
= 0 (entspricht einer ausschließlichen
Verwendung des Iterativen Decoders), a = 4, a = 8, a = 16, a = 24,
a = 32 und a = ∞ (entspricht
der Verwendung des Maximum-Likelihood-Decoders ohne Einschränkungen). Hierdurch
kann ein fließender Übergang
der Performance zwischen der ausschließlichen Verwendung eines Iterativen
Decoders und der ausschließlichen Verwendung
eines Maximum-Likelihood-Decoders erreicht werden. Beispielsweise
ist die Komplexität einer
Anwendung der Gauß-Elimination
auf eine 8×8-Matrix,
8:43 = 23 = 8 Mal
größer als
die Komplexität
der Anwendung einer Gauß-Elimination auf eine 4×4-Matrix.
-
12 stellt
schematisch eine Sendevorrichtung 10 und eine Empfangsvorrichtung 12 dar, wobei über die Übertragungsvorrichtung 18,
die beispielsweise eine UMTS-Verbindung ist, Daten von der Sendevorrichtung 10 an
die Empfangsvorrichtung 12 übermittelt werden. Auf der
Sendeseite erfolgt ein Codieren der Daten durch den mit der Sendevorrichtung 10 verbundenen
Encoder 14. Die übertragenen
Daten werden empfangsseitig durch den mit der Empfangsvorrichtung 12 verbundenen
Decoder decodiert. Hierbei wird das Low-Density-Parity-Check-Verfahren
verwendet, so dass beim Decodieren verlorene und/oder beschädigte Daten
wiederhergestellt werden. In einem ersten Decodierungsschritt wird
der Iterative Decoder 16a verwendet. Sofern eine Wiederherstellung
der Daten durch den Iterativen Decoder 16a nicht erfolgreich
ist, wird in einem zweiten Decodierungsschritt der Maximum-Likelihood-Decoder 16b verwendet.
Die Empfangsvorrichtung kann einen Prozessor 22 und/oder einen
Energiespeicher 20, wie beispielsweise einen Akku aufweisen
und als mobile Empfangsvorrichtung 12 ausgebildet sein.