W11 Kody nadmiarowe, zastosowania w transmisji danych · zastosowania w transmisji danych Henryk...

15
19.12.2017 1 W11 – Kody nadmiarowe, zastosowania w transmisji danych Henryk Maciejewski Jacek Jarnicki Marek Woda www.zsk.iiar.pwr.edu.pl 1. Kody nadmiarowe w systemach transmisji cyfrowej 2. Typy kodów, własności 3. Kody blokowe Plan wykładu Np. Władysław Mochnacki, Kody korekcyjne i kryptografia. 2

Transcript of W11 Kody nadmiarowe, zastosowania w transmisji danych · zastosowania w transmisji danych Henryk...

19.12.2017

1

W11 – Kody nadmiarowe,zastosowania w transmisji danych

Henryk Maciejewski

Jacek Jarnicki

Marek Woda

www.zsk.iiar.pwr.edu.pl

1. Kody nadmiarowe w systemach transmisji cyfrowej

2. Typy kodów, własności

3. Kody blokowe

Plan wykładu

Np. Władysław Mochnacki, Kody korekcyjne i kryptografia. 2

19.12.2017

2

Kody nadmiarowe w systemie transmisji cyfrowej

• Elementowa stopa błędów (BER - bit error rate) –prawdopodobieństwo przekłamania bitu w czasie transmisji = liczba bitów odebranych błędnie / liczba bitów przesyłanych

• BER ~ 10-2 – 10-5 w typowych kanałach; wymagania na system transmisji danych BER ~ 10-6 – 10-9.

• Kody nadmiarowe – metoda dołączania dodatkowych bitów do danych nadawanych w celu zabezpieczenia danych przed błędami transmisji

10010110011… koder dekoder 10010010011…Kanał

transmisyjny

dane nadawane dane odbierane

losowe zakłócenia

3

1 – kanał bez korekcji

2 – korekcja kodem Hamminga(15,11), zdolność korekcyjna t=1

3 – korekcja kodem BCH(127,64), zdolność korekcyjna t=10

Typowa zależność stopy błędów (sb=BER) od S/N

S – moc sygnału, N – moc szumu

4

19.12.2017

3

Zastosowania kodów nadmiarowych

• ARQ – Automatic Repeat Request• koder dodaje informację nadmiarową do bloku danych

• dekoder sprawdza czy pakiet został przesłany poprawnie, jeśli nie – wysyłane jest żądanie ponownej transmisji bloku (kanał zwrotny)

• kod detekcyjny np. bit parzystości dodawany do bloku o długości n

10010110011… koder dekoder 10010010011…Kanał

transmisyjny

dane nadawane dane odbierane

losowe zakłócenia

5

Zastosowania kodów nadmiarowych

• FEC – Forward Error Correction• dekoder wykorzystuje informację nadmiarową do

skorygowania błędów• kod korekcyjny np. potrajanie bitów (0 – 000, 1 – 111)• dekoder stosuje algorytm głosujący

• Systemy hybrydowe – ARQ z FEC w celu zmniejszenia liczby retransmisji

10010110011… koder dekoder 10010010011…Kanał

transmisyjny

dane nadawane dane odbierane

losowe zakłócenia

6

19.12.2017

4

Typy kodów nadmiarowych• Kody blokowe

• ciąg informacyjny dzielony jest na bloki k-elementowe• do każdego bloku dołączana jest sekwencja kontrolna – powstaje

słowo kodowe (wektor kodowy)

• Kody splotowe (rekurencyjne) – brak podziału na bloki, kodowanie z wykorzystaniem rejestru przesuwnego

• Kody systematyczne / niesystematyczne• Kod systematyczny - pierwsze k bitów w słowie kodowym to ciąg

informacyjny

• Kody liniowe – suma dowolnych dwóch wektorów kodowych jest wektorem kodowym

• Kody cykliczne – tworzone za pomocą pierścieni wielomianów nad ciałami skończonymi

7

Kody blokowe

Ciąg informacyjny dzielony jest na bloki k-elementowe,

