Přeskočit na obsah

Nízkohustotní kód s kontrolou parity

Z Wikipedie, otevřené encyklopedie

Nízkohustotní kód s kontrolou parity (anglicky low-density parity-check code, LDPC) je v teorii informace lineární samoopravný kód, který umožňuje přenášet zprávy zarušeným přenosovým kanálem.[1][2] LDPC se konstruují pomocí řídkého Tannerova grafu (podtřída bipartitních grafů).[3] LDPC patří mezi kódy s výkonností blízkou kapacitě kanálu, což znamená, že existuje praktická konstrukce, při která lze šumovou mez nastavit velmi blízko teoretické maximální Shannonově mezi pro symetrický bezpaměťový kanál. Šumová mez určuje horní mez pro kanálový šum, pod kterou lze dosáhnout libovolně malé pravděpodobnosti ztráty informace. Při použití iterativního šíření přesvědčení lze LDPC kódy dekódovat v čase přímo úměrném délce bloku.

LDPC kódy nacházejí rostoucí využití v aplikacích vyžadujících spolehlivý a vysoce efektivní přenos informací kanálem s omezenou šířkou pásma nebo kanálem s omezeným zpětným kanálem v přítomnosti šumu. K implementaci LDPC kódů došlo později, než byly implementovány jiné kódy, především turbokódy. Základní patent pro turbokódy vypršel 29. srpna 2013.[4][5]

LDPC kódy jsou také známy jako Gallagerovy kódy, na počest Roberta G. Gallagera, který je popsal ve svém disertaci na Massachusetts Institute of Technology v roce 1960.[6]

Implementace LPDC kódů byla v roce 1963, kdy je Gallager navrhl, příliš náročná,[7] takže LDPC kódy byly zapomenuty až do roku 1996, kdy byla jeho práce znovuobjevena.[8] Na konci 90. let 20. století se staly preferovaným kódovacím schématem turbokódy objevené v roce 1993. Turbokódy jsou jinou třídou kódů s výkonností blízkou kapacitě kanálu, které se používají pro aplikace jako je Deep Space Network a pro satelitní komunikaci. Díky technologickému pokroku však začaly být kódy s nízkohustotní kontrolou parity prakticky realizovatelné, a zdá se, že překonávají turbokódy svým nižším chybovým prahem a výkonností ve větším rozsahu kódových poměrů, zatímco turbokódy jsou stále výhodnější pro nižší kódové poměry.[9]

V roce 2003 nepravidelný opakovací akumulační kód (anglicky irregular repeat accumulate, IRA) z rodiny LDPC kódů překonal šest turbokódů a byl vybrán jako samoopravný kód pro nový standard DVB-S2 pro satelitní vysílání digitální televize.[10] Výbor pro výběr DVB-S2 provedl odhady složitosti dekodéru pro návrhy turbokódu, které používaly sériovou architekturu dekodéru, která je mnohem méně efektivní než paralelní architektura. Kvůli tomu turbokód používal přibližně poloviční rámce než LDPC.

Při výběru samoopravného kódu (FEC) pro ITU-T standard G.hn v roce 2008 zvítězily LDPC nad konvolučními turbokódy.[11] V G.hn byla dána přednost LDPC kódům před turbokódy díky jejich nižší dekódovací složitosti (která je důležitá při přenosové rychlosti blízké 1.0 Gbit/s) a protože navržené turbokódy vykazovaly významný chybový práh pro požadovaný režim fungování.[12]

LDPC kódy využívá také Ethernetová technologie 10GBASE-T, které používá kabel s kroucenými páry pro přenos dat rychlostí 10 gigabitů za sekundu. Od roku 2009 jsou LDPC kódy také součástí Wi-Fi standardu 802.11 jako nepovinná část 802.11n a 802.11ac ve specifikaci High Throughput (HT) PHY.[13]

Některé OFDM systémy přidávají dodatečnou vnější opravu chyb, která opravuje občasné chyby („chybový práh“) které překonávají vnitřní opravný kód LDPC i při nízkých bitových chybovostech. Například: Reedovy–Solomonovy kódy s LDPC Coded Modulation (RS-LCM) používá Reedův-Solomonův vnější kód.[14] Standardy DVB-S2, DVB-T2 a DVB-C2 používají BCH kód jako vnější kód pro odstraňování zbytkových chyb po LDPC dekódování.[15]

