De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

1 Kanaalcodering Communicatietheorie Partim Datacommunicatie.

Verwante presentaties


Presentatie over: "1 Kanaalcodering Communicatietheorie Partim Datacommunicatie."— Transcript van de presentatie:

1 1 Kanaalcodering Communicatietheorie Partim Datacommunicatie

2 2 Overzicht Kanaalcodering Lineaire blokcodes Cyclische codes Capaciteit en kanaalcoderingstheorema

3 3 Overzicht Kanaalcodering Lineaire blokcodes Cyclische codes Capaciteit en kanaalcoderingstheorema

4 Lineaire blokcodes4 (n,k) lineaire blokcode –Splits informatiesequentie op in blokken van k bits  informatiewoord b lengte k : b=(b 1 … b k ), b i  {0,1}  2 k woorden –Zet b om in een vector c met lengte n  codewoord c lengte n: c=(c 1 … c n ), c j  {0,1}  2 n woorden  slechts 2 k kiezen –Verband b en c: lineaire transformatie  alle bewerkingen modulo-2 –Codedebiet R c =k/n

5 Lineaire blokcodes5 Voorbeeld 1: (n,n-1) code  voeg 1 pariteitsbit toe zodat de pariteit van het codewoord steeds even is Vb: (4,3) code codewoord a = (a 1, a 2, a 3, a 1 +a 2 +a 3 )a i  {0,1} codewoord b = (b 1, b 2, b 3, b 1 +b 2 +b 3 )b i  {0,1} codewoord c = (a 1 + b 1, a 2 + b 2, a 3 + b 3, a 1 + b 1 +a 2 + b 2 +a 3 + b 3 ) = (c 1, c 2, c 3, c 1 +c 2 +c 3 )  Pariteitsbits bij c op dezelfde manier gedefinieerd als bij a eb b  c is een codewoord c1c2c3c1c2c3

6 Lineaire blokcodes6 Eigenschap van lineaire blokcodes Som van 2 codewoorden = codewoord Nulwoord (= vector met n nullen) = codewoord (correspondeert met informatiewoord bestaande uit k nullen)

7 Lineaire blokcodes7 Voorbeeld 2: (6,3) code codewoord a = (a 1, a 2, a 3, a 1 +a 2 +a 3,a 1 +a 2,a 1 )a i  {0,1}  tel codewoord b op  Pariteitsbits c 4, c 5 en c 6 op dezelfde manier gedefinieerd als bij a  c is een codewoord

8 Lineaire blokcodes8 Encodeertabel = tabel met voor elk van de 2 k informatiewoorden het bijbehorende codewoord Voorbeeld: (6,3) code c = (b 1, b 2, b 3, b 1 +b 2 +b 3,b 1 +b 2,b 1 )

9 Lineaire blokcodes9 Definities Hammingafstand d H (a,b) = aantal bitposities waarin a en b verschillen Hamminggewicht w H (a) = aantal posities ‘1’ in a Verband d H (.,.) en w H (.): d H (a,b) = w H (a+b) Minimale Hammingafstand d H,min van een code c i = codewoord i, i=1,…,2 k (lineariteit) = minimale gewicht van de (van nul verschillende) codewoorden

10 Lineaire blokcodes10 Voorbeeld: (6,3) code  d H,min =

11 Lineaire blokcodes: generatormatrix11 De generatormatrix Lineariteit code  generatie codewoorden eenvoudig Modulo-2 som twee codewoorden = codewoord  uitbreiding: elke lineaire combinatie van codewoorden = codewoord Informatiebits onafhankelijk   set van k lineair onafhankelijke codewoorden (basisvectoren) vb: codewoorden corresponderend met b i =(0…010…0) = basis lineaire vectorruimte Alle 2 k codewoorden = lineaire combinatie van de k basisvectoren positie i

12 Lineaire blokcodes: generatormatrix12 Generatormatrix G van een (n,k) lineaire blokcode –Elke rij = basisvector –G = k x n matrix –Verband b=(b 1 … b k ) en c=(c 1 … c n ): Opmerking: set basisvectoren niet uniek  elke set van lineair onafhankelijke codewoorden goed Systematische vorm generatormatrix I k = k x k eenheidsmatrixP = k x (n-k) pariteitsmatrix  in codewoord: eerste (laatste) k codebits = informatiebits laatste (eerste) n-k codebits = pariteitsbits  (n,k) systematische code

