Kodowanie_kanalowe_w..

Download Report

Transcript Kodowanie_kanalowe_w..

Kodowanie kanałowe
Dominik Rutkowski
Politechnika Gdańska
Wydział Elektroniki, Telekomunikacji i Informatyki
Katedra Systemów i Sieci
Radiokomunikacyjnych
13. Optymalizacja dekodowania
Przy budowie dekodera naturalne jest dążenie do zastosowania takiej reguły dekodowania,
która zapewniałaby możliwie jak najwyższą jego jakość. Oczywiście jakość reguły
dekodowania można obiektywnie oceniać, jeśli sprecyzujemy kryterium jakości. Możemy
je definiować w dwóch etapach. Najpierw określimy funkcję strat o postaci
1, dla i  j
  * 
(44)
Rs  si , s  s j   
0, dla i  j
a następnie jako kryterium jakości reguły dekodowania s   przyjmiemy ryzyko średnie
 
(45)
r  ER S , S


mające sens średniej statystycznej straty w zbiorze ciągów nadawanych S i w zbiorze
decyzji S * o tych ciągach w odbiorniku. Zatem
L
L
L
L
   
   
  * 
(46)
r   Rs  si , s  s j P S  si , S  s j  P S  si , S  s j  Pw
i 1

j 1

i 1
j i


gdzie Pw oznacza prawdopodobieństwo błędnej decyzji o ciągu nadanym
normalizacyjnym


   
P
S
  si , S  s j  1
L
i 1
D.Rutkowski
L
j 1
si
przy warunku
(47)
1/KK
Przy powyższym sformułowaniu kryterium jakości będziemy chcieli
znaleźć taką regułę dekodowania, która zapewni minimum ryzyka
średniego. Jak wynika ze wzoru (46), jest to prawdopodobieństwo błędnej
decyzji, a więc minimum ryzyka oznacza minimum prawdopodobieństwa
błędnej decyzji.
Wzór (46) możemy zapisać w równoważnej postaci

   
Pw  1  Po  1   P S  si , S  si
L
i 1

(48)
gdzie Po   PS  si , S  si  jest prawdopodobieństwem poprawnej decyzji.
L


i 1
Stąd wnioskujemy, że minimum prawdopodobieństwa błędnej decyzji jest
równoważne maksimum prawdopodobieństwa poprawnej decyzji.
Wykorzystując wzór na prawdopodobieństwo warunkowe i
prawdopodobieństwa a priori nadawanych wiadomości, mamy
L


r  Pw  1   P S  si S  si P S  si
i 1
D.Rutkowski


(49)
2/KK

   
Występujące we wzorze (49) prawdopodobieństwo P S  si S  si

jest
prawdopodobieństwem warunkowym poprawnej decyzji o nadanej wiadomości. Zatem suma po prawej stronie wzoru (49) jest średnim
prawdopodobieństwem poprawnej decyzji, a więc całe wyrażenie po prawej
stronie wzoru (49) jest średnim prawdopodobieństwem podjęcia błędnej
decyzji.

 
W odbiorniku dysponujemy jednak tylko ciągiem odebranym y i decyzja s   y 
o ciągu nadanym jest podejmowana wyłącznie na podstawie znajomości y .
Aby pokazać, jaka jest teraz optymalna reguła decyzyjna, przekształćmy wzór
na ryzyko średnie, wprowadzając do rozważań ryzyko średnie warunkowe
 


 
  
  
r  E R S , S  ER S , s Y   E E
  R S , s  y


Y S y

(50)
gdzie EY oznacza uśrednianie w zbiorze wszystkich możliwych ciągów
odbieranych, a SE
jest uśrednianiem po zbiorze ciągów nadawanych, gdy
 
y
ustalony jest ciąg odebrany.
D.Rutkowski
3/KK
  
Występująca we wzorze (50) średnia strata warunkowa E
  R S , s  y  nosi nazwę ryzyka
S y
  
średniego warunkowego i oznaczamy ją przez r s   y , y . Poszukiwanie optymalnej
reguły decyzyjnej równoważne jest więc poszukiwaniu reguły minimalizującej ryzyko
średnie warunkowe, tj. minimalizującej średnią stratę warunkową związaną z decyzją
s   y  o nadanym ciągu kodowym, przy warunku że znany jest ciąg odebrany y .
W omawianym przypadku ryzyko warunkowe wyraża się wzorem
L
   
  
  
r s  y , y    R S  si , s   y  PS  si y 
(51)




i 1
gdzie PS  si y  jest prawdopodobieństwem warunkowym nadania ciągu si , gdy został
odebrany ciąg y .
Wyrażenie PS  si y  po prawej stronie wzoru (51) możemy przekształcić,
wykorzystując wzór Bayesa w następujący
sposób
 
 
   P y S  si PS  si 
 
(52)
PS  si y  

cP
y
S  si

P y 




gdzie c jest stałą, jeśli przyjmiemy, że wszystkie ciągi nadawane mają to samo
prawdopodobieństwo pojawienia się, tj.
 
1
(53)
P S  si  
L
D.Rutkowski
4/KK
Wzór (51) przy uczynionych założeniach możemy teraz zapisać w postaci
L
  


r s  y , y    cP y si   c1  P y sm 
(54)
i 1
  
gdzie s *  y   sm jest decyzją poprawną, dla której strata jest równa zero.
Oznacza to, że optymalną regułą decyzyjną będzie reguła maksymalizująca
prawdopodobieństwo warunkowe P y sm , tj. dekoder podejmie decyzję s   sm , jeśli
 
 
 PY  y si   PY  y sm 
im
(55)
Wzór (55) oznacza, że dekoder wybiera taki ciąg jako ciąg nadany, dla którego
prawdopodobieństwo warunkowe ciągu odebranego osiąga maksimum.
 
PY  y si , i  1,2,, L , nazywa się w związku z tym funkcjami
Funkcje
wiarygodności, a regułę określoną wzorem (55) regułą największej wiarygodności.
Otrzymany wynik należy interpretować jako zapis intuicyjnie zrozumiałego podejścia do
omawianego zagadnienia, które oparte jest na zdrowym rozsądku przy podejmowaniu
decyzji, gdy dostępna jest pełna informacja statystyczna wpływająca na decyzje.
Pokażemy teraz, że reguła największej wiarygodności (ang. maximum likelihood rule ML lub ang. maximum likelihood sequence estimation - MLSE) jest dla symetrycznego i
bezpamięciowego kanału binarnego równoważna regule najmniejszej odległości

  
Hamminga między ciągiem odebranym y a decyzją s   y   sm .
D.Rutkowski
5/KK

Załóżmy, że y jest ciągiem odebranym na wyjściu symetrycznego i bezpamięciowego

kanału binarnego o prawdopodobieństwie błędu elementarnego p, a si jest ciągiem
kodowym nadanym, przy czym oba ciągi różnią się na d i pozycjach. Wówczas funkcja
wiarygodności przyjmuje postać
 
nd
P Y  y si  p d 1  p 
(56)


i
i
gdzie n jest długością obu ciągów.
Logarytmując obie strony wzoru (56) otrzymamy


 
1  p 
(57)
log P Y  y si   d i log 
  nlog 1  p 
 p 
Drugi składnik po prawej stronie wyrażenia (57) jest stały. Zatem dla p  12 dostaniemy
 
log P Y  y si  adi  b
(58)


gdzie a i b są stałymi dodatnimi.

  
Wybierając decyzję s   y   sm , taką że odległość Hamminga ciągu sm od ciągu

odebranego y jest minimalna, dostaniemy maksimum funkcji wiarygodności. Widzimy

więc, że minimalna odległość Hamminga między ciągiem odebranym y i decyzją
  
dekodera o ciągu nadanym s   y   sm określa optymalną regułę dekodowania.
D.Rutkowski
6/KK
log P
0
1
2
3
4
5
6
7
8
di
-b
Rys.12. Logarytm funkcji wiarygodności dla kanału binarnego symetrycznego (KBS)
D.Rutkowski
7/KK
14. Kody cykliczne
Ważną w praktyce podklasą kodów liniowych są kody ilorazowe, w których istnieje
możliwość powiązania ciągów informacyjnych i ciągów kodowych z wielomianami
odpowiednich stopni o współczynnikach binarnych, a kodowanie oraz dekodowanie
można opisywać algebraicznie jako mnożenie i dzielenie wielomianów w oparciu o
operacje modulo 2, natomiast techniczne wykonywanie mnożenia i dzielenia można
zrealizować przy zastosowaniu rejestrów przesuwnych ze sprzężeniem zwrotnym.
Do szczególnie rozpowszechnionych w praktyce kodów ilorazowych należą kody
cykliczne, w których
 zakłada się, że ciąg powstały przez cykliczne przesunięcie
ciągu kodowego s o i pozycji w prawo, i=1,2,,n-1, jest również ciągiem
kodowym.

s
Jeżeli więc ciągowi  s1 , s2 ,, sn  przyporządkujemy wielomian
su   s1  s2u  s3u 2    snu n1
(59)
to cykliczna właściwość kodu ujawnia się w tym, że reszta s i  u z ilorazu
u i su 
s i  u 
(60)
 f u   n
un 1
u 1
jest również wielomianem ciągu kodowego, przy czym f u jest częścią całkowitą
ilorazu.
D.Rutkowski
8/KK
Możemy to wykazać. W tym celu zapiszemy wzór (60) w postaci
u i su   f u u n  1  s i  u 
lub też w formie
s i  u   u i su modulou n  1
(61)
(62)
Wykażemy teraz słuszność wzoru (62). Dokonajmy najpierw przesunięcia ciągu
s o jedną pozycję w prawo. Otrzymamy
usu   s1u  s2u 2    snu n
(63)
Dodając i odejmując modulo 2 składnik sn po prawej stronie wzoru (63),
dostaniemy
usu   sn  s1u  s2u 2    sn1u n1  snu n  sn  s (1) u   u n  1sn

(64)
 
