W11 Kody nadmiarowe, zastosowania w transmisji danych · zastosowania w transmisji danych Henryk...
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