13 Lineaire blokcodes: generatormatrix13 G niet in systematische vorm  niet systematische code Equivalentie codes Twee codes met generatormatrices G en G' zijn equivalent als zij in elkaar kunnen omgevormd worden met behulp van rijbewerkingen en/of kolompermutaties Voorbeeld: (6,3) codec= (c 1, c 2, c 3, c 1 +c 2 +c 3, c 1 +c 2, c 1 ) Basiscodewoorden: b 1 =(1 0 0)  c 1 =( ) b 2 =(0 1 0)  c 2 =( ) b 3 =(0 0 1)  c 3 =( ) Generatormatrix: Basiscodewoorden: b' 1 =(1 0 0)  c' 1 =( ) b' 2 =(1 1 0)  c' 2 =( ) b' 3 =(1 1 1)  c' 3 =( ) Generatormatrix: rij 1 G = rij 1 G' rij 2 G = rij 1 G' + rij 2 G' rij 3 G = rij 2 G' + rij 3 G'

14 Lineaire blokcodes14 Foutdetectie en -correctie Verstuur codewoord c over een kanaal  ontvangen vector r=(r 1 …r n ) r = c + e e = foutvector, bevat ‘1’ op posities transmissiefouten Foutdetectie: ? Is r een codewoord ?JA: stel foutloze transmissie NEE: zeker transmissiefout MAAR: als kanaal verstuurde codewoord omzet in een ander codewoord? = NIET-GEDETECTEERDE FOUT Foutcorrectie: zoek meest waarschijnlijke codewoord MAAR: als aantal fouten te groot zodat gekozen codewoord aan ontvanger anders is dan verstuurde codewoord? = DECODEERFOUT

15 Lineaire blokcodes15 Decodeertabel = tabel met alle 2 n vectoren r van lengte n en het codewoord dat dichtst bij r ligt Constructie 1.Plaats alle 2 k codewoorden in de eerste rij, te beginnen met het nulwoord. 2.Neem één van de overgebleven woorden w met het kleinste gewicht en plaats dit woord onder de kolom met het nulwoord. 3.Vul de rij op door het woord w op te tellen bij het codewoord bovenaan de kolom. 4.Herhaal stappen 2 en 3 totdat alle 2 n woorden in de tabel voorkomen.

16 Lineaire blokcodes16 Voorbeeld: decodeertabel (6,3) code Indien in laatste 2 rijen andere cosetleider met gewicht 2  rijen gepermuteerd coset cosetleiders codewoorden

17 Lineaire blokcodes: checkmatrix17 De checkmatrix Decodeertabel = niet handig als k of n groot Checkmatrix H : GH T =0 Eigenschappen: –Code met H als generatormatrix en G als checkmatrix = duale code –Systematische vorm: Voorbeeld: (6,3) code Checkmatrix: zelfde informatie als codewoord: c= (c 1, c 2, c 3, c 1 +c 2 +c 3, c 1 +c 2, c 1 ) kolom H = codebit op die positie eerste 3 bits = informatiebits rij 1: c 4 =c 1 +c 2 +c 3 rij 2: c 5 =c 1 +c 2 rij 3: c 6 =c 1

18 Lineaire blokcodes: checkmatrix18 Codewoord = lineaire combinatie van rijen van G (=basiscodewoorden) modulo-2 som van kolommen H overeenkomend met posities ‘1’-en in c moet nul zijn  gevolg: minimale Hammingafstand d H,min (=d) van een code:  set van d kolommen in H waarvan som = 0  set van  d-1 kolommen in H waarvan som = 0 = elke set van  d-1 kolommen in H zijn lineair onafhankelijk Voorbeeld: (6,3) codec=( ) is codewoord d=2

19 Lineaire blokcodes: syndroom19 Het syndroom Definitie syndroom s=(s 1 … s n-k ): Eigenschappen: s=0  r is een codewoord s≠0  r is geen codewoord syndroom hangt enkel af van foutvector, niet van verstuurde codewoord = NIET-GEDETECTEERDE FOUT foutdetectie 0

20 Lineaire blokcodes: syndroom20 decodeertabel: bereken syndroom van een coset (=rij)  elk element uit coset heeft zelfde syndroom  andere coset = ander syndroom Syndroomtabel = tabel met cosetleiders en bijbehorende syndromen rij jelement i cosetleider = foutpatroon met kleinste gewicht dat aanleiding geeft tot syndroom Merk op: syndroomtabel (2 n-k ) factor 2 k kleiner dan decodeertabel (2 n )

21 Lineaire blokcodes: syndroom21 Opstellen syndroomtabel zonder decodeertabel 1.Rangschik de 2 n mogelijke e volgens toenemend gewicht 2.Bereken syndroom s=eH T voor opeenvolgende e 3.Syndroom nog niet in tabel?  voeg e en s toe 4.Herhaal 2 en 3 totdat alle 2 n-k syndromen in tabel