s
1
u 
gdzie s 1 u  jest wielomianem odpowiadającym cyklicznemu przesunięciu ciągu
s o 1 pozycję w prawo. Ponieważ wielomian s 1 u  jest co najwyżej stopnia (n1), więc nie jest podzielny przez u n  1. Zatem wielomian odpowiadający reszcie
z dzielenia wielomianu us(u) przez u n  1 może być zapisany wzorem
s 1 u   usu modulou n  1
(65)
D.Rutkowski
9/KK
Ciąg s 1 odpowiadający wielomianowi s 1 u  jest również ciągiem
kodowym zgodnie z założeniem.
Stosując indukcję matematyczną możemy wykazać, że wielomian
odpowiadający cyklicznemu przesunięciu ciągu s o i pozycji w prawo daje
się wyrazić wzorem
(66)
s i  u   u i su modulo u n  1

Wielomianowi temu odpowiada ciąg s i   sni 1 , sni 2 ,, sn , s1 , s2 ,, sni ,
który jest ciągiem kodowym zgodnie z założeniem.
Mówiąc inaczej, wielomian reprezentujący resztę z dzielenia wielomianu
u i s u  przez u n  1 jest także wielomianem ciągu kodowego kodu
cyklicznego, tzn.
u i su 
s i  u 
 f u   n
n
u 1
u 1
gdzie f(u) jest częścią całkowitą ilorazu.
D.Rutkowski
(67)
10/KK
Przykład 11

Przedstawić ciąg kodowy s  1101 w formie wielomianowej i znaleźć jego przesunięcie
cykliczne o 3 pozycje w prawo zgodnie ze wzorem i odręcznie.
Rozwiązanie
Wielomian rozważanego ciągu kodowego ma postać
su   1  u  u 3
Oczywiście w tym przypadku mnożąc s(u) przez u3, co odpowiada przesunięciu ciągu
kodowego o trzy pozycje w prawo, otrzymamy
u 3 su   u 3  u 4  u 6
Dzieląc następnie u 3 su  przez u 4  1 mamy
u2 1
u 6  u 4  u 3 
u6
: u 4  1
+ u2
u4  u3  u2
u4
u u
3
2
1
+ 1 } reszta z dzielenia
Zatem reszta z dzielenia zapisana w kolejności składników o rosnących wykładnikach ma
postać 1  u 2  u 3 lub inaczej ciąg kodowy ją reprezentujący s 3  1011 stanowi
przesunięcie cykliczne ciągu s o 3 pozycje w prawo, co nietrudno sprawdzić odręcznie.
D.Rutkowski
11/KK
Wiemy, że generacja ciągów kodowych kodu blokowego odbywa się za pomocą macierzy
generującej. Jeśli więc założymy, że generacja ciągów kodowych kodu cyklicznego ma
odbywać się za pomocą wielomianu generującego, to wielomian ciągu kodowego będzie
wyrażał się wzorem
s u   xu g u 
(68)
gdzie wielomian generujący g u  ma ogólnie postać
g u   g 0  g1u 
 g nk u nk
(69)
 xk u k 1
(70)
przy czym g 0  g nk  1,
natomiast
xu   x1  x2u 
Oznacza to, że wielomian generujący jest stopnia równego nadmiarowości kodu
i wielomian ciągu kodowego kodu cyklicznego jest podzielny przez gu bez reszty.
Ponieważ każde cykliczne przesunięcie ciągu kodowego kodu cyklicznego jest ciągiem
kodowym tego kodu, więc z wzoru (66) wynika, że wielomian generujący musi być
podzielnikiem wielomianu u n  1, czyli wielomian u n  1 musi być rozkładalny na 2
czynniki, z których jeden jest wielomianem generującym gu , tzn.
u n 1  g u hu 
D.Rutkowski
(71)
12/KK
Przykład 12
Znaleźć wielomian generujący i ciągi kodowe kodu cyklicznego, jeśli n = 4.
Rozwiązanie
4
Aby znaleźć wielomian generujący, należy przedstawić wielomian u  1 w postaci iloczynu
dwóch innych wielomianów. Mamy więc
u 4  1  g u hu   u 2  1u 2  1
Zatem stosując wielomian generujący g u   u 2  1 o stopniu n  k  2 możemy otrzymać kod
cykliczny (4,2).
Wielomiany ciągów kodowych tego kodu dla zbioru wiadomości {(00), (10), (01), (11)} mają
postać
s1 u   0
s2 u   1u 2  1  1  u 2
s3 u   u u 2  1  u  u 3
s4 u   1  u u 2  1  1  u  u 2  u 3
a więc otrzymujemy następujące ciągi kodowe
s1  0000
s2  1010
s3  0101
D.Rutkowski
s4  1111
13/KK
Przykład 13
Określić kody cykliczne, które można zbudować w oparciu o wielomian
u 7  1.
Rozwiązanie
Wielomian ten możemy przedstawić w postaci
u 7  1  1  u  u 3 1  u  u 2  u 4 
Zatem wykorzystując jako wielomian generujący funkcję g1 u   1  u  u 3
możemy generować kod cykliczny (7,4) bądź też stosując funkcję
g 2 u   1  u  u 2  u 4 jako wielomian generujący, dostaniemy kod cykliczny
(7,3).
D.Rutkowski
14/KK
15. Kodowanie cykliczne w formie systematycznej
Kodowanie w formie systematycznej zmniejsza w dużym stopniu złożoność przetwarzania
związaną z zabezpieczeniem kodowym w nadajniku oraz złożoność przetwarzania niezbędną do odtwarzania nadanej wiadomości w odbiorniku. Dla uzyskania tej formy kodowania
warto zauważyć, że wielomian reprezentujący ciąg kodowy musi mieć postać
su   r u   u nk xu 
(72)
gdzie r u  jest wielomianem ciągu kontrolnego o stopniu co najwyżej n  k  1, a drugi
składnik po prawej stronie wzoru (72) reprezentuje wielomian wiadomości przesuniętej o
n  k pozycji na prawo zgodnie z formatem kodu cyklicznego.
Widzimy więc, że w celu zakodowania wiadomości za pomocą kodu cyklicznego w formie
systematycznej musimy najpierw pomnożyć xu  przez u n k . Dostaniemy wówczas
u nk xu   x1u nk  x2u nk 1 
 xk u n1
(73)
Jeśli następnie podzielimy wyrażenie (73) przez wielomian generujący g(u), to otrzymamy
u nk xu 
r u 
 f u  
g u 
g u 
(74)
gdzie f(u) jest częścią całkowitą ilorazu, a r(u) jest resztą, przy czym
r u   r0  r1u 
D.Rutkowski
 rnk 1u nk 1
(75)
15/KK
Wzór (74) możemy też zapisać w formie
u nk xu   f u g u   r u 
(76)
Dodając r(u) do obu stron wzoru (76) dostaniemy
r u   u nk xu   f u g u   su 
(77)
Lewa strona wzoru (77) jest oczywiście wielomianem ciągu kodowego, gdyż jest podzielna
przez g(u) bez reszty. Możemy ten wielomian zapisać w postaci
r u   u nk xu   r0  r1u 
 rnk 1u nk 1  x1u nk  x2u nk 1 
 xk u n1
(78)
Wielomianowi (78) odpowiada ciąg kodowy

s  (r0 , r1 ,, rn k 1 , x1 , x2 ,, xk )
 
( n  k ) bitów
kontrolnyc
h
D.Rutkowski
(79)
k bitów
wiadomosci
16/KK
Przykład 14
Stosując wielomian generujący g u   1  u  u 3 znaleźć ciąg kodowy systematycznego kodu
cyklicznego (7,4) dla wiadomości x  1011 .
Rozwiązanie
Na podstawie założeń mamy
xu   1  u 2  u 3 , n=7, k=4, n-k=3
u nk xu   u 3 1  u 2  u 3   u 3  u 5  u 6
n k
Dzieląc u xu  przez g(u) dostaniemy
u 3  u 5  u 6  1  u  u 2  u 3 1  u  u 3   1
f u 
Zatem
g u 
r u 
su   r u   u nk xu   1  u 3  u 5  u 6
Wynika stąd, że ciąg kodowy s ma postać

s  (1001011)
ciąg wiadomość
kontrolny
D.Rutkowski
17/KK
16. Rejestr przesuwny ze sprzężeniem zwrotnym
jako układ do dzielenia wielomianów
Z dotychczasowych rozważań wynika, że cykliczne przesunięcie ciągu
kodowego i kodowanie wiadomości jest równoważne dzieleniu odpowiednich
wielomianów. Tego rodzaju operacja może być wykonana za pomocą układu do
dzielenia wielomianów w postaci rejestru przesuwnego ze sprzężeniem
zwrotnym.
Jeśli przyjmiemy, że wielomiany, których iloraz chcemy znaleźć, mają postać
pu   p0  p1u 
g u   g 0  g1u 
 pm u m
(81)
 g nk u nk
(82)
przy czym m  n  k , to układ do dzielenia tych wielomianów jest pokazany na
rys.13.
D.Rutkowski
18/KK
...
Dzielna
p(u)
-g0
-g1
-g2
+
+
+
Iloraz
f(u)
-gn-k-1
...
gn-k-1
+
Rys.13. Układ do dzielenia wielomianów p(u)/g(u)
pu 
r u 
 f u  
g u 
g u 
Jeśli więc
to współczynniki f i , i  0,1,
(83)
, m  n  k  części całkowitej ilorazu f(u) o postaci
f u   f 0  f1u 
 f mnk u mnk 
(84)
będą pojawiały się kolejno na wyjściu zgodnie z rytmem impulsów zegarowych,
natomiast po zakończeniu dzielenia w poszczególnych stopniach rejestru będziemy
mogli odczytać współczynniki ri , i  0,1,, n  k  1 reszty r(u) w formie
r u   r0  r1u 
 rnk 1u nk 1
