23_Lohkokoodit

Download Report

Transcript 23_Lohkokoodit

ERILAISIA LOHKOKOODAUSMENETELMIÄ
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
1 (36)
Hamming-etäisyys & Minimietäisyys

Hamming-etäisyys: di j = w(si  sj), Minimietäisyys: dm = min(dij)  i,j.

(n,k)-koodi korjaa t virhettä, jossa t = dm–1/2, eli dm = 2t + 1.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
2 (36)
Hamming-etäisyys & Minimietäisyys

Nähdään ongelma: jos n ja k suuria dekoodaustaulukosta tulee suuri
eikä taulukkohakuun perustuva etäisyyksien laskenta ja vertailu ole
järkevää.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
3 (36)
VIRHEEN ILMAISEVAT
PARITEETINTARKISTUSKOODIT
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
4 (36)
Pariteetintarkistuskoodit virheen ilmaisemiseen

Yksinkertaisin virheenilmaisukoodi – mutta ei korjaamiseen
kykenevä – toteutetaan pariteetintarkistusbitillä. Saadaan (k+1,k)lohkokoodi, jonka koodisuhde on k/(k+1).

Kaikkien n = k+1 -pituisten sanojen Hamming-painoksi – siis
ykkösten lukumääräksi – sovitaan joko parillinen tai pariton luku.

Sanan paino lasketaan modulo-2 -summalla (exclusive-or -portilla):
0  0 = 0, 0  1 = 1, 1  0 = 1, 1  1 = 0). Jos vastaanotettu sana
sisältää parillisen määrän virheitä, niin niitä ei pystytä ilmaisemaan.

Jos virheiden määrä on pariton, dekooderi havaitsee parittoman
määrän virheitä (tn. on kuitenkin tapahtunut vain yksi virhe).
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
5 (36)
VIRHEEN ILMAISEVAT JA KORJAAVAT
TOISTOKOODIT
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
6 (36)
Toistokoodit

Yksinkertaisin mahdollinen virheenkorjaava koodi saadaan
toistamalla kutakin informaatiosymbolia n kertaa.

Informaatiosymbolia kohden lähetetään n–1
pariteetintarkistussymbolia, joten koodisuhde = 1/n.

(n,1)-lohkokoodilla on siis käytössä vain kaksi sanaa: 00...0, tai
11...1, joista tehdään dekoodauspäätös {0}, jos enemmistö
vastaanotetuista biteistä on nollia, ja {1}, jos enemmistö on ykkösiä.

Toistokoodaus vastaa efektiivisesti modulaation kannalta
informaatiobitin energian (z = Eb/N0:n) kasvattamista, jolloin PE
pienenee (informaation siirtonopeus vastaavasti pienenee).

Toistokoodi on itse asiassa tehokkain koodausmenetelmä PE:n
minimoimismielessä (tiedonsiirtonopeuden kustannuksella), kun n
lähenee ääretöntä (vie äärettömän kauan aikaa).

Sillä voidaan siis toteuttaa Shannonin 2. teoreeman lupaus. Toiston
haittapuoli on pieni koodisuhde 1/n (vastaa siis hyvin suurta
redundanssin määrää).
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
7 (36)
Toistokoodit

1/3 -toistodekoodauksessa käytetään kriteerinä Hamming-etäisyyden
minimiarvoa.

Boolen-logiikalla toteutettuna se vastaa 3 -tuloisen
enemmistölogiikkaportin (majority logic gate) lähtöä.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
8 (36)
Esimerkki 1 (S)
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
9 (36)
Toistokoodin suorituskyky koodisuhteen 1/n funktiona (S)
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
10 (36)
YHDEN VIRHEEN KORJAAVAT LINEAARISET
PARITEETINTARKISTUSKOODIT
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
11 (36)
Yhden virheen korjaavat pariteetintarkistuskoodit

Pariteetintarkistuskoodeilla on suuri informaationopeus (k/n), mutta
olematon korjauskyky. Toistokoodeilla on pieni 1/n, mutta hyvä
virheenkorjauskyky. Hyvillä koodeilla em. ominaisuudet yhdistyvät
kompromissina, koska niitä ei voida saavuttaa samanaikaisesti.