Słowo kodowe n-elementowe, n > k

Kody blokowe oznaczamy symbolem (n,k)

Sprawność kodu R = k/n

Nadmiar kodowy = 1-R = (n-k)/n

8

19.12.2017

5

Kody blokoweWyjście kodera: 2k różnych wektorów kodowychWejście dekodera: 2n różnych wektorów (przestrzeń wektorowa nad ciałem binarnym)(w tym 2k – wektorów kodowych, 2n-2k – niekodowych)

Po przejściu przez kanał transmisyjny wektor kodowy może:1. zostać niezmieniony (brak zakłócenia)2. zostać zmieniony na wektor niekodowy3. zostać zmieniony na inny wektor kodowy

Przypadek 2 – błąd transmisji wykrywalny (korygowalny? –dekoder może znaleźć wektor kodowy różniący się od odebranego najmniejszą liczbą pozycji)Przypadek 3 – niewykrywalny błąd transmisji

9

Zdolność korekcyjna i detekcyjna kodu

Odległość Hamminga: dH(u,v) pomiędzy wektorami kodowymi u,v = liczba pozycji, na których u, v różnią się.

Np.

u = [1,1,0,1,0,0,1]

v = [1,0,0,1,0,1,1]

dH(u,v) = 2

Waga wektora kodowego w(u) = liczba współrzędnych niezerowych

dH(u,v) = w(u+v)

u+v = [0,1,0,0,0,1,0]10

19.12.2017

6

Zdolność korekcyjna i detekcyjna kodu

Odległość minimalna Hamminga pomiędzy wektorami kodowymi, ozn. d – decyduje o zdolność detekcyjnej i korekcyjnej kodu blokowego.(zachodzi: dla kodu liniowego d = min waga niezerowego wektora kodowego)

Zdolność detekcyjna = d – 1(kod o parametrze d może wykryć ciągi błędów o wadze ≤ d-1 )

Zdolność korekcyjna

11

Zapis macierzowy kodu liniowego

m1xk – blok danych

cX 1xn – wektor kodowy

Gkxn – macierz generująca kod

cX = m ∙ G

G = [Ikxk | Pkx(n-k)]

Ikxk – macierz jednostkowa

Pkx(n-k) – macierz o wierszach liniowo niezależnych

12

19.12.2017

7

Zapis macierzowy kodu liniowego

Przykład kodu (5,2):

Wniosek – każdy wektor kodowy jest liniową kombinacją wierszy macierzy generującej kod

[a1,a2] ∙ G = [a1, a2, a1, a2, a1+a2]13

Macierz kontrolna (macierz parzystości)

Dla każdej macierzy generującej kod istnieje Gkxn istnieje macierz kontrolna H(n-k)xn tż. G ∙ HT = 0

G = [Ik | Pkx(n-k)]

H = [ PT(n-k)xk| In-k ]

Przykład kodu (5,2):

14

19.12.2017

8

Macierz kontrolna – dekodowanie

cX – wyjście kodera

cY = cX + e – wejście dekodera (e – wektor błędów)

s – syndrom błędu (zależy tylko od e)

Syndrom – liniowa kombinacja wierszy macierzy HT

15

Macierz kontrolna – dekodowanie

Przykład kodu (5,2):

cY = [1,1,0,1,0]

stąd e = [0,0,1,0,0] (bo s=eHT)

więc wektor skorygowany:

cY + e = [1,1,0,1,0] + [0,0,1,0,0] = [1,1,1,1,0]

16

19.12.2017

9

Kody Hamminga

Kody (n,k) = (2m-1, 2m-m-1),

m – liczba pozycji kontrolnych

np.

d = 3 korygują pojedyncze błędy

(zdolność detekcyjna = 2)

Wykorzystywane np. w pamięciach komputerowych

17

Kody Hamminga

Przykład kodu Hamminga (7,4)

[a1, a2, a3, a4] ∙ G = [a1, a2, a3, a4, a5, a6, a7]

