wykład 11: kody i metody korekcji błędów

19
Wykład 11: Kody i metody korekcji błędów PG – Katedra Systemów Mikroelektronicznych ZASTOSOWANIE PROCESORÓW SYGNAŁOWYCH Marek Wroński

Upload: ciqala

Post on 09-Jan-2016

78 views

Category:

Documents


4 download

DESCRIPTION

Wykład 11: Kody i metody korekcji błędów. PG – Katedra Systemów Mikroelektronicznych ZASTOSOWANIE PROCESORÓW SYGNAŁOWYCH Marek Wroński. Korekcja błędów w kodzie powtórzeniowym. Przesyłanie prostego repetycyjnego kodu 3-bitowego. dowa:. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Wykład 11:  Kody i metody korekcji błędów

Wykład 11: Kody i metody korekcji błędów

PG – Katedra Systemów Mikroelektronicznych

ZASTOSOWANIE PROCESORÓW SYGNAŁOWYCH

Marek Wroński

Page 2: Wykład 11:  Kody i metody korekcji błędów

Korekcja błędów w kodzie powtórzeniowym

Page 3: Wykład 11:  Kody i metody korekcji błędów

Przesyłanie prostego repetycyjnego kodu 3-bitowego

dowa:

Prawidłowa transmisja dla (a), (b), (e) i (f). W innych przyp. dekoder kryteriumwiększościowego popełnia błędy. Występuje to gdy jest więcej niż t=1 błędów bit

Page 4: Wykład 11:  Kody i metody korekcji błędów

Odległość Hamminga

Jeśli jest d bł. bitów toprzekazywane słowo będzie zamienione na innei błąd nie może być wykryty

Przy klasyfikacji kodu stosuje się triplet z łożony z długości słowa kodowego n,liczby bitów informacyjnych k iminimalnej odległości Hamminga d.Taki triplet oznacza się jako (n,k,d). Nasz kod powtórzeniowy zapiszemy jako (3, 1, 3).Liczba bitów parzystości (nadmiarowych) =n-k.Według odl. Hamminga możemy stwierdzić ile błędnych bitów t (na słowo kodowe) może obsłużyć dany kod. Jeśli w słowie kodowym jest więcej niż t błędnych bitów,to wyżej opisane kodowanie może nawet zwiększyć liczbę bitów i pogorszyć sytuację.W takim przypadku trzeba zastosować lepszy kod, lub nawet może być korzystna rezygnacjaZ zastosowania jakiegokolwiek kodu korekcji błędów.

Page 5: Wykład 11:  Kody i metody korekcji błędów

Liniowe kody korekcji błędów, np. LC(6,3,3)

To takie kody w których suma składowych (binarna tj. modulo2) dwóch słów kodowych x i i xj musi być też słowem kodowym. Mają właściwość, że sąsiedztwo wszystkich słów kodowych w n-miernej „przestrzeni kodowej” wygląda jednakowo.Kodowanie polega na mnożeniu słowa informacji u=[0 1 0] przez macierz generującą kodu G=[I:P] (mac. I (k*k) rozszerzona o macierz P (k*n-k) określającą bity parzystości) x=[u1u2 u3 p1 p2 p3 ], np. p1= u1+u2 ; p2 = u2+u3; p3 = u1+u2+u3; Przesyłane słowo kodowe: x=u*G=u*[I:P]=[0 1 0]* =[0 1 0 1 1 1]Macierz parzystości: H=[PT:I]W dekoderze najpierw obliczamy syndrom błędu jako:(gdy brak błędów y=x)s=y*HT= [0 1 0 1 1 1]* =[0 0 0]=0;

Jeżeli powstanie błąd, np.e=[0 0 1 0 0 0] tj. odebrano y=x+e=[0 1 0 1 1 1]+[0 0 1 0 0 0]=[0 1 1 1 1 1] wtedy:

Wyodrębnienie inform.z odebranego słowa:

s=y*HT= [0 1 1 1 1 1] =[0 1 1]

u=x*[I:0]= [0 1 0 1 1 1]* =[0 1 0];

100

010

001

110

111

101

000

000

000

100

010

001

110100

111010

101001

100

010

001

110

111

101

Page 6: Wykład 11:  Kody i metody korekcji błędów

Tablica dekodowania

Zawiera ona wektory błędów, które mogą generować specyficzny wektor syndromu błędu.

Syndrom użyjemy jako indeks w tablicy dekodowania stosując zasadę maksymalnej wiarygodności (najbardziej prawdopodobny błąd 1 bitu) dlatego z 1kol odczytujemy: e=[0 0 1 0 0 0]więc: skorygowane słowo kodowe x=y+e=[0 1 1 1 1 1]+[0 0 1 0 0 0]=[0 1 0 1 1 1] stąd przesłana inf. u=x*[I:0]=[0 1 0]