Tarkastelemme nyt pariteetintarkistuskoodeja, joissa yhdistyy
kohtuullinen informaationopeus ja yhden virheen korjauskyky (t = 1).

Koodisanassa a1a2a3...akc1c2...cr, ai:t informaatiosymboleita ja cj:t
pariteetintarkistussymboleita. Koodisanan pituus n = k + r.

Ongelmana on löytää sopiva r:n arvo, jotta saavutetaan hyvä
korjauskyky t = dm–1/2 kohtuullisen suurella koodisuhteella k/n.

Sallittuja koodisanoja on 2k kpl ja virheellisesti vastaanotettuja
sanoja on teoriassa 2n – 2k kpl.


Shannon osoitti, että kun n  , valitsemalla satunnaisesti 2n suuruisesta avaruudesta n-pituinen sana kullekkin 2k informaatiosanalle, saadaan useimmiten dm -etäisyydeltään hyvä koodi (di,j~n/2).
Dekoodaus onnistuu vain ko. sanaa laillisten sanojen taulukkoon
vertaamalla. Iso taulukko  haku & dij:n lasku aikaa vievää.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
12 (36)
Yhden virheen korjaavat pariteetintarkistuskoodit

Shannonin tarinan opetus: Jopa aivan täysin satunnaisesti valitut
koodit ovat ihan hyviä PE –suorituskyvyn kannalta, mutta
perusongelmana kuitenkin on, että satunnaiselta koodilta puuttuu
sisäinen matemaattinen rakenne. Dekoodaustaulukon käyttö on
hankalaa (etäisyyksien laskenta vie aikaa ja muistia).

Siksi koodisuunnittelussa tarvitaan avuksi matemaattista teoriaa,
jotta koodaus ─ ja ennen kaikkea dekoodaus ─ olisivat helposti ja
nopeasti toteutettavissa elektroniikalla tai prosessorilla.

Tarkastellaan koodausalgebran keinoin strukturoituja menetelmiä,
joilla k bitin sana kuvataan n bitin lohkoksi ja dekoodataan helposti.

r kpl pariteettibittejä toteuttavat lineaarisen yhtälöryhmän:
h11a1  h12 a2    h1k ak  c1  0
h21a1  h22 a2    h2 k ak  c2  0

hr1a1  hr 2 a2    hrk ak  cr  0
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
13 (36)
Yhden virheen korjaavat pariteetintarkistuskoodit

[H] = pariteetintarkistusmatriisi, [T] = koodisanavektori
 h11
h
H T   0, H    21


 hr1
h12  h1k
1 0 
h22  h2 k
0 1 



hr 2  hrk

 
0 0 
 a1 
a 
 2
0

0
 
, T   ak 

 c1 

1
 

c 
 r

Vastaanotettu sana on [R]. Jos [H][R] ≠ [0], tiedetään, että [R] ei ole
sallittu koodisana, eli [R] ≠ [T] ja ainakin yksi virhe on tapahtunut.

Toisaalta, jos [H][R] = [0], niin [R] on sallittu koodisana, ja jos
symbolivirhetodennäköisyys on pieni, se mitä todennäköisimmin on
myös lähetetty sana.

Koska [R] on vastaanotettu koodisana, se voidaan kirjoittaa
muotoon [R] = [T]  [E], missä [E] on kanavan aiheuttama n-pituinen
virhevektori. Dekoodausongelma pelkistyy oleellisesti vektorin [E]
määrittämiseen, sillä koodisana voidaan palauttaa lailliseksi [R]:n ja
[E]:n yhteenlaskulla ([E]:n paino sama kuin virheiden lkm.).
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
14 (36)
Yhden virheen korjaavat pariteetintarkistuskoodit

Ensimmäiseksi – siis [E]:n laskemiseksi – kerrotaan [R] vasemmalta
puolelta [H] -matriisilla.

Saatavaa matriisia [S] kutsutaan syndroomaksi, eli oirevektoriksi.

[S] = [H][R] = [H][T]  [H][E], eli [S] = [H][E], koska [H][T] = 0.

[E] ei voida ratkaista suoraan kaavasta [S] = [H][E], koska [H] ei ole
neliömatriisi ja [H]–1 ei siten ole olemassa.