Aktuální využití

[editovat | editovat zdroj]

Funkčně jsou LDPC kódy definovány řídkou kontrolní maticí. Tato řídká matice je často náhodně generovaná tak, aby splňovala omezení pro řídkost. Konstrukce LDPC kódu je diskutována níže. Tyto kódy objevil Robert Gallager v roce 1962.

Následuje ukázka LDPC kódu na fragmentu grafu využívajícím Forneyovu notaci faktorového grafu. V tomto grafu je n proměnných uzlů v horní části grafu propojeno s (nk) uzly omezení ve spodní části grafu.

Toto je oblíbený způsob grafické reprezentace (nk) LDPC kódu. Pokud jsou jednotlivé bity platné zprávy připsány na téčka v horní části grafu, musí splňovat graficky znázorněná omezení: všechny hrany vedoucí do některého proměnného uzlu (označeného symbolem '=') musí mít stejnou hodnotu a součet všech hodnot vedoucích do některého faktorového uzlu (označeného symbolem '+') musí být sudý (neboli jejich součet modulo dva musí být nulový).

žádný Pokud zanedbáme hrany opouštějící obraz, existuje osm šestibitových řetězců odpovídajících platným kódovým slovům: (řetězce 000000, 011001, 110010, 101011, 111100, 100101, 001110, 010111). Tento fragment LDPC kódu reprezentuje tříbitovou zprávu zakódovanou do šesti bitů. Tato redundance slouží ke zvýšení pravděpodobnosti zotavení z kanálové chyby. Jde o (6, 3) lineární kód, s n = 6 a k = 3.

Pokud opět zanedbáme hrany opouštějící obraz, kontrolní matice reprezentující tento fragment grafu je

V této matici reprezentuje každý řádek jedno ze tří paritních omezení, a každý sloupec reprezentuje jeden ze šesti bitů přijatého kódového slova.

V tomto příkladě můžeme získat osm kódových slov rozšířením kontrolní matice H na tvar pomocí elementárních řádkových operací v tělese GF(2):

Krok 1: H.

Krok 2: Řádek 1 je přičten k řádku 3.

Krok 3: Řádky 2 a 3 jsou prohozeny.

Krok 4: Řádek 1 je přičten k řádku 3.

Odtud lze získat generující matici G jako (přičemž v tomto speciálním případě, kdy pracujeme s dvojkovým kódem je ), tedy konkrétně:

Nakonec vynásobením všech osmi možných tříbitových řetězců maticí G získáme všech osm platných kódových slov. Například kódové slovo pro bitový řetězec '101' se získá takto:

Pro kontrolu lze použít, že prostor řádků matice G je ortogonální k H, takže .

Bitový řetězec '101' dostaneme jako první 3 bity kódového slova '101011'.

Ukázkový kodér

[editovat | editovat zdroj]

Obrázek 1 znázorňuje funkční komponenty většiny LDPC kodérů.

Obr. 1. LDPC enkodér

Při kódování rámce se vstupní datové bity (D) kopírují a distribuují do sady složkových kodérů. Složkové kodéry jsou typicky akumulátory a každý akumulátor se používá pro generování paritního symbolu. Jedná kopie původních dat (S0,K-1) se odešle s paritní bity (P), které tvoří kódové symboly. S bitů z každého složkového kodéru se zahodí.

Paritní bit může být použit v jiném složkovém kódu.

Například při použití kódu DVB-S2 s poměrem 2/3 má zakódovaný blok velikost 64800 symbolů (N=64800), z čehož je 43200 datových bitů (K=43200) a 21600 paritních bitů (M=21600). Každý složkový kód (kontrolní uzel) kóduje 16 datových bitů, s výjimkou prvního paritního bitu, který kóduje 8 datových bitů. Prvních 4680 datových bitů se 13krát opakuje (je použito ve třinácti paritních kódech), zatímco zbývající datové bity se používají ve 3 paritních kódech (nepravidelný LDPC kód).