a5 = a1+a2+a3

a6 = a2+a3+a4

a7 = a1+a2+a4

18

19.12.2017

10

Prosta realizacja sprzętowa

Przykład kodu Hamminga (7,4)

[a1, a2, a3, a4] ∙ G = [a1, a2, a3, a4, a5, a6, a7]

a5 = a1+a2+a3

a6 = a2+a3+a4

a7 = a1+a2+a4

19

Kody cykliczne

Ciągi informacyjne / kodowe zapisujemy w postaci wielomianów nad ciałem GF(2) (współczynniki ze zbioru {0,1}, dodawanie modulo 2):

c = [an-1, an-2, …, a1, a0]

c(x) = an-1xn-1 + an-2, xn-2 + … +a1x + a0

Przykład:

c = 1011

c(x) = x3+x+1

20

19.12.2017

11

Kody cykliczne – wielomian generujący

g(x) - wielomian generujący kod cykliczny

stopień = n-k = liczba elementów kontrolnych w wektorze kodowym

np. dla kodu cyklicznego Hamminga (7,4)

g(x) = x3 + x2 + 1 (podzielnik wielomianu x7+1)

g(x) pozwala wyznaczyć wektor kodowy dla kodu (n,k)

21

Algorytm kodowania – kod (n,k)

g(x) - wielomian generujący kod cykliczny stopnia n-k

m(x) – wielomian odpowiadający ciągowi informacyjnemu

cX(x) – wielomian odpowiadający wektorowi kodowemu

cX(x) = xn-km(x) + r(x)

Gdzie r(x) jest resztą z dzielenia xn-km(x) przez g(x):

xn-km(x) = q(x) g(x) + r(x)

22

19.12.2017

12

Algorytm kodowania – kod (n,k)

1. Przesuń ciąg informacyjny n-k pozycje w lewo: xn-km(x)

2. Wyznacz resztę z dzielenia xn-km(x) przez g(x):

r(x) = rn-k-1xn-k-1 + …+ r1x + r0

3. Dopisz resztę r(x) na n-k najmłodszych pozycjach ciągu xn-km(x):

cX(x) = xn-km(x) + r(x)

23

Dekodowanie – kod (n,k)Otrzymany ciąg:

cY(x) = cX(x) + e(x)

e(x) – wielomian odpowiadający wektorowi błędów

Korzystamy w własności, że każdy wektor kodowy jest podzielny przez g(x)

Wyznaczamy resztę z dzielenia cY(x) przez g(x) : cY(x) = m(x)g(x) + r(x)

jeśli r(x) = 0 – brak błędu

jeśli r(x) ≠ 0 – wystąpiły błędy(algorytm korekcji – patrz np. Mochnacki)

24

19.12.2017

13

Przykładowe kody cykliczne

Standardy CRC – np.

CRC-8 (WCDMA): x8+x7+x4+x3+x2+1

CRC-16 (CCITT): x16+x12+x5+1

CRC-40 (GSM): (x23+1)(x17+x3+1)

CRC-64

https://en.wikipedia.org/wiki/Cyclic_redundancy_check

25

Kody Bose–Chaudhuri–Hocquenghema (BCH)

Parametry:

• długość wektora kodowego n = 2m – 1

• liczba pozycji kontrolnych n-k ≤ mt

• min. odległość Hamminga d ≥ 2t + 1

Kod koryguje do t błędów

Kody Hamming są podzbiorem kodów BCH (BCH z t=1 jest kodem Hamminga)

26

19.12.2017

14

Kody BCH - parametry

p. W. Mochnacki – Kody korekcyjne …27

Kody Reeda-SolomonaPodklasa kodów BCH niebinarnych, nad GF(q)

Elementy ciała GF(q) są wykorzystywane w wektorach kodowych (obliczenia modulo q)

Kody RS służą do korygowania błędów grupowych.

28

19.12.2017

15

Ciało binarne GF(2)

<{0,1}, +, ∙ >

tabliczka dodawania i mnożenia

29