Článek stručně popisuje hlavní funkční bloky digitální části ADSL modemu a následně způsob jejich simulace v Matlabu. Dále je popsáno grafické uživatelské rozhraní, které umožňuje zadávání parametrů simulace.
Matlab Model of ADSL Modem - Abstract:
The basic functional blocs of ADSL modem digital part are presented and simulated in Matlab.
Model ADSL modemu
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.
Zabezpečení cyklickým kódem
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].
Model CRC bloku
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
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].
Model skrambleru
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
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].
Model FEC bloku
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í.
Konvoluční prokládání
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].
Funkce realizující konvoluční prokládání
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.
DMT modulace
Alokace bitů
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].
Přiřazování bitů
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].
Konverze bitů a mřížkové kódování
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.
Konstelační kodér
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.
Modulace inverzní Fourierovou transformací
Šíř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ý prefix
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].
Realizace DMT modulace v modelu
Alokace bitů
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.
Přiřazování bitů a konverze bitů
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).
Weisův kodér
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.
Konstelační kodér
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.
Funkce pro modulaci inverzní Fourierovou
transformací a cyklický prefix
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.
Vlastní realizace programu
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ů.
Závěr
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.
Literatura
[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.