Modelovanie kanálových kódov v prostredí Matlab, Communications Toolbox a Simulink Kanály v prostredí Matlab V Chipe 3/02 bol uvedený Communications Toolbox, ako jedna z dôležitých knižníc programového prostredia Matlab. Po ukážkach modelovania komunikačných kanálov prechádzame na dôležitú dvojicu z komunikačného reťazca - kanálový kodér/dekodér. Kódovacie a dekódovacie techniky kanálových kódov (v Communications Toolboxe bloky patriace pod Error-Control Coding) sa používajú na korekciu chýb pri prenose správ v digitálnom komunikačnom systéme. Vysielacia časť (kodér) pridáva k originálnej správe redundantné bity, ktoré sú v prijímacej časti (dekodéri) použité na korekciu chyby. Dvojicu kanálový kodér/dekodér je potrebné zaradiť do prenosového reťazca v prípade, ak prenosový kanál je silne zašumený alebo prenášané dáta sú veľmi citlivé na existujúci šum. Preto sa aj výber samoopravnej kódovacej a dekódovacej techniky riadi špecifikami prenášaných dát a druhom šumu v prenosovom kanále. Pri syntéze takéhoto digitálneho komunikačného systému treba vychádzať z nameraných charakteristík kanála alebo z jeho matematického modelu (viď príspevok v Chipe 3/02). V súčasnej dobe existujú dve významné skupiny kanálových kódov - blokové a konvolučné. Obe sú v širokom sortimente podporované podknižnicou Communications Toolboxu v prostredí Matlab. Blokové kódy (praktický význam majú hlavne lineárne, systematické kódy) sa vyznačujú tým, že kodér a dekodér je zariadenie bez pamäte, t. j. k výpočtu nového kódového slova nie je potrebné si pamätať informačné symboly z predchádzajúceho kódového slova (kódové slova kódu sú na sebe nezávislé). Dekódovanie u blokových kódov využíva matematické vlastnosti lineárnej algebry a Galoisových konečných polí. Algoritmy sú viac vhodné pre HW realizáciu, z dôvodu rýchlosti dekódovania, aj keď v súčasnosti existujú aj rýchle SW realizácie. U konvolučných kódov, na rozdiel od blokových, je tvorba kódových slov na sebe závislá, a preto sa im hovorí aj kódy s pamäťou. K výpočtu redundancie je potrebné si pamätať určitý počet informačných symbolov, o veľkosti tzv. kódovacieho záberu (constraint length) dĺžky m, preto ich označujeme (n,k,m) kódy. Kódovací pomer u oboch typov kódov sa označuje ako pomer vstupných a výstupných symbolov k/n. Kodér konvolučného kódu vlastne predstavuje automat s konečným počtom stavov. Dekódovanie konvolučných kódov je založené na maximálnom pravdepodobnostnom dekódovaní podľa Viterbiho algoritmu, ktorý podporuje aj Communications Toolbox. Kým u blokových kódov prevládajú lineárne systematické kódy, u konvolučných kódov sú známe lineárne aj nelineárne zapojenia kodérov pracujúcich v režime "hard decision" (pevné rozhodnutie) a "soft decision" (rozhodnutie s výberom). HW realizácia dekodéra konvolučného kódu sa v literatúre neuvádza, ide výlučne o SW realizáciu, kde sa pre správne určenie dekódovanej postupnosti používa grafická pomôcka trellis diagram. Pre blokové aj konvolučné kódy v Communications Toolboxe a Simulinku existujú dva formáty pre zápis vstupnej a výstupnej postupnosti: sekvenčný a vektorový. Pri vektorovom vstupno-výstupnom formáte kodér akceptuje dĺžku vstupného vektora k a výstupného vektora n. Dĺžka vstupného a výstupného vektora pre dekodér je inverzná ku kodéru. Pred kodérom a za dekóderom musia byť zapojené pomocné bloky Vec to Sca converter a Sca to Vec converter, ktoré menia vektorovú reprezentáciu na skalárnu a naopak. U sekvenčného vstupného a výstupného formátu sa na vstupe kodéra musí najprv naplniť vstupný buffer dĺžkou postupnosti k a na výstupe vyprázdniť s dĺžkou postupnosti n. Pri použití tohto spôsobu modelovania komunikačného systému v Simulinku je pre zabezpečenie správnej funkcie dekódovania potrebné nastaviť správne časové oneskorenie jednotlivých blokov v dialógových oknách (viď Chip 3/02). Blokové a konvolučné kódy v prostredí Communications Toolbox Východzím bodom konštrukcie kanálových kódov je minimálna Hammingova vzdialenosť dmin (u blokových kódov) a voľná Hammingova vzdialenosť dfree (u konvolučných kódov). Korekčné vlastnosti blokových (n,k) kódov a konvolučných (n,k,m) kódov sú potom dané vzťahmi (1): kde u blokových kódov je ( počet korigovaných chýb v kódovom slove dĺžky n a u konvolučných kódov je ( počet korigovaných chýb v kvázinekonečnej postupnosti, ktoré sa opakujú s bezpečným intervalom (BI). Communications Toolbox a Simulink podporujú nasledujúce techniky kódovania a dekódovania: Lineárne blokové kódy: cyklické kódy, BCH kódy, Hammingove kódy a Reed-Solomonove kódy. Konvolučné kódy: režim dekódovania "hard decision", režim dekódovania "soft decision". Pozn.: Hammingove a Reed-Solomonove kódy sú špeciálny prípad BCH (Bose, Chaudhuri, Hocquenghem) kódov. Funkcie blokových kódov v Communications Toolboxe riešia nasledujúce úlohy: * kódovanie a dekódovanie správy; * výpočet charakteristík kódu; * výpočet dekódovacej tabuľky; * výpočet generačnej alebo kontrolnej matice; * výpočet primitívnych generačných polynómov podľa zadaných požiadaviek. Funkcie konvolučných kódov v Communications Toolboxe riešia nasledujúce úlohy: * kódovanie a dekódovanie správy; * polynomická reprezentácia konvolučného kodéra; * konverzia medzi binárnou a oktávovou reprezentáciou polynómu; * určenie prenosovej funkcie zo zapojenia kodéra; * zobrazenie trellis diagramu. Ukážky modelovania blokových a konvolučných kódov Možnosti podknižnice Error-Control Coding (ECC) Communications Toolboxu sú v príspevku prezentované na dvoch modeloch, ktoré predstavujú digitálny komunikačný systém s korekčným kodérom/dekodérom. Úlohou tejto dvojice je zakódovať a následne opraviť správu, ktorá je narušená chybovou postupnosťou simulovanou modelom kanála - Lmtd-b-err (Limited Binary Error Channel). Testovaný počet chýb na výstupe dekodérov (blok Error Rate) možno porovnať s počtom chýb v kanále bez zapojenia dvojice kodér/dekodér. Oba modely sú realizované vo vektorovej forme. V modeli 1 sa zo zdroja (blok - Random Int) generuje náhodná postupnosť dekadických čísel, ktorá je v konvertore (Sca to Vec convertor) zmenená do binárnej podoby. V modeli 2 je použitý ako zdroj dát blok Rd wksp (Read from workspace), kde sa synchronizovane, podľa predpísaného času vzorkovania, číta z pracovného priestoru náhodná binárna postupnosť predpísanej dĺžky. Model 1 (obr. 1) predstavuje digitálny komunikačný systém s Hammnigovým (n,k) kódom typu (7,4). Pre odborníkov zaoberajúcich sa problematikou kódovania sú známe korekčné vlastnosti Hammingových (n,k) kódov. Pre laickú verejnosť uveďme, že minimálna Hammingova vzdialenosť kódu (7,4) je dmin = 3 a počet korigovaných chýb (, podľa (1) je (=1. Ide o tzv. "single-error correcting code" - kód opravujúci jednonásobné chyby v kódovom slove dĺžky n. Model 2 (obr. 2) predstavuje digitálny komunikačný systém s konvolučným kódom (n,k,m), typu (2,1,2). Zapojenie kodéra (obr. 3) je dané prenosovou funkciou (transfer function), ktorá v oktávovej forme je tf = [5 7]. Korekčné vlastnosti kódu, uvedené v odbornej literatúre, sú nasledovné: voľná Hammingova vzdialenosť dfree=5, čo podľa (1) odpovedá počtu korigovaných chýb (=2, periodicky sa opakujúcich s určitým (v praxi empiricky zisteným) bezpečným intervalom BI. Tento typ kódu, na rozdiel od Hammingoveho, je tzv. "double error correcting code". Dekódovanie modelu 2 používa režim "hard decision" a princíp maximálne pravdepodobnostného dekódovania (MP) podľa Viterbiho, ktorého trellis diagram je znázornený na obr. 4. Na obrázku je ukážka výberu najlepšej cesty cez mrežovú štruktúru (trellis), ktorá odpovedá dekódovanej postupnosti, pre časový interval 9 taktov. Veľkosť trellis diagramu možno meniť v dialógovom okne konvolučného dekodéra parametrom (path memory length). Testy pre overenie korekčných vlastností dekodérov, u oboch modelov, boli realizované pre dĺžku prenášanej postupnosti 10 000 binárnych symbolov cez limitovaný binárny symetrický kanál. Nastavenie dialógového okna modelu kanála bolo uvedené v predchádzajúcom príspevku. V prípade Hammingového kódu boli simulované jednonásobné chyby s pravdepodobnosťou perr = 10-2 , čím vzniklo v kanále 26 jednonásobných chýb. Pre druhý model s konvolučným kódom boli simulované dvojnásobné chyby s pravdepodobnosťou perr = [0 10-2], čím vzniklo v kanále 26 dvojnásobných chýb. Výsledky testovaia po zapojení kodérov/dekodérov do prenosového reťazca sú uvedené v tab. 1. Z tabuľky je zrejmé, že Hammingov dekodér opravil všetky jednonásobné chyby. Konvolučný dekodér opravil z 26 dvojnásobných chýb 23 a 3 dvojnásobné chyby neopravil. Je to spôsobené tým, že niektoré chyby boli náhodne generované s menším bezpečným intervalom medzi sebou, s akým je schopný dekodér chyby opravovať. Táto skutočnosť sa dá v praxi po otestovaní ošetriť zväčšením veľkosti dekódovacieho okna alebo výberom inej dvojice konvolučný kodér/dekodér. Testy korekčných vlastností dekodérov v simulovaných modeloch možno podľa potreby opakovať pri zmenených typoch chybových postupností (error pattern) a hodnotách pravdepodobnosti chýb perr . Záver V príspevku boli uvedené skúsenosti s používaním dôležitej podknižnice Communications Toolboxu - Error Control Coding, z oblasti blokových aj konvolučných kódov. Treba skonštatovať, že v rámci inovácie programových modulov Matlabu sa aj táto poknižnica neustále doplňuje o nové M funkcie a MDL bloky. Verzia Matlab 6.1 používa pre tvorbu MDL súborov Communications Blockset. Z jeho rozšírenej ponuky spomeniem aspoň bloky Interleaver a Deinterleaver, ktorých úlohou je správne rozmiestniť dáta pred vstupom do kanála a výstupom z kanála. Ide o veľmi dôležitú podpornú techniku, ktorá sa v praxi často používa v kombinovanom kódovaní. Najčastejšie ide o kombináciu vonkajšieho kodéra (z množiny blokových kódov) a vnútorného kodéra (z množiny konvolučných kódov). Tento spôsob kódovania sa používa napr. v systémoch digitálnej televízie DVD - T (Digital Video Broadcasting - Terrestrial). Mária Franeková