22 Lineaire blokcodes: syndroom22 Syndroomtabel  foutcorrectie 1.Bereken s=eH T 2.Zoek in syndroomtabel e behorend bij s 3. e = meest waarschijnlijke foutpatroon 4.Codewoord

23 Lineaire blokcodes: syndroom23 Voorbeeld: (6,3) code 1 (van 1) foutpatroon gewicht 0 5 (van 6) foutpatronen gewicht 1 2 (van 15) foutpatronen gewicht 2 c=(101011)  ontvang r=(101010) e=(000001)  =(101011)

24 Lineaire blokcodes: foutdetectie24 Performantie van foutdetectie Foutdetectie: bereken syndroom s=0  foutloze transmissie verondersteld s≠0  zeker transmissiefout # fouten < d H,min  codewoord kan niet omgezet worden in ander codewoord (minimum aantal fouten nodig = d H,min )  # fouten < d H,min steeds detecteerbaar GEGARANDEERD FOUTDETECTEREND VERMOGEN = d H,min -1 Niet gedetecteerde fout: e≠0  s=0  kan enkel als e=codewoord ? Kans niet gedetecteerde fout?

25 Lineaire blokcodes: foutdetectie25 Binair symmetrisch kanaal (BSC) = kanaal met binaire ingang en binaire uitgang Bij gegeven ingangssequentie, uitgangbits statistisch onafhankelijk Kanaal geheugenloos: n e uitgangsbit enkel afhankelijk van n e ingangsbit Kanaal stationair: statistiek kanaal onafhankelijk van tijdsindex Pr[kanaalfout] = Pr[Y=0|X=1]Pr[X=1]+Pr[Y=1|X=0]Pr[X=0] = p p = foutprobabiliteit kanaal X01X01 Y01Y01 Pr[Y=0|X=0]=1-p Pr[Y=1|X=1]= 1-p Pr[Y=0|X=1]= p Pr[Y=1|X=0]= p

26 Lineaire blokcodes: foutdetectie26 Stel foutvector e (i) treedt op (lengte e (i) =n) Kans niet gedetecteerde fout = kans dat e een codewoord ≠ 0 is kleinste macht p = d H,min (=d)  Pr[n.g.f]~p d p<<1(foutdetecterend vermogen d-1)

27 Lineaire blokcodes: foutdetectie27 Voorbeeld: (6,3) code  uit encodeertabel: codewoord met gewicht 0 1 codewoord met gewicht 2 3 codewoorden met gewicht 3 2 codewoorden met gewicht 4 1 codewoord met gewicht 5 n=6 p klein: (1-p)  1p x y

28 Lineaire blokcodes: foutdetectie28 Voorbeeld: (6,3) code (vervolg) code uit voorbeeld (d=2) geen codering (d=1) Pr[n.g.f.]=1-(1-p) 3 andere (6,3) code met d=3 d   Pr[n.g.f.] 

29 Lineaire blokcodes: foutcorrectie29 Performantie van foutcorrectie Foutcorrectie: gebruik syndroomtabel om meest waarschijnlijke foutvector te bepalen  foutvector in syndroomtabel  decodering foutloos  E syndr = set van foutvectoren in syndroomtabel Kans decodeerfout = kans foutvector niet in syndroomtabel met: = GEGARANDEERD FOUTCORRIGEREND VERMOGEN alle foutpatronen met gewicht  t in syndroomtabel, sommige foutpatronen met gewicht > t mogelijk in syndroomtabel (zeker niet alle!)

30 Lineaire blokcodes: foutcorrectie30 Voorbeeld: (6,3) code  syndroomtabel 1 (van 1) foutpatroon gewicht 0 5 (van 6) foutpatronen gewicht 1 2 (van 15) foutpatronen gewicht 2 Binomium Newton:

31 Lineaire blokcodes: foutcorrectie31 Voorbeeld: (6,3) code (vervolg) code uit voorbeeld (d=2) geen codering (d=1) Pr[d.f.]=1-(1-p) 3 andere (6,3) code met d=3 d   t   Pr[d.f.] 

32 Lineaire blokcodes: foutcorrectie en - detectie 32 Performantie van gecombineerde foutcorrectie en -detectie Foutdetectie = geen enkele fout corrigeren Foutcorrectie = alle fouten corrigeren, geen extra detecteren ? Sommige fouten corrigeren, andere detecteren (  retransmissie)? Voor foutvectoren in syndroomtabel:  foutvector corrigeren: behoud foutvector in syndroomtabel  foutvector enkel detecteren: schrap uit syndroomtabel Zuivere foutcorrectie = geen rijen schrappen zuivere foutdetectie = alle rijen (behalve s=0) schrappen # rijen geschrapt   Pr[d.f.]  maar Pr[retransmissie] 