(85)
Można to wykazać, jeśli założymy, że w momencie początkowym wszystkie stopnie
rejestru zawierają zerowe wartości binarne.
D.Rutkowski
19/KK
Początkowe n  k impulsów zegarowych powoduje wprowadzenie do
rejestru n  k współczynników przy składnikach funkcji p u  o
najwyższych potęgach, tzn. pm , pm1 , , pmnk 1 . Po kolejnym impulsie
zegarowym pojawia się na wyjściu wartości g n1k pm , tzn. współczynnik
przy składniku części całkowitej ilorazu o najwyższej potędze. Przy
uczynionych założeniach współczynnik ten wynosi pm .
Dla każdego współczynnika f i przy odpowiednim składniku części
całkowitej ilorazu, wielomian f i g u  jest odejmowany od dzielnika.
Odejmowanie to jest dokonywane za pośrednictwem sprzężeń zwrotnych
pokazanych na rysunku.
Po m  1 impulsach zegarowych wszystkie współczynniki f i przy
poszczególnych składnikach części całkowitej ilorazu f u  będą już
wyprowadzone na wyjście układu, a reszta r u  pozostanie w rejestrze.
D.Rutkowski
20/KK
Przykład 15
Stosując rejestr przesuwny ze sprzężeniem zwrotnym podzielić wielomian
pu   u 3  u 5  u 6  p  0001011 przez wielomian g u   1  u  u 3 . Znaleźć
iloraz i resztę oraz porównać wynik dzielenia za pomocą układu z
dzieleniem odręcznym.
Rozwiązanie
Układ dzielący przyjmuje postać
Wejście
Wyjście
+
+
p  0001011
Rys.14. Schemat układu dzielącego w rozważanym przykładzie
D.Rutkowski
21/KK
Na początku poszczególne stopnie rejestru są zapełnione binarnymi zerami.
Po kolejnych impulsach zegarowych otrzymujemy następujące wyniki
Ciąg wejściowy
Numer impulsu zegarowego
Zawartość rejestru
Wyjście
0001011
0
000

000101
1
100
0
00010
2
110
0
0001
3
011
0
000
4
011
1 ( f 3)
00
5
111
1 ( f 2)
0
6
101
1 ( f 1)
7
100
1 ( f 0)

Widzimy, że począwszy od 4-go impulsu zegarowego współczynniki
f i , i  0,1,2,3 pojawiają się kolejno na wyjściu i przyjmują wartości:
f 3  1, f 2  1, f1  1, f 0  1, a więc wielomian f u  wyraża się wzorem
f u   1  u  u 2  u 3
D.Rutkowski
22/KK
Ciąg współczynników wielomianu r u  ma postać r  100, a więc wielomian r u   1 .
W rezultacie dzielenie układowe daje następujący wynik
u3  u5  u6
1
2
3

1

u

u

u

1 u  u3
1 u  u3
Wykonując dzielenie odręczne otrzymamy
u3  u2  u 1
u6  u5
 u3
: u 3  u  1
 (wielomian sprzężenia zwrotnego po 4 - tym impulsie zegarowym)
u6 + u4 + u3
u5  u4
u5
 (wielomian zawartości rejestru po 4 - tym impulsie zegarowym)
+ u 3 + u 2  (wielomian sprzężnia zwrotnego po 5 - tym impulsie zegarowym)
u 4  u 3 + u 2  (wielomian zawartości rejestru po 5 - tym impulsie zegarowym)
u4
+ u 2 + u  (wielomian sprzężenia zwrotnego po 6 - tym impulsie zegarowym)
u3
+ u  (wielomian zawartości rejestru po 6 - tym impulsie zegarowym)
u3
+ u + 1  (wielomian sprzężenia zwrotnego po 7 - tym impulsie zegarowym)
1  (wielomian zawartości rejestru po 7 - tym impulsie zegarowym (reszta))
Dostajemy więc identyczny wynik, jak przy dzieleniu układowym
D.Rutkowski
23/KK
17. Procedura systematycznego kodowania
za pomocą (n-k)-stopniowego rejestru przesuwnego
ze sprzężeniem zwrotnym
Jak pamiętamy, kodowanie w formie systematycznej wymaga
wyznaczenia ciągu kontrolnego tzn. obliczenia wyrażenia u n k xu 
modulo g(u), a więc podzielenia wielomianu reprezentującego
wiadomość przesuniętą o (n-k) pozycji w prawo przez wielomian
generujący g(u). Ciąg kontrolny jest resztą z dzielenia zawartą w
rejestrze przesuwnym. Operację kodowania możemy zrealizować
przez bezpośrednie zastosowanie tego postępowania. Możemy ją
też przyspieszyć, jeśli zauważymy, że dla dowolnego wielomianu
generującego g 0  g n k  1, a ciąg reprezentujący wiadomość
podamy bezpośrednio na wyjście rejestru przesuwnego i poprzez
sprzężenie zwrotne zrealizujemy dzielenie xu  g u  oraz
wprowadzimy do kodera dwa przełączniki trybu pracy, jak
pokazano to na rys.15.
D.Rutkowski
24/KK
2
Przełącznik 1
...
1
g1
r0
+
gn-k-1
r1
...
+
rn-k-1
+
2
(n-k) stopni
x(u)
1
Przełącznik 2

r

x
Wyjście do
modulatora
Rejestr wyjściowy, w którym zostanie
uformowany ciąg kodowy
 
s  r , x
Rys.15. Ogólny schemat kodera
D.Rutkowski
25/KK
Procedura kodowania według rys.15 będzie realizowana w następujących
krokach:
1. Przełącznik 1 jest w pozycji 1 podczas początkowych k impulsów
zegarowych, a więc wiadomość zostaje w pełni wprowadzona do n  k stopniowego rejestru i jest realizowane dzielenie wielomianu u n k xu  przez
g u 

2. Przełącznik 2 jest w pozycji 1, dzięki czemu wiadomość x wprowadzana do
rejestru jest równocześnie bezpośrednio przekazywana na wyjście do
  
rejestru, w którym jest formowany ciąg kodowy s  r , x 
3. Po k impulsach zegarowych przełączniki 1 oraz 2 zostają ustawione w
pozycji 2
4. Kolejne n  k  impulsy zegarowe umożliwiają wyprowadzenie do rejestru
wyjściowego reszty z dzielenia zawartej w rejestrze kodera, która jest

poszukiwanym ciągiem kontrolnym r
5. Całkowita liczba impulsów zegarowych wynosi n i w rejestrze wyjściowym
  
zostaje umieszczony ciąg kodowy s  r , x .
D.Rutkowski
26/KK
Przykład 16
Stosując rejestr przesuwny ze sprzężeniem zwrotnym znaleźć ciąg kodowy kodu (7,4), jeśli

wielomian g u   1  u  u 3 , a wiadomość x  1011 .
Rozwiązanie
xu   1  u 2  u 3
u n  k xu   u 3 xu   u 3  u 5  u 6
u n  k xu   f u g u   r u 
r u   u 3  u 5  u 6  modulo1  u  u 3   1
Schemat kodera jest pokazany na rys.16, a poszczególne kroki operacji kodowania są
następujące:
Ciąg wejściowy
1011
101
10
1

D.Rutkowski
Numer impulsu zegarowego
Zawartość rejestru
Wyjście
0
1
2
3
4
000
110
101
100
100

1
1
0
1
27/KK
2
Przełącznik 1
1
+
+
2
Przełącznik 2
Wyjście
s  (1001011)
x  (1011)
1
Rys.16. Schemat kodera kodu (7,4) dla wielomianu generującego g u   1  u  u 3
D.Rutkowski
28/KK
18. Detekcja i/lub korekcja błędów za pomocą
rejestru przesuwnego (n-k)-stopniowego
Szumy i zakłócenia w kanale powodują błędy w ciągu kodowym s , w rezultacie czego ciąg
odebrany y może się różnić od s . Ogólnie słuszne są następujące zależności
su   xu g u 
(86)
yu   su   eu 
(87)

gdzie eu  jest wielomianem reprezentującym wektor błędu e . Oczywiście dekoder testuje

ciąg y , by sprawdzić, czy jest on ciągiem kodowym, czy też nie jest, a więc sprawdza, czy
wielomian yu  jest podzielny przez g u  bez reszty bądź też nie jest.
Oznacza to, że dekoder poszukuje syndromu wielomianu y(u). Syndrom r(u) jest to reszta z
dzielenia y u  przez g u , tzn.
yu   f u g u   r u 
(88)
gdzie r u  jest wielomianem co najwyżej stopnia n  k  1. Z wzorów (86)(88) wynika, że
eu   xu   f u g u   r u 
(89)
Widzimy więc, że syndrom r u  otrzymany jako reszta z dzielenia yu  przez g u  jest
taki sam,jak reszta otrzymana z dzielenia eu  przez g u  . Oznacza to, że syndrom
wielomianu y u  zawiera informację niezbędną do detekcji i/lub korekcji błędów.
D.Rutkowski
29/KK
Przykład 17

Znaleźć syndrom ciągu odebranego y  1001011 , jeśli koder ma schemat pokazany
w przykładzie 16.
Rozwiązanie
Obliczanie syndromu może być zrealizowane za pomocą rejestru przesuwnego pokazanego
na rys.17.
2 Przełącznik 1
1
2
Ciąg
odebrany
+
+
Przełącznik 2
Wyjście
1
y = ( 1001011)
Rys.17. Schemat układu do obliczania syndromu ciągu odebranego w przypadku kodu (7,4)
3
i wielomianu generującego g u   1  u  u
W układzie tym przełącznik 1 jest w pozycji 1, a przełącznik 2 - w pozycji 2. Ciąg odebrany
zostaje wprowadzony do rejestru, przy zerowych wartościach binarnych w poszczególnych
jego stopniach w momencie początkowym.
D.Rutkowski
30/KK

Zawartość rejestru po wprowadzeniu całego ciągu y stanowi syndrom. Wówczas przełącznik 1
zostaje ustawiony w pozycji 2, a przełącznik 2 - w pozycji 1 i syndrom może być odczytany.
Kolejne kroki podczas dekodowania ilustruje następująca tabela
Ciąg wejściowy
Numer impulsu zegarowego
Zawartość rejestru
1001011
0
000
100101
1
100
10010
2
110
1001
3
011
100
4
011
10
5
111
1
6
101