Sen sijaan oletetaan, että on tapahtunut vain yksi virhe, jolloin
virhevektori on muotoa: [E] = [0 0...1...0]T (Hamming-paino = 1).

Kertomalla [E] vasemmalta puolelta matriisilla [H] osoittaa, että
oirevektori [S] on matriisin [H] i:s sarake, missä virhe on paikassa i.

Eli kerrotaan [H] vasemmalta [R]:llä ja verrataan saatua [S] vektoria
[H]:n sarakkeisiin. Sama sarakkeen arvo kertoo tn. virheen paikan i.

Useamman virheen tapauksessa em. menetelmä ei toimi.

Edellä siis oletettiin, että PE oletetaan pieneksi, jolloin Hammingpainon 1 omaava virhevektori [E] on kaikkein todennäköisin.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
15 (36)
Esimerkki 2
=
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
16 (36)
Yhden virheen korjaavat pariteetintarkistuskoodit

[A] = k:n informaatiobitin vektori, [G] = generoijamatriisi, [I] = mm
yksikkömatriisi, [H] = pariteetintarkistusmatriisi, jonka sanotaan
olevan systemaattisessa muodossa, kun [H] = [Hp  Ir].
 c1   h11
c   h
 2    21
  
  
cr   hr1
h12 
h22 


hr 2 
 a1   1
a   0
 2 
h1k   a1 
 a1 
 





h2 k  a2 
a2 
  

, T   G A, A 
, T   ak    0

   
 c1  h11
 
 
hrk  ak 
  
 ak 
 
 c  h
 r   r1
 Ik 
G     , H   H p
H p 
 

Tietoliikennetekniikka II 521361A
1
0



 I r , G    0
 h11


h
 r1

0

1

0
h12






hr 2 
Kari Kärkkäinen
0
0 
 h11


h

21
1 , H p  

h1k 


 hr1
 
hrk 
 
0

1



0
h12




hr 2 
h12
h22

hr 2
Osa 23
0
0 
 a1 

  
  a2 
1

h1k   
 ak
  
hrk 
 h1k 
 h2 k 
  

 hrk 
17 (36)
Lineaarisen lohkokoodin generoijamatriisi
a1
t3
t2
a2
Toistokoodi (n=3)
0  000
1  111
t1
a1

t3
t2
t1
a4 a3 a2 a1


 I11  1
G       1
 H p  1
 

(3,2)-koodi (1 pariteettibitti,parillinen pariteetti)
00  000
 I 22  1 0
01  011
10  101
G       0 1
11  110
 H p  1 1

(7,4) Hamming-koodi
Systemaattinen, koska
infobitit sellaisenaan.
t7 t6 t5 t4 t 3 t2 t1
Tietoliikennetekniikka II 521361A

Kari Kärkkäinen
1
0

 I 44  0
G       0
 H p  1

 
0
1

Osa 23
0 0 0
1 0 0
0 1 0

0 0 1
1 1 0

1 1 1
0 1 1
18 (36)
Yhden virheen korjaavat pariteetintarkistuskoodit (S)

Systemaattisilla koodeilla informaatiobitit sisältyvät sellaisenaan
koodisanaan pariteettibittien seassa (eivät siis ole useamman
informaatiobitin funktioita).

Pariteettibitit on puolestaan laskettu informaatiobiteistä kullekkin
koodille ominaisella matemaattisella säännöllä. Sopivien sääntöjen
eli [H]-matr. etsintä on juuri koodimatemaatikkojen työtä.

Systemaattisen koodin informaatiobitit voivat sijaita, joko yhdessä
sanan alussa tai lopussa, tai ripoteltuna pitkin koodisanaa. Niiden ei
myöskään tarvitse olla alkuperäisessä järjestyksessä.

Jos ne sijaitsevat ryhmiteltynä esim. alussa, niin siitä seuraa, että H
tulee kätevästi ns. systemaattiseen muotoon: [H] = [Hp  Ir].

[Ir] on rr -matriisi ja Hp on r(n–r) = rk -matriisi.

Epäsystemaattisen koodin sanan kaikki bitit ovat jollakin funktiolla
riippuvaisia useista eri informaatiobiteistä.

