Turbokód

Z Wikipedie, otevřené encyklopedie

Turbokódy (francouzsky Turbocodes, anglicky turbo codes) jsou v teorii informace třídou vysoce výkonných samoopravných kódů vyvinutých v letech 1990–91 a publikovaných v roce 1993. Jde první praktické kódy, jejichž efektivita se blíží maximální kapacitě kanálu nebo Shannonovu limitu, teoretickému maximu kódového poměru, při níž je stále možná spolehlivá komunikace při dané úrovni šumu. Turbokódy se používají v 3G/4G mobilních komunikacních (například v Universal Mobile Telecommunications System a LTE) a pro komunikaci s kosmickými sondami i v dalších aplikacích, kde se návrháři snaží dosáhnout spolehlivého přenosu informací komunikačním spojem s omezenou šířkou pásma nebo latencí v přítomnosti šumu, který ovlivňuje signál. Turbokódy soupeří s LDPC kódy (s „nízkohustotní kontrolou parity“), které poskytují podobnou výkonnost.

Použití slova „turbo“ je inspirováno smyčkou zpětné vazby používanou při normálním dekódování turbokódu, která připomíná využití energie výfukových plynů pro pohon turbodmychadla ve spalovacích motorech. Joachim Hagenauer uvádí, že turbokód není vhodné pojmenování, protože při procesu kódování se zpětná vazba nepoužívá.[1]

Historie[editovat | editovat zdroj]

První žádost o patent na turbokódy byla podána 23. dubna 1991. V žádosti o patent je jako jediný objevitel turbokódů uveden Claude Berrou. Na základě žádosti bylo vydáno několik patentů včetně US Patent 5,446,747, který vypršel 29. srpna 2013.

První veřejný článek o turbokódech, „Near Shannon Limit Error-correcting Coding and Decoding: Turbo-codes“,[2] byl publikován v roce 1993 v Proceedings of IEEE International Communications Conference. Článek byl kvůli prostorovým omezením rozdělen na tři samostatné příspěvky, jejichž autory byl Claude Berrou, Alain Glavieux a Punya Thitimajshima (z Télécom Bretagne, první ENST Bretagne, France). Z původní patentové přihlášky je však zřejmé, že objevitelem turbokódů je Claude Berrou, a další autoři článků přispěli jiným materiálem než hlavní myšlenkou.

Turbokódy byly natolik revoluční, že mnoho odborníků v oblasti kódování udávaným výsledkům nevěřilo. Potvrzení jejich výkonnosti vedlo k malé revoluci v oblasti kódování a objevům mnoha dalších typů iterativního zpracování signálu.

První třídou turbokódů je paralelní zřetězený konvoluční kód (PCCC). Po publikaci původních paralelních turbokódů v roce 1993 bylo objeveno mnoho dalších tříd turbokódů včetně sériové verze sériového zřetězeného konvolučního kódu a opakovacích akumulačních kódů. Iterativní metody turbo dekódování byly aplikovány i na obvyklejší samoopravné systémy, včetně Reedových–Solomonových opravných konvolučních kódů, které jsou však pro praktickou implementaci iterativními dekodéry příliš složité. Z konceptu turbo kódování vychází také turbo ekvalizace.

Kromě turbokódů vynalezl Berrou také rekurzivní systematické konvoluční (RSC) kódy, které použil v ukázkové implementaci turbokódů popsaných v patentu. Turbokódy používající RSC kódy mají lepší výkonnost.

Před objevem turbokódů byl nejlepším kódem sériový zřetězený kód vycházející z Reedova–Solomonova kódu s vnější opravou chyb kombinovaného s vnitřním konvolučním kódem dekódovaným pomocí Viterbiho algoritmu s omezenou délkou, který je znám pod jménem RSV kódy.

V pozdějším článku Berrou ocenil intuici „G. Battaila, Joachima Hagenauera a P. Hoehera, kteří na konci 80. let zdůrazňovali význam pravděpodobnostního zpracování.“ Uvádí, že „R. Gallager a M. Tanner už znali příbuzné techniky kódování a dekódování“, i když potřebné výpočty byly v té době těžko realizovatelné.[3]

Ukázkový kodér[editovat | editovat zdroj]

Následující ukázková implementace kodéru popisuje klasický turbo kodér a ukazuje obecné principy paralelních turbokódů. Existuje však mnoho variant turbokódů, které používají jiné kodéry komponent, vstupní/výstupní poměry, prokladače a vzorky pro zúžení kódu.