33 Lineaire blokcodes: foutcorrectie en - detectie 33 Voorbeeld: (6,3) code corrigeer enkel fouten met gewicht  1, andere fouten worden enkel gedetecteerd Schrap uit syndroomtabel alle foutvectoren met gewicht  1 Pr[correcte beslissing] = kans dat foutpatroon in syndroomtabel Pr[retransmissie] = kans dat foutpatroon  s  syndroomtabel Pr[decodeerfout] = kans dat foutpatroon  s  syndroomtabel, maar e  syndroomtabel / / Pr[correcte beslissing]+ Pr[retransmissie]+ Pr[decodeerfout]=1

34 Lineaire blokcodes: foutcorrectie en - detectie 34 Voorbeeld: (6,3) code (vervolg) Pr[correcte beslissing] = kans dat foutpatroon in syndroomtabel in syndroomtabel: 1 foutpatroon met gewicht 0 5 foutpatronen met gewicht 1 Pr[correcte beslissing] = 1(1-p) 6 + 5p(1-p) 5

35 Lineaire blokcodes: foutcorrectie en - detectie 35 Voorbeeld: (6,3) code (vervolg) Pr[retransmissie] = kans dat foutpatroon  s  syndroomtabel rijen geschrapt uit syndroomtabel: s=(011) en s=(101) Pr[retransmissie] = 6p 2 (1-p) 4 + 6p 3 (1-p) 3 +4p 4 (1-p) 2 +2p 5 (1-p)  6p 2 p<<1 / 6 foutpatronen met gewicht 2 6 foutpatronen met gewicht 3 4 foutpatronen met gewicht 4 2 foutpatronen met gewicht 5 # foutpatronen  s ?  2 k per s (e uit tabel + alle c) s=(011)  e = (000011) ^ {000011, , , , , , , } s=(101)  e = (000101) ^ {000101, , , , , , , }

36 Lineaire blokcodes: foutcorrectie en - detectie 36 Voorbeeld: (6,3) code (vervolg) Pr[decodeerfout] = kans dat foutpatroon  s  syndroomtabel, maar e  syndroomtabel Pr[decodeerfout] = 1-(Pr[correcte beslissing]+Pr[retransmissie]) = 1 – ((1-p) 6 + 5p(1-p) 5 ) – (6p 2 (1-p) 4 + 6p 3 (1-p) 3 +4p 4 (1-p) 2 +2p 5 (1-p)) = p(1-p) 5 + 9p 2 (1-p) p 3 (1-p) 3 +13p 4 (1-p) 2 +4p 5 (1-p)+p 2 (Binomium)  pp<<1 /

37 Lineaire blokcodes: bijzondere codes37 Enkele bijzondere codes Single parity check codes Block check sum codes

38 Lineaire blokcodes: bijzondere codes38 Single parity check code (SPC) Eenvoudige foutdetecterende code  informatiewoord (lengte k) + 1 pariteitsbit = codewoord  (k+1,k) code, heeft ‘1’ in even aantal posities Ontvanger: bepaal pariteit r –Even: stel geen transmissiefout –Oneven: zeker transmissiefout Kans niet-gedetecteerde fout: n.g.f. treedt op als #fouten even  Pr[n.g.f.] klein als k voldoende klein  kans 2 bitfouten << kans 1 bitfout Toepassing: ASCII: 7 informatiebits + 1 pariteitsbit Variante: SPC code met oneven pariteit  codewoord oneven aantal ‘1’ –Zelfde performantie als even SPC –MAAR: geen lineaire blokcode

39 Lineaire blokcodes: bijzondere codes39 Block check sum code (BCS) k groot  SPC code niet betrouwbaar oplossing = block check sum –Splits informatiewoord op in L blokken van lengte K –Orden L blokken in K x L matrix –Voeg aan elke rij 1 pariteitsbit (even) toe  lengte K+1 –Voeg aan elke kolom 1 pariteitsbit (even) toe  lengte L+1  ((L+1)(K+1),LK) code LK informatiebits pariteitsbits voor elke rij pariteitsbits voor elke kolom

40 Lineaire blokcodes: bijzondere codes40 Foutdetectie bij BCS  alle fouten die de pariteit van minstens 1 rij en/of kolom verstoren zijn detecteerbaar Niet gedetecteerde fout = foutpatroon met even aantal fouten in elke rij/kolom  minstens 4 fouten: Pr[n.g.f.] ~ p 4

41 41 Overzicht Kanaalcodering Lineaire blokcodes Cyclische codes Capaciteit en kanaalcoderingstheorema