Pro srovnání, klasické turbokódy typicky používají dva složkové kódy aplikované paralelně, z nichž každý kóduje celý vstupní blok (K) datových bitů. Tyto složkové kodéry používají rekurzivní konvoluční kódy (RSC) malé hloubky (8 nebo 16 stavů), které jsou rozprostřeny prokladačem kódu, který rozptyluje jednu kopii rámce.

Naproti tomu LDPC kódy používají mnoho složkových kódů malé hloubky (akumulátorů) paralelně, z nichž každý kóduje pouze malou část vstupního rámce. Množství složkových kódů lze chápat jako mnoho 'konvolučních kódů' malé hloubky (dvoustavových), které jsou propojeny operacemi opakování a distribuce. Opakování a distribuce mají stejnou funkci jako prokladač v turbokódu.

Schopnost přesněji řídit spojení různých složkových kódů a úroveň redundance pro každý vstupní bit zvyšuje pružnost návrhu LDPC kódů, díky čemuž mohou mít lepší výkonnost, než mají některé turbokódy. Zdá se, že turbokódy mají lepší výkonnost než LDPC při nízkých kódových poměrech, nebo že je návrh výkonných kódů s nízkým poměrem pro turbokódy snazší.

Hardwarová realizace akumulátorů se s výhodou používá i při kódování. To znamená, že jakmile se vygeneruje první sada paritních bitů, a paritní bity jsou uloženy, tentýž akumulátor se použije pro generování další sady paritních bitů.

Dekódování

[editovat | editovat zdroj]

Maximálně věrohodné dekódování LDPC kódu na binárním symetrickém kanálu je (podobně jako u jiných kódů) NP-úplný problém. Optimální dekódování kódu jakékoli užitečné velikosti tedy není prakticky možné.

Je však možné prakticky implementovat suboptimální techniky založené na dekódování s iterativním šířením přesvědčení, které dávají vynikající výsledky. Suboptimální dekódovací techniky pohlížejí na každý paritní bit, z nichž se skládá LDPC, jako na samostatný nezávislý paritní kód (anglicky single parity check, SPC). Každý SPC kód je dekódován odděleně pomocí Soft-in soft-out dekodéru (SISO), jakým je například Viterbiho algoritmus s měkkým výstupem (SOVA), BCJR, MAP a další z nich odvozené. Informace o měkkém rozhodnutí z každého SISO dekodéru je křížově zkontrolována a aktualizována podle ostatních redundantních SPC dekódování stejného informačního bitu. Každý SPC kód je pak znovu dekódován na základě aktualizovaných informací o měkkých rozhodnutích. Tento proces se opakuje, dokud se nezíská platné kódové slovo nebo se nevyčerpají všechny možnosti. Tento typ dekódování se často nazývá součtově-součinové dekódování (anglicky sum-product decoding).

Dekódování SPC kódů se často nazývá zpracování „kontrolních uzlů“ a křížová kontrola proměnných se nazývá zpracování „proměnných uzlů“.

Při praktické implementaci LDPC dekodéru se sada SPC kódů dekóduje paralelně pro zvýšení propustnosti.

Naproti tomu, šíření přesvědčení u kanálu s binárním vymazáváním je obzvláště jednoduché, pokud je realizováno iterativním uspokojováním omezení.

Uvažujme například, že platné kódové slovo 101011 z příkladu výše, se přenáší kanálem s binárním vymazáváním a je přijato s poškozeným prvním a čtvrtým bitem, takže je přijato ?01?11. Protože přenášená zpráva musí splňovat kódová omezení, lze přijatou zprávu reprezentovat jejím zapsáním do horní části faktorového grafu.

V tomto příkladě nelze zatím obnovit první bit, protože všechna omezení s ním spojená mají více než jeden neznámý bit. Aby bylo možné pokračovat s dekódováním zprávy, je třeba identifikovat omezení vztahující se pouze k jednomu z vymazaných bitů. V tomto případě stačí druhé omezení. Jeho prověřením lze zjistit, že čtvrtý bit musí být nulový, protože pouze nula v této pozici vyhovuje omezením.

