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 = 2 0233443502334435

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 =(1 0 0 1 1 1) b 2 =(0 1 0)  c 2 =(0 1 0 1 1 0) b 3 =(0 0 1)  c 3 =(0 0 1 1 0 0) Generatormatrix: Basiscodewoorden: b' 1 =(1 0 0)  c' 1 =(1 0 0 1 1 1) b' 2 =(1 1 0)  c' 2 =(1 1 0 0 0 1) b' 3 =(1 1 1)  c' 3 =(1 1 1 1 0 1) 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 000000001100010110011010100111101011110001111101 000001 001101010111011011100110101010110000111100 000010001110010100011000100101101001110011111111 000100001000010010011110100011101111110101111001 010000011100000110001010110111111011100001101101 100000101100110110111010000111001011010001011101 000011001111010101011001100100101000110010111110 000101001001010011011111100010101110110100111000 coset cosetleiders codewoorden 001001000101011111010011101110100010111000110100

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=(0 0 1 1 0 0) 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: 0233443502334435 1 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, 001111, 010101, 011001, 100100, 101000, 110010, 111110} s=(101)  e = (000101) ^ {000101, 001001, 010011, 011111, 100010, 101110, 110100, 111000}

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) 4 + 14p 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 =(1100010) (7,3) : c b =(1101001)  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 2 +1 1.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=(1100101)

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 10101 2110010 2021001 2131100 2041110 2050111 2161011 2170101 SchakelaaruitgangcyclusInhoud 10101 2110010 2021001 2131100 2041110 2050111 2161011 2170101 SchakelaaruitgangcyclusInhoud 10101 2110010 2021001 2131100 2041110 2050111 2161011 2170101 SchakelaaruitgangcyclusInhoud 10101 2110010 2021001 2131100 2041110 2050111 2161011 2170101 SchakelaaruitgangcyclusInhoud 10101 2110010 2021001 2131100 2041110 2050111 2161011 2170101 SchakelaaruitgangcyclusInhoud 10101 2110010 2021001 2131100 2041110 2050111 2161011 2170101 SchakelaaruitgangcyclusInhoud 10101 2110010 2021001 2131100 2041110 2050111 2161011 2170101 SchakelaaruitgangcyclusInhoud 10101 2110010 2021001 2131100 2041110 2050111 2161011 2170101 codebits: c=(1100101)

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 3 2 7 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 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.nl/2235357/9/slides/slide_68.jpg", "name": "Cyclische codes: generatie69 Generatie via schuifregister: generatorveelterm of checkveelterm.", "description": " 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