Tato implementace kodéru vytváří tři skupiny bitů. První skupina je m-bitový blok datového pole. Druhá skupina je n/2 paritních bitů datového pole vypočítaných pomocí rekurzivního systematického konvolučního kódu (RSC kód). Třetí skupina je n/2 paritních bitů pro známé permutace datového pole, opět vypočítaných pomocí RSC kódu. S datovým polem se tedy posílají dva různé nadbytečné skupiny paritních bitů. Kompletní blok má délku m + n bitů a kódový poměr je m/(m + n). Permutaci datového pole provádí zařízení nazývané prokladač.

V hardwarovém provedení sestává turbokodér ze dvou identických RSC kodérů, С1 a C2, které jsou vzájemně propojeny tak zvaným paralelním zřetězením, jak je ukázáno na obrázku:

Na obrázku je písmenem M označen paměťový registr. Zpožďovací linka a prokladač způsobují, že se vstupní bity dk objevují ve změněném pořadí. Při první iteraci se vstupní posloupnost dk objevuje na obou výstupech kodéru, xk a y1k nebo y2k díky systematické povaze kodéru. Pokud se kodéry C1 a C2 používají v n1 a n2 iteracích, jejich poměry jsou rovny

Dekodér[editovat | editovat zdroj]

Dekodér má podobnou strukturu jako výše uvedený kodér. Je tvořen dvěma propojenými elementárními dekodéry, které jsou na rozdíl od kodéru propojeny sériově. Dekodér pracuje nižší rychlostí (tj. ), a je tedy určen pro kodér ; analogicky je pro . dává měkké rozhodnutí, který způsobuje zpoždění . Stejné zpoždění je způsobené zpožďovací linkou v kodéru. Funkce způsobuje zpoždění .

Prokladač vložený mezi dekodéry rozptyluje shluky chyb pocházející z výstupu . Blok DI je modul demultiplexování a vkládání. Funguje jako přepínač, který střídavě přesměrovává vstupní bity na nebo . Ve stavu OFF se na i přívádějí výplňkové bity (nuly).

Uvažujme bezpaměťový kanál s aditivním bílým gaussovským šumem (AWGN) a předpokládejme, že v k-té iteraci dekodér přijímá dvojici náhodných proměnných:

kde a jsou nezávislé šumové komponenty se stejným rozptylem . je k-tý bit výstupu kodéru .

Nadbytečná informace je demultiplexována a pomocí DI odesílána do (když ) nebo (když ).

dává měkké rozhodnutí, tj.:

které využívá . se nazývá logaritmus poměru věrohodnosti (LLR). je aposteriorní pravděpodobnost (APP) datových bitů, která ukazuje pravděpodobnost interpretace přijetí bitu jako . Pokud vezmeme v úvahu LLR, dává pevné rozhodnutí; tj. dekódovaný bit.

Je známo, že Viterbiho algoritmus není schopen vypočítat APP, a proto nemůže být používán jako . Místo toho se používá upravený BCJR algoritmus. Pro lze Viterbiho algoritmus použít.

Zobrazená struktura však není optimální, protože používá pouze část dostupné nadbytečné informace. Pro zlepšení struktury se používá smyčka zpětné vazby (která je na obrázku vyznačena čárkovaně).

Přístup s měkkým rozhodnutím[editovat | editovat zdroj]

Přední část dekodéru produkuje pro každý bit datového proudu celé číslo, které udává, jak je pravděpodobné, že bit je 0 nebo 1. Toto číslo se nazývá měkký bit. Lze jej vybrat z rozsahu [−127, 127], kde:

  • −127 znamená „určitě 0“
  • −100 znamená „velmi pravděpodobně 0“
  • 0 znamená „se stejnou pravděpodobností 0 anebo 1“
  • 100 znamená „velmi pravděpodobně 1“
  • 127 znamená „určitě 1“

To sice vnáší do datového proudu z přední části pravděpodobnostní aspekt, ale zároveň to přináší více informace o každém bitu, než kdyby to byla pouze 0 nebo 1.

Přední část tradičního bezdrátového přijímače musí u každého bitu rozhodnout, zda je interní analogové napětí větší nebo menší než daná referenční napěťová úroveň. V dekodéru turbokódu poskytuje přední část celočíselnou míru, jak moc se interní napětí liší od dané referenční úrovně.