Celý postup se pak opakuje. Nyní může být použita nová hodnota čtvrtého bitu spolu s prvním omezením pro získání hodnoty prvního bitu, jak uvidíme dále. Jeho hodnota musí vyhovovat omezení úplně vlevo.

žádný

Zprávu lze tedy dekódovat iterativně. Pro jiné kanálové modely jsou zprávy předávané mezi proměnnými uzly a kontrolními uzly reálná čísla, která vyjadřují pravděpodobnosti a věrohodnosti určité hodnoty.

Výsledek lze zkontrolovat vynásobením opraveného kódového slova r paritní maticí H:

Protože výsledek z (syndrom) této operace je třikrát nulový vektor, výsledné kódové slovo r je úspěšně potvrzeno.

Po skončení dekódování lze původní bity zprávy '101' získat použitím prvních 3 bitů kódového slova.

Tento příklad je sice ilustrativní, ale neukazuje použití dekódování nebo předávání zpráv s měkkým rozhodováním, které se používá prakticky ve všech komerčních LDPC dekodérech.

Aktualizace informací v uzlu

[editovat | editovat zdroj]

V posledních letech bylo velké množství práce věnováno také studiu účinků alternativních rozvrhů aktualizace proměnných uzlů a uzlů omezení. Původní technika používaná pro dekódování LDPC kódů bylo tak zvané zaplavování (anglicky flooding). Tento typ aktualizace vyžaduje, aby před aktualizací proměnného uzlu byly aktualizovány všechny uzly omezení a naopak. Vila Casado se svými spolupracovníky ve své pozdější práci[16] zkoumá alternativní techniky aktualizace, ve kterých jsou proměnné uzly aktualizovány nejnovější dostupnou informací z kontrolního uzlu.

Důvodem této úpravy je fakt, že jako první je třeba aktualizovat proměnné uzly, jejichž hodnoty se mění nejčastěji. Vysoce spolehlivé uzly, které mají velkou magnitudu poměru log-věrohodnosti (anglicky log-likelihood ratio, LLR), a při aktualizacích se výrazně nemění, nevyžadují tak časté aktualizace jako ty uzly, jejichž znaménko a magnituda kolísá více. Tyto plánovací algoritmy mají větší rychlost konvergence a nižší chybové prahy než algoritmy používající flooding. Tyto nižší chybové prahy jsou dosaženy díky schopnosti algoritmu Informed Dynamic Scheduling (IDS)[16] zabránit uvěznění sad blízkých kódových slov.[17]

Při použití nezáplavových (anglicky nonflooding) plánovacích algoritmů se používá jiná definice iterace. Pro (nk) LDPC kód s poměrem k/n se jedná o plnou iteraci, pokud byla aktualizována proměnná n a uzly omezení n − k, bez ohledu na pořadí aktualizace.

Dekódování s vyhledávací tabulkou

[editovat | editovat zdroj]

LDPC kódy lze dekódovat mikroprocesorem s poměrně nízkým výkonem díky použití vyhledávacích tabulek.

Zatímco kódy jako například LDPC se obecně implementují na procesorech s vysokým výkonem pro velké délky bloku, existují také aplikace, které používají procesory s nižším výkonem a malou délkou bloku (1024).

Proto je možné předem spočítat výstupní bit na základě předem určených vstupních bitů. Lze vygenerovat tabulku, která obsahuje n položek (pro délku bloku 1024 bitů bude dlouhá 1024 bitů) a obsahuje všechny možné položky pro všechny možné vstupní stavy (chybové i nechybové).

Jednotlivé vstupní bity pak vstupují do posuvného registru, jehož hodnota se použije pro vyhledání relevantního výstupu v tabulce obsahující předpočítané hodnoty.

Tato metoda vyžaduje velkou paměť pro vyhledávací tabulku, ale nároky na procesor jsou relativně malé, takže dekódování LDPC je možné dokonce na PIC čipu s hodinovou frekvencí 4 MHz.

Konstrukce kódu

[editovat | editovat zdroj]

