The basic functional blocs of ADSL modem digital part are presented and simulated in Matlab.
Výchozím pro jednotlivé funkční bloky a jejich řazení byl ADSL model modemu podle doporučení ITU-T G 992.1. Na obr. 1 je model, který zobecňuje varianty modelu uvedené v [11]. Na obr. 1 jsou znázorněny všechny simulované bloky modelu.
Obr. 1 - Model ADSL modemu.
Cyklický kód patří mezi lineární blokové kódy, kde r redundantních symbolů je připojeno k bloku k symbolů zprávy a vytvářejí kódové slovo o délce n = k + r symbolů. Kód je lineární, pokud součtem jakýchkoliv dvou kódových slov (součet modulo) dostaneme kódové slovo, a cyklický, pokud cyklickým posouváním kódového slova dostáváme kódová slova [6].
CRC blok provádí zabezpečení multirámce cyklickým kódem. Zabezpečení se provádí pro prokládanou i neprokládanou část dat nezávisle na sobě. U ADSL se používá zabezpečení CRC – 8, kde generující polynom je [11]:
Posloupnost bitů o délce k, kterou chceme zabezpečit, můžeme napsat jako polynom:
Zabezpečující CRC bity vypočteme podle vztahu:
Výsledek je polynom, který přepíšeme na posloupnost bitů:
Výsledné CRC bity zabezpečovaného multirámce jsou uloženy do služebního bajtu v nultém rámci následujícího multirámce (v prokládané i neprokládané části) [11].
Cyklickým kódem jsou zabezpečeny všechny příchozí bajty z kanálů ASx a LSx, AEX a LEX bajty, pokud jsou do rámců vkládány, a služební bajty všech rámců kromě nultého (kde je uložena zabezpečovací posloupnost CRC kódu předchozího multirámce) [11].
Protože rychlosti příchozích kanálů se mohou lišit podle nastavení, je kontrolní součet CRC počítán pro posloupnosti od přibližně 67 bajtů do přibližně 14875 bajtů [11].
Hlavička funkce: checkSum = crc(mes,genPoly).
Funkce pro vstupní bitovou posloupnost vypočte na základě generujícího polynomu posloupnost zabezpečovacích bitů. Počet zabezpečovacích bitů odpovídá řádu generujícího polynomu. Výpočet se provádí na principu dělení polynomů, kde zabezpečovací posloupnost je zbytek po dělení.
Obr. 2 - Schéma funkce zabezpečení CRC.
Skrambler dat se používá proto, aby modem při přenosu stejných dat, jako posloupnost samých jedniček nebo nul, nebo krátké stále se opakující posloupnosti jako prázdné buňky při asynchronním způsobu přenosu dat (ATM), nevykonával operace se stále stejným vnitřním stavem. Odstraněním posloupnosti stejných symbolů se snižuje možnost existence stejnosměrné složky v přenosovém spektru. Skrambler může též vytvářet pseudo-náhodnou sekvenci dat při navazování spojení [6].
U ADSL modemu jsou nezávisle na sobě skramblována data z rychlé i prokládané části (LSB každého bajtu je první). Používá se následující algoritmus:
kde dn je n-tý výstup z prokládaného nebo neprokládaného zásobníku dat (tj. n-tý vstupující bit do skrambleru) a d*n je n-tý výstup z odpovídajícího skrambleru. Postup je znázorněn na obr. 3 [11].
Obr. 3 - Princip činnosti skrambleru.
Skrambler je použit na sériový tok dat bez jakéhokoliv vztahu k ohraničení rámců nebo k synchronizačním symbolům [11].
Hlavička funkce: [scramData newInitState] = scrambler(data, initState, scramPoly).
Funkce pro každý bit vstupní posloupnosti vypočte výstupní bit na základě vnitřního stavu a skramblovacího polynomu. Zároveň vypočte i nový vnitřní stav skrambleru, který se mění průběžně během výpočtu. K výpočtu jednotlivých bitů je použito logické XOR, které sečte vstupní bit s odpovídajícími výstupy skrambleru.
Obr. 4 - Schéma funkce skrambleru.
Dopředná korekce chyb se provádí zabezpečením Reed–Solomonovým kódem. Tento kód používá vyšší abecedu zdroje, proto je vhodný k opravě shlukových chyb. Modem ATU-C by měl podporovat jakoukoliv kombinaci z následující tab. 1, která shrnuje parametry FEC kódování. [11].
Tab. 1 - Parametry FEC kódování.
Parametr S udává, kolik rámců najednou může být zakódováno v jednom R-S slovu. RI by tudíž mělo být celočíselným násobkem S. R redundantních kontrolních bajtů je připojeno ke K bajtům zprávy (m0,m1,...,mk-2,mk-1) a dávají RS kódové slovo délky N = K + R bajtů. Kontrolní bajty jsou vypočteny na základě následující rovnice:
kde:
je kódovaná posloupnost bajtů vyjádřená jako polynom:
je zabezpečující polynom a
je generující polynom Reed – Solomonova kódu. C(D) je zbytek po dělení vypočítaný podle vztahu výše. Výpočty se provádějí nad konečným tělesem GF(256), kde α je primitivní element tělesa, který vyhovuje primitivnímu polynomu x8+x4+x3+x2+1. Každý datový bajt (d7,d6,...,d1,d0) je vyjádřen jako element konečného tělesa d7α7+d6α6+...d1α+d0. Velikostí konečného tělesa je omezena maximální délka posloupnosti dat, která může být zabezpečena jedním kódovým slovem. V GF(256) je to maximálně 256 symbolů včetně redundantních kontrolních bajtů [11].
Hlavička funkce: rscodeword = rsc(buffer,R,b).
Funkce vrátí posloupnost symbolů zprávy a přidá za ní R vypočtených redundantních zabezpečovacích symbolů. Operace se provádí nad konečným tělesem o velikosti 2b. K výpočtu redundantních symbolů a ke konstrukci konečného tělesa jsou použity funkce Matlabu, Communictions toolboxu.
Obr. 5 - Schéma funkce FEC zabezpečení.
Prokladač je zařízení, které vysílá přijaté symboly v jiném pořadí. Pokud je pak při přenosu několik symbolů za sebou přijato chybně, rozprostře se chyba zpětným umístěním symbolů na místa před prokládáním do několik RS kódových slov a je tak větší pravděpodobnost, že bude opravena [6].
U ADSL je prokládaný datový tok konvolučně prokládán. Každý bajt Reed–Solomonova kódového slova o N bajtech je zpožděn o (D-1)*i bajtů, kde D je hloubka prokládání a i je index bajtu v R-S kódovém slově. Možné hodnoty D viz. tab. 1. Hodnota i je od nuly do N-1. Tab. 2 ukazuje příklad konvolučního prokládání pro N = 5 a D = 2 [11].
Tab 2. Příklad konvolučního prokládání pro N=5 a D=2.
Tento postup prokládání lze použít pokud je N liché. Pro N sudé by se některé bajty vzájemně překrývaly. Proto se pro N sudé vloží na začátek R-S kódového slova jeden nadbytečný bajt a ten se na výstupu bloku po provedení konvolučního prokládání odstraní [11].
Hlavička funkce: [outFrame outMem] = coninter(frame,D,mem).
Obr. 6 - Schéma funkce konvolučního prokládání.
Funkce vypočte v závislosti na hloubce konvolučního prokládání D nové polohy pro jednotlivé prvky ze vstupní proměnné frame. K takto vytvořené posloupnosti jsou přidány prvky z proměnné mem. V Proměnné mem jsou uloženy prvky, které byly kvůli zpoždění posunuty za hranice svého rámce. Funkce vrací posloupnost outFrame se stejným počtem prvků, jako má vstupní posloupnost frame a dále vrací posloupnost outMem, kde jsou již na správně vypočítaných pozicích prvky posunuté za hranici právě zpracovávaného rámce.
Při navazování spojení ADSL modemů se provádí alokace bitů v jednotlivých subkanálech na základě zjištěného poměru signálu a šumu. Ke každému subkanálu může být přiřazeno 2 až 15 bitů. Hodnoty alokovaných bitů se uchovávají ve vzestupném pořadí bi, kde i je index subkanálu (resp. frekvence subkanálu). Do jednotlivých subkanálů se nejprve přiřadí bity z rychlé části rámce a do zbývajících subkanálů se přiřadí bity z prokládané části. Do každého subkanálu by mělo být přiřazeno tolik bitů, kolik do něj bylo alokováno, proto jeden subkanál může obsahovat bity z rychlé i prokládané části rámce. Jeden ADSL rámec je přenesen v jednom DMT symbolu. Bity se nejprve přiřazují do subkanálů s nejmenším počtem alokovaných bitů [11]. Na základě hodnot v bi můžeme vytvořit pořadí b*i, kde jsou kanály seřazeny vzestupně podle počtu bitů v nich alokovaných [11].
Bity jsou z datového zásobníku přiřazovány na jednotlivé nosné podle pořadí b*i. Při použití mřížkového kódování jsou přiřazovány bity vždy ke dvojici subkanálů b*i (protože mřížkové kódování je 4-D povahy), na které je alokováno (x,y) bitů (x,y je počet bitů alokovaný na jednotlivé subkanály z dvojice). Celkem je přiřazeno z = x + y – 1 bitů (1 bit je použit na rozšíření do 4-D v konstelačním kodéru). Z těchto z = x + y – 1 bitů (tz, tz-1,…, t1) se tvoří binární slovo u podle tab. 3 [11].
Tab. 3 - Tvoření binárního slova u.
Poslední dva 4-D symboly v jednom DMT symbolu musí být upraveny tak, aby byl po výpočtu DMT symbolu vnitřní stav konstelačního kodéru roven (0,0,0,0). Dva LSB slova u jsou proto předem dány a pouze z = x + y – 3 bitů z datového zásobníku je přiřazeno do subkanálů a jsou přiřazeny na místa t3, t4,…,tz [11].
Na základě binárního slova u = (uz*,uz*-1, …, u1) jsou vytvářeny dvě slova v = (vz*-y, …, v0) a w = (wy-1, …,w0), pomocí nichž se určí QAM bod v konstelačním kodéru. V obvyklém případě, kdy x > 1 a y > 1, z* = z = x + y – 1, slova v a w obsahují bity x a y. V případě, že x = 0 a y > 1, z* = z + 2 = y + 2, v = (v1, v0) = 0 a w = (wy-1, …, w0). Na základě bitů u3, u2, u1 jsou vytvořeny bity (v1, v0) a (w1, w0) podle obr. 7 [11].
Obr. 7 - Konverze u na v a w.
K mřížkovému kódování se u ADSL používá konvoluční kodér (viz. obr. 7), což je systematický kodér (tj. u2 a u1 procházejí nezměněny), viz. obr. 8. Jeho vnitřní stav (S3, S2, S1 S0) je na počátku výpočtu každého DMT symbolu nastaven na (0, 0, 0, 0).
Obr.8 - Princip konvolučního kodéru.
Zbývající bity slov v a w jsou vytvořeny z u = (uz*, uz*-1, …, u4). Když x > 1 a y > 1, v = (uz*-y + 2, uz*-y +1, …, u4, v1, v0) a w = (uz*, uz*-1, ..., uz*-y+3, w1, w0). Pokud je x = 0, je algoritmus konverze navržen tak, aby v1 = v2 = 0. Binární slovo v je vloženo první do konstelačního kodéru, potom je vloženo slovo w [11]. Aby byl vnitřní stav konvolučního kodéru po zpracování DMT symbolu nastaven na (0, 0, 0, 0), dva LSB u1 a u2 dvou posledních 4-D symbolů v DMT symbolu jsou nastaveny takto: u1 = S1 XOR S3 a u2 = S2 [11]. 4-D slova z konvolučního kodéru jsou rozdělena na dvě 2-D slova v a w podle následujících vztahů:
Viz. obr.7.
Pro daný subkanál určí konstelační kodér lichý celočíselný bod (X, Y) z čtvercové mříže založené na b bitech slova v = (vb-1, vb-2, ..., v1, v0) nebo w = (wb-1, wb-2, ..., w1, w0) [11]. Pro sudý počet b bitů jsou hodnoty X a Y určeny takto: X = (vb-1, vb-3, ..., v1, 1) a Y = (vb-2, vb-4, ..., v0, 1). Nejvíce významné bity (vb-1 a vb-2) jsou znaménkové bity čísel X a Y. Bitové posloupnosti jsou v dvojkově doplňkovém kódu. Na obr. 9 je ukázka hodnot X a Y v závislosti na b, pro b = 2 a 4 [11].
Obr. 9 - QAM body pro b = 2 a 4.
Pro vyšší počty b bitů můžeme dostat možné stavy tak, že každý bod n ve stavu pro b o jedna menší nahradíme blokem 2x2 podle obr. 10 [11].
Obr. 10 - Rozšíření jednoho bodu n.
Pokud je b liché a b = 3 určí se X a Y podle obr. 11 [11].
Obr. 11 - QAM body pro b = 3.
Pokud je b liché a větší než 3, 2 nejvíce významné bity čísla X a Y jsou určeny na základě 5 MSB posloupnosti b. X = (Xc, Xc-1, vb-4, vb-6, ..., v3, v1, 1) a Y = (Yc, Yc-1, vb-5, vb-7, vb-9, ..., v2, v0, 1). Xc a Yc jsou znaménkové bity. Xc, Xc-1, Yc, Yc-1 jsou určeny na základě vb-1, vb-2, ..., vb-5 podle tab. 4 [11].
Tab. 4 - Určení 2 nejvýznamnějších bitů slova X a Y.
Šířka každého subkanálu je Δf = 4,3125 kHz. Pro přenášení uživatelských dat je možné použít 255 subkanálů (na frekvencích n*Δf, pro n =1 až 255). Subkanál na Nyquistově frekvenci (tj. 256.) není používán pro přenášení uživatelských dat a měl by přenášet reálnou hodnotu [11]. Jeden ze subkanálů je použit jako pilotní (pro ADSL over POTS je to 64., pro ADSL over ISDN 96.). Data na něj modulovaná by měla být konstantní {0,0}. Užití pilotní frekvence napomáhá rozlišení hranic jednotlivých vzorků v přijímači [1] a [11]. Modulací je vytvořeno 512 reálných hodnot z komplexních hodnot Zi [11]:
Konstelační kodér generuje pouze 255 komplexních čísel Zi. Proto jsou vstupní hodnoty pro modulaci (tj. 255 komplexních hodnot, 0 pro DC a reálná hodnota pro subkanál 256) doplněny tak, že celý vektor Z je Hermitovsky symetrický [11].
Cyklická předpona je tvořena posledními 32 vzorky z výstupu IDFT (tj. xn pro n = 480 až 511), které jsou připojeny před blok 512 vzorků a tato posloupnost (tj. vzorky 480…511, 0…511) je čtena digitálně analogovým převodníkem a výsledný signál je vyslán na vedení [1]. Cyklická předpona vytváří oddělovač mezi jednotlivými sousedními symboly a snižuje jejich vzájemnou interferenci. Tím, že vytváří pseudoperiodický signál, se také snižuje interference mezi jednotlivými subkanály [11].
Posloupnost počtu bitů přiřazených na jednotlivé nosné je uložena v proměnné bitTable a vzestupně uspořádaná posloupnost v proměnné ordTable.
Hlavička funkce: dmtVzorky = dmt(buffer, bitTable, ordTable).
Funkce vypočte komplexní hodnoty QAM stavů pro každý subkanál v bitTable, kde jsou uloženy počty bitů přiřazené do daného subkanálu. Bity se přiřazují z proměnné buffer na dvojice subkanálů (použití TC) v pořadí určeném proměnou ordTable. Funkce pracuje přesně podle postupu popsaného v [11]. K výpočtu QAM stavů využívá funkci konstelačního kodéru constelEncode(v) a Weisova kodéru pro mřížkové kódování weiEncode(input,initState), (popis viz. dále).
Hlavička funkce: [output newState] = weiEncode(input,initState).
Funkce realizuje Weisův kodér (viz. obr. 8) použitý při mřížkovém kódování. Funkce vypočte v závislosti na vstupu kodéru a jeho vnitřním stavu výstup kodéru a nový vnitřní stav.
Hlavička funkce: comp = constelEncode(v).
Funkce vypočte liché komplexní číslo reprezentující QAM stav ze zadané bitové posloupnosti v. Bitová posloupnost v je v dvojkově doplňkovém kódu. První bit určuje znaménko a poslední bit je vždy 1, aby byla zachována podmínka v [11] a bod byl lichý.
Obr. 12 - Schéma simulace DMT.
Hlavička funkce: realh = idft(cvzorky, cpLength).
Funkce převádí posloupnost vzorků z frekvenční do časové oblasti pomocí inverzní rychlé Fourierovy transformace. Zároveň vkládá před výslednou posloupnost cyklický prefix o délce určené proměnnou cpLength.
Obr. 13 - Schéma simulace IDFT.
Celá simulace je realizována programem v Matlabu. Při spuštění programu jsou vytvořeny dva objekty transmitter a receiver, které realizují vysílací a přijímací část modemu. Jsou v nich uložené všechny volitelné parametry simulace a další parametry všech simulovaných bloků. Zároveň jsou v těchto objektech uchovány jednotlivé datové posloupnosti jednotlivých simulovaných rámců po průchodu jednotlivými funkčními bloky. Po vytvoření těchto objektů je spuštěno hlavní okno programu a uživatel může nastavovat jednotlivé parametry simulace. Poté následuje vlastní simulace vysílání a příjmu jednotlivých rámců (při příjmu dat jsou prováděny pouze inverzní operace k operacím ve vysílací části, neprovádí se žádná korekce chyb atp. Přijaté rámce mohou sloužit ke kontrole, že odpovídají vyslaným, případně pro ukázku časového zpoždění dat vlivem různé hloubky konvolučního prokládání atp. Na obr. 14 je znázorněn běh programu.
Obr. 14 - Schéma běhu programu.
Výpočetní část modelu se skládá z výše zmiňovaných funkcí simulující jednotlivé funkční bloky, které jsou řazeny za sebou a postupně zpracovávají jednotlivé rámce.
Obr. 15 - Znázornění běhu výpočetní části modelu.
Při spuštění programu se zobrazí okno, které umožňuje nastavení parametrů simulace popřípadě vstup do dalších oken pro nastavení alokace bitů do jednotlivých subkanálů a/nebo nastavení rychlosti. Simulace se spouští pomocí tlačítka Start. Nejprve je kontrolováno nastavení parametrů simulace. Pokud je zvolené nastavení nesprávné je uživatel upozorněn a simulace není spuštěna, dokud nejsou parametry simulace nastaveny korektně.
Obr. 16 - Hlavní okno programu.
V následujícím seznamu jsou uvedeny všechny parametry modelu, které lze nastavit.
Způsob přenosu:
ATU-C -> ATU-R, ATM,
ATU-C -> ATU-R, STM,
ATU-R -> ATU-C, ATM,
ATU-R -> ATU-C, STM.
Struktura rámce:
rámec s úplným záhlavím a zapnutou synchronizací,
rámec s úplným záhlavím a vypnutou synchronizací,
rámec s omezeným záhlavím a odděleným rychlým a synchronizačním bajtem,
rámec s omezeným záhlavím a sloučeným rychlým a synchronizačním bajtem,
rychlost kanálů s příchozími daty,
počet redundantních bajtů FEC kódování pro rychlou i prokládanou cestu,
počet DMT symbolů kódovaných do jednoho RS slova v prokládané cestě,
hloubka konvolučního prokládání,
počet bitů alokovaných do jednotlivých subkanálů.
Po výpočtu všech simulovaných rámců v jednotlivých fázích zpracování signálu v digitální části ADSL modemu se zobrazí okno, které umožňuje výběr jednotlivých funkčních bloků a následné prohlížení datových posloupností jednotlivých rámců po průchodu konkrétními bloky.
Obr. 17 - Okno pro výběr jednotlivých funkčních bloků.
Výše zmíněné funkce slouží pro demonstraci funkčnosti digitální části ADSL modemu. Funkce jsou součástí bakalářské práce [12], kde je zároveň doplněno grafické rozhraní umožňující nastavení parametrů simulace a její spuštění. Princip činnosti jednotlivých funkčních bloků vychází z doporučení ITU-T G.992.1. Jednotlivé funkce představující funkční bloky mohou být použity i při simulaci jiných zařízení, kde se dané bloky používají. Model může být dále doplněn o části simulující útlum vedení a rušení (a další) a následně mohou být simulovány další jevy jako chybovost atp.
[1] Vodrážka, J., Přenosové systémy v
přístupové síti. 2. přepracované vydání. Česká technika – nakladatelství ČVUT.
Praha, 2006.
[2] Vodrážka, J., Havlan M., Přístupové přenosové systémy –
cvičení, měření na přípojkách xDSL. 1. vydání. Vydavatelství ČVUT. Praha, 2003.
[3] Šimák B., Vodrážka J., Svoboda J., Digitální účastnické přípojky xDSL, díl
1. Sdělovací technika s.r.o. Praha, 2005.
[4] Vlček, K., Komprese a kódová
zabezpečení v multimediálních komunikacích. 1. vydání. BEN – technická
literatura. Praha, 2000.
[5] Proakis, G. J., Salehi, M., Bauch, G., Contemporary
communication systems using Matlab and Simulink. 2. vydání. Belmont, USA:
Brooks/Cole - Thomson Learning, 2004.
[6] Golden, P., Dedieu, P., Jacobsen, S.
K., Fundamentals of DSL technology. Auerbach Publications, 2006.
[7] Vodrážka, J., Pravda, I., Principy telekomunikačních systémů. 1. vydání. Česká technika –
nakladatelství ČVUT. Praha, 2006.
[8] Sweeney, P., Error control coding, from
theory to practise. John Wiley & Sons, Chichester. England, 2002.
[9] Zaplatílek, K., Doňar, B., Matlab, tvorba uživatelských aplikací. 1. vydání. BEN
– technická literatura. Praha, 2004.
[10] Benvenuto, N., Cherubini, N.,
Algorithms for communications systems and their applications. John Wiley & Sons,
Chichester. England, 2002.
[11] ITU-T G.992.1 Asymetric digital subscriber line
(ADSL) transceivers. 06/1999.
[12] Čech, J., Model ADSL modemu v Matlabu.
Bakalářská práce. Praha 2007.