7
000
} syndrom
Jeśli syndrom jest wektorem złożonym z samych zer, to ciąg odebrany y zostaje uznany jako
ciąg kodowy. Gdy syndrom zawiera choćby tylko jedną binarną jedynkę, to ciąg odebrany
zawiera błąd lub błędy, które mogą być skorygowane przez dodanie modulo 2 wektora błędów
wskazanego przez syndrom do ciągu odebranego, jeśli oczywiście liczba tych błędów nie
przekracza zdolności korekcyjnych zastosowanego kodu. Do realizacji korekcji konieczna jest
znajomość odwzorowań wszystkich postaci syndromu w odpowiednie postacie wektora błędów.
W innym przypadku odbiornik może zażądać retransmisji.
D.Rutkowski
31/KK
19. Kody Hamminga
19.1. Format ciągów kodowych
Jak pamiętamy, macierz testów H jest macierzą n  k   n i dla ustalonej
liczby n  k  pozycji kontrolnych w ciągu kodowym maksymalna
liczba n kolumn w tej macierzy dla kodu korygującego pojedynczy błąd
wynosi 2nk  1. Inaczej mówiąc, długość n ciągu kodowego dla kodu
korygującego pojedynczy błąd spełnia nierówność
(90)
n  2 n k  1
przy czym, gdy
(91)
n  2 n k  1
mamy do czynienia z tzw. kodem doskonałym.
Def. Kod korygujący t błędów zwany jest kodem doskonałym, jeśli w
tablicy standardowej znajdują się wszystkie postacie wektorów
błędu zawierające t lub mniej błędów i nie ma w niej żadnych
innych postaci wektorów błędu.
D.Rutkowski
32/KK
Kod doskonały jest więc w stanie korygować wszystkie ciągi odebrane
w przestrzeni Y, znajdujące się wewnątrz lub na powierzchni hiperkuli
w odległości Hamminga równej t i nie jest w stanie korygować żadnych
ciągów odebranych znajdujących się w odległości Hamminga większej
niż t.
Wzór (91) określa więc kody doskonałe, które korygują pojedynczy
błąd. Takie kody zwane są kodami Hamminga. Przykładami kodów
Hamminga są następujące kody: (3, 1), (7, 4), (15, 11), (31, 26),
(63, 57), ... .
Dla tych kodów d min  3 i są one w stanie korygować wszystkie
pojedyncze błędy lub wykrywać wszystkie kombinacje 2 lub mniej
błędów w odebranym bloku. Charakterystyczną ich cechą jest
możliwość formowania syndromu w formie liczby binarnej,
wskazującej numer pozycji w ciągu, na której wystąpił błąd.
D.Rutkowski
33/KK
Przykład 18
Rozmieścić poszczególne elementy ciągu kontrolnego (bity parzystości) na
odpowiednio dobranych pozycjach w ciągu kodowym kodu Hamminga (7,4), aby
liczba binarna określana przez ciąg kontrolny wskazywała położenie błędu w ciągu
kodowym.
Rozwiązanie
W rozważanym przypadku n  k  3 , a więc liczba niezerowych postaci wektora błędu
wynosi 23  1  7 . Zatem położeniu błędu można przyporządkować następujące
wartości binarne ciągu kontrolnego:
Położenie błędu w ciągu kodowym
1
2
3
4
5
6
7
Ciąg kontrolny p
001
010
011
100
101
110
111
I zespół kontrolny; II zespół kontrolny; III zespół kontrolny
D.Rutkowski
34/KK
Aby rozsądnie rozmieścić elementy ciągu kontrolnego w ciągu kodowym,
najlepiej jest utworzyć 3 niezależne grupy pozycji ciągu kodowego (tzw.
zespoły kontrolne), gdyż mamy 3 bity parzystości, przy czym każdą pozycję
ciągu kontrolnego jest najwygodniej przydzielić do tego zespołu kontrolnego, w
którym występuje tylko jedna jedynka w ciągu kontrolnym. Dzięki takiemu
przyporządkowaniu
otrzymujemy
wzajemną
niezależność ciągów
kontrolnych zawierających pozycje kontrolne. Oczywiście w każdym
zespole kontrolnym chcemy uzyskać parzystą liczbę wartości logicznych 1.
Pozostałe pozycje ciągu kodowego będą należały do 2 lub 3 zespołów
kontrolnych, zgodnie z liczbą jedynek w ciągu kontrolnym im
przyporządkowanych. Jeśli dla przykładu weźmiemy położenie błędu na
pozycji 5 w ciągu kodowym, to ciąg kontrolny powinien przyjąć postać (101), a
więc pozycja 5 powinna należeć do I i III zespołu kontrolnego.
Przydzielając w podobny sposób poszczególne pozycje ciągu kodowego trzem
możliwym zespołom kontrolnym, możemy określić zbiory pozycji ciągu
kodowego przyporządkowane określonym zespołom kontrolnym.
D.Rutkowski
35/KK
W rezultacie otrzymamy :
Zespoły kontrolne
I
II
III
Numery pozycji ciągu kodowego
4, 5, 6, 7
2, 3, 6, 7
1, 3, 5, 7
Jak wynika z określenia zespołów kontrolnych, poszczególne bity ciągu
kontrolnego powinny być rozmieszczane na pozycjach 1, 2 i 4 w ciągu
kodowym. Oznacza to, że format ciągu kodowego jest następujący:

s   p1 , p2 , x1 , p3 , x2 , x3 , x4 


gdzie x   x1 , x2 , x3 , x4  oznacza ciąg informacyjny, a p   p1 , p2 , p3  - ciąg
kontrolny.
D.Rutkowski
36/KK
19.2. Prawdopodobieństwo błędu dekodowania
Znajdźmy teraz prawdopodobieństwo błędnego dekodowania ciągów
kodowych kodów korekcyjnych Hamminga.
Możemy je łatwo wyznaczyć na podstawie warunkowego
prawdopodobieństwa bezbłędnego dekodowania korekcyjnego.
Prawdopodobieństwo to dane jest następującą zależnością

 
 

   
 
 
 
 
P S  sl S  sl  P d Y , sl   0 S  sl  P d Y , sl   1 S  sl 
 1  p   np1  p 
n 1
n
 
(92)

gdzie d  y, sl  jest odległością Hamminga ciągu odebranego y od ciągu
  
kodowego sl  s  xl .
Zatem prawdopodobieństwo błędnego dekodowania korekcyjnego może
być wyrażone zależnością




   
   
n
n 1
Pwk  P S  sl S  sl  1  P S  sl S  sl  1  1  p   np1  p 
(93)
Dla przykładu, jeśli p  105 i n  15 otrzymujemy Pwk  1,05 108 .
D.Rutkowski
37/KK
Oczywiście interesuje nas w praktyce to, ile razy zmaleje prawdopodobieństwo
błędnego odtwarzania wiadomości po zastosowaniu kodowania. W tym celu
musimy określić prawdopodobieństwo błędnego odtwarzania wiadomości, gdy
nie stosujemy zabezpieczenia kodowego.
Prawdopodobieństwo to możemy obliczyć ze wzoru
k
(94)
Pw  1  1  p
który dla p  1 przyjmuje postać
Zatem
Pw  kp
(95)
Pwk nn  1

p
Pw
2k
(96)
Pwk
 1 dla p  1, a więc prawdopodobieństwo
Pw
błędnego odtwarzania wiadomości jest mniejsze, gdy stosujemy kod
Hamminga, w porównaniu z przypadkiem gdy nie stosujemy zabezpieczenia
kodowego.
Nietrudno wykazać, że
D.Rutkowski
38/KK
Załóżmy teraz, że stosujemy kody Hamminga w cyfrowym systemie
telekomunikacyjnym, w którym jest wykorzystywana modulacja BPSK i kanał
z zakłóceniami gaussowskimi o gęstości mocy N 0 . W takim przypadku
prawdopodobieństwo błędu elementarnego wyraża się zależnością
 2 Ec 
(97)

p  Q
 N0 
gdzie E c jest energią sygnału elementarnego ciągu kodowego.
Wobec tego możemy znaleźć średnie prawdopodobieństwo błędu dekodowania
Pb  f  p  i porównać jakość różnych typów kodów blokowych, jak pokazano
to na rys.18.
Aby znaleźć średnie prawdopodobieństwo elementarnego błędu dekodowania
w funkcji Eb
wykorzystamy wzór
N0
Ec k Eb 2 n  k  1  n  k  Eb


N0 n N0
2nk 1
N0
D.Rutkowski
(98)
39/KK
Pb
Rys.18. Średnie prawdopodobieństwo
elementarnego błędu dekodowania
w funkcji prawdopodobieństwa
błędu elementarnego p w kanale
10-2
kod Hamminga (31,26) t = 1
kod Hamminga (15,11) t = 1
10-3
kod Hamminga (7,4) t = 1
10-4
rozszerzony kod Golaya (24,12) t =3
kod BCH (127,64) t =10
10-5
kod BCH (127,36) t =15
10-6
10-7
10-1
D.Rutkowski
10-2
10-3
10-4
p
40/KK
 pokazane na
Podstawiając (98) do (97) i (93) możemy otrzymać wykresy Pb  f  Eb

 N0 
rys.19.
Pb
10-2
Rys.19. Średnie
prawdopodobieństwo elementarnego
błędu dekodowania w funkcji Eb
bez kodowania
10-3
N0
dla koherentnej demodulacji BPSK i
kanału gaussowskiego
kod Hamminga (7,4), t = 1
kod Hamminga (15,11), t = 1
kod Hamminga (31,26), t = 1
10-4
rozszerzony kod Golaya (24,12), t =3
kod BCH (127,36), t =15
kod BCH (127,64), t =10
10-5
10-6
Eb
10-7
4
D.Rutkowski
5
6
7
8
9
10
11
N0
dB
41/KK
Przykład 19
Sygnał cyfrowy przy wykorzystaniu modulacji BFSK jest przesyłany przez
kanał gaussowski i w odbiorniku jest poddawany niekoherentnej detekcji.
Znaleźć średnie prawdopodobieństwo elementarnego błędu dekodowania,
jeśli stosowany jest kod Hamminga (7,4) i Eb
 20 .
N0
Rozwiązanie
k Eb
Ec

 11,43
N0 n N
0
Dla niekoherentnej detekcji BFSK mamy
1
E
  1,6 10  3
p  exp  c

2
N