Při konstrukci LDPC kódů pro velké bloky se obvykle začíná studiem chování dekodérů. Pro velikost bloku blížící se k nekonečnu lze ukázat, že pokud je šumová mez LDPC dekodéru nižší, pak je dekódování spolehlivé, a pokud je vyšší, pak dekódování nefunguje,[18] což se hovorově označuje jako efekt útesu. Tuto mez lze optimalizovat hledáním nejlepšího poměru mezi hranami z kontrolních uzlů a z proměnných uzlů. Přibližný grafický přístup k zobrazování toto mez je EXIT tabulka.

Pro konstrukci určitého LDPC kódu po této optimalizaci lze použít dvě hlavní techniky:

  • Pseudonáhodné přístupy
  • Kombinatorické přístupy

Konstrukce pseudonáhodným přístupem vychází z teoretických výsledků, podle kterých náhodná konstrukce dává pro velké bloky dobrou dekódovací výkonnost.[8] Pseudonáhodné kódy mají obecně složité kodéry, ale pseudonáhodné kódy s nejlepšími dekodéry mohou mít kodéry jednoduché.[19] Často se aplikují různá omezení, aby se zajistilo, že požadované vlastnosti očekávané při teoretickém limitu nekonečné velikosti bloku se objeví i pro bloky konečné velikosti.

Pro optimalizaci vlastností LDPC kódů pro bloky malé velikosti a pro vytváření kódů s jednoduchými kodéry lze použít kombinatorické přístupy.

Některé LDPC kódy vycházejí z Reedových–Solomonových kódů, například RS-LDPC kód používaný ve standardu 10gigabitového Ethernetu.[20] Sestrojení hardwaru pro strukturované LDPC kódy může být jednodušší a proto levnější než pro náhodně generované LDPC kódy, například pokud H je cirkulantní matice; příkladem je LDPC kód používaný ve standardu DVB-S2.[21]

Jiný způsob konstrukce LDPC kódů používá konečné geometrie. Tuto metodu navrhl Y. Kou a kolektiv v roce 2001.[22]

LDPC kódy vs. turbokódy

[editovat | editovat zdroj]

LDPC kódy lze porovnat s jinými výkonnými kódování schémata, například turbokódy.[23] Na jedné straně je bitová chybovost (BER) turbokódů ovlivněna jejich nízkými omezeními;[24] LDPC kódy nemají žádné omezení minimální vzdálenosti,[25] což nepřímo znamená, že LDPC kódy může být efektivnější při relativně velkém rozsahu kódových poměrů (například 3/4, 5/6, 7/8) než turbokódy. Nicméně LDPC kódy nejsou jejich úplnou náhradou: turbokódy jsou nejlepším řešením pro nižší kódové poměry (například 1/6, 1/3, 1/2).[26][27]

Související články

[editovat | editovat zdroj]

Jiné kódy s výkonností blízkou kapacitě kanálu