42 Cyclische codes42 Cyclische codes Cyclische codes = subklasse lineaire blokcodes Eigenschappen: –Lineariteit: modulo-2 som twee codewoorden = codewoord –Cyclisch karakter: elke cyclische verschuiving van een codewoord = codewoord lineaire blokcode Stel:(c 0,c 1,…,c n-1 ) = codewoord van (n,k) cyclische code  (c n-1,c 0,…,c n-2 ) … (c 1,c 2,…,c 0 ) zijn ook codewoorden

43 Cyclische codes: veeltermnotatie43 Veeltermnotatie Codewoord c=(c 0,c 1,…,c n-1 )  veeltermnotatie: c(x) = c 0 + c 1 x + … + c n-1 x n-1 –Graad veelterm c(x)  n-1 –c i  {0,1} Cyclisch karakter?  beschouw veelterm xc(x) xc(x) = c 0 x+ c 1 x 2 + … + c n-1 x n  ≠ codewoord: graad xc(x) kan n zijn als c n-1 =1 !

44 Cyclische codes: veeltermnotatie44 Deel xc(x) door x n +1 c n-1 x n +…+c 1 x 2 +c 0 xx n +1 c n-1 x n + c n-1 c n-1 c n-2 x n-1 +…+c 0 x+c n-1 xc(x) = c n-1 (x n +1)+ c 1 (x)  c 1 = (c n-1,c 0,…,c n-2 ) = codewoord c over één positie cyclisch verschoven  c 1 (x) = xc(x) mod (x n +1) c 1 (x)

45 Cyclische codes: veeltermnotatie45 c 1 (x) = xc(x) mod (x n +1)  uitbreiding: c i (x) = x i c(x) mod (x n +1) = i e cyclische verschuiving van c(x) = codewoord  x i c(x) = q(x) (x n +1) + c i (x)

46 Cyclische codes: veeltermnotatie46 Voorbeeld: stel n=4 c = (1101)  c(x) = 1+x+x 3 i=3  x i c(x) = x 3 +x 4 +x 6  delen door x 4 +1=x n +1 x 6 +x 4 +x 3 x 4 +1 x 6 +x 2 x 2 +1 x 4 +x 3 +x 2 x 4 +1 x 3 +x 2 +1  x 3 c(x) mod (x 4 +1) = x 3 +x 2 +1  (1011) = c over 3 posities cyclisch naar rechts verschoven

47 Cyclische codes: generatorveelterm47 Generatorveelterm Definitie: Generatorveelterm g(x) van een (n,k) cyclische code –graad g(x) = n-k –g(x) niet deelbaar door x –g(x) = factor van x n +1 Informatieveelterm: informatiewoord b=(b 0,…,b k-1 )  b(x) = b 0 +b 1 x+…+b k-1 x k-1

48 Cyclische codes: generatorveelterm48 Verband informatieveelterm en codeveelterm c(x) = b(x) g(x) voor alle 2 k informatieveeltermen Cyclisch? Stel c(x) = codewoord c 1 (x) = cyclische verschuiving van c(x) codewoord? c 1 (x) = xc(x) mod (x n +1) = codewoord? = xc(x) + c n-1 (x n +1) deelbaar door g(x) want c(x) = codewoord deelbaar door g(x) want g(x) is factor van (x n +1) c 1 (x) deelbaar door g(x) dus codewoord

49 Cyclische codes: generatorveelterm49 Voorbeeld: code met n=7  x 7 +1=(x+1)(x 3 +x 2 +1)(x 3 +x+1) (7,4) code  graad g(x) = 3  vb: g 1 (x)=x 3 +x 2 +1 g 2 (x)=x 3 +x+1 b(x) = b 0 +b 1 x+b 2 x 2 +b 3 x 3 c(x) = b(x)g 1 (x) = b 0 +b 1 x+(b 0 +b 2 )x 2 +(b 0 +b 1 +b 2 )x 3 + +(b 1 +b 2 )x 4 +(b 2 +b 3 )x 5 +b 3 x 6  niet systematische code! 2 keuzes

50 Cyclische codes: generatorveelterm50

51 Cyclische codes: checkveelterm51 Checkveelterm x n +1 = g(x) h(x) –graad h(x) = k –h(x) niet deelbaar door x h(x)  reciproke veelterm van h(x) = x k h(x -1 ) = generatorveelterm van (n,n-k) duale code x k h(x -1 ) = h k + h k-1 x + … + h 1 x k-1 + h 0 x k checkveelterm generatorveelterm

52 Cyclische codes: checkveelterm52 Voorbeeld: (7,4) code met g 1 (x) = x 3 +x 2 +1  h 1 (x) = (x+1)(x 3 +x+1)=x 4 +x 3 +x 2 +1  x 4 h(x -1 ) = x 4 +x 2 +x+1  (7,3) cyclische code  niet systematische code Codewoorden van de twee codes zijn orthogonaal: (7,4) : c a =( ) (7,3) : c b =( )  c a c b T = 0

