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

Post on 09-Jan-2016

79 views 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 of 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

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

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

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.

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

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

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.

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

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

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) .

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ół)

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)

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

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.

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.

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.

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 )

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

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)