Upload
haracha
View
28
Download
0
Embed Size (px)
DESCRIPTION
A digitális átvitel minőségének javítása kódolással. példa. A feladat, és megoldása. - PowerPoint PPT Presentation
Citation preview
A digitális átvitel A digitális átvitel minőségének javítása minőségének javítása kódolássalkódolással
példapélda
A feladat, és megoldásaA feladat, és megoldása
Adott egy 4.25dB-es jel-zaj viszonyú rádiócsatorna, amin nagy biztonsággal Adott egy 4.25dB-es jel-zaj viszonyú rádiócsatorna, amin nagy biztonsággal adatot szeretnénk átküldeni. Az információ folyamot k=10 bites blokkokban adatot szeretnénk átküldeni. Az információ folyamot k=10 bites blokkokban kell kódolni, BPSK modulációt használunk, és a megengedett blokk-kell kódolni, BPSK modulációt használunk, és a megengedett blokk-hibavalószínűség nem lehet több 2*10hibavalószínűség nem lehet több 2*10–5–5 -nél, amit hibajavító kódolással kell -nél, amit hibajavító kódolással kell biztosítanunk. Tervezzük meg az adott kódot! biztosítanunk. Tervezzük meg az adott kódot! Vizsgáljuk meg a rendszer spektrális hatékonyságát kódolással és kódolás Vizsgáljuk meg a rendszer spektrális hatékonyságát kódolással és kódolás nélkül!nélkül!
Megoldás: Megoldás: Adott tehát: Adott tehát:
1. A csatorna jel-zaj viszonya: 1. A csatorna jel-zaj viszonya: SNRSNRdBdB=4.25dB=4.25dB2. Az adatblokkok mérete: 2. Az adatblokkok mérete: k=10bitk=10bit3. Az elérendő bithiba-valószínűség: 3. Az elérendő bithiba-valószínűség: ~2*10~2*10–5–5
A feladat, és megoldásaA feladat, és megoldásaTudjuk, hogy BPSK moduláció mellett a csatorna bithiba-valószínűsége:Tudjuk, hogy BPSK moduláció mellett a csatorna bithiba-valószínűsége:
A SNR=4.25 dB-t behelyettesítve a csatornánk bithiba-valószínűsége ~10A SNR=4.25 dB-t behelyettesítve a csatornánk bithiba-valószínűsége ~10–2–2. . Írjuk fel, hogy miként számoljuk ki a blokk-hibavalószínűséget k=10 bites Írjuk fel, hogy miként számoljuk ki a blokk-hibavalószínűséget k=10 bites blokkok esetében (hibajavító kódolás nélkül):blokkok esetében (hibajavító kódolás nélkül):
Behelyettesítve a blokk-hibavalószínűség kódolatlan esetben 10Behelyettesítve a blokk-hibavalószínűség kódolatlan esetben 10–1–1. . Ezt kell följavítani 2*10Ezt kell följavítani 2*10–5–5 -re! -re!
SNRerfc 5.0SNR21SNR2Q
kikik
iblokk i
kP )1(11
1
A feladat, és megoldásaA feladat, és megoldásaOldjuk meg a feladatot Reed-Solomon kódolással! Azt kell kiszámolnunk, Oldjuk meg a feladatot Reed-Solomon kódolással! Azt kell kiszámolnunk, hogy mennyire kell választani a kódszóhosszt, hogy a kódnak elegendő hogy mennyire kell választani a kódszóhosszt, hogy a kódnak elegendő legyen a hibajavító képessége ahhoz, hogy a kívánt javulást elérjük. legyen a hibajavító képessége ahhoz, hogy a kívánt javulást elérjük.
Következőképpen gondolkozunk: tudjuk, hogy a RS-kód MDS tulajdonságú, Következőképpen gondolkozunk: tudjuk, hogy a RS-kód MDS tulajdonságú, ami alapján egyértelmű kapcsolatot tudunk adni az üzenethossz, ami alapján egyértelmű kapcsolatot tudunk adni az üzenethossz, kódszóhossz és a hibajavítóképesség között: kódszóhossz és a hibajavítóképesség között:
Ha a kód t hibát tud javítani, akkor az n hosszú blokkok hibavalószínűsége:Ha a kód t hibát tud javítani, akkor az n hosszú blokkok hibavalószínűsége:
(Kódolt esetben egy üzenetblokk akkor hibás, ha t-nél több bit romlott el)(Kódolt esetben egy üzenetblokk akkor hibás, ha t-nél több bit romlott el)
inin
ti
kódoltblokk i
nP
1
1
22
11
min
min kntd
t
knd
A feladat, és megoldásaA feladat, és megoldásaTehát a megoldandó egyenlet n-re (k=10 esetén):Tehát a megoldandó egyenlet n-re (k=10 esetén):
amit nyilván csak próbálgatással tudunk megoldani. Ráadásul, mivel RS-amit nyilván csak próbálgatással tudunk megoldani. Ráadásul, mivel RS-kódokat használunk, n nem lehet akármilyen szám, csak q-1, ahol a kód kódokat használunk, n nem lehet akármilyen szám, csak q-1, ahol a kód GF(q) fölött értelmezett. GF(q) fölött értelmezett. n>k, így esetünkben GF(13), GF(17), GF(19), stb. jöhet számításba. A n>k, így esetünkben GF(13), GF(17), GF(19), stb. jöhet számításba. A hatékonyság érdekében persze a legkisebb q-t kell választani. hatékonyság érdekében persze a legkisebb q-t kell választani.
Némi számolás után kiadódik, hogy GF(17) , azaz n=16 választás esetén a Némi számolás után kiadódik, hogy GF(17) , azaz n=16 választás esetén a kódolt blokk-hibavalószínűség 1.985*10kódolt blokk-hibavalószínűség 1.985*10–5–5, ami teljesíti az előírt feltételt. , ami teljesíti az előírt feltételt.
5162216
4
10985.11011016
3,16
ii
i
kódoltblokk iPtn
inin
ni
kódoltblokk i
nP
1
12
10
A feladat, és megoldásaA feladat, és megoldása
Tehát a kezdeti feltételek teljesítéséhez egyTehát a kezdeti feltételek teljesítéséhez egy
RS(16,10)RS(16,10)kódra van szükségünk.kódra van szükségünk.
Ezen RS kód alkalmazása aEzen RS kód alkalmazása a
GF(17)GF(17)feletti aritmetika ismeretét igényli,feletti aritmetika ismeretét igényli,
amit a következőkben ismertetünk…amit a következőkben ismertetünk…
Reed-Solomon-kódok Reed-Solomon-kódok előállítása előállítása A (nem rövidített) Reed-Solomon kódok GF(q) ABC-fölötti, lineáris, A (nem rövidített) Reed-Solomon kódok GF(q) ABC-fölötti, lineáris, ciklikus kódok. Ráadásul MDS-tulajdonságúak, vagyis dciklikus kódok. Ráadásul MDS-tulajdonságúak, vagyis dminmin=n-k+1. =n-k+1.
Ilyen kódok generátor- ill. paritásellenőrző mátrixa:Ilyen kódok generátor- ill. paritásellenőrző mátrixa:
))(1()(2
)1(242
121
)1)(1()1(21
)1(242
12
1
1
1
;
1
1
1
1111
knnknkn
n
n
nkkk
n
n
HG
ahol ahol egy primitív elem GF(q)-ban. Mivel a GF(q) fölötti primitív elem egy primitív elem GF(q)-ban. Mivel a GF(q) fölötti primitív elem (q-1)-dik hatványa 1, ezért az (q-1)-dik hatványa 1, ezért az q-1q-1 hatványt már nem használhatjuk, hatványt már nem használhatjuk, hiszen egy ugyanolyan oszlopot eredményezne G-ben, mint amilyen hiszen egy ugyanolyan oszlopot eredményezne G-ben, mint amilyen már szerepelt (csupa 1-es), ezért n=q-1. már szerepelt (csupa 1-es), ezért n=q-1.
RS-kód GF(17) fölöttRS-kód GF(17) fölöttA digitális csatorna „feljavítási” feladata során meghatároztuk, hogy A digitális csatorna „feljavítási” feladata során meghatároztuk, hogy célunkat elérhetjük egy 3 hibát javító, C(16,10) paraméterű RS-kóddal. célunkat elérhetjük egy 3 hibát javító, C(16,10) paraméterű RS-kóddal. Most egy ilyen kódnak megmutatjuk, hogyan adható meg a Most egy ilyen kódnak megmutatjuk, hogyan adható meg a generátormátrixa. generátormátrixa.
Keresni kell egy primitív elemet (olyan testelem, amelynek az egymást Keresni kell egy primitív elemet (olyan testelem, amelynek az egymást követő hatványai kiadják az összes testelemet). A 3 egy primitív elem követő hatványai kiadják az összes testelemet). A 3 egy primitív elem GF(17)-ben. Az előbbi általános képletbe helyettesítve megkapható a GF(17)-ben. Az előbbi általános képletbe helyettesítve megkapható a generátor- ill. a paritásellenörző mátrix. (A generátormátrix második sorából generátor- ill. a paritásellenörző mátrix. (A generátormátrix második sorából kiolvashatók a primitív elem különböző hatványai).kiolvashatók a primitív elem különböző hatványai).
Megjegyzés: Vigyázzunk arra, hogy olyan esetekben, amikor Megjegyzés: Vigyázzunk arra, hogy olyan esetekben, amikor pp –ben p>q, –ben p>q, akkor nem akkor nem p mod qp mod q -t kell venni, hanem ( -t kell venni, hanem (pp)mod q-t kell kiszámolni, ami )mod q-t kell kiszámolni, ami p- p-szeri összeszorzását jelenti. Mivel szeri összeszorzását jelenti. Mivel q-1q-1=1, ezért ez megfelel annak, hogy a =1, ezért ez megfelel annak, hogy a kitevőt mod (q-1) kiszámoljuk, és ezzel hatványozunk. kitevőt mod (q-1) kiszámoljuk, és ezzel hatványozunk.
Behelyettesítve a generátormátrix és a paritásellenőrző mátrix általános Behelyettesítve a generátormátrix és a paritásellenőrző mátrix általános formulájába, megkapjuk a konkrét mátrixokat: formulájába, megkapjuk a konkrét mátrixokat:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 9 10 13 5 15 11 16 14 8 7 4 12 2 61 3 9 10 13 5 15 11 16 14 8 7 4 12 2 6 1 9 13 15 16 8 4 2 1 9 13 15 16 8 4 21 9 13 15 16 8 4 2 1 9 13 15 16 8 4 2 1 10 15 14 4 6 9 5 16 7 2 3 13 11 8 121 10 15 14 4 6 9 5 16 7 2 3 13 11 8 12 1 13 16 4 1 13 16 4 1 13 16 4 1 13 16 41 13 16 4 1 13 16 4 1 13 16 4 1 13 16 4 1 5 8 6 13 14 2 10 16 12 9 11 4 3 15 71 5 8 6 13 14 2 10 16 12 9 11 4 3 15 7 1 15 4 9 16 2 13 8 1 15 4 9 16 2 13 81 15 4 9 16 2 13 8 1 15 4 9 16 2 13 8 1 11 2 5 4 10 8 3 16 6 15 12 13 7 9 141 11 2 5 4 10 8 3 16 6 15 12 13 7 9 14 1 16 1 16 1 16 1 16 1 16 1 16 1 16 1 161 16 1 16 1 16 1 16 1 16 1 16 1 16 1 16 1 14 9 7 13 12 15 6 16 3 8 10 4 5 2 111 14 9 7 13 12 15 6 16 3 8 10 4 5 2 11
1 3 9 10 13 5 15 11 16 14 8 7 4 12 2 61 3 9 10 13 5 15 11 16 14 8 7 4 12 2 6 1 9 13 15 16 8 4 2 1 9 13 15 16 8 4 21 9 13 15 16 8 4 2 1 9 13 15 16 8 4 2 1 10 15 14 4 6 9 5 16 7 2 3 13 11 8 121 10 15 14 4 6 9 5 16 7 2 3 13 11 8 12 1 13 16 4 1 13 16 4 1 13 16 4 1 13 16 41 13 16 4 1 13 16 4 1 13 16 4 1 13 16 4 1 5 8 6 13 14 2 10 16 12 9 11 4 3 15 71 5 8 6 13 14 2 10 16 12 9 11 4 3 15 7 1 15 4 9 16 2 13 8 1 15 4 9 16 2 13 81 15 4 9 16 2 13 8 1 15 4 9 16 2 13 8
G =G =
H =H =
Kódoljuk most az u=[1,0,0,9] üzenetvektort! (Gyakorlásként leellenőrizhetjük, hogy a Kódoljuk most az u=[1,0,0,9] üzenetvektort! (Gyakorlásként leellenőrizhetjük, hogy a kapott c kódszót a paritásmátrixszal beszorozva tényleg 0 szindrómát kapunk-e.)kapott c kódszót a paritásmátrixszal beszorozva tényleg 0 szindrómát kapunk-e.)
]5010141123714362010105[uGc
A c kódszót átküldjük egy (memóriamentes) zajos csatornán, amely a kód A c kódszót átküldjük egy (memóriamentes) zajos csatornán, amely a kód szimbólumait adott valószínűséggel (a memóriamentesség miatt szimbólumait adott valószínűséggel (a memóriamentesség miatt egymástól függetlenül) elronthatja. A tévesztés jellegét a hibavektor egymástól függetlenül) elronthatja. A tévesztés jellegét a hibavektor mutatja meg: ahol a hibavektorban nem 0 elem áll, ott hiba volt, mutatja meg: ahol a hibavektorban nem 0 elem áll, ott hiba volt, méghozzá a hiba értékét a nem 0 szám mutatja meg. (A valóságban méghozzá a hiba értékét a nem 0 szám mutatja meg. (A valóságban persze a hibavektort nem ismerjük, most a példa kedvéért mi magunk persze a hibavektort nem ismerjük, most a példa kedvéért mi magunk konstruáljuk, „hasraütészserűen”, modellezve a csatorna véletlen konstruáljuk, „hasraütészserűen”, modellezve a csatorna véletlen „hibázási kedvét”). Legyen a hibavektor: „hibázási kedvét”). Legyen a hibavektor:
]000000000000160123[e
]5010141123714362161058[ e)(cv
RS-kód dekódolása RS-kód dekódolása Peterson-Zierler Peterson-Zierler algoritmussalalgoritmussal
Először általánosan áttekintjük a PGZ dekódolás lépéseit, utána pedig a Először általánosan áttekintjük a PGZ dekódolás lépéseit, utána pedig a konkrét vett vektort fogjuk dekódolni. konkrét vett vektort fogjuk dekódolni.
Feladatunk az, hogy az (n-k) dimenziós szindrómavektorból megkapjuk a Feladatunk az, hogy az (n-k) dimenziós szindrómavektorból megkapjuk a legkisebb súlyú, n-dimenziós e hibavektort (majd e-t kivonva a vett vektorból legkisebb súlyú, n-dimenziós e hibavektort (majd e-t kivonva a vett vektorból megkapjuk azt a kódot, amelyik a legközelebb áll a vett vektorhoz). megkapjuk azt a kódot, amelyik a legközelebb áll a vett vektorhoz). Nembináris esetben (márpedig az RS-kódnak csak nembináris esetben van Nembináris esetben (márpedig az RS-kódnak csak nembináris esetben van érteleme) nem elegendő a hibahelyek meghatározása, hanem a hiba értékére érteleme) nem elegendő a hibahelyek meghatározása, hanem a hiba értékére is szükségünk van. További ismeretlen maga a hibák száma. is szükségünk van. További ismeretlen maga a hibák száma.
Jelölések:Jelölések:
1,...,1,0 ,...,1 ,
1,...,1,0 ,,...,1 ,
nitjey
nitjx
j
j
ij
ij
t: a hibák száma, x-et hibahely lokátornak nevezzük, hiszen t: a hibák száma, x-et hibahely lokátornak nevezzük, hiszen szerinti szerinti logaritmusa a hibahely. y pedig a hiba értéke. (ilogaritmusa a hibahely. y pedig a hiba értéke. (i jj a j. hibahelyet jelenti, a j. hibahelyet jelenti,
amely most a kódszó i. pozíciójában van)amely most a kódszó i. pozíciójában van)
A Peterson-Zierler A Peterson-Zierler algoritmus lépéseialgoritmus lépései
121
132
21
ttt
t
t
t
sss
sss
sss
U
1. Számítsuk ki a szindrómát, s=[s1. Számítsuk ki a szindrómát, s=[s11,s,s22,…,s,…,sn-kn-k]]
2. Keressük meg azt a legnagyobb r-t, amelyre U2. Keressük meg azt a legnagyobb r-t, amelyre Ur r invertálható. Ekkor t=r. invertálható. Ekkor t=r.
tttt
t
tt
sss
LL
221
1
,...,,
,..,
σ
λ
σλU3. Oldjuk meg az 3. Oldjuk meg az
egyenletrendszert. Legyen L(x)=1+Legyenletrendszert. Legyen L(x)=1+L11x+…+Lx+…+Lttxxtt az ún. hibahelypolinom. az ún. hibahelypolinom.
4. Keressük meg L(x) gyökeinek az inverzeit, ezek lesznek az x4. Keressük meg L(x) gyökeinek az inverzeit, ezek lesznek az x jj hibalokátorok. hibalokátorok.
5. Számítsuk ki a hibahelyeket a lokátorokból: 5. Számítsuk ki a hibahelyeket a lokátorokból:
tt
tt
tt
tt
t
t
t
Tt
Ttt
ss
yy
xxx
xxx
xxx
,...,
,...,
1
1
21
222
21
21
s
y
X
syX
6. Végül a hiba értékeket megint egy egyenletrendszer megoldással 6. Végül a hiba értékeket megint egy egyenletrendszer megoldással kaphatjuk meg: kaphatjuk meg:
jj xi log
Az yAz ytt vektorban pedig megkaptuk a hibaértékeket. Így az e hibavektort vektorban pedig megkaptuk a hibaértékeket. Így az e hibavektort
megszerkesztettük. Ezt kivonva a vett vektorból kapjuk a döntött kódszót. megszerkesztettük. Ezt kivonva a vett vektorból kapjuk a döntött kódszót.
Példa a dekódolásraPélda a dekódolásraFolytassuk az előbbi példát, a GF(17) fölötti RS-kód esetét. A vett vektort Folytassuk az előbbi példát, a GF(17) fölötti RS-kód esetét. A vett vektort magunk konstruáltuk, önkényesen megadva egy hibavektort, hogy a magunk konstruáltuk, önkényesen megadva egy hibavektort, hogy a dekódolás eredménye ellenőrizhető legyen. Ahogy korábban láttuk:dekódolás eredménye ellenőrizhető legyen. Ahogy korábban láttuk:
1. Először a szindrómát kell kiszámolni:1. Először a szindrómát kell kiszámolni:
46271112 THv s
]5010141123714362161058[v
Ebből rögtön látszik, hogy volt hiba az átvitelben, hiszen ellenkező esetben a Ebből rögtön látszik, hogy volt hiba az átvitelben, hiszen ellenkező esetben a szindróma a zérus vektor lenne. szindróma a zérus vektor lenne.
2. A kódot úgy konstruáltuk, hogy 3 hiba javítására legyen alkalmas. Azután, 2. A kódot úgy konstruáltuk, hogy 3 hiba javítására legyen alkalmas. Azután, hogy eldöntöttük, hogy volt hiba, először a hibák számát kell meghatározni. hogy eldöntöttük, hogy volt hiba, először a hibák számát kell meghatározni. Ehhez meg kell keressük azt a legnagyobb r-t, melyre UEhhez meg kell keressük azt a legnagyobb r-t, melyre Urr determinánsa nem determinánsa nem
0:0:
1)det(
627
2711
71112
14)det( 711
1112
12
33
22
1
UU
UU
U
Mivel UMivel U33 determinánsa sem 0, ezért t=3. (Megjegyezzük, hogy U determinánsa sem 0, ezért t=3. (Megjegyezzük, hogy U44
kiszámítására nincs szükség – sőt nincs is elég szindrómakomponensünk a kiszámítására nincs szükség – sőt nincs is elég szindrómakomponensünk a konstrukcióhoz, tehát elő sem lehet állítani – hiszen a kód úgyis csak 3 hibát konstrukcióhoz, tehát elő sem lehet állítani – hiszen a kód úgyis csak 3 hibát képes javítani. Ennyi hiba dekódolásának van csak értelme (több hiba képes javítani. Ennyi hiba dekódolásának van csak értelme (több hiba esetén a Hamming-távolság minimalizálásán alapuló dekódolás úgyis rossz esetén a Hamming-távolság minimalizálásán alapuló dekódolás úgyis rossz eredményt adna). eredményt adna).
3. Meg kell tehát oldanunk az alábbi egyenletrendszert: 3. Meg kell tehát oldanunk az alábbi egyenletrendszert:
13
11
15
627
2711
71112
3
2
1
33 σλU
Megjegyzés: az eredményvektor elős komponense -st+1=-s4= -2 mod 17=15. Megjegyzés: az eredményvektor elős komponense -st+1=-s4= -2 mod 17=15. segyenletrendszert. A megoldásnál ugyanúgy járunk el, ahogy azt a valós segyenletrendszert. A megoldásnál ugyanúgy járunk el, ahogy azt a valós számoknál megszoktuk, azonban minden műveletet mod17 értelmezünk. (pl. a számoknál megszoktuk, azonban minden műveletet mod17 értelmezünk. (pl. a „mindkét oldalból kivonunk 2-t” helyett a „mindkét oldalhoz hozzáadjuk a 2 „mindkét oldalból kivonunk 2-t” helyett a „mindkét oldalhoz hozzáadjuk a 2 additív inverzét, azaz 15-öt” alkalmazzuk, stb.additív inverzét, azaz 15-öt” alkalmazzuk, stb.
Az eredményvektor: Az eredményvektor:
394λ
32 4931)( xxxxL 4. Most keressük meg az L(x) polinom gyökeit. (Itt be kell a polinomba 4. Most keressük meg az L(x) polinom gyökeit. (Itt be kell a polinomba helyettesíteni minden GF(17) beli elemet, véges test fölötti polinomokra nincs helyettesíteni minden GF(17) beli elemet, véges test fölötti polinomokra nincs jobb megoldás. A gyökök: 1,6,12, hiszen L(1)=L(3)=L(6)=0. jobb megoldás. A gyökök: 1,6,12, hiszen L(1)=L(3)=L(6)=0.
A gyökök inverzei lesznek a hibahely lokátorok (xA gyökök inverzei lesznek a hibahely lokátorok (x ijij). Ezek: ). Ezek:
3log
1log
0log
333
232
131
xi
xi
xi
Az eredményvektorból megalkotjuk a hibahelypolinomot:Az eredményvektorból megalkotjuk a hibahelypolinomot:
10 ;3 ;1 321 xxx
A hibahelyeket a lokátorok logaritmálásával kapjuk:A hibahelyeket a lokátorok logaritmálásával kapjuk:
Vagyis az 1., 2., és 4., pozícióban van hiba. Vagyis az 1., 2., és 4., pozícióban van hiba.
5. Hátra van még a hibaértékek meghatározása:5. Hátra van még a hibaértékek meghatározása:
7
11
12
14101
1591
1031
3
2
1
y
y
y
Tt
Ttt syX
A részletek mellőzésével a megoldás:A részletek mellőzésével a megoldás:
16123y
6. És végül a döntés:6. És végül a döntés:
]5010141123714362010105[ˆ
]000000000000160123[
]5010141123714362161058[
e-vc
e
v
Visszalapozva látható, hogy sikerült kijavítani mindhárom hibát, és Visszalapozva látható, hogy sikerült kijavítani mindhárom hibát, és visszakaptuk ugyanazt a kódszót a dekódolás során, mint amit küldtek. visszakaptuk ugyanazt a kódszót a dekódolás során, mint amit küldtek.
Mivel a kódunk nem szisztematikus, ezért az üzenetvektor megfejtése a Mivel a kódunk nem szisztematikus, ezért az üzenetvektor megfejtése a dekódolt kódszóból nem egyszerű, nem lehet levágással megkapni. A dekódolt kódszóból nem egyszerű, nem lehet levágással megkapni. A megoldást (nagyméretű) táblázat jelentheti, vagy a véges test feletti Fourier megoldást (nagyméretű) táblázat jelentheti, vagy a véges test feletti Fourier transzformáció bevezetése oldja meg. transzformáció bevezetése oldja meg.
A spektrális hatékonyságA spektrális hatékonyság
Nézzük meg, hogy az RS(16,10) kódolással kapott blokk-hibavalószínűség, Nézzük meg, hogy az RS(16,10) kódolással kapott blokk-hibavalószínűség, milyen ekvivalens (kódolatlan esetben) bit-hibavalószínűséget eredményez. milyen ekvivalens (kódolatlan esetben) bit-hibavalószínűséget eredményez. Azaz feltesszük, hogy kódolatlan esetbenAzaz feltesszük, hogy kódolatlan esetben
így tehát kaptunk egy ekvivalens bit-hibavalószínűséget. Összehasonlítva a így tehát kaptunk egy ekvivalens bit-hibavalószínűséget. Összehasonlítva a bit-hibavalószínűséget:bit-hibavalószínűséget:
megjegyzés:megjegyzés:
Kiszámolható, hogy kódolással ugyanazt értük el, mintha kódolás nélkül a Kiszámolható, hogy kódolással ugyanazt értük el, mintha kódolás nélkül a rádiócsatorna jel-zaj viszonyát 4.25dB-ről rádiócsatorna jel-zaj viszonyát 4.25dB-ről 10.27dB10.27dB-re javítottuk volna fel!-re javítottuk volna fel!
6101010
1
5 10985.1)1(1110
10985.1
ekvekv
iekv
iekv
i i
62 10985.110 ekv
A spektrális hatékonyságA spektrális hatékonyságHasonlítsuk össze a spektrális hatékonyságot kódolt, illetve kódolatlan Hasonlítsuk össze a spektrális hatékonyságot kódolt, illetve kódolatlan esetben. Ehhez, az SE=C/B deffiníciót alkalmazva, szükségünk lesz a esetben. Ehhez, az SE=C/B deffiníciót alkalmazva, szükségünk lesz a csatornakapacitásra (C)csatornakapacitásra (C)
és a sávszélességre (B), ami BPSK moduláció esetén közelítőlegés a sávszélességre (B), ami BPSK moduláció esetén közelítőleg
ahol Rbit a bitsebességet jelöli.ahol Rbit a bitsebességet jelöli.
Ezen képletekbe behelyettesítve a bit-hibavalószínűségeket:Ezen képletekbe behelyettesítve a bit-hibavalószínűségeket:
1log
1
1log11 22
C
bitRB 5.1
Hzs
bit
B
CSE
RB
RC
Hzs
bit
B
CSE
RB
RC
ekvekv
bit
bitekv
bit
bit
667.05.1
99996.0
354.05.1
531.0
Hibajavítás BCH-kódokkalHibajavítás BCH-kódokkal
Az alábbiakban azt fogjuk megvizsgálni, hogy milyen bit-Az alábbiakban azt fogjuk megvizsgálni, hogy milyen bit-hibavalószínűség javulás érhető el csatornánk esetében hibavalószínűség javulás érhető el csatornánk esetében t=2 hibát javító n=31 szóhosszúságú bináris BCH-kóddal! t=2 hibát javító n=31 szóhosszúságú bináris BCH-kóddal! Adjuk meg a kód generátorpolinomját! Adjuk meg a kód generátorpolinomját!
Megjegyzés:Megjegyzés: Az itt szereplő tárgyalásmód – a gyakorlati szempontból legfontosabb – Az itt szereplő tárgyalásmód – a gyakorlati szempontból legfontosabb – binárisbináris BCH-kódokra vonatkozik. A teljesen általános tárgyalás a tankönyvben található BCH-kódokra vonatkozik. A teljesen általános tárgyalás a tankönyvben található meg. meg.
Mi is a BCH-kód: definícióMi is a BCH-kód: definícióA GF(q) fölötti A GF(q) fölötti n=qn=qmm-1-1 hosszúságú kódot hosszúságú kódot tt hibát javító hibát javító
BCH kódnak nevezzük, ha a BCH kódnak nevezzük, ha a g(x)g(x) generátorpolinomjának (melyet most a GF(generátorpolinomjának (melyet most a GF(qqmm) testben ) testben értelmezünk) a gyökei azértelmezünk) a gyökei az
testelemek. testelemek.
tiqGF mi 2,...,2,1),(
A generátorpolinom A generátorpolinom megalkotásamegalkotásaElső ránézésre az előbbi definíció alapján nagyon Első ránézésre az előbbi definíció alapján nagyon egyszerűnek tűnhet a BCH kódok generátorpolinomjának egyszerűnek tűnhet a BCH kódok generátorpolinomjának megalkotása: keresni kell egy (primitív) elemet GF(qmegalkotása: keresni kell egy (primitív) elemet GF(qmm)-ben, )-ben, ennek elő kell állítani az i=1,2,…,2t hatványait, majd aennek elő kell állítani az i=1,2,…,2t hatványait, majd a
t
i
ixxg2
1
)()(
képlet alapján adódik a generátorpolinom. képlet alapján adódik a generátorpolinom.
A nehézséget az okozza, hogy A nehézséget az okozza, hogy olyan g(x) polinomot kell olyan g(x) polinomot kell kapnunkkapnunk a konstrukció során, a konstrukció során, amelynek együtthatói amelynek együtthatói GF(q)-ban is értelmezhetőekGF(q)-ban is értelmezhetőek, hiszen a kódunk GF(q) , hiszen a kódunk GF(q) fölötti!fölötti!
Ezt úgy érhetjük el, hogy a szükéséges gyökökön túl (esetleg) más gyököket is Ezt úgy érhetjük el, hogy a szükéséges gyökökön túl (esetleg) más gyököket is fölhasználunk a konstrukció során úgy, hogy az eredményül kapott g(x) fölhasználunk a konstrukció során úgy, hogy az eredményül kapott g(x) polinom együtthatói GF(q)-ban is értelmes értékek legyenek. polinom együtthatói GF(q)-ban is értelmes értékek legyenek.
Ennek technikája a következőEnnek technikája a következő::
Föl kell bontani a GF(qFöl kell bontani a GF(qmm) testelemeket ún. konjugált halmazokra, ami azt jelenti, ) testelemeket ún. konjugált halmazokra, ami azt jelenti, hogy egy halmzaba a hogy egy halmzaba a bb testelemen kívül minden olyan elem beletartozik, testelemen kívül minden olyan elem beletartozik, amelyre igaz, hogy előáll aamelyre igaz, hogy előáll a
)( jqb
alakban úgy, hogy alakban úgy, hogy
Megmutatható, hogy a konjugált halmazban levő gyökökből alkotott polinom Megmutatható, hogy a konjugált halmazban levő gyökökből alkotott polinom együtthatói értelmezhetőek a GF(q) testben is.együtthatói értelmezhetőek a GF(q) testben is.
Tehát a g(x) generátorpolinomot úgy konstruáljuk, hogy a Tehát a g(x) generátorpolinomot úgy konstruáljuk, hogy a szükséges szükséges ii,…,,…,2t2t gyökökön túl minden olyan gyököt is gyökökön túl minden olyan gyököt is beleveszünk a polinomba, amely az előbb felsoroltakkal beleveszünk a polinomba, amely az előbb felsoroltakkal közös konjugált halmazokban van benne. közös konjugált halmazokban van benne.
bbjjq
j)(
max min:
A generátorpolinom A generátorpolinom meghatározásameghatározása
Először is szükségünk lesz a GF(32) szorzótáblájára, Először is szükségünk lesz a GF(32) szorzótáblájára, hiszen primitív elemet kell keresnünk, majd később a hiszen primitív elemet kell keresnünk, majd később a gyöktényezős alakot össze kell szoroznunk. gyöktényezős alakot össze kell szoroznunk.
GF(32) szorzótáblájaGF(32) szorzótáblájaA testelemeket a 0-31 decimális számokkal ábrázoljuk, A testelemeket a 0-31 decimális számokkal ábrázoljuk, a szorzások elvégzéséhez viszont a bináris alakot, a szorzások elvégzéséhez viszont a bináris alakot, mint polinomot értelmezzük a következő (önkényes) mint polinomot értelmezzük a következő (önkényes) összerendelés alapján:összerendelés alapján:
decimális ábr.decimális ábr. bináris ábr. bináris ábr. polinom ábr.polinom ábr.
00 0000000000 00
11 0000100001 11
22 0001000010 xx
……
3131 1111111111 xx44++xx33+x+x22+x+1+x+1
A primitív polinom: xA primitív polinom: x55+x+x22+1+1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 5 7 1 3 13 15 9 11 21 23 17 19 29 31 25 27
3 6 5 12 15 10 9 24 27 30 29 20 23 18 17 21 22 19 16 25 26 31 28 13 14 11 8 1 2 7 4
4 8 12 16 20 24 28 5 1 13 9 21 17 29 25 10 14 2 6 26 30 18 22 15 11 7 3 31 27 23 19
5 10 15 20 17 30 27 13 8 7 2 25 28 19 22 26 31 16 21 14 11 4 1 23 18 29 24 3 6 9 12
6 12 10 24 30 20 18 21 19 25 31 13 11 1 7 15 9 3 5 23 17 27 29 26 28 22 16 2 4 14 8
7 14 9 28 27 18 21 29 26 19 20 1 6 15 8 31 24 17 22 3 4 13 10 2 5 12 11 30 25 16 23
8 16 24 5 13 21 29 10 2 26 18 15 7 31 23 20 28 4 12 17 25 1 9 30 22 14 6 27 19 11 3
9 18 27 1 8 19 26 2 11 16 25 3 10 17 24 4 13 22 31 5 12 23 30 6 15 20 29 7 14 21 28
10 20 30 13 7 25 19 26 16 14 4 23 29 3 9 17 27 5 15 28 22 8 2 11 1 31 21 6 12 18 24
11 22 29 9 2 31 20 18 25 4 15 27 16 13 6 1 10 23 28 8 3 30 21 19 24 5 14 26 17 12 7
12 24 20 21 25 13 1 15 3 23 27 26 22 2 14 30 18 6 10 11 7 19 31 17 29 9 5 4 8 28 16
13 26 23 17 28 11 6 7 10 29 16 22 27 12 1 14 3 20 25 31 18 5 8 9 4 19 30 24 21 2 15
14 28 18 29 19 1 15 31 17 3 13 2 12 30 16 27 21 7 9 6 8 26 20 4 10 24 22 25 23 5 11
15 30 17 25 22 7 8 23 24 9 6 14 1 16 31 11 4 21 26 18 29 12 3 28 19 2 13 5 10 27 20
16 5 21 10 26 15 31 20 4 17 1 30 14 27 11 13 29 8 24 7 23 2 18 25 9 28 12 19 3 22 6
17 7 22 14 31 9 24 28 13 27 10 18 3 21 4 29 12 26 11 19 2 20 5 1 16 6 23 15 30 8 25
18 1 19 2 16 3 17 4 22 5 23 6 20 7 21 8 26 9 27 10 24 11 25 12 30 13 31 14 28 15 29
19 3 16 6 21 5 22 12 31 15 28 10 25 9 26 24 11 27 8 30 13 29 14 20 7 23 4 18 1 17 2
20 13 25 26 14 23 3 17 5 28 8 11 31 6 18 7 19 10 30 29 9 16 4 22 2 27 15 12 24 1 21
21 15 26 30 11 17 4 25 12 22 3 7 18 8 29 23 2 24 13 9 28 6 19 14 27 1 20 16 5 31 10
22 9 31 18 4 27 13 1 23 8 30 19 5 26 12 2 20 11 29 16 6 25 15 3 21 10 28 17 7 24 14
23 11 28 22 1 29 10 9 30 2 21 31 8 20 3 18 5 25 14 4 19 15 24 27 12 16 7 13 26 6 17
24 21 13 15 23 26 2 30 6 11 19 17 9 4 28 25 1 12 20 22 14 3 27 7 31 18 10 8 16 29 5
25 23 14 11 18 28 5 22 15 1 24 29 4 10 19 9 16 30 7 2 27 21 12 31 6 8 17 20 13 3 26
26 17 11 7 29 22 12 14 20 31 5 9 19 24 2 28 6 13 23 27 1 10 16 18 8 3 25 21 15 4 30
27 19 8 3 24 16 11 6 29 21 14 5 30 22 13 12 23 31 4 15 20 28 7 10 17 25 2 9 18 26 1
28 29 1 31 3 2 30 27 7 6 26 4 24 25 5 19 15 14 18 12 16 17 13 8 20 21 9 23 11 10 22
29 31 2 27 6 4 25 19 14 12 17 8 21 23 10 3 30 28 1 24 5 7 26 16 13 15 18 11 22 20 9
30 25 7 23 9 14 16 11 21 18 12 28 2 5 27 22 8 15 17 1 31 24 6 29 3 4 26 10 20 19 13
31 27 4 19 12 8 23 3 28 24 7 16 15 11 20 6 25 29 2 21 10 14 17 5 26 30 1 22 9 13 18
Ezután keresni kell egy primitív elemet GF(32)-ben. Ezután keresni kell egy primitív elemet GF(32)-ben.
A továbbiakban a 2 primitív elemet használjuk !!!A továbbiakban a 2 primitív elemet használjuk !!!
Megjegyzés: a hatványok a szorzótáblából gyorsan Megjegyzés: a hatványok a szorzótáblából gyorsan kiolvashatók: kiolvashatók: 22==**; ; nn==n-1n-1** rekurzió segítségével. rekurzió segítségével.
x 1 2 3 4 5 6 7 8 9 10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
30
x 2 4 8 16
5 10
20
13
26
17
7 14
28
29
31
27
19
3 6 12
24
21
15
30
25
23
11
22
9 18
1
Most a konjugált halmazok megkeresése a feladat: Most a konjugált halmazok megkeresése a feladat:
A korábban megadott szabály szerint a konjugált halmazokat úgy kapjuk meg, A korábban megadott szabály szerint a konjugált halmazokat úgy kapjuk meg, hogy kiválasztva egy b testelemet elkezdjük a 2., 4., stb. hatványaira emelni hogy kiválasztva egy b testelemet elkezdjük a 2., 4., stb. hatványaira emelni (bináris BCH esetében) és ezt addig folytatjuk, míg vissza nem kapjuk a (bináris BCH esetében) és ezt addig folytatjuk, míg vissza nem kapjuk a testelemet. (Esetünkben ez a 32. hatványnál mindenképpen bekövetkezik). testelemet. (Esetünkben ez a 32. hatványnál mindenképpen bekövetkezik).
konjugált halmaz jelölés
b b2 b4 b8 b16 b32
A1 1 (1)
A2 2 4 16 13 27 (2)
A3 3 5 17 12 26 (3)
A4 6 20 29 22 25 (6)
A5 7 21 28 23 24 (7)
A6 8 10 14 30 19 (8)
A7 9 11 15 31 18 (9)
A generátorpolinom A generátorpolinom összeállítása:összeállítása:Tudjuk, hogy a generátorpolinomnak gyöke kell legyen Tudjuk, hogy a generátorpolinomnak gyöke kell legyen az az 11, …,, …,2t2t azaz azaz ……44 GF(32) testelemek, azaz GF(32) testelemek, azaz esetünkben a 2, 4, 8, 16. esetünkben a 2, 4, 8, 16.
Ahhoz, hogy a gyöktényezős alak összeszorzása után Ahhoz, hogy a gyöktényezős alak összeszorzása után olyan polinomot kapjunk, ami binárisan is értelmezhető olyan polinomot kapjunk, ami binárisan is értelmezhető (azaz együtthatói 0 vagy 1 értékűek), a fentieken kívül (azaz együtthatói 0 vagy 1 értékűek), a fentieken kívül minden olyan gyököt be kell vennünk a minden olyan gyököt be kell vennünk a generátorpolinomba, amelyek a 2,4,8,16 elemekkel generátorpolinomba, amelyek a 2,4,8,16 elemekkel közös konjugált halmazban vannak, azaz az A2 és A6 közös konjugált halmazban vannak, azaz az A2 és A6 halmazokban szereplő összes testelemet. halmazokban szereplő összes testelemet.
Már most látszik, hogy a g(x) n-k-ad fokú polinom most Már most látszik, hogy a g(x) n-k-ad fokú polinom most 10-ed fokú lesz, így a kapott kód (31,21) paraméterű 10-ed fokú lesz, így a kapott kód (31,21) paraméterű lesz. lesz.
A gyöktényezős tagok összeszorzása: A gyöktényezős tagok összeszorzása:
1
11
2129326222286)42()42(
19301410827131642
19301410827131642)(
3568910
234525
232232
xxxxxx
xxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxxxg
Látható, hogy a g(x) első 5 és második 5 tagja (első sor) Látható, hogy a g(x) első 5 és második 5 tagja (első sor) egy-egy konjugált-halmazhoz tartozó összes testelemből egy-egy konjugált-halmazhoz tartozó összes testelemből áll, ezért ezek összeszorzásakor (4. sor) már csak 0 ill. 1 áll, ezért ezek összeszorzásakor (4. sor) már csak 0 ill. 1 együtthatójú polinomok szerepelnek. együtthatójú polinomok szerepelnek. Vigyázzunk, hogy a szorzások (és összeadások) mind Vigyázzunk, hogy a szorzások (és összeadások) mind GF(32) fölött értelmezendők !!! GF(32) fölött értelmezendők !!!
BCH-kódok generálásaBCH-kódok generálásaA kód generálás történhet:A kód generálás történhet:
nem szisztematiukusan a c(x)=u(x)g(x) szabály nem szisztematiukusan a c(x)=u(x)g(x) szabály használatával. Pl. legyen az üzenetpolinom u(x)=1+xhasználatával. Pl. legyen az üzenetpolinom u(x)=1+x66. . Ekkor Ekkor
c(x)=(1+xc(x)=(1+x66)(x)(x1010+x+x99+x+x88+x+x6+6+xx55+x+x33+1)= +1)=
=x=x1616+x+x1515+x+x1414+x+x1212+ x+ x1111+ x+ x10+10+xx88+x+x77+x+x66+x+x55+x+x33+ 1 + 1
Vigyázat! u(x), c(x) bináris polinomok!!! (g(x)-et eredetileg Vigyázat! u(x), c(x) bináris polinomok!!! (g(x)-et eredetileg GF(32) fölött értelmeztük, itt persze g(x)-et is binárisként GF(32) fölött értelmeztük, itt persze g(x)-et is binárisként értelmezzük)értelmezzük)
vagy nem szisztematikusan a jegyzet 220. oldalán vagy nem szisztematikusan a jegyzet 220. oldalán található szabály szerint. található szabály szerint.
BCH-kódok dekódolásaBCH-kódok dekódolása
A BCH-kódok dekódolására léteznek a PGZ algoritmushoz A BCH-kódok dekódolására léteznek a PGZ algoritmushoz hasonló eljárások, ebben a témában viszont még mindig hasonló eljárások, ebben a témában viszont még mindig nagyon élénk a kutatás, mert nem létezik minden nagyon élénk a kutatás, mert nem létezik minden szempontból kifogástalan algoritmus. Ezek ismertetése szempontból kifogástalan algoritmus. Ezek ismertetése meghaladja a Kódelmélet tárgy kereteit. meghaladja a Kódelmélet tárgy kereteit.
Feladatunk megoldása Feladatunk megoldása BCH kód esetébenBCH kód esetébenNézzük meg miként alakul a spektrális hatékonyság a BCH kódolás esetében.Nézzük meg miként alakul a spektrális hatékonyság a BCH kódolás esetében.
Az előzőekben meghatározott BCH(31,21) kód t=2 hibát tud javítani. Az előzőekben meghatározott BCH(31,21) kód t=2 hibát tud javítani.
A már ismert szükséges képlet:A már ismert szükséges képlet:
Az előzőekhez hasonlóan, most is megkeressük azt a hibajavitás nélküli Az előzőekhez hasonlóan, most is megkeressük azt a hibajavitás nélküli „ekvivalens” csatornát, amelyik ugyanazt a blokkhibavalószínűséget „ekvivalens” csatornát, amelyik ugyanazt a blokkhibavalószínűséget eredményezné:eredményezné:
összevetve a két bit-hibavalószínűséget:összevetve a két bit-hibavalószínűséget:
33131
31
1065.399.001.031
1
ii
i
inin
ti
kódoltblokk ii
nP
4212121
1
3 1074.1)1(1121
1065.3
ekvekv
iekv
iekv
i i
42 1074.110 ekv
Ezen képletekbe behelyettesítve a bit-hibavalószínűségeket látható, hogy a Ezen képletekbe behelyettesítve a bit-hibavalószínűségeket látható, hogy a kódolással közel kétszeresére növeltük a spektrális hatékonyságot:kódolással közel kétszeresére növeltük a spektrális hatékonyságot:
Hzs
bit
B
CSE
RB
RC
Hzs
bit
B
CSE
RB
RC
ekvekv
bit
bitekv
bit
bit
665.05.1
998.0
354.05.1
531.0
Feladatunk megoldása Feladatunk megoldása BCH kód esetébenBCH kód esetében
RS(16,10) és BCH(31,21) RS(16,10) és BCH(31,21) kódok összevetésekódok összevetése
0.665 bit/sHz0.665 bit/sHz0.667 bit/sHz0.667 bit/sHzspektrális spektrális hatékonysághatékonyság
0.9980.9980.999960.99996feljavított feljavított csatornakapacitáscsatornakapacitás
1.74 *101.74 *10-4-41.985 *101.985 *10-6-6ekvivalens bit-ekvivalens bit-hibavalószínűséghibavalószínűség
3.65 *103.65 *10-3-31.985*101.985*10-5-5feljavított blokk-feljavított blokk-hibavalószínűséghibavalószínűség
47.6%47.6%60%60%blokkhossz növ. blokkhossz növ. (n-k)/k(n-k)/k
BCH(31,21)BCH(31,21)RS(16,10)RS(16,10)
RS és BCH kódok RS és BCH kódok összevetéseösszevetése
tulajdonságtulajdonság RSRS BCHBCH
MDSMDS ++ ––
kód ABCkód ABC GF(q) GF(q)
(q prímhatvány)(q prímhatvány)
gyakorlatban q>>2gyakorlatban q>>2
GF(q) GF(q)
(q prímhatvány)(q prímhatvány)
általában q=2általában q=2
nn q-1q-1 qqmm-1-1
(m tetszőleges)(m tetszőleges)
kk tetszőleges, tervezhető, dmin tetszőleges, tervezhető, dmin egyből megmondhatóegyből megmondható
a tervezési paraméter: ta tervezési paraméter: t
k ebből adódik, előre nem k ebből adódik, előre nem láthatólátható
szisztematikus szisztematikus generálásgenerálás
Fourier-transzformáció Fourier-transzformáció segítségévelsegítségével
bináris esetbenbináris esetben
u(x)xu(x)xn-kn-k + (u(x)x + (u(x)xn-kn-k) mod g(x)) mod g(x)