53 Cyclische codes: generator- en checkmatrix 53 Generator- en checkmatrix Generatormatrix G = set van k lineair onafhankelijke codewoorden –G en g(x) beide bruikbaar voor generatie code –Verband tussen G en g(x)? Cyclische code  g(x), xg(x), …, x k-1 g(x) –zijn codewoorden want deelbaar door g(x) –graad  n-1 –lineair onafhankelijk want alle andere graad

54 Cyclische codes: generator- en checkmatrix 54 g(x), xg(x), …, x k-1 g(x)  generatormatrix = verband G en g(x) Verband b en c? b=(b 0,…,b k-1 ) c=(c 0,…,c n-1 )  c=bG g(x) xg(x) x k g(x)

55 Cyclische codes: generator- en checkmatrix 55 Voorbeeld: (7,4) code met g 1 (x) = x 3 +x 2 +1 g 2 (x) = x 3 +x+1

56 Cyclische codes: generator- en checkmatrix 56 Generatormatrix = niet systematisch  G=[P|I k ] ? Methode om systematische cyclische code te bekomen: 1.Vermenigvuldig b(x) met x n-k 2.Deel x n-k b(x) door g(x)  rest r(x) 3.Tel r(x) op bij x n-k b(x)  codewoord c(x)  c(x) = x n-k b(x) + [x n-k b(x) mod g(x)] termen x n-k …x n-1 termen x 0 …x n-k-1 k termen met hoogste graad = informatiebits n-k termen met laagste graad = pariteitsbits

57 Cyclische codes: generator- en checkmatrix 57 Rekenregels a(x) mod b(x): a 1 (x)+a 2 (x) mod b(x)=[a 1 (x) mod b(x)] + [a 2 (x) mod b(x)] a 1 (x).a 2 (x) mod b(x)=[ [a 1 (x) mod b(x)].[a 2 (x) mod b(x)] mod b(x)]

58 Cyclische codes: generator- en checkmatrix 58 Voorbeeld: (7,4) code met g 1 (x)=x 3 +x Vermenigvuldig b(x) met x n-k b(x) = b 0 +b 1 x+b 2 x 2 +b 3 x 3  x n-k b(x) = b 0 x 3 +b 1 x 4 +b 2 x 5 +b 3 x 6 2.Deel x n-k b(x) door g 1 (x) x 3 b(x) mod g 1 (x) =b 0 [x 3 mod g 1 (x)]+ b 1 [x 4 mod g 1 (x)] +b 2 [x 5 mod g 1 (x)]+ b 3 [x 6 mod g 1 (x)] x 3 mod g 1 (x) = [x 3 mod (x 3 +x 2 +1)] = x 2 +1 x 4 mod g 1 (x) = [x.x 3 mod g 1 (x)]=[x.(x 2 +1) mod g 1 (x)] = [x 3 mod g 1 (x)]+[x mod g 1 (x)]=x 2 +x+1 x 5 mod g 1 (x))= [x.x 4 mod g 1 (x)]=[x.(x 2 +x+1) mod g 1 (x)] = [x 3 mod g 1 (x)]+[x 2 mod g 1 (x)] +[x mod g 1 (x)]=x+1 x 6 mod g 1 (x) = [x.x 5 mod g 1 (x)]=[x.(x+1) mod g 1 (x)] = [x 2 mod g 1 (x)]+[x mod g 1 (x)]=x 2 +x  x 3 b(x) mod g 1 (x) = b 0 (x 2 +1)+ b 1 (x 2 +x+1) +b 2 (x+1)+ b 3 (x 2 +x) = x 2 (b 0 +b 1 +b 3 )+x(b 1 +b 2 +b 3 )+x 0 (b 0 +b 1 +b 2 )

59 Cyclische codes: generator- en checkmatrix 59 Vervolg voorbeeld: 3.Tel r(x) op bij x n-k b(x)  codewoord c(x)  c(x) = x n-k b(x) + [x n-k b(x) mod g(x)] = b 3 x 6 +b 2 x 5 +b 1 x 4 +b 0 x 3 +x 2 (b 0 +b 1 +b 3 ) +x(b 1 +b 2 +b 3 )+x 0 (b 0 +b 1 +b 2 )

60 Cyclische codes: generator- en checkmatrix 60 Checkmatrix = generatormatrix duale code  generatorveelterm duale code = x k h(x -1 )

61 Cyclische codes: generator- en checkmatrix 61 Voorbeeld: (7,4) code met g 1 (x) = x 3 +x 2 +1  h 1 (x) = (x+1)(x 3 +x+1)=x 4 +x 3 +x 2 +1  x 4 h(x -1 ) = x 4 +x 2 +x+1