Při dekódování m + n-bitového bloku dat přední část dekodéru produkuje pravděpodobnosti pro každý bit datového proudu. Existují dva paralelní dekodéry, jeden pro každý z n-/2bitových paritních segmentů. Oba dekodéry používají pro datové pole segment m věrohodnosti. Dekodér, který pracuje na druhém paritním segmentu zná permutace, které pro tento segment používal kodér.

Řešení hypotézy pro hledání bitů[editovat | editovat zdroj]

Klíčovou inovací turbokódů je, jak se data o věrohodnosti používají pro vypořádání rozdílů mezi oběma dekodéry. Oba konvoluční dekodéry generují hypotézy (s odvozenou věrohodností) pro vzorek m bitů v datovém poli segmentu. Hypotetické bitové vzorky se porovnávají, a pokud se liší, dekodéry mění odvozené věrohodnosti, které mají pro každý bit hypotézy. Každý dekodér zahrnuje odvozené odhady věrohodnosti z druhého dekodéru a pro bity v datovém poli generuje nové hypotézy. Tyto nové hypotézy se pak porovnávají. Tento iterativní proces pokračuje tak dlouho, dokud se oba dekodéry neshodnou na stejné hypotéze pro m-bitový vzorek datového pole, typicky v 15 až 18 cyklech.

Existuje určitá analogie mezi popsaným procesem a řešením křížových problémů jako křížovky nebo sudoku. Uvažujme částečně vyluštěnou křížovku, v níž některá políčka mohou být vyplněna chybně. Dva lušticí stroje (dekodéry) se snaží tento problém řešit: jeden kontroluje pouze slova „svisle“ (paritní bity), druhý pouze slova „vodorovně“. Na začátku oba lušticí stroje odhadnou odpovědi (hypotézy) podle svých legend, a oznámí, jak si jsou jisté v jednotlivých písmenech (bitech datového pole). Pak porovnají poznámky, vzájemně si vymění odpovědi a odhady spolehlivosti, a zaznamenají, kde a jak se liší. Podle této nové znalosti oba přicházejí s aktualizovanými odpověďmi a odhady spolehlivosti, a celý proces se opakuje, dokud nedojdou ke stejnému řešení.

Provedení[editovat | editovat zdroj]

Turbokódy mají dobrou výkonnost díky atraktivní kombinaci náhodného vzhledu kódu v kanálu spolu s fyzicky realizovatelnou dekódovací strukturou. Turbokódy jsou ovlivněny chybovým prahem.

Využití turbokódů v praxi[editovat | editovat zdroj]

Turbokódy se využívají při rádiové komunikaci v telekomunikacích:

Bayesovské formulace[editovat | editovat zdroj]

Z pohledu umělé inteligence lze turbokódy považovat za instanci smyčkového šíření přesvědčení (anglicky belief propagation) v Bayesovských sítích.[5]

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Turbo code na anglické Wikipedii.

  1. JOACHIM HAGENAUER, Joachim. Iterative Decoding of Binary Block and Convolutional Code [online]. [cit. 2014-03-20]. Dostupné v archivu pořízeném z originálu dne 2013-06-11. 
  2. BERROU, Claude; GLAVIEUX, Alain; THITIMAJSHIMA, Punya. Near Shannon Limit Error – Correcting. [s.l.]: [s.n.] Dostupné online. 
  3. BERROU, Claude. The ten-year-old turbo codes are entering into service. Bretagne, France: [s.n.] Dostupné online. 
  4. Digital Video Broadcasting (DVB); Interaction channel for Satellite Distribution Systems, ETSI EN 301 790, V1.5.1, May 2009.
  5. MCELIECE, Robert J.; MACKAY, David J. C.; CHENG, Jung-Fu. Turbo decoding as an instance of Pearl's "belief propagation" algorithm. [s.l.]: [s.n.], 1998. Dostupné online. DOI 10.1109/49.661103. S. 140–152. 

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]

Literatura[editovat | editovat zdroj]

Publikace[editovat | editovat zdroj]

  • Battail, Gérard. "A conceptual framework for understanding turbo codes." IEEE Journal on Selected Areas in Communications 16.2 (1998): 245–254.
  • Brejza, Matthew F., et al. "20 years of turbo coding and energy-aware design guidelines for energy-constrained wireless applications." IEEE Communications Surveys & Tutorials 18.1 (2016): 8–28.
  • Garzón-Bohórquez, Ronald, Charbel Abdel Nour, and Catherine Douillard. "Improving Turbo codes for 5G with parity puncture-constrained interleavers." Turbo Codes and Iterative Information Processing (ISTC), 2016 9th International Symposium on. IEEE, 2016.