„Kanalkodierung“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Inhalt gelöscht Inhalt hinzugefügt
K nowiki zur Unterbrechung der ISBN-Sequenz |
|||
(7 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 34:
Bereits kurz nach Shannons Veröffentlichung wurden die ersten praktischen Kanalcodes entwickelt. Als besonders wegweisend sind hier die Arbeiten von [[Marcel J. E. Golay]] ([[Golay-Code]], 1949)<ref>{{Literatur |Autor=Marcel Golay |Titel=Notes on Digital Coding |Sammelwerk=Proceedings of the IRE |Band=37 |Nummer=6 |Datum=1949-06 |ISSN=0096-8390 |Seiten=657–657 |DOI=10.1109/jrproc.1949.233620}}</ref> und [[Richard Hamming|Richard W. Hamming]] ([[Hamming-Code]], 1950). Hammings Arbeit wurde dabei von der Unzuverlässigkeit der damaligen Relais-Computer motiviert, in denen es häufig zu Bitfehlern kam. Der (7,4)-Hamming-Code kann mit nur 3 bit Redundanz einen beliebigen Bitfehler in 4 Nachrichtenbits korrigieren.<ref>{{Literatur |Autor=Hamming, R. W. (Richard Wesley), 1915–1998. |Titel=Coding and information theory |Verlag=Prentice-Hall |Ort=Englewood Cliffs, N.J. |Datum=1980 |ISBN=0-13-139139-9}}</ref>
[[Irving Stoy Reed|Irving S. Reed]] und [[David E. Muller]] entwickelten 1954 die heute als [[Reed-Muller-Code]]s bekannten Kanalcodes. Reed-Muller-Codes haben den Vorteil, dass sie auch für große Blocklängen <math>n</math> konstruiert werden können und dabei vergleichsweise viele Fehler korrigieren. Eine Unterklasse von Reed-Muller-Codes sind die [[Hadamard-Code]]
=== 1960er-Jahre: Algebraische Codes ===
Einen Meilenstein stellen die [[Reed-Solomon-Code]]s (nach [[Irving Stoy Reed|Irving S. Reed]] und [[Gustave Solomon]], 1960) und deren Untergruppe [[BCH-Code]]s (nach [[Raj Chandra Bose|R. C. Bose]], [[Dijen Kumar Ray-Chaudhuri|D. K. Ray-Chaudhuri]] und [[A. Hocquenghem]]) dar. Die Grundidee ist hier, Codesymbole aus
=== 1970er- und 1980er-Jahre: Faltungscodes und Codeverkettung ===
Mit den [[Faltungscode]]s beschrieb [[Peter Elias]] bereits 1955 die ersten datenstrombasierten Codes, also Kanalcodes ohne eine festgelegte Blocklänge. Diese fanden jedoch erst mit dem effizienten Dekodieralgorithmus von [[Andrew J. Viterbi|Andrew Viterbi]] ([[Viterbi-Algorithmus]], 1967) praktische Anwendung. Der Viterbi-Algorithmus erlaubte es erstmals, einfach eine sogenannte ''Soft-Input''-Dekodierung anzuwenden, bei der (statt hart-entschiedenen Bitwerten) Wahrscheinlichkeiten für jedes Symbol berücksichtigt werden. Somit fanden Faltungscodes besonders bei Funkanwendungen wie [[Global System for Mobile Communications|GSM]] und [[Wireless Local Area Network|WLAN]] ([[IEEE 802.11a|802.11a]]/[[802.11g|g]]) Verwendung, bei denen diese Information zur Verfügung steht.<ref>{{Literatur |Autor=3rd Generation Partnership Project |Titel="3GGP TS45.001: Technical Specification Group GSM/EDGE Radio Access Network; Physical layer on the radio path; General description" |Datum=}}</ref> Dennoch ist deren Fehlerkorrekturfähigkeit von der Länge des verwendeten Schieberegisters abhängig, die exponentiell in die Dekodierkomplexität eingeht.
Serielle Codeverkettung ([[David Forney|Dave Forney]], 1966) erwies sich als Schlüsseltechnologie, um immer bessere Codes mit beherrschbarem Dekodieraufwand zu entwerfen. Dabei wird eine Nachricht zunächst mit einem (äußeren) Kanalcode (meist einem algebraischer Code) und anschließend mit einem (inneren) Faltungscode kodiert. Diese Methode fand 1977 mit den [[Voyager-Programm|Voyager-Raumsonden]] eine prominente Anwendung und blieb das Zugpferd der Kanalkodierung bis zur Entwicklung der [[Turbo-Code]]s.
Zeile 47:
Alle bisher genannten Kanalcodes operierten noch weit weg (d. h. mehrere [[Dezibel]] im [[Signal-Rausch-Verhältnis]]) von der von Shannon aufgezeigten Kanalkapazität, und es verbreitete sich die Ansicht, dass diese nicht auf praktikable Weise erreicht werden kann. Daher war die Aufruhr groß, als die Anfang den 1990er von [[Claude Berrou]] erfundenen [[Turbo-Code]]s (in der Veröffentlichung von 1993 sind Alain Glavieux und Punya Thitimajshima Mitautoren)<ref>{{Literatur |Autor=C. Berrou, A. Glavieux, P. Thitimajshima |Titel=Near Shannon limit error-correcting coding and decoding: Turbo-codes. 1 |Sammelwerk=Proceedings of ICC '93 - IEEE International Conference on Communications |Band=2 |Verlag=IEEE |Ort=Geneva, Switzerland |Datum=1993 |ISBN=978-0-7803-0950-0 |Seiten=1064–1070 |Online=https://ieeexplore.ieee.org/document/397441/ |Abruf=2020-11-01 |DOI=10.1109/ICC.1993.397441}}</ref> plötzlich diese Lücke zur Kanalkapazität bis auf einige Zehntel dB schlossen. In Turbo-Codes werden zwei parallel verkettete Faltungscodes mit einem [[Pseudozufällige Funktion|pseudo-zufälligen]] [[Interleaving|Interleaver]] eingesetzt. Zum Dekodieren kommen zwei rückgekoppelte [[BCJR-Algorithmus|BCJR-Dekoder]] zum Einsatz – ein Prinzip, das an den [[Turbolader]] eines [[Verbrennungsmotor]]s erinnert. In mehreren Iterationen tauschen beide Dekoder Information aus, um schließlich zu einem Codewort zu konvergieren. Es werden vergleichsweise kurze [[Schieberegister]] für die Faltungscodes verwendet, da bei Turbo-Codes der Interleaver dafür sorgt, dass die Codewortbits über die gesamte Länge des Codes miteinander verschränkt werden. Somit ist der Dekodieraufwand nur linear mit der Codewortlänge, was sehr lange Codes (viele Kilobit pro Codewort) erstmals praktikabel machte und damit den von Shannon erdachten Codes bereits sehr nahe kommt. Turbo-Codes fanden daraufhin Anwendung in den Mobilfunkstandards [[Universal Mobile Telecommunications System|UMTS]] und [[Long Term Evolution|LTE]].<ref>{{Literatur |Autor=3GPP |Titel=LTE; Evolved Universal Terrestrial Radio Access (E-UTRA); Multiplexing and channel coding (3GPP TS 36.212 version 10.0.0 Release 10) |Datum= |Online=https://www.etsi.org/deliver/etsi_ts/136200_136299/136212/10.00.00_60/ts_136212v100000p.pdf |Format=PDF |KBytes= |Abruf=2020-11-01}}</ref>
Ähnlich gute Leistungsfähigkeit wie Turbo-Codes wies [[David MacKay|David J.C. MacKay]] 1996 bei [[Low-Density-Parity-Check-Code|LDPC-Codes]] nach, die mit dem [[Belief Propagation|Belief-Propagation-Algorithmus]] ebenfalls iterativ dekodiert werden<ref>{{Literatur |Autor=D.J.C. MacKay, R.M. Neal |Titel=Near Shannon limit performance of low density parity check codes |Sammelwerk=Electronics Letters |Band=33 |Nummer=6 |Datum=1997 |ISSN=0013-5194 |Seiten=457 |DOI=10.1049/el:19970362}}</ref>. Diese wurden zwar schon Anfang der 1960er von [[Robert Gray Gallager|Robert Gallager]] erfunden<ref>{{Literatur |Autor=Robert G. Gallager |Titel=Low-Density Parity-Check Codes |Verlag=The MIT Press |Datum=1963 |ISBN=978-0-262-25621-6}}</ref>, sie gerieten jedoch in Vergessenheit, da die damalige Technologie noch keine praktische Implementierung erlaubte. In den folgenden Jahren wurde in Arbeiten von [[Thomas J. Richardson|Tom Richardson]] und [[Rüdiger Urbanke]] eine umfangreiche Theorie zur Konstruktion von LDPC-Codes entwickelt, sodass diese nun als Quasi-Stand der Technik in der Kanalkodierung gelten. Sie werden unter anderem im [[5G|5G-Mobilfunkstandard]], neueren [[Wireless Local Area Network|WLAN]]-Standards ([[IEEE 802.11n|802.11n]] und [[IEEE 802.11ac|802.11ac]]) und [[
=== Polar Codes ===
Zeile 56:
[[Datei:Codeklassen.png|mini|400px|Übersicht häufig verwendeter Codeklassen]]Grundsätzlich lassen sich Kanalcodes in blockbasierte und zeichenstrombasierte Codes unterteilen.
=== Blockbasierte Codes
[[Blockcode]]s zeichnen sich durch eine vordefinierte, konstante Codewortlänge <math>n</math> aus.
Zeile 73:
==== Codes für Iterative Dekodierung ====
Iterativ dekodierte Codes bezeichnet man auch als ''moderne'' Kanalcodes.<ref>{{Literatur |Autor=Tom Richardson, Ruediger Urbanke |Titel=Modern Coding Theory |Verlag=Cambridge University Press |Ort=Cambridge |Datum=2008 |ISBN=978-0-511-79133-8}}</ref> Im Gegensatz zu algebraischen Codes bestimmt hier der Dekodieralgorithmus den Code-Entwurf.
* [[Low-Density-Parity-Check-Code]] (LDPC Code)
* [[Turbo-Code]]
Zeile 80:
==== Codes aus der Informationstheorie ====
Mit den 2008 eingeführten Polar-Codes wurden Blockcodes gefunden, die auf dem [[Informationstheorie|informationstheoretischen]] Prinzip der Kanal-Polarisierung basieren. Sie können keiner der beiden obigen Klassen zugeordnet werden, sind aber eng
* Polar-Code
|