Epäsystemaattisessa koodisanassa ei enää esiinny puhtaita
informaatiobittejä sellaisenaan.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
19 (36)
Yhden virheen korjaavat pariteetintarkistuskoodit (S)

[G]-matriisin (kaava 11.111) määrittelemiä koodeja sanotaan
lineaarisiksi koodeiksi, koska k+r koodisymbolia on muodostettu k:n
informaatiosymbolin lineaarikombinaationa.

Matriisialgebrasta tiedetään, että lineaarinen yhtälöryhmä vastaa
matriisia.

Lisäksi on olemassa ominaisuus, että jos kaksi erilaista k:n bitin
informaatiojonoa modulo-2 (XOR) -summataan saaden kolmas jono,
niin summajonoa vastaava koodisana on kahta summattua
vastaavien koodisanojen summa.

[A3] = [A1]  [A2], [A3]:sta vastaava koodisana [T3] = [G][A3] = [G]{[A1]
 [A2]} = [G][A1]  [G][A2] = [T1]  [T2].

Koodeja, jotka täyttävät ehdon: [T3] = [T1]  [T2], sanotaan ns.
ryhmäkoodeiksi (group codes).
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
20 (36)
HAMMING-KOODIT
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
21 (36)
Hamming-koodit

Hamming-koodit olivat ensimmäisiä virheenkorjaavia koodeja
(nimetty keksijän Richard W. Hammingin mukaan).

Ne ovat erityisiä yhden virheen korjaavia pariteetintarkistuskoodeja,
joilla on minimietäisyys dmin = 3, eli kaikki yhden bitin virheet
voidaan varmasti korjata (t = 1). Hamming-koodeja löytyy
parametriarvoille: (n,k,t) = (2m – 1, 2m – 1– m,1), m = 2,3,...

Tunnetuimmia lineaarisia enemmän virheitä korjaavia (t > 1 ja dmin >
3) koodeja ovat esimerkiksi BCH-koodit (Bose-Ray-ChaudhuriHocquenghem), Golay –koodi (23,12), jatkettu Golay –koodi (24,12),
Reed-Müller -koodit, Reed-Solomon -koodit (ei-binäärisiä
symbolikoodeja), jotka on yleensä nimetty keksijöidensä mukaan.

Pariteetintarkistusmatriisilla on dimensiot (2n–k–1)  (n–k) ja se on
hyvin helppo konstruoida: Hamming-koodin pariteetintarkistusmatriisin [H] i:s sarake on numeron i binäärinen lukuvastine. Tällä
koodilla on em. ominaisuudesta johtuen sellainen mielenkiintoinen
ominaisuus, että yhden virheen tapauksessa myös oiresana [S] on
virheen paikan järjestysnumeron binäärinen vastine.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
22 (36)
Hamming-koodit — Esimerkki 3
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
23 (36)
SYKLISET KOODIT
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
24 (36)
Sykliset koodit

Edellä tarkasteltiin pääasiassa pariteetintarkistuskoodien matemaattisia
ominaisuuksia, emmekä tarkastelleet kooderien ja dekooderien toteutusta.
Toteutuksen, ja erityisesti dekoodauksen (virheen etsinnän ja korjauksen),
yksinkertaisuus on oleellista.

Dekooderin kovo voi lohkokoodien tapauksessa olla varsin monimutkainen.
Niiden toteutukseen kuten muihin lohkokoodeihin perehdytään
syvällisemmin ”Informaatioteorian ja koodauksen perusteet” -kurssissa.

Erikoistapauksen yksinkertaisesta dekooderin toteutuksesta
pariteetintarkistuskoodeille muodostaa niiden alaluokka: sykliset koodit.

Kooderi ja dekooderi voidaan toteuttaa helposti takaisinkytketyllä
siirtorekisterigeneraattorilla.

Sykliset koodit ovat systemaattisia: informaatiobitit mukana sellaisenaan
koodisanassa, ja vieläpä alkuun ryhmiteltynä)

Generoijamatriisista [G] riippuva generoijapolynomi g(x) määrittelee koodin
lineaarisen takaisinkytketyn siirtorekisterigeneraattorin (LFSRG)
takaisinkytkennän rakenteen.