[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Low-density parity-check code na anglické Wikipedii.

  1. MACKAY, David J. C. Information theory, Inference and Learning Algorithms [online]. 2003. Dostupné online. ISBN 0-521-64298-1. (anglicky) 
  2. K. MOON, Todd. Error Correction Coding, Mathematical Methods and Algorithms [online]. Wiley, 2005. Včetně kódu. ISBN 0-471-64800-0. 
  3. SHOKROLLAHI, Amin. LDPC Codes: An Introduction [online]. 2003. (anglicky) 
  4. USA. Patentový spis 5446747. Dostupné: <online>.
  5. MACKENZIE, Dana. Communication speed nears terminal velocity. NewScientist. 2005-07-09. (anglicky) 
  6. Larry Hardesty. Explained: Gallager codes. MIT Newsy. 2010-01-21. Dostupné online [cit. 2013-08-07]. (anglicky) 
  7. Robert G. Gallager. Low Density Parita Check Codes. [s.l.]: Monograph, M.I.T. Press, 1963. Dostupné online. (anglicky) 
  8. a b MACKAY, David J. C.; NEAL, Radford M. Near Shannon Limit Performance of Low Density Parity Check Codes. Electronics Letters. Červenec 1996. 
  9. Telemetry Data Decoding, Design Handbook [online]. NASA. Dostupné online. (anglicky) 
  10. prezentace firmy Hughes Systems [online]. 2006-10-08. Dostupné v archivu pořízeném z originálu. (anglicky) 
  11. HomePNA Blog: G.hn, a PHY For All Seasons [online]. Dostupné online. 
  12. 2009-12-13. Dostupné v archivu pořízeném z originálu. 
  13. IEEE Standard, část 20.3.11.6 "802.11n-2009". [s.l.]: IEEE, 2009-10-29. Dostupné v archivu pořízeném dne 2013-02-03. 
  14. Chih-Yuan Yang; Mong-Kai Ku. LDPC coded OFDM modulation for high spectral efficiency transmission [online]. Dostupné online. 
  15. WELLS, Nick. DVB-T2 in relation to the DVB-x2 Family of Standards [online]. 2013-05-26. Dostupné v archivu pořízeném z originálu. (anglicky) 
  16. a b CASADO, A.I. Vila; GRIOT, M.; WESEL, R. Informed dynamic scheduling for belief propagation decoding of LDPC codes. In: Proc. IEEE Int. Conf. on Comm. (ICC). [s.l.]: [s.n.], červen 2007.
  17. RICHARDSON, T. Error floors of LDPC codes. In: Proc. 41st Allerton Conf. Comm., Control a Comput.. Monticello, IL: [s.n.], 2003.
  18. RICHARDSON, Thomas J.; SHOKROLLAHI, M. Amin; URBANKE, Rüdiger L. Design of Capacity-Approaching Irregular Low-Density Parity-Check Codes. IEEE Transactions on Information Theory. Únor 2001, roč. 47, čís. 2. 
  19. RICHARDSON, Thomas J.; URBANKE, Rüdiger L. Efficient Encoding of Low-Density Parity-Check Codes. IEEE Transactions on Information Theory. Únor 2001, roč. 47, čís. 2. 
  20. DARABIHA, Ahmad; CARUSONE, Anthony Chan; KSCHISCHANG, Frank R. Power Reduction Techniques for LDPC Decoders [online]. Dostupné online. 
  21. ZHANG, Zhengya; ANANTHARAM, Venkat; WAINWRIGHT, Martin J.; NIKOLIC, Borivoje. An Efficient 10GBASE-T Ethernet LDPC Decoder Design With Low Error Floors [online]. [cit. 2020-11-05]. Dostupné v archivu pořízeném dne 2016-05-19. 
  22. KOU, Y.; LIN, S.; FOSSORIER, M. Low-Density Parity-Check Codes Based on Finite Geometries: A Rediscovery and New Results. IEEE Transactions on Information Theory. Listopad 2001, roč. 47, čís. 7. 
  23. TAHIR, B.; SCHWARZ, S.; RUPP, M. BER comparison between Convolutional, Turbo, LDPC, and Polar codes. In: 24th International Conference on Telecommunications (ICT). [s.l.]: IEEE, květen 2017.
  24. MOON, Todd, K. Error correction coding: mathematical methods and algorithms. [s.l.]: John Wiley & Sons, 2005. Dostupné online. ISBN 0-471-64800-0. 
  25. MOON, Todd, K. Error correction coding: mathematical methods and algorithms. [s.l.]: John Wiley & Sons, 2005. Dostupné online. ISBN 0-471-64800-0. 
  26. KENNETH S., Andrews, et al. The development of turbo and LDPC codes for deep-space applications. In: Proceedings of the IEEE 95.11. [s.l.]: [s.n.], 2007.
  27. HASSAN, A.E.S.; DESSOUKY, M.; ABOU ELAZM, A.; SHOKAIR, M. Evaluation of complexity versus performance for turbo code and LDPC under different code rates [online]. 2012. S. 93–98. Dostupné online. 
  28. Raj Karamchedu. Does China Have the Best Digital Television Standard on the Planet? [online]. 04 May 2009-05-04 [cit. 2020-11-06]. Dostupné online. (anglicky) 

Externí odkazy

[editovat | editovat zdroj]