(odl.Hamminga=3->wykryje (3-1) bł. koryguje [(3-1)/2] błędówNie skoryguje np. podwójnego błędu bitów e=[0 1 0 1 0 0]+x=[0 0 1 0 1 1]=[0 1 1 1 1 1]=y

po „skorygowaniu” (jak wyżej) u’=[010]<>u

Page 7: Wykład 11:  Kody i metody korekcji błędów

Kody cykliczne, np. CC(7,4,3)

Oprócz liniowości cechują się również przesunięciem cyklicznym („rotacja” też daje inne słowo kodowe, np.. 111001 i 110011)

Dla nich używa się zapisu wielomianowego: c(x)=c0+ c1*x + c2*x2+.. + cn-1*xn-1; c=[c0 c1 c2 ...cn-1]

m-bit rotacja: xm *c(x) modulo(xn-1).

Kodowanie to mnożenie przez wielomian generujący g(x)lub przesuwanie i dzielenie wyniku przez g(x) -> c(x)= xn-ku(x)-r(x);

xn-ku(x)/g(x)=q(x)+r(x)/g(x)

Przy dekodowaniu odebran. słowa v(x)=c(x)+e(x) obl. wielomian syndromu jako reszta v(x)/g(x)

-jest on jednocześnie resztą z dzielenia e(x) przez g(x), dlatego m.b. użyty do identyfikacji bł. e(x)

Np. g(x)= 1+x+x3; informacja: 0010, tj.u(x)=x2; wielomian kodu: c(x)=u(x)*g(x)= x2+ x3+ x5; tzn.przesyłana sekwencja bitów: 0011010 przy braku bł. e(x)=0

c(x)/g(x)= x2+ 0/g(x), tj. s(x)=0gdy jest bł. e(x)= x5, więc: v(x)=c(x)+e(x)= x2+ x3; dlatego: v(x)/g(x)=1+(x2+x+1)/g(x) stąddla c(x)=0 obl. lub znajdujemy e(x)= x5 Korekcja błędu daje: v(x)+e(x)= x2+ x3+ x5; skąd u(x)=x2

Syndrom po 7krokach.

Page 8: Wykład 11:  Kody i metody korekcji błędów

Tabela dekodowania i implementacja algorytmu

Do implementacji mnożenie i dzielenie wielomianów zamieniamy filtracją’bo

C(z)=U(z)*G(z)gdy: g0=1 i gn-k=1tj. G(z)=1+G’(z) SOI G’(z)w pętli „-”sprz.da NOI:

62

52

42

3

22

1

1

1

11

00

)()(

xx

xxx

xxx

xx

xx

xx

xexs

ji

i

jii ugc

0

)(

1

)('1

1)(

zGzGzH

Page 9: Wykład 11:  Kody i metody korekcji błędów

Kody splotowe , np. (2,1,2) – kodowanie

Działają na zasadzie ciągłego „strumienia” wtrącając bity parzystości między bity informacyjne zgodnie z pewnymi regułami. Kodowanie to n binarnych filtrów SOI, mających wspólną linię opóźniającą (o dł.m). Każdy filtr j ma swą własną binarną odpowiedź impulsową gi

(J),dlatego nawyjściu j-filtru: gdzie u1, u2,... uL bity informacyjne, gi

(J) j-ty generator

Bity przesyłanego słowa kodowego: c=(c1(1), c1

(2),... c1(n), c1

( 1), c2(2),... c2

(n), cL+m(1), cL+m

(2),... cL+m(n))

Na początku wszystkie m elementów w linii opóźniającej jest zerowanych. Potem wprowadzamypo kolei symbole informacyjne i obl. syg. wy. wszystkich filtrów i przesyłamy do wyjścia i tak douL.W dalszych m krokach wchodzą zera (końcówka kodu tail).Np. g(1)=(1,0,1) i g(2)=(1,1,1)sekw. informac. ul=(0,1,0,1)daje cl

(j)=(00,11,01,00,01,11)

1,2,...Ll ;1

1)()(

m

iil

ji

ji ugc

Page 10: Wykład 11:  Kody i metody korekcji błędów

Dekodowanie Viterbiego – wykres przejść

całych sekwencji (c1 c2 ... cL+m ) maksymalizuje wiarygodność odebrania sekwencji bitów cjako sumy odległości Hamminga m.odebraną sekwencją a przesyłanąNie znamy ostatniej ale z wiedzy o działaniu kodera tworzymy estymatętzw. wykres przejść między stanami w koderze lub kratowy wykres kodu możliwych przejść(zaczynając od stanu początkowego 00 i kończąc po L+m krokach tworzących końcówkę na 00)

Wykres przejść między stanami zaczynając od stanu 00 (wszystkie elementy pamięc. 0). Cyfryw węzłach są nr. stanów, czyli zawartościami elementów pamięciowych, a cyfry nad gałęziami są symbolami informacji wejściowej ul (w nawiasach) i bitami kodu wyjściowego cl

(1) i cl(2) .

Page 11: Wykład 11:  Kody i metody korekcji błędów

Wykres kratowy.Stany na osi y, kroki na osi x, liczby pisane kursywą sąsą skumulowanymi ujemnymi odległościami Hamminga, liczby w nawiasachsą estymowanymi symbolami informacyjnymi, liczby przy gałęziach są spodziewanymi blokami kodu.We.sekw.ul=(0,1,0,1) brak bł.cl

(j)=(00,11,01,00,01,11)Przy bł. e=(01,10,00,10,11) -> v=(01,01,01,10,01,11)W 1-kr.(od 00) odbierany blok (słowo) v1=(0,1). Były2 możliw: ul=(1) tj. przejście do 10 i wygen. c1=(1,1)(ale odebraliśmy v1=(0,1)więc obl. odl. Hamminga –1)

lub pozostać w 00 i wygenerować c1=(0,0).W 2-kr.odebr.v2=(0,1) obl.skumul.odl.Hamminga dlawszystkich możliw.przejść itd..Wybieramy „najtańszą”Śledząc wstecznie uzysk.estymow.(zdekod) inf. u (dół)

Page 12: Wykład 11:  Kody i metody korekcji błędów

Częściej stosowane kody CRC (redundancy check codes), BCH, RS i splotowe.

CRC-4: g(x)=1+x+x4

CRC-5: g(x)=1+x2+x4+x5

CRC-6: g(x)=1+x+x6

CRC-12: g(x)=1+x+x2+x3+x11+x12

CRC-16: g(x)=1+x2 +x15+x16

CRC-CCITT: g(x)=1+x5 +x12+x16

BCH: n=2m-1; k>=n-mt; d>=2t+1; m=3,4,5..(Bose, Chaudhuri, Hocquenghem dla tel.komórkow.)

Kody Reeda-Solomona (RS) to kody BCH działające z grupą bitów (z m-narnymi symbolami).Mają one największą możliwą minimalną odległość Hamminga przy danej liczbie bitów kontrolnych I danej długości bloku. Stosuje się je w systemach kombinacyjnych.

Jet PropulisionLab (NASA do Voyagera na Marsa) kod splotowy (2,1,6) g(1)=(1,1,0,1,1,0,1)

g(2)=(1,1,0,1,1,0,1)Linkabit kod splotowy (3,1,6)

g(1)=(1,1,0,1,1,0,1)g(2)=(1,0,0,1,1,1,1)g(3)=(1,0,1,0,1,1,1)

Page 13: Wykład 11:  Kody i metody korekcji błędów

Przeplot

Przeplot stosuje się, np. w kanałach radiowych, tam gdzie błędy pojawiają się w paczkach (seryjne)Jest to metoda rozproszenia błędów bitowych w serii na większą liczbę bloków kodowych tak abyliczba błędów bitowych na blok (dł. n mający k bitów inf.) mb.skorygowana przez dość krótki kod.Przychodzące symb.inf. są kodowane i zapamiętywane wiersz po wierszu (l wierszy=głębok.przepl)Po zgromadzeniu l słów matryca jest pełna. ui

(j) bit inf. i w słowie j, pm(j) bit parzystości m w słowie j

Wyjściem kanału jest nl bitów, lecz tym razemkolumna po kolumnie u1

(1) ,u1(2) ,.. u1

(l) ... P(n-m)(l)

Po stronie dekodera działanie odwrotne – rozplotbity są rejestrowane, kolumna po kolumnie ipotem odczytywane do dekodera wiersz po wierszuRozproszenie serii N kolejnych błędnych bitów naL słów kodowych. Każde słowo kodowe zawiera

t korygowanych

Page 14: Wykład 11:  Kody i metody korekcji błędów

Kodowanie w modemie V.32 z 32(.) modulacją kratową (Trellis mod.)

Dane wejściowe są dzielone w grupy 4-bitowe. Pierwsze dwa bity każdej grupy są kodowane różnicowo, później następuje kodowanie złożone tak, aby uzyskać zestaw 3 bitów. Pozostałe dwa bity nie są kodowane, a jedynie przesyłane dalej. W wyniku takiego działania każda grupa zawiera pięć bitów. Następnie te pięć bitów jest mapowane na rozkładzie 32-punktowym. Po stronie odbiornika dane są dekodowane algorytmem największego prawdopodobieństwa (Viterbi) w celu oszacowania otrzymanych danych.

Page 15: Wykład 11:  Kody i metody korekcji błędów

Koder c.dKodowanie 2-etapowe: koder różnicowy + koder splotowy.Koder różnicowy zabezpiecza przed 180o niejednoznacznością.Tylko 2 z 4 bitów jest kodowanych

Koder splotowy wprowadza ograniczenia-nie pozwala na sąsiedztwo kolejnych wyjść(dla zadanych stanów (S0,S1,S2), np.(0,0,1)dop. 4 z 8 dróg (Y0,Y1,Y2):000,010,100,110)

Funkcjonalnie to 3-bit.rejestr przesuwny połączony układami logiki AND i XOR. Stanem opóźnienia nazywane są trzy bity pamięci kodera (S0, S1, S2), a bity wyjścia(Y0, Y1, Y2) nazywane są stanem ścieżki. Dając określony stan opóźnienia (S0, S1, S2) nie wszystkie stany ścieżki są możliwe w tym czasie. Np. mając stan opóźnienia (0, 0, 1) możemy w następnym interwale czasu otrzymać tylko 4 ścieżki stanu (0, 0, 0), (0, 1, 0), (1, 0, 0) i (1, 1, 0). W ten sposób otrzymujemy strukturę siatki. Koder jest maszyną o skończonej odpowiedzi, a więc można go przedstawić za pomocąschematu o skończonej odpowiedzi. Koder ma osiem możliwym stanów opóźnienia.W dowolnym czasie koder może przyjąć tylko jeden stan opóźnienia (S0, S1, S2). W następnej iteracji koder może przyjąć już tylko cztery stany opóźnienia.

Page 16: Wykład 11:  Kody i metody korekcji błędów

V.32 konstelacja

Modulacja 32-punktowa charakteryzuje się większym bit-error rate (BER) w porównaniu do rozkładu 16-bit. Dzieje się tak dlatego, że minimalna odl. Euklidesowa między dowolnymi dwoma punktami na 32-punktowym rozkładzie jest bardzo mała, co zmniejsza margines szumu. Jednakże kodowanie złożone nie pozwala dwóm następu-jącym po sobie symbolach być w ośmiu sąsiednich pozycjach od siebie. Dzięki temu minimalny dystans miedzy dwoma punktami jest zwiększony i uzyskujemy wzrost wydajności o 3 dB.

Page 17: Wykład 11:  Kody i metody korekcji błędów

Wykres kratowy (V.32 Modem Trellis Diagram)

Ukazuje on zależność pomiędzystanami opóżnionymi i bieżącymi(delay and path states).Zauważ, że nie wszystkie stanymogą być osiągnięte ze stanówpoprzednich.

Wybór właściwej drogi (w czasie) zależy od bieżącego stanu (path state) i od historii stanów wraz z ich rzetel-nością (tzw.miękka decyzja wg.funkcji kosztu: sum.Euclides.odległości zamiast odległości Hamminga bo dla szumu białego czym odleglejszy (.) na konstelacji tym jest on mniej prawdopodobny )

Page 18: Wykład 11:  Kody i metody korekcji błędów

Dekodowania Viterbi’ego

Z 4 możliwych dróg (path states) ta którama min.koszt jest wybierana (reszta jestdezaktywowana)

Określony stan (delay state) m.b. osiągnięty tylko z 4 stanów poprzednich. Dekoder wybiera tylkojeden tak aby uzyskać połączenie pomiędzy poprzednim i bieżącym odcinkiem czasowym. To połączenie jest identyfikowane jako path state.Każda droga (path state) związana z 3 bit z 5-ciuDlatego1 droga identyfikuje 4(.) na konstelacji symetrycznie umieszczone i jednakowo max.odległe

Page 19: Wykład 11:  Kody i metody korekcji błędów

Implementacja dekodowania Viterbi’ego w modemie V.32

Na początku każdego interwałuczasowego wybiera najbliższy(.)na konstel.i selekcjonuje 8 dróg.Jest to rozwinięcie wykresukratowego (x czas, y 8 możliw.)Koder m. osiągać tylko 1, aledekoder zapamiętuje wszystkie8 aż do zdecydowania który.Funkcje kosztu są uaktualnianejako sumy odległości dla drogii wybierana z min.kosztem.Wybrana droga prześledzona zpowrotem daje poszukiwanystan (Y0,Y1,Y2).Ten 3-bit. rezultat nie identyfik.jednoznacznie 5-bit. wy.sygn.4 (.) na konstelacji odpowiadajtym 3 bitom są porównywanez korespondującymi w danymczasie i wybierana 5-bit. wartośćnajbliższa (ciągnie całą historięz 16 interwałów czasowych)