Polynomeja on taulukoitu valmiiksi koodausteorian oppikirjoissa erilaisille
(n,k,t) -kombinaatioille.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
25 (36)
Sykliset koodit

Syklisen koodin nimitys tulee siitä, että yhden sanan syklinen
permutaatio on aina joku toinen laillinen koodisana. Jos esim.
x1x2x3x4...xn–1xn on koodisana, niin myös xnx1x2x3x4...xn–1 on.

Syklisiä koodeja tarkastellaan seuraavassa lähinnä esimerkkin
valossa (Z&T ei käsittele syklisten koodien teoriaa).

Seuraavan sivun kooderilla voidaan generoida kaikki 2k = 24 = 16
laillista koodisanaa. Kyseessä on (n,k) = (7,4) syklinen koodi.
Käytössä modulo-2 –summaus (XOR).

Siirtorekisteri on alussa täytetty nollilla ja kytkin on A-asennossa 4
kellojakson ajan. Kytkin siirty B-asentoon infobittien syötön jälkeen,
jossa asennossa se on 3 kellojakson ajan, jonka jälkeen kytkin
siirtyy takaisin A-asentoon.

n–k siirron jälkeen rekisteri sisältää n–k = 3 pariteettibittiä
liitettäväksi infobitteihin koodisanan loppuun.

LFBSRG:n tila siirtyy aina oikealle. Siirtorekisteri jää lopussa
nollatilaan ja on valmis vastaanottamaan seuraavat 4 infobittiä.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
26 (36)
Esimerkki 4: Syklinen kooderi (7,4)-koodille (S)
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
27 (36)
Esimerkki 4: Syklinen dekooderi (7,4)-koodille (S)

Edellytyksenä on, että koodi on
systemaattisessa muodossa
(infobitit sanan alussa).

Ylempi on varastorekisteri.

Aluksi kytkin A kiinni ja B auki.

Vastaanotetut bitit molempiin
rekistereihin.

Jos bittivirheitä ei tapahtunut,
alemman rekisterin tila on lopussa
nollasana (oiresana = 0).

Sen jälkeen kytkimien paikat
vaihdetaan.

Jos bittivirhe tapahtui, eli lopussa
rekisterissä oleva oiresana ≠ 0,
niin virhe korjautuu (bitin kääntö)
automaattisesti kombinaatiologiikkapiirissä.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
28 (36)
BCH-KOODIT (S)
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
29 (36)
BCH-koodit (S)

BCH-koodit ovat Hamming -tyyppisten koodien yleistys
mahdollistaen useampien virheiden korjaamisen (t>1).

Ne ovat myös tehokas syklisten koodien luokka, joilla on laaja
lohkon pituuden n, koodisuhteen k/n ja korjauskyvyn t (dmin)
valikoima.
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
30 (36)
BCH-koodien generoijapolynomeja eri (n,k,t)-arvoille (S)
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
31 (36)
BCH-koodien generoijapolynomeja eri (n,k,t)-arvoille (S)
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
32 (36)
LINEAARISTEN KOODIEN
SUORITUSKYKYKUVAAJIA (S)
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
33 (36)
Lineaaristen koodien suorituskyky (n,k,t):n funktiona (S)
Demodulaattorin lähdössä
näkyvä modulaatiomenetelmään
liittyvä kanavavirhetn., joka
näkyy kanavadekooderin
tulossa.
Suuri koodausvahvistus,
kun t >>1 (dmin suuri).
Koodisuhde k/n on
kuitenkin pieni (paljon
redundanssia pariteettibittien muodossa).
Tietoliikennetekniikka II 521361A
Dekooderin lähdössä
näkyvä korjauksen jälkeinen
virhetn. on siis pienempi, jos
dekooderi ei generoi lisävirheitä.
Kari Kärkkäinen
Osa 23
34 (36)
Lineaaristen koodien suorituskyky (n,k,t):n funktiona (S)
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
35 (36)
Lineaaristen koodien suorituskyky (n,k,t):n funktiona (S)
Tietoliikennetekniikka II 521361A
Kari Kärkkäinen
Osa 23
36 (36)