Kody blokowe

Transkrypt

Kody blokowe
Podstawowy sposób kodowania kanałowego: kod
nadmiarowy –
polega na dodaniu dodatkowych bitów nadmiarowych,
których zadanie jest umożliwienie wykrycia i korekcji
błędów transmisji
Przykład:
a0 – 00,
a1 – 01
a2 – 10
a3 – 11
Wniosek:
Nie jesteśmy w stanie wykryć błędu transmisji
Dodajemy bity nadmiarowe:
a0 – 0000,
a1 – 0101,
a2 – 1010,
a3 – 1111
Odbieramy sygnał: 0111
Dodajemy kolejne bity nadmiarowe:
a0 – 000000,
a1 – 010101, a2 – 101010, a3 – 111111
Odbieramy sygnał: 011101
Minimalna odległość Hamminga – najmniejsza liczba
symboli, o jaką różnią się 2 słowa kodowe
dmin = 1
a0 – 00,
a1 – 01
a2 – 10
a3 – 11
dmin = 2
a0 – 0000,
a1 – 0101
a2 – 1010
a3 – 1111
dmin = 3
a0 – 000000,
a1 – 010101
a2 – 101010
a3 – 111111
Liczba błędów, które można wykryć:
w =dmin −1
Liczba błędów, które można skorygować:
dmin −1
t=
2
Liniowe kody blokowe (n,k)
n – długość słowa kodowego
k – liczba bitów informacyjnych
Słowo kodowe:
c=[b1,b2, … ,bn-k ,m1,m2, … ,mk]
bity parzystości bity informacyjne
b =[b1, … ,bn-k]
m =[m1, … ,mk]
b = m ⋅P
1× (n − k )
1× k
(n − k )× k
c = [b , m ] = m ⋅ [ P , I k ] = m ⋅ G
G – macierz generująca kod
Ik – macierz jednostkowa k x k
⎡1
⎢0
Ik = ⎢
⎢...
⎢
⎣0
0 ... 0 ⎤
⎥
1 ... 0 ⎥
... ... ...⎥
⎥
0 ... 1 ⎦
Macierz kontroli parzystości H
[
H = I n −k
P
T
]
⎡In−k ⎤
G ⋅ H = [P Ik ]⋅ ⎢ T ⎥ = P + P = 0
⎣P ⎦
T
m ⋅G ⋅H = 0
T
Dekodowanie z syndromem
r – sygnał odebrany
r = c + e
e – sygnał błędu
r ⋅ H = (c + e) ⋅ H = c ⋅ H + e ⋅ H = s
T
T
T
T
s - syndrom – w przypadku transmisji bezbłędnej jest równy 0
Przykład: kod Hamminga (7,4)
⎡1
⎢0
P=⎢
⎢1
⎢
⎣1
1
1
1
0
0⎤
⎥
1⎥
1⎥
⎥
1⎦
⎡1
⎢0
G=⎢
⎢1
⎢
⎣1
1
1
1
0
0
1
1
1
1
0
0
0
0
1
0
0
0
0
1
0
0⎤
⎥
0⎥
0⎥
⎥
1⎦
m
c
Waga
kodu
m
c
Waga
kodu
0000
0000000
0
1000
1101000
3
0001
1010001
3
1001
0111001
4
0010
1110010
4
1010
0011010
3
0011
0100011
3
1011
1001011
4
0100
0110100
3
1100
1011100
4
0101
1100101
4
1101
0001101
3
0110
1000110
3
1110
0101110
4
0111
0010111
4
1111
1111111
7
dMIN = 3,
w = 2,
t=1
Macierz kontroli parzystości H
⎡1 0 0 1 0 1 1⎤
⎥
⎢
H = ⎢0 1 0 1 1 1 0⎥
⎢⎣0 0 1 0 1 1 1⎥⎦
Rozkład błędów
syndrom
0000000
000
1000000
100
0100000
010
0010000
001
kolumny
0001000
110
0000100
011
macierzy H
0000010
111
0000001
101
kolejne