62 Cyclische codes: generatie62 Generatie van cyclische codes Systematische cyclische code: 1.Vermenigvuldig b(x) met x n-k 2.Deel x n-k b(x) door g(x)  rest r(x) 3.Tel r(x) op bij x n-k b(x)  codewoord c(x)  c(x) = x n-k b(x) + [x n-k b(x) mod g(x)]  Kan uitgevoerd worden met schuifregister

63 Cyclische codes: generatie63 Generatie via generatorveelterm: Lees informatiebits in, begin met b k-1 Na k klokcycli: alle informatiebits ingelezen De n-k geheugenelementen bevatten de pariteitsbits = rest na deling x n-k b(x) door g(x) c0c0 c1c1 c n-k-2 c n-k-1

64 Cyclische codes: generatie64 Voorbeeld: (7,4) code met g(x)=x 3 +x+1 Encodeer b=(0101)  b(x)=x 3 +x x n-k b(x) mod g(x) = x+1  x n-k b(x)= x 6 +x 4  c(x) = x 6 +x 4 +x+1  c=( )

65 Cyclische codes: generatie65 Voorbeeld: vervolg Encodeer b(x)=b 0 +b 1 x+b 2 x 2 +b 3 x 3 IngangcyclusInhoud 0000 b3b3 1b3b3 b3b3 0 b2b2 2b2b2 b 2 +b 3 b3b3 b1b1 3b 1 +b 3 b 1 +b 2 +b 3 b 2 +b 3 b0b0 4b 0 +b 2 +b 3 b 0 +b 1 +b 2 b 1 +b 2 +b 3 IngangcyclusInhoud 0000 b3b3 1b3b3 b3b3 0 b2b2 2b2b2 b 2 +b 3 b3b3 b1b1 3b 1 +b 3 b 1 +b 2 +b 3 b 2 +b 3 b0b0 4b 0 +b 2 +b 3 b 0 +b 1 +b 2 b 1 +b 2 +b 3 IngangcyclusInhoud 0000 b3b3 1b3b3 b3b3 0 b2b2 2b2b2 b 2 +b 3 b3b3 b1b1 3b 1 +b 3 b 1 +b 2 +b 3 b 2 +b 3 b0b0 4b 0 +b 2 +b 3 b 0 +b 1 +b 2 b 1 +b 2 +b 3 IngangcyclusInhoud 0000 b3b3 1b3b3 b3b3 0 b2b2 2b2b2 b 2 +b 3 b3b3 b1b1 3b 1 +b 3 b 1 +b 2 +b 3 b 2 +b 3 b0b0 4b 0 +b 2 +b 3 b 0 +b 1 +b 2 b 1 +b 2 +b 3 IngangcyclusInhoud 0000 b3b3 1b3b3 b3b3 0 b2b2 2b2b2 b 2 +b 3 b3b3 b1b1 3b 1 +b 3 b 1 +b 2 +b 3 b 2 +b 3 b0b0 4b 0 +b 2 +b 3 b 0 +b 1 +b 2 b 1 +b 2 +b 3 c(x)= b 3 x 6 +b 2 x 5 +b 1 x 4 +b 0 x 3 +(b 1 +b 2 +b 3 )x 2 +(b 0 +b 1 +b 2 )x +(b 0 +b 2 +b 3 )

66 Cyclische codes: generatie66 Generatie via checkveelterm: Initialisatie: schakelaar in stand 1, lees k informatiebits in, begin met b k-1 Als alle informatiebits ingelezen, schakelaar in stand 2 Vanaf dat schakelaar in stand 2: n klokcycli om alle n codebits uit te lezen

67 Cyclische codes: generatie67 Voorbeeld: (7,4) code met g(x)=x 3 +x+1  h(x)=x 4 +x 2 +x+1 Encodeer b=(0101)  b(x)=x 3 +x SchakelaaruitgangcyclusInhoud SchakelaaruitgangcyclusInhoud SchakelaaruitgangcyclusInhoud SchakelaaruitgangcyclusInhoud SchakelaaruitgangcyclusInhoud SchakelaaruitgangcyclusInhoud SchakelaaruitgangcyclusInhoud SchakelaaruitgangcyclusInhoud codebits: c=( )