0 
2
Zatem
n 1
Pb  p  p1  p  1,6 105
D.Rutkowski
42/KK
19.3. Zastosowanie rozszerzonego kodu Hamminga (8,4)
w systemie telegazety
Istnieje prosty sposób zwiększenia odporności na błędy w kodach
Hamminga. Wystarczy wprowadzić do ciągu kodowego jedną dodatkową
pozycję, która będzie zabezpieczała każdy pierwotny ciąg kodowy kodu
Hamminga przed błędami parzystości. Załóżmy, że pierwotny kod jest
kodem Hamminga (7,4) o formacie ciągu kodowego  p1 , p2 , x1 , p3 , x2 , x3 , x4 .
Jeśli dołączymy do tego ciągu dodatkowy bit parzystości p4 obejmujący
wszystkie jego pozycje, to nietrudno dowieść, że d min wzrośnie z 3 do 4. W
rezultacie nowy kod oznaczany jako (8,4) będzie miał zdolność korekcji 1
błędu, a ponadto zdolność detekcji 1 błędu, co wynika ze wzrostu zdolności
detekcyjnej o 1 w porównaniu z kodem (7,4). Taki kod nazywa się
rozszerzonym kodem Hamminga. Oczywiście omawiane rozszerzenie może
być stosowane w każdym kodzie Hamminga. Rozszerzony kod Hamminga
(8,4) jest wykorzystywany w angielskim systemie telegazety do
zabezpieczenia przed błędami numerów jej stron (do binarnego zapisu cyfr
dziesiętnych od 0 do 9 potrzeba 4 bitów). Wprawdzie omawiany kod
odznacza się znaczną redundancją (50%), lecz może być ona tolerowana,
gdyż żądania powtórnego przesłania tej samej strony są sporadyczne.
D.Rutkowski
43/KK
Aby uprościć budowę dekodera, poszczególne pozycje ciągu informacyjnego są
przeplatane z pozycjami kontrolnymi i format ciągu kodowego jest następujący:
 p1 , x1 , p2 , x2 , p3 , x3 , p4 , x4  , gdzie pozycja x 4 jest najbardziej znacząca w ciągu
informacyjnym, a cały ciąg informacyjny reprezentuje jedną pozycję dziesiętną numeru
strony (numeracja w systemie dwójkowo-dziesiętnym - BCD). Można wykazać, że
macierz testów dla omawianego kodu przyjmuje postać
0

0
H
1
1

1 0 1 1 1 0 0

1 1 1 0 0 0 1

1 0 0 0 1 0 1
1 1 1 1 1 1 1
(99)
tzn. syndrom i równocześnie ciąg kontrolny wyraża się wzorem
  
r  p  eHT
przy czym
r1  p1  0  0  0  0  e5  e6  e7  e8
r2  p 2  0  0  e3  e4  0  0  e7  e8
r3  p3  0  e2  0  e4  0  e6  0  e8
r4  p 4  e1  e2  e3  e4  e5  e6  e7  e8
D.Rutkowski
(100)
44/KK

Dla pojedynczego błędu r4  1, natomiast wektor r '  r1 , r2 , r3  wskazuje
pozycję błędu.
 
Dla dwóch błędów r4  0 , lecz wektor r '  0 , gdyż przynajmniej jedna z
pozycji r1 ,r2 lub r3 jest niezerowa, a więc ciąg odebrany mający dowolną
kombinację dwóch błędów może być zdyskwalifikowany, jeśli
zrealizujemy obliczanie zmiennej R (reject) określonej wzorem
R  r4 r1  r2  r3 
(101)
gdzie r4 oznacza negację r4 . Zmienna R przyjmuje wartość binarną R  1
dla dowolnych dwóch błędów w ciągu odebranym.
D.Rutkowski
45/KK
Schemat układu realizującego dekodowanie ciągu odebranego dla rozszerzonego kodu
Hamminga jest pokazany na rys.20,
Rys.20. Dekoder rozszerzonego kodu Hamminga (8,4)
p4
p1
x1
Pozycja
p2
ciągu
x
odebranego 2
x3
x4
p3
Tester
parzystości
r4
R
(dla R=1 ciąg
odebrany zostaje
zdyskwalifikowany)
x1
+
+
+
r1
+
+
r2
+
Wiadomość
skorygowana
+
+
D.Rutkowski
+
x3
+
+
x2
r3
x4
+
46/KK
a przykład wiadomości reprezentującej stronę 32 telegazety jest następujący
p1
x1
p2
x2
p3
x3
p4
x4
p1
x1
p2
x2
p3
x3
p4
x4
1
0
0
1
0
0
1
0
0
1
1
1
1
0
1
0
liczba j ednostek równa 2
liczba dziesiątek równa 3
Rys.21. Przykład wiadomości reprezentującej stronę 32 telegazety
D.Rutkowski
47/KK
20. Niektóre popularne kody cykliczne
20.1. Kod Golaya
Jest to kod (23,12), dla którego d min  7 , a więc zdolność korekcyjna wynosi t  3.
Wielomian generujący ma postać
g u   1  u  u 5  u 6  u 7  u 9  u11
(102)
W praktyce stosuje się tzw. rozszerzony kod Golaya (24,12) przez dołączenie jednego
dodatkowego bitu kontrolnego parzystości do całego ciągu 23 bitów.
Dzięki temu wartość d min wzrasta z 7 do 8 i otrzymujemy kod (24,12) o względnej
szybkości kodowania r  1 , który jest łatwiej zaimplementować niż kod (23,12). Kod
2
ten zapewnia znacznie lepsze zabezpieczenie przed błędami w porównaniu z kodami
Hamminga, lecz odbywa się to kosztem bardziej złożonego dekodowania i mniejszej
względnej szybkości kodowania (większego poszerzenia pasma kanału). Oczywiście
średnie prawdopodobieństwo błędnego dekodowania przypadające na 1 bit ciągu
kodowego wyraża się teraz wzorem
1 24  24  j
24 j
Pb   j  p 1  p 
24 j 4  j 
D.Rutkowski
(103)
48/KK
20.2. Kody BCH (Bose-Chaudhuri-Hocquenghem)
Jest to klasa kodów wysoce odpornych na błędy w kanale i umożliwiających w szerokim
zakresie dobór długości bloku n, zdolności korekcyjnych t i względnej szybkości kodowania
k . Kody BCH mogą być budowane przy następujących parametrach
n
n  2m  1
n  k  mt
d min  2t  1
(104)
gdzie m (m  3) i t mogą być dowolnymi liczbami całkowitymi.
Na rys.22 są przedstawione charakterystyki kilku kodów BCH.
Kody BCH są bardziej skuteczne w zabezpieczeniu przed błędami w kanale, niż wszystkie
inne kody blokowe przy długościach bloków rzędu kilkuset bitów.
W praktyce wielomiany generujące kodów BCH są stabelaryzowane dla długości bloków
od kilku do kilkuset bitów.
W tabeli 1 są podane w formie oktalnej współczynniki wielomianów generujących
najczęściej spotykanych w praktyce kodów BCH dla różnych wartości n, k oraz t.
Współczynniki te są uporządkowane w taki sposób, że po ich zamianie na postać binarną
ostatnia pozycja po prawej stronie odpowiada współczynnikowi g 0 wielomianu
generującego przy składniku zerowego stopnia, tj. g nk u   g nk u nk    g1u  g0 .
Badania kodów BCH pokazują, że zysk kodowania przy ustalonym n jest bliski
1 k 3 .
maksymalnej wartości w szerokim zakresie zmienności k
3
n
4
n
D.Rutkowski