68 Cyclische codes: generatie68 Voorbeeld: vervolg Encodeer b=(b 0 b 1 b 2 b 3 )  b(x)= b 0 +b 1 x+b 2 x 2 +b 3 x 3 SchakelaaruitgangcyclusInhoud 1b0b0 b1b1 b2b2 b3b3 2b3b3 1b 1 +b 2 +b 3 b0b0 b1b1 b2b2 2b2b2 2b 0 +b 1 +b 2 b 1 +b 2 +b 3 b0b0 b1b1 2b1b1 3b 0 +b 2 +b 3 b 0 +b 1 +b 2 b 1 +b 2 +b 3 b0b0 2b0b0 4b3b3 b 0 +b 2 +b 3 b 0 +b 1 +b 2 b 1 +b 2 +b 3 2 5b2b2 b3b3 b 0 +b 2 +b 3 b 0 +b 1 +b 2 2 6b1b1 b2b2 b3b3 b 0 +b 2 +b b1b1 b2b2 b3b3

69 Cyclische codes: generatie69 Generatie via schuifregister: generatorveelterm of checkveelterm?  aantal geheugenelementen in schuifregister bepaalt complexiteit k>n-k: generatorveelterm eenvoudiger (R c >1/2) k

70 Cyclische codes: syndroom70 Berekening van het syndroom Lineaire blokcode  decoderen start met behulp van syndroom Cyclische code: r(x)=c(x)+e(x) definitie syndroom: –s(x) = s 0 +s 1 x+…+s n-k-1 x n-k-1  graad  n-k-1 –definitie equivalent met s=rH T r(x) = r 0 +r 1 x+…+r n-1 x n-1 deelbaar door g(x) s(x) = r(x) mod g(x)

71 Cyclische codes: syndroom71 Berekening syndroom via schuifregister s0s0 s1s1 s n-k-2 s n-k-1 Initialisatie: register bevat enkel nullen Lees n ontvangen bits in langs links, begin met r n-1 Na n klokcycli (alle ontvangen bits ingelezen)  geheugenelementen bevatten syndroom

72 Cyclische codes: syndroom72 Voorbeeld: (7,4) cyclische code, g 2 (x)=x 3 +x+1 r(x) = x 5 +x 4 +x 2 +1 x6x6 x6x5x6x5 x6x5x4x6x5x4 x6x5x4x3x6x5x4x3 x6x5x4x3x2x6x5x4x3x2 x6x5x4x3x2xx6x5x4x3x2x x6x5x4x3x2x1x6x5x4x3x2x1 syndroom : (001)=x 2

73 Cyclische codes: bijzondere codes73 Bijzondere cyclische codes Cyclische Hammingcodes Maximale-lengte codes Cyclic redundancy codes

74 Cyclische codes: bijzondere codes74 Cyclische Hammingcodes Definities: –Irreduceerbare veelterm = veelterm die NIET gefactoriseerd kan worden met veeltermen met coëfficiënten  {0,1} –Primitieve veelterm g(x) voor code met bloklengte n = als de kleinste waarde m waarvoor de irreduceerbare veelterm g(x) de veelterm x m +1 deelt gelijk is aan m=n –Cyclische Hammingcode met bloklengte n = code waarvan de generatorveelterm een primitieve veelterm is Parameters cyclische Hammingcode: –n = 2 m -1 –k = 2 m -1-mm=2,3,… –d H,min = 3

75 Cyclische codes: bijzondere codes75 Voorbeeld cyclische Hammingcode: n=7: g(x) is deler van x 7 +1 x 7 +1 = (x+1)(x 3 +x 2 +1)(x 3 +x+1) g 1 (x) en g 2 (x) : graad 3  (7,4) cyclische Hammingcode  Codes equivalent (kolompermutaties) Niet primitief: deelt x m +1, m=1,2,3,… Primitief: deel x m +1 door g 1 (x) of g 2 (x), m  n-1 g 1 (x) g 2 (x)

76 Cyclische codes: bijzondere codes76 Maximale-lengte code Maximale-lengte code = duale code van cyclische Hammingcode  checkveelterm maximale-lengte code = primitieve veelterm Parameters maximale-lengte code: –n = 2 m -1 –k = mm=2,3,… –d H,min = 2 m-1

77 Cyclische codes: bijzondere codes77 Cyclic redundancy check (CRC) code Cyclische codes: –Kunnen veel waarschijnlijke fouten detecteren –Eenvoudige implementatie Definitie burstfout met lengte B = (0…01XX…XX10…0) Fouten gedetecteerd door (n,k) CRC code: –Alle burstfouten met lengte  n-k –Fractie burstfouten met lengte n-k+1 (1-2 -(n-k+1) ) –Fractie burstfouten met lengte > n-k+1 (1-2 -(n-k+1) ) –Alle combinaties met  d H,min -1 fouten –Als g(x) deelbaar door x+1: alle oneven aantal fouten B

78 Cyclische codes: bijzondere codes78


Download ppt "1 Kanaalcodering Communicatietheorie Partim Datacommunicatie."

Verwante presentaties


Ads door Google