49/KK
Pb
10
Rys.22. Średnie prawdopodobieństwo Pb
elementarnego błędu dekodowania w
-3
funkcji
10
-4
w przypadku koherentnego
Oznaczenia:
linia ciągła - dekodowanie twarde,
linia przerywana - dekodowanie miękkie
(63,35), t = 5
(127,63), t = 10
10-6
N0
odbioru sygnałów z modulacją BPSK i
kanału gaussowskiego
(31,15), t=3
10-5
Eb
(31,15), t = 3
(255,130), t = 18
10
-7
(511,249), t = 31
10-8
(1023,502), t = 58
10-9
10-10
D.Rutkowski
Eb
4
5
6
7
8
9
10
11
N0
dB
50/KK
Tabela 1 Parametry kodów BCH
n
k
t
Współczynniki wielomianu generującego g(u)
7 4
1 13
15 11
1 23
7
2 721
5
3 2467
31 26
1 45
21
2 3551
16
3 107657
11
5 5423325
6
7 313365047
63 57
1 103
51
2 12471
45
3 1701317
39
4 166623567
36
5 1033500423
30
6 157464165547
24
7 17323260404441
18 10 1363026512351725
16 11 6331141367235453
10 13 472622305527250155
D.Rutkowski
51/KK
Tabela 1 Parametry kodów BCH cd.
n
k
127 120
D.Rutkowski
t
Współczynniki wielomianu generującego g(u)
1 211
113
2 41567
106
3 11554743
99
4 3447023271
92
5 624730022327
85
6 130704476322273
78
7 26230002166130115
71
9 6255010713253127753
64
10 1206534025570773100045
57
11 335265252505705053517721
50
13 54446512523314012421501421
43
14 17721772213651227521220574343
36
15 3146074666522075044764574721735
29
21 40314461367670603667530141176155
22
23 123376070404722522435445626637647043
15
27 22057042445604554770523013762217604353
8
31 7047264052751030651476224271567733130217
52/KK
Tabela 1 Parametry kodów BCH cd.
Współczynniki wielomianu generującego g(u)
n
k
t
255
247
1 435
239
2 267543
231
3 156720665
223
4 75626641375
215
5 23157564726421
207
6 16176560567636227
199
7 7633031270420722341
191
8 2663470176115333714567
187
9 52755313540001322236351
179 10 22624710717340432416300455
171 11 15416214212342356077061630637
163 12 7500415510075602551574724514601
155 13 3757513005407665015722506464677633
147 14 1642130173537165525304165305441011711
139 15 461401732060175561570722730247453567445
131 18 215713331471510151261250277442142024165471
123 19 120614052242066003717210326516141226272506267
115 21 60526665572100247063636404600276352556313472737
107 22 22205772322066256312417300235347420176574750154441
D.Rutkowski
53/KK
Tabela 1 Parametry kodów BCH cd.
t
Współczynniki wielomianu generującego g(u)
n
k
255
99 23 10656667253473174222741416201574332252411076432303431
91 25 6750265030327444172723631724732511075550762720724344561
87 26 110136763414743236435231634307172046206722545273311721317
79 27 66700035637657500020270344207366174621015326711766541342355
71 29 24024710520644321515554172112331163205444250362557643221706035
63 30 10754475055163544325315217357707003666111726455267613656702543301
55 31 7315425203501100133015275306032054325414326755010557044426035473617
47 42 2533542017062646563033041377406233175123334145446045005066024552543173
45 43 15202056055234161131101346376423701563670024470762373033202157025051541
37 45 5136330255067007414177447245437530420735706174323432347644354737403044003
29 47 3025715536673071465527064012361377115342242324201174114060254757410403565037
21 55 1256215250670332656001773153607612103227341405653074542521153121614466513473725
13 59 464173200505256454442657371425006600433067744547656140317467721357026134460500547
9 63 15726025217472463201031043255355134614162367212044074545112766115547705561677516057
D.Rutkowski
54/KK
21. Przeplatanie ciągów kodowych kodów blokowych
Binarne kodowanie blokowe zabezpiecza w większym lub mniejszym stopniu
transmisję wiadomości jedynie przed niezależnymi statystycznie błędami
przypadkowymi, które wywołuje szum cieplny (gaussowski) w kanale. Kanał taki
jest kanałem bezpamięciowym i jego najprostszym modelem jest kanał KBS.
Niestety typowy kanał w systemie radiokomunikacji ruchomej jest kanałem z
pamięcią, która zależy od właściwości statystycznych zaników i której negatywny
wpływ ujawnia się zwłaszcza wówczas, gdy czas trwania zaników obwiedni
sygnału odbieranego jest długi w porównaniu z czasem trwania sygnału
elementarnego ciągu kodowego. W rezultacie błędy w przesyłanych blokach
występują seryjnie, tzn. są powiązane statystycznie, powodując silną
degradację jakości odbioru i typowe zabezpieczenie kodowe (korekcyjne) nie
jest w stanie temu bezpośrednio przeciwdziałać, a niekiedy wręcz przyczynia się
do jeszcze większej degradacji jakości odbioru. Metodą, która umożliwia
uzyskanie błędów niezależnych statystycznie, jest przeplatanie ciągów kodowych
po stronie nadawczej i ich rozplatanie po stronie odbiorczej. Wymaga to
jedynie znajomości przedziału czasu trwania zaników.
D.Rutkowski
55/KK
Dzięki tym dwu komplementarnym operacjom serie błędów mogą być rozproszone
w rozplecionych ciągach kodowych i przetwarzane przez dekoder, jakby były
niezależne statystycznie. Wówczas binarne kody blokowe korekcyjne mogą
w większym lub mniejszym stopniu korygować błędy. Przez stosowny dobór kodu
można zapewnić odpowiednio wysoki stopień zabezpieczenia przed błędami, dla
danego rodzaju usługi telekomunikacyjnej. Przykład przeplatania jest podany na
rys.23.
Do określenia przedziału czasu przeplotu powinien być brany pod uwagę
maksymalny lub średni czas trwania zaników, który występuje przy najmniejszej
prędkości przemieszczania się stacji ruchomej. Tu jednak pojawia się problem
niejednoznacznego określenia progowej wartości amplitudy a sygnału odebranego
w odniesieniu do a , poniżej której występuje zanik powodujący serię błędów.
Z tego względu wygodniej jest w praktyce wyznaczać czas pamięci kanału na
podstawie czasu korelacji procesu reprezentującego obwiednię sygnału
odbieranego, gdyż oznacza on średni przedział czasu powiązań statystycznych
obwiedni, a więc również przedział czasu, w którym mogą występować serie
powiązanych statystycznie błędów. Przykłady pomierzonych funkcji korelacji
obwiedni sygnału odebranego są przedstawione na rys.24 i 25.
D.Rutkowski
56/KK
a)
A
A1
A2
A3
A4
B
A5
A6
A7
B1
B2
B3
B4
C
B5
B6
B7
C1
C2
C3
C4
D
C5
C6
C7
D1
D2
D3
D4
E
F
G
D5
D6
D7
E1
E2
E3
E4
E5
E6
E7
F1
F2
F3
F4
F5
F6
F7
G1
G2
G3
G4
G5
G6
G7
E4
F4
G4
A5
B5
C5
D5
E5
F5
G5
A6
B6
C6
D6
E6
F6
G6
A7
B7
C7
D7
E7
F7
G7
A
A1 A2 A3 A4 A5 A6 A7
Seria błędów
b)
A1
B1
C1
D1
E1
F1
G1
A2
1
B2
C2
D2
E2
F2
2
G2
A3
B3
C3
D3
3
X
X
X
X
X
X
X
E3
F3
G3
A4
B4
C4
D4
4
5
6
7
A1 B1 C1 D1 E1 F1 G1
1
Rys.23. Przykład przeplatania (a) ciągi kodowe (7-bitowe) przed operacją przeplatania;
(b) ciągi kodowe po operacji przeplatania.
D.Rutkowski
57/KK
gaa()
1
0,8
0,6
0,4
0,2
0
10
20
 [msek]
c
Rys.24. Pomierzona funkcja korelacji g aa  obwiedni sygnału odebranego w przypadku miejskiego
środowiska propagacyjnego. Prędkość stacji ruchomej: 30 km/godz. Oznaczenie:  c - czas korelacji.
D.Rutkowski
58/KK
gaa()
1
v = 30 km/godz.
0,8
0,6
v = 100 km/godz.
0,4
0,2
0
10
c
(1)
20
 [msek]
c(2)
Rys.25. Pomierzona funkcja korelacji obwiedni sygnału odebranego w przypadku górzystego środowiska
(1) (2)
propagacyjnego. Oznaczenia: c ,c - czasy korelacji
D.Rutkowski
59/KK
Znając czas pamięci kanału możemy określić zasięg przeplatania, tj. liczbę
bitów w ciągu (przeplecionym) przekazywanym przez kanał, o jaką będą
oddalone sąsiednie bity przed operacją przeplatania.
W przypadku kodów blokowych naturalne i najprostsze jest przeplatanie
blokowe. Człon przeplatający dokonuje wówczas permutacji bitów ciągu
kodowego i następnie przekazuje je do modulatora. Najczęściej permutacja
polega na wprowadzaniu bitów do kolejnych kolumn tablicy MN, gdzie M
i N dobiera się w zależności od czasu pamięci kanału i po jej zapełnieniu
elementy te są odczytywane kolejno wierszami i przekazywane do modulatora.
W odbiorniku odbywa się operacja odwrotna do tej w nadajniku. Na rys.26
pokazany jest przykład takiej tablicy dla członu przeplatającego ia kilku
przykładów serii błędów.
D.Rutkowski
60/KK
a)
b)
N=6
M=4
1
5
9
13
17
21
1
5
9
13
17
21
2
6
10
14
18
22
2
6
10
14
18
22
3
7
11
15
19
23
3
7
11
15
19
23
4
8
12
16
20
24
4
8
12
16
20
24
Ciąg w yjściow y: 1, 5, 9, 13, 17, 21, 2, 6, ...
c)
d)
1
5
9
13
17
21
1
5
9
13
17
21
2
6
10
14
18
22
2
6
10
14
18
22
3
7
11
15
19
23
3
7
11
15
19
23
4
8
12
16
20
24
4
8
12
16
20
24
Rys.26. (a) Przykład tablicy 46 dla członu przeplatającego; (b) Seria 5 błędów w ciągu przekazanym
przez kanał; (c) Seria 9 błędów w ciągu przekazanym przez kanał; (d) Błąd powtarzający się
periodycznie co 6 sygnałów elementarnych.
D.Rutkowski
61/KK
Przeplatanie blokowe charakteryzuje się następującymi właściwościami:
1. Dowolna seria błędów o długości mniejszej niż N zostaje rozproszona na
wyjściu członu rozplatającego i błędy te występują w odstępach
przynajmniej M sygnałów elementarnych.
2. Dowolna seria bN błędów, gdzie b > 1 wywołuje na wyjściu członu
rozplatającego serię błędów o liczności nie większej niż b  . Każda
wyjściowa seria jest oddalona od pozostałych przynajmniej o M  b
sygnałów elementarnych.
3. Pojedynczy błąd występujący periodycznie co N sygnałów elementarnych
wywołuje serię błędów o długości M na wyjściu członu rozplatającego.
4. Całkowite opóźnienie przeplatania/rozplatania wynosi 2MN  2M  2Tb ,
tzn. opóźnienie przeplatania i rozplatania oddzielnie wynosi
M N  1  1Tb
(oczywiście
bez
uwzględnienia
opóźnienia
propagacyjnego).
D.Rutkowski
62/KK
22. Kody Reeda-Solomona
Szczególną podklasą kodów BCH są kody Reeda-Solomona. Są to kody niebinarne.
Osiągają one największą możliwą minimalną odległość Hamminga dmin spośród wszystkich
kodów liniowych dla tej samej długości ciągów informacyjnych i tej samej długości
odpowiadających im ciągów kodowych. Dla kodu niebinarnego odległość między dwoma
ciągami tego kodu jest zdefiniowana jako liczba niebinarnych symboli, którymi one się
różnią. Dla kodów R-S mamy
d min  n  k  1
(105)
gdzie k jest liczbą symboli ciągu informacyjnego, a n jest liczbą symboli ciągu kodowego.
Wynika stąd, że zdolność korekcyjna wyraża się wzorem
t
d min  1 n  k

2
2
(106)
i wymaga 2t symboli kontrolnych.
Oznacza to, że dla kodu korekcyjnego R-S opartego na 2m symbolach mamy
n  2 m  1, m  2,3,
k  2m  1  2t
D.Rutkowski
(107)
63/KK
Korzyści z kodu niebinarnego wynikają z następującego porównania.
Rozważmy kod binarny (n,k)=(7,3). Całkowita liczba ciągów binarnych
o długości 7 elementów wynosi 2 n  27  128 , z których tylko 2 k  23  8 ,
czyli 1/16 wszystkich ciągów binarnych, to ciągi kodowe. Jeśli kod
niebinarny ma postać (7,3), a każdy symbol reprezentuje np. 3 bity, to
całkowita liczba ciągów binarnych wynosi teraz 2 mn  2 73  2 21  2097152, z
których tylko 2 kn  233  29  512 ciągów (czyli 1/4096) są ciągami
kodowymi, a więc bardzo niewielki ułamek całkowitej liczby wszystkich
ciągów binarnych. Ułamek ten maleje wraz ze wzrostem m. Wiadomo, że
jeśli mały ułamek całkowitej liczby wszystkich możliwych ciągów binarnych
stanowią ciągi kodowe, to można osiągnąć dużą wartość dmin i silne
zabezpieczenie przed błędami.
Kody R-S są szczególnie użyteczne do korekcji błędów seryjnych,
charakteryzujących kanały z pamięcią, a więc kanały, w których występują
zaniki, zwłaszcza gdy liczba symboli wejściowych kodera jest duża (duże m).
D.Rutkowski
64/KK
Prawdopodobieństwo błędu dekodowania symboli dla kodów R-S można
obliczyć za wzoru
m
2
 1 j

1
2




Ps  m
j
p
1

p

2  1 j t 1  j 
2 m 1
m
1 j
(108)
Średnie prawdopodobieństwo Pb błędu dekodowania bitów dla niektórych
rodzajów modulacji może być ograniczone od góry przez prawdopodobieństwo
PS błędu dekodowania symboli dla kodów R-S. W szczególności dla modulacji
wielowartościowej FSK, tzn. dla MFSK, gdzie M  2m , mamy
2m1
Pb  Ps m
2 1
D.Rutkowski
(109)
65/KK
Pb
Pb
p
Rys.27a. Średnie prawdopodobieństwo Pb błędu
binarnego w funkcji prawdopodobieństwa błędu
elementarnego p dla kodu R-S, gdy m=5, n=31
oraz t=1; 2; 4 i 8
D.Rutkowski
Eb/N0 [dB]
Rys.27b. Średnie prawdopodobieństwo błędu
binarnego Pb w funkcji Eb/N0 dla kodu R-S, gdy
m=5, n=31 oraz t=1; 2; 4 i 8, jeśli stosowana
jest 32-wartościowa modulacja FSK (32FSK)
66/KK
23. Efektywność detekcyjnych kodów cyklicznych
Cykliczne kody detekcyjne w powiązaniu z regułą ARQ są bardzo efektywne
w zastosowaniach sieciowych, gdyż wymagają niewielkiej redundancji, są proste
układowo i szybkie w działaniu. Są powszechnie wykorzystywane w tych usługach, w
których opóźnienie związane z retransmisją może być tolerowane. Dotyczy to
wszelkiego rodzaju sieci transmisji danych usługowych (sieci komputerowych, sieci
komórkowych, sieci ISDN, profesjonalnych sieci transmisji danych).
W powszechnym użytkowaniu znajdują się następujące cykliczne kody detekcyjne:
Nazwa kodu
CRC-12
CRC-16
CRC-CCITT
CRC-32
Wielomian generujący g(u)
u12  u11  u 3  u 2  u  1
u16  u15  u 2  1
u16  u12  u 5  1
u 32  u 26  u 23  u 22  u16  u12  u11  u10  u 8  u 7  u 5  u 4  u 2  u  1
Najpierw zajmiemy się efektywnością kodów cyklicznych, przez którą będziemy
rozumieć prawdopodobieństwo błędu detekcji w pakiecie odebranym, przy zadanym
prawdopodobieństwie błędu elementarnego w kanale i zadanej długości pakietu.
D.Rutkowski
67/KK
Jak pamiętamy, wielomian reprezentujący sygnał odebrany może być zapisany
w postaci
(110)
yu   su   eu 
Zatem reszta z dzielenia wielomianu y(u) przez g(u) jest taka sama, jak reszta
z dzielenia wielomianu e(u) przez g(u).
Pokażemy teraz, że wielomiany generujące popularnych detekcyjnych kodów
cyklicznych są dobierane w przemyślany sposób, aby zapewnić możliwie największe
prawdopodobieństwo wykrycia błędów, a decyduje o tym postać tych wielomianów.
Wykażemy w związku z tym, że odpowiednio dobrane wielomiany umożliwiają
wykrywalność:

wszystkich błędów pojedynczych

wszystkich błędów podwójnych, jeśli g(u) ma przynajmniej 3 składniki

dowolnej nieparzystej liczby błędów, jeśli g(u) jest podzielna przez (u+1) bez
reszty

dowolnej serii błędów, której długość jest mniejsza niż długość ciągu
binarnego odpowiadającego wielomianowi g(u) (długość serii błędów jest
mniejsza niż długość ciągu kontrolnego)

większości dłuższych serii błędów.
D.Rutkowski
68/KK
Wykrywalność pojedynczych błędów
Pojedynczy błąd na pozycji i w bloku o długości n może być przedstawiony w formie
wielomianowej jako
eu   u i , 1  i  n
(111)
Ponieważ zawsze pierwszy i ostatni składnik funkcji g(u) są niezerowe, więc funkcja ta
ma przynajmniej 2 składniki i w związku z tym u i nie może dzielić się przez g(u) bez
reszty.
Wykrywalność błędów podwójnych
Dowolne 2 błędy na pozycjach i oraz j w bloku o długości n mogą być zapisane w formie
wielomianowej jako
eu   u i  u j  u i 1  u j i , i  j; i  1,2,, n  1, j  2,, n
(112)
Aby reszta z dzielenia e(u) przez g(u) była równa zero, wielomian g(u) musi stanowić
podzielnik u i albo 1  u j i . Poprzednio wykazaliśmy, że g(u) nie jest podzielnikiem u i .
Jeśli więc g(u) ma przynajmniej 3 składniki, to nie może być podzielnikiem wielomianu
1  u j  i (wszystkie funkcje generujące stosowanych w praktyce kodów cyklicznych mają
przynajmniej 3 składniki).
D.Rutkowski
69/KK
Wykrywalność dowolnej nieparzystej liczby błędów
Załóżmy, że wielomian e(u) ma nieparzystą liczbę składników i jest podzielny przez u  1.
Wówczas możemy napisać, że
eu   u  1hu 
(113)
gdzie h(u) jest dowolnym wielomianem stopnia 1  n  n  1.
Oznacza to, iż dla u  1
e1  1  1h1  0
Jednakże dowolny wielomian e(u) przyjmuje wartość zero, jeśli zawiera parzystą liczbę
składników. Zatem wielomian e(u) z nieparzystą liczbą składników nie jest podzielny przez
u  1, jeśli każdy wielomian g(u) będzie zawierać po faktoryzacji czynnik u  1, gdyż
będzie wówczas umożliwiał wykrywanie nieparzystej liczby błędów. Z tego względu
wszystkie funkcje generujące stosowanych kodów cyklicznych daje się przedstawić w
postaci iloczynu
g u   u  1wu 
(114)
gdzie w(u) jest wielomianem stopnia n  k  1
D.Rutkowski
70/KK
Serie błędów
Seria błędów w ciągu kodowym oznacza jego podciąg, w którym przynajmniej pierwszy i
ostatni sygnał elementarny są błędne. Zatem seria błędów o długości j zawarta w wektorze
błędów e jest ciągiem elementów o długości j zaczynającym się oraz kończącym wartością
logiczną 1 i zawierającym ponadto na dowolnych pozycjach wartości logiczne 1 i 0. Np. dla
e  00010100110000 seria błędów ma długość 7.
Algebraicznie seria błędów może być wyrażona w postaci
eu   u i u j i    1  u i qu 
gdzie qu   u
przykładu
j i
(115)
   1, a i oznacza początek serii liczony od prawej strony. Jeśli dla
eu   u10  u 8  u 5  u 4  u 4 u 6  u 4  u  1
to wiadomo już, że czynnik u 4 nie jest podzielny przez g(u), zatem taka seria błędów nie
będzie wykryta, jeśli wielomian q(u) będzie podzielny bez reszty przez g(u).
Jednak dla długości serii błędów mniejszej niż długość ciągu g , tj. dla j  n  k  1 , g(u) nie
może być podzielnikiem q(u), gdyż stopień g(u) jest wyższy niż stopień q(u). Rozważmy
teraz przypadek, gdy długość serii błędów równa się długości ciągu g , tj. j  n  k  1.
Taki przypadek serii błędów nie będzie wykryty, gdy qu  g u.
Wiemy jednak, że pierwszy i ostatni składnik q(u) i g(u) są niezerowe, co oznacza, że
pozostałe n  k 1 składniki obu wielomianów muszą być jednakowe.
D.Rutkowski
71/KK
Zakładając jednakowe prawdopodobieństwo wartości logicznej 1 i 0 na każdej pozycji,
n  k 1
1
prawdopodobieństwo, że qu   g u , wynosi  
. Zatem dla kodów CRC-16 oraz
2
15
1
CRC-CCITT prawdopodobieństwo błędu niewykrywalnego wynosi    0,0000305 i to
 2
przy założeniu, że blok odebrany zawiera serię błędów o długości 17.
Takie zdarzenie jest jednak bardzo mało prawdopodobne, chociaż nie jest niemożliwe.
Ostatni wreszcie przypadek wchodzi w grę, gdy długość serii błędów jest dłuższa od ciągu
g , tj. j  n  k  1. W tym przypadku możemy mieć wiele różnych wielomianów q(u), które
są podzielne przez g(u) bez reszty. Jeśli q(u) jest podzielne przez g(u) bez reszty, to
q u 
 p u 
(116)
g u 
gdzie pu  jest ilorazem.
Niech q(u) jest wielomianem stopnia j  1. Wówczas stopień wielomianu p(u) wynosi
 j 1  n  k  , a długość ciągu p wynosi j  n  k . Wiadomo, że pierwszy i ostatni
element ciągu p muszą przyjmować wartość 1, natomiast pozostałe j  n  k   2 elementy
mogą przyjmować dowolne wartości binarne. Oznacza to, że istnieją 2 jnk 2 postaci q(u),
które są podzielne bez reszty przez g(u).
D.Rutkowski
72/KK
Zakładając serię błędów o długości j otrzymujemy 2 j2 możliwych postaci q(u).
A więc prawdopodobieństwo, że seria błędów o długości j nie będzie wykryta
wynosi
2 j  nk 2  1 
 
j 2
2
 2
nk
(117)
W przypadku kodów CRC-16 i CRC-CCITT prawdopodobieństwo błędu
16
1
niewykrywalnego wynosi    0,0000153, przy założeniu że blok odebrany
 2
zawiera serię błędów o długości większej niż 17.
Podsumowując możemy stwierdzić, że kod detekcyjny cykliczny, wprowadzający
nadmiarowość 16 pozycji, wykrywa wszystkie błędy pojedyncze i podwójne,
wszystkie przypadki nieparzystej liczby błędów, wszystkie serie błędów o długości
16 lub mniejszej, ponadto 99,997 % serii błędów o długości 17 i 99,998 % serii
błędów o długości 18 lub większej.
D.Rutkowski
73/KK
Tabela 2 Efektywność cyklicznych kodów detekcyjnych
Rodzaj błędów
Błędy pojedyncze
Błędy podwójne
Nieparzysta liczba błędów
Seria błędów o długości mniejszej niż n  k  1
Seria błędów o długości n  k  1
Seria błędów o długości większej niż n  k  1
D.Rutkowski
Prawdopodobieństwo
wykrycia
1
1
1
1
1   12 
nk
1   12 
nk 1
74/KK
Tabela 3 Prawdopodobieństwo błędu w bloku z zabezpieczeniem kodowym
CRC-16
D.Rutkowski
Liczba bitów
w bloku
100
Prawdopodobieństwo błędu elementarnego p
103
1108
104
1109
105
11010
106
11011
107
11012
300
9  10 8
9  10 9
9  1010
9  1011
9 1012
1000
7 109
5  1010
4  1011
4  10 12
4 10 13
3000
2  1011
11012
1  1013
11013
10000
11010
2  1011
2  10 12
2  1013
30000
~105
~106
~107
~108
75/KK
24. Zastosowania kodów korekcyjnych i detekcyjnych
24.1. Przykłady zastosowań kodów korekcyjnych
Nieustannie rosnące wymagania w odniesieniu do niezawodności transmisji cyfrowej sygnałów w różnego rodzaju systemach i sieciach telekomunikacyjnych i komputerowych oraz niezawodności pracy komputerów i innych urządzeń cyfrowych,
stawiają kody korekcyjne i detekcyjne w wyjątkowo znaczącej roli. Z tego m.in.
względu współczesne komputery mają wbudowane mechanizmy korekcji błędów w
urządzeniach pamięci RAM oraz innych rodzajów pamięci, a w układach VLSI
komputerów, różnego rodzaju urządzeń telekomunikacyjnych oraz cyfrowego
sprzętu powszechnego użytku są wykorzystywane kody korekcyjne dla
podniesienia niezawodności ich pracy. Okazuje się bowiem, że koszty wytwarzania
niezawodnych układów VLSI są nieporównywalnie większe niż tego rodzaju
układów o pewnym stopniu zawodności wynikającej z nieuniknionych defektów
technologicznych i porodukcyjnych, z równoczesnymi zabezpieczeniami przed
błędami w ich funkcjonowaniu w oparciu o kody korekcyjne.
Kody korekcyjne odgrywają też nieocenioną rolę w wysokiej jakościowo transmisji
satelitarnej w tym również w łączności z sondami kosmicznymi. Już w 1972 r.
pojazd kosmiczny MARINER wystrzelony z Ziemi w celu przekazywania obrazów
powierzchni Marsa był wyposażony w nadajnik informacji cyfrowych,
stanowiących luminancję skanowanych obrazów.
D.Rutkowski
76/KK
Liczność zbioru informacji wynosiła 64, a odpowiadające im 6-bitowe ciągi
informacyjne były zabezpieczone przed błędami za pomocą kodera kodu Reeda Müllera, wytwarzającego 32-bitowe ciągi kodowe i umożliwiającego korekcję do
7 błędów.
Wystrzelona w 1979 r. sonda kosmiczna VOYAGER, przeznaczona do
przekazywania obrazów kolorowych powierzchni Jupitera, była wyposażona
w nadajnik informacji cyfrowych o liczności 4096. Z tego względu koder
źródłowy dostarczał ciągi informacyjne 12-bitowe, a koder kanałowy wytwarzał
ciągi 24-bitowe w oparciu o rozszerzony kod Golaya (zdolność korekcyjna t =
3).
Również znane już od dłuższego czasu płyty dźwiękowe oraz płyty do rejestracji
obrazu cyfrowego, a od niedawna płyty multimedialne i cyfrowe kamery oraz
aparaty fotograficzne mają zapisane informacje zabezpieczone za pomocą kodów
korekcyjnych. W szczególności od 1979r. jest znany światowy standard dla płyt
dźwiękowych w oparciu o zabezpieczenie zapisanej informacji za pomocą kodu
Reeda-Solomona, który opracowały wspólnie firmy Philips i Sony. Również w
systemach radiofonii cyfrowej DAB i telewizji cyfrowej DVB są powszechnie
stosowane kody korekcyjne.
D.Rutkowski
77/KK
24.2. Przykłady zastosowań kodów detekcyjnych
Kody detekcyjne są stosowane zwłaszcza w przypadku transmisji danych
usługowych w różnego rodzaju sieciach z komutacją pakietów, gdyż wówczas
zmienne opóźnienie (wskutek buforowania i ewentualnych retransmisji), od
momentu wysłania każdej informacji do momentu osiągnięcia jej udanej
transmisji, może być tolerowane. Powszechnie są one wykorzystywane w sieciach
komputerowych, sieciach komórkowych i sieciach ISDN. Kod CRC-CCITT jest w
szczególności stosowany w publicznych sieciach transmisji danych usługowych
(warstwa II protokołu komunikacyjnego X.25) i w sieciach ISDN.
D.Rutkowski
78/KK
Liczba
bitów
8
8
8
0
16
8
01111110
Adres
Ciąg
sterujący
Ciąg
informacyjny
Ciąg kontrolny
01111110
Ciąg
synchronizujący
Ciąg
synchronizujący
Rys.28. Format ramki użytkowanej w warstwie II protokołu X.25
Liczba
bitów
8
16
8 lub 16
0
16
8
Ciąg
synchronizujący
Adres
Ciąg
sterujący
Ciąg
informacyjny
Ciąg
kontrolny
Ciąg
synchronizujący
Rys.29. Format ramki użytkowanej w warstwie II protokołu komunikacyjnego SS7 (protokół LAPD)
w sieci ISDN.
D.Rutkowski
79/KK
Kod CRC-32 jest stosowany w lokalnych sieciach komputerowych (LAN) wg. standardów IEEE
802.3, 802.4 i 802.5
Liczba
bajtów
7
1
2 lub 16
2 lub 6
2
Ciąg
Początek
Długość
Adres
Adres
synchroni ramki docelowy źródłowy
ciągu
zujący
informacyjnego
01500
046
4
Ciąg
informacyjny
Wypełnienie
Ciąg
kontrolny
Rys.30. Format ramki w lokalnej sieci komputerowej wg. standardu IEEE 802.3 (protokół CSMA/CD).
Liczba
bajtów
1
1
1
2 lub 16
2 lub 6
01500
4
Adres
docelowy
Adres
źródłowy
Ciąg
informacyjny
Ciąg
kontrolny
1
Ciąg sterujący
Koniec ramki
Początek ramki
Ciąg synchronizujący
Rys.31. Format ramki w lokalnej sieci komputerowej wg. standardu IEEE 802.4
(token bus)
D.Rutkowski
80/KK
Liczba
bajtów
1
1
1
2 lub 16
2 lub 6
Dowolna
długość
4
Adres
docelowy
Adres
źródłowy
Ciąg
informacyjny
Ciąg
kontrolny
Typ ramki
1
Koniec ramki
Ciąg sterujący dostępem
Status ramki
Początek ramki
Rys.32. Format ramki w lokalnej sieci komputerowej wg. standardu IEEE 802.5
(token ring)
D.Rutkowski
81/KK
24.3. Przykłady zastosowań kodów łączonych
W radiowych sieciach pakietowych występują na ogół znacznie gorsze jakościowo
kanały niż w sieciach przewodowych. Wynika to z zaników i interferencji, które
poważnie degradują jakość odbioru, niezależnie od oddziaływania szumu
cieplnego.
Z tego względu w radiowych sieciach pakietowych stosuje się często
zabezpieczenia za pomocą kodów łączonych, tj. powiązanych ze sobą kodów
występujących wspólnie w tym samym systemie transmisji, z których jeden tzw.
wewnętrzny służy do korekcji błędów przypadkowych, a drugi tzw. zewnętrzny
umożliwia korekcję błędów seryjnych.
Głównym celem kodowania łączonego jest uzyskiwanie wysokiej jakości
transmisji dla długich ciągów informacyjnych, przy względnie umiarkowanym
nakładzie przetwarzania, który nie byłby możliwy do osiągnięcia za pomocą
pojedynczego kodu lub byłby mało efektywny.
D.Rutkowski
82/KK
Ciąg
informacyjny
Koder kodu
korekcyjnego
(detekcyjnego)
zewnętrznego
Człon przeplatający
I
Koder kodu
detekcyjnego
(korekcyjnego)
wewnętrznego
Człon przeplatający
II
Modulator
Zaniki,
interferencje
i szum cieplny
Odtworzony
ciąg
informacyjny
Dekoder kodu
korekcyjnego
(detekcyjnego)
zewnętrznego
Człon rozplatający
I
Dekoder kodu
detekcyjnego
(korekcyjnego)
wewnętrznego
Człon rozplatający
II
Kanał
Demodulator
Rys.33. Schemat blokowy systemu telekomunikacyjnego z kodowaniem łączonym
D.Rutkowski
83/KK
W znanych standardach radiowych sieci transmisji pakietów stosowane są
następujące rozwiązania kodów łączonych:
Nazwa systemu
D.Rutkowski
Kod zewnętrzny
Kod wewnętrzny
GSM (transmisja
danych i rozmów)
kod splotowy
kod detekcyjny
cykliczny
TETRA
kod splotowy
kod BCH
UMTS
kody splotowe
i turbokod
kody detekcyjne
cykliczne
84/KK