Detekcja i korekcja błędów w transmisji cyfrowej

Podobne dokumenty
Detekcja i korekcja błędów w transmisji cyfrowej

W11 Kody nadmiarowe, zastosowania w transmisji danych

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Laboratorium ochrony danych

0 + 0 = 0, = 1, = 1, = 0.

Kody splotowe. Zastosowanie

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Systemy bezpieczne i FTC (Niezawodne Systemy Cyfrowe)

Matematyka dyskretna

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

Kody blokowe Wykład 2, 10 III 2011

Sieci Komputerowe Mechanizmy kontroli błędów w sieciach

Podstawy Informatyki: Kody. Korekcja błędów.

Kod U2 Opracował: Andrzej Nowak

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Kody splotowe (konwolucyjne)

Zapis liczb binarnych ze znakiem

Podstawy Informatyki

Arytmetyka liczb binarnych

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Algorytmy i struktury danych. Wykład 4

Wstęp do Informatyki

Luty 2001 Algorytmy (7) 2000/2001

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Teoretyczne Podstawy Informatyki

Arytmetyka. Arytmetyka. Magdalena Lemańska. Magdalena Lemańska,

Polska-Brazylia 5:0, czyli o poprawianiu błędów w przekazywanych informacjach

Podstawy Informatyki

Cyfrowy zapis informacji

Modulacja i Kodowanie. Labolatorium. Kodowanie Kanałowe Kody Hamminga

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Systemy zapisu liczb.

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Arytmetyka komputera

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Temat 7. Dekodery, enkodery

Architektura komputerów

Arytmetyka stałopozycyjna

Kody blokowe Wykład 1, 3 III 2011

DZIESIĘTNY SYSTEM LICZBOWY

1 WPROWADZENIE 1. Agata Pilitowska. parzysta. 3. Znaleźć odległość kodu kontroli parzystości nad ciałem GF (q).

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

KODOWANIE KANAŁOWE (NADMIAROWE) ERROR CONTROL CODING

1.1. Pozycyjne systemy liczbowe

Kodowanie informacji. Kody liczbowe

Pracownia Komputerowa wykład V

Teoria informacji i kodowania

Techniki multimedialne

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Technologie Informacyjne

1259 (10) = 1 * * * * 100 = 1 * * * *1

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Pracownia Komputerowa wykład IV

teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015

Tranzystor JFET i MOSFET zas. działania

Wprowadzanie nadmiaru informacyjnego dla transmitowanych szeregowo danych w kompaktowych sterownikach PLC firmy Mitsubishi Electric

Kodowanie liczb całkowitych w systemach komputerowych

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Naturalny kod binarny (NKB)

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Wstęp do informatyki- wykład 1 Systemy liczbowe

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

WSTĘP DO ELEKTRONIKI

Wykład 2. Informatyka Stosowana. 9 października Informatyka Stosowana Wykład 2 9 października / 42

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Pracownia Komputerowa wykład VI

Wykład 2. Informatyka Stosowana. 10 października Informatyka Stosowana Wykład 2 10 października / 42

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Pracownia Komputerowa wyk ad V

Operacje arytmetyczne

- Quadrature Amplitude Modulation

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

LICZBY ZMIENNOPRZECINKOWE

Stan wysoki (H) i stan niski (L)

Kodowe zabezpieczenie przed błędami oraz kanał telekomunikacyjny i jego właściwości

4. Systemy algebraiczne i wielomiany nad ciałami zastosowania Rodzaje systemów algebraicznych ciała, grupy, pierścienie

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Architektura komputerów

Arytmetyka binarna - wykład 6

Informatyka kodowanie liczb. dr hab. inż. Mikołaj Morzy

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Cyfrowy zapis informacji. 5 grudnia 2013 Wojciech Kucewicz 2

1. Operacje logiczne A B A OR B

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

System Liczbowe. Szesnastkowy ( heksadecymalny)

Poziomy zabezpieczeń danych w sieciach szerokopasmowych opartych na technice ATM

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

Wstęp do informatyki- wykład 1

Przykładowe zadania z teorii liczb

Transkrypt:

Detekcja i korekcja błędów w transmisji cyfrowej

Błędy w transmisji cyfrowej pojedyncze wielokrotne. całkowita niepewność względem miejsca zakłóconych bitów oraz czy w ogóle występują paczkowe (grupowe) (burst error) długość paczki błędów wymazanie danych (erasure) całkowita niepewność względem wartości zakłóconych bitów, ale miejsca tych bitów są znane

CRC (Cyclic Redundancy Check) metoda najbardziej popularna i skuteczna

Słowa i liczby binarne są reprezentowane przez wielomiany zmiennej Każda potęga w tym wielomianie reprezentuje odpowiednią pozycję cyfry binarnej 2 4 5 7 2 3 4 5 6 7 ma wartość nieoznaczoną, dlatego nie można obliczać wartości tego wielomianu W systemie dwójkowym

Arytmetyka wielomianów Dodawanie modulo 2 bez przeniesień z uwzględnieniem właściwych potęg zmiennej ( 7 6 ) ( 6 5 ) 7 ( ) 6 5 ( ) 7 5 Odejmowanie to dodawanie elementu przeciwnego element przeciwny Element przeciwny do a taki, że a + (-a) =, b a b ( a) W arytmetyce mod 2 + = i + = W arytmetyce modulo 2 odejmowanie jest równoważne dodawaniu!

Mnożenie ( )( 2 ) 3 2 2 3 ( ) 2 ( ) 3 Dzielenie iloraz : dzielnik reszta 3 + 2 + 6 + 5 : 3 + + 6 + 4 + 3 5 + 4 + 3 5 + 3 + 2 4 + 2 4 + 2 + reszta

Metoda CRC polega na dodawaniu bitów będących resztą z dzielenia wielomian generujący Traktując bity reszty jako najmniej znaczące, należy bity wiadomości przesunąć odpowiednio w lewo, czyli zwiększyć ich wagę n-k razy, aby zrobić miejsce dla bitów reszty n - k = liczba bitów reszty = liczba bitów dodatkowych

Procedura CRC ) przyjmujemy wielomian generujący g() stopnia g = n k; 2) słowo wiadomości (binarne) przedstawiamy w postaci wielomianu m(); 3) wielomian m() przesuwamy w lewo o g pozycji, tj. zwiększamy wagę jego wszystkich wyrazów g razy, a puste miejsca w wielomianie uzupełniamy zerami; 4) otrzymujemy wielomian m() g ; 5) wielomian ten dzielimy przez g(); 6) resztę z dzielenia dopisujemy do wielomianu m() g, 7) otrzymujemy wielomian m() g + r(); 8) zamieniamy go na liczbę binarną otrzymujemy końcowe słowo kodowe. nk m() m( ) m( ) nk

Przykład k n m ) ( () m ) ( nk m ) ( 2 3 5 m 6, n k m 5 6 7 9 4 ) ( m ) ( 3 4 g ) ( ) ( ) ( : ) ( 4 5 4 r g m r 2 ) ( r m 2 5 6 7 9 4 ) ( ) ( c

Po stronie odbiorczej odbieramy całe słowo łącznie z bitami reszty i dzielimy je przez ten sam wielomian generujący słowo powinno podzielić się bez reszty! Dlaczego? Jak można zapisać wielomian całego słowa kodowego? nk c( ) m( ) r( ) gdzie n = długość słowa kodowego, k = długość wiadomości

) ( ) ( ) ( ) ( r q g m k n ) ( ) ( ) ( r m c k n ale podstawiając ) ( ) ( ) ( ) ( ) ( r r q g c k n m ) (... w stosowanej arytmetyce Prawidłowe słowo kodowe dzieli się bez reszty przez wielomian generujący... i to jest sprawdzane po stronie odbiorczej bo w ten sposób została wyznaczona r()

słowo kodowe poprawne c() słowo niepoprawne (błędne) c () przy czym c' ( ) c( ) e( ) dodawanie mod 2! e() = wektor błędów - słowo zawierające i ; jedynka oznacza, że na danym miejscu wystąpił błąd np. e() = - na 5. bicie wystąpił błąd e() = - błąd paczkowy o długości 6 bitów sprawdzana jest podzielność c () przez g() c' ( ) g( ) q( ) e( ) to jest na pewno podzielne czy to jest podzielne przez g()?

Wybór wielomianu g() e() nie powinno być podzielne przez g() w przeciwnym razie nie wykryje się błędu! Dla błędów pojedynczych e() =... albo... albo 2... albo 3... albo 4... itd.. Dlatego Wielomian generujący g() nie powinien mieć postaci m - nie może być jednomianem m[, n-]

Wybór wielomianu g() Dla błędów podwójnych e() = +... albo 2 +... albo 3 +... albo 2 +... albo 3 +... itd.. ogólnie e() = i + j = i (+ j-i ) j, i numery = < i < j < n- błędnych bitów Wiadomo już, że g() nie dzieli bez reszty i czy może podzielić bez reszty (+ j-i )?

Wybór wielomianu g() Jeżeli g() jest primitive (nierozkładalny) to nie dzieli dwumianu ( + j-i ) dla j - i < 2 n - k - n - k = stopień wielomianu g() Przykład n = 7 k = 3 wielomian g() = 3 + + nie dzieli (+ n ) dla n < 5 n taki błąd podwójny oraz krótsze będą wykryte

Wybór wielomianu g() niektóre stosowane wielomiany generujące CRC-8 8 + 2 + + reszta 8-bitowa nagłówek ATM CRC- + 9 + 5 + 4 + 2 + reszta -bitowa ATM AAL CRC-2 2 + + 3 + + itd. CRC-6 6 + 5 + 2 + IBM Bisync ITU-6 6 + 2 + 5 + HDLC, XMODEM, V.4 CCITT-32 ITU-32 32 + 26 + 23 + 22 + 6 + 2 + + + + 8 + 7 + 5 + 4 + 2 + + LAN, IEEE 82, V.42 Przykładowo, wielomian CRC-2 wykrywa wszystkie błędy paczkowe o długości 2 b, 99,95% błędów o długości 3 b i 99,976% jeszcze dłuższych!

Najlepsze wielomiany generujące wg S. Jackowskiego (Telekomunikacja - Pol. Radomska) n = 3 n = 7 n = 5 n = 3 n = 63 n = 27 n = 255 2 + + 3 + + 4 + + 5 + 3 + 6 + + 7 + 3 + 8 + 4 + 3 + 2 + długość całego słowa

Dotychczas było tylko wykrywanie błędów lepiej błędy wykrywać i korygować do tego celu potrzebny jest znaczny nadmiar informacji kodowanie nadmiarowe - - przekształcanie k-pozycyjnych binarnych ciągów informacyjnych w n-pozycyjne ciągi kodowe, gdzie n > k

Zdolność korekcyjna kodu zależy od odległości Hamminga między słowami kodowymi Odległość Hamminga - liczba pozycji bitów, na których dwa słowa kodowe się różnią d H inaczej miara niepodobieństwa słów kodowych Minimalna odległość Hamminga dla kodu - najmniejsza odległość dla dowolnej pary słów z danej przestrzeni kodowej 2 3 2 d Hmin

Detekcja błędów Największa krotność błędów wykrywanych przez blokowy kod nadmiarowy (n,k) o odległości d Hmin wynosi d H min Korekcja błędów Szukamy takiego słowa kodowego, które jest najbardziej podobne do znanych słów kodowych (ma najmniejszą odległość H. od słowa odebranego). Ilość błędów korygowalnych d E H min 2 część całkowita

Błąd typu wymazanie danych (erasure) całkowita niepewność względem zakłóconych bitów, ale miejsca tych bitów są znane liczba korygowalnych błędów wymazania d H min liczba korygowalnych zwykłych błędów d E H min 2 korekcja błędów wymazania jest łatwiejsza!

Przykład z jednowymiarową przestrzenią kodową d H = d H = 2 d H = 3 d H = 4 d H = 5 poprawne słowo kodowe niepoprawne słowo kodowe skutek zakłócenia

Formalne przedstawienie kodowania nadmiarowego Słowo informacyjne m m 2 m 3 m 4 m 5 m 6 m 7 m 8 m(, k) Macierz generująca G (k n) Słowo kodowe c c 2 c 3 c 4 c 5 c 6 c 7 c 8 c 9 c c c 2 c(, n)

słowo informacyjne macierz generująca = słowo kodowe m G = c m [m m 2 m 3 m 4 ] G = [m m 2 m 3 m 4 m m 2 m 4 m m 3 m 4 m 2 m 3 m 4 ] = c Macierz G zawiera podmacierz jednostkową stopnia k oraz podmacierz zadającą kod (do obliczania bitów dodatkowych). Wiersze i kolumny G można przestawić wtedy otrzyma się kod niesystematyczny.

Po stronie odbiorczej Kod odebrany c c 2 c 3 c 4 c 5 c 6 c 7 c 8 c 9 c c c 2 Macierz kontroli parzystości H syndrom s s s 2 s 3 s 4 odbiór bez błędów syndrom = macierz odbiór błędny - syndrom wskazuje pozycję błędu

Dokładniejsza postać macierzy G i H Na pewno istnieje ścisły związek między macierzami G i H c = m G oraz s = c H uwaga tradycyjnie przyjmuje się, że przy kontroli parzystości korzysta się z macierzy transponowanej, tzn. s = c H T i tak będzie to stosowane postulat: c H T = dla słowa poprawnego ale c = m G m G H T = dla dowolnego słowa informacyjnego G H T G H T = związek między macierzami

Dokładniejsza postać macierzy G i H W przypadku słowa błędnego ma być s c H T dla słowa błędnego, ale c = c + e (c + e) H T = c H T + e H T = s = e H T Dla odpowiednio skonstruowanej macierzy H wartość syndromu nie zależy od słowa informacyjnego, 3.4.25 G H T = a tylko od rozkładu błędów.

Dokładniejsza postać macierzy G i H G = [ P ] podmacierz jednostkowa n k podmacierz zadająca kod aby G H T =, macierz H T powinna być postaci przy mnożeniu macierzy każdy składnik będzie postaci p r,m p r,m, a to jest zawsze =.

Dokładniejsza postać macierzy G i H zatem nietransponowana macierz H będzie równa n H = [ P T ] n-k

Liczba m bitów korekcyjnych niezbędnych do skorygowania t błędnych bitów. liczba ta musi spełniać nierówność 2 m t i k i m wzór uniwersalny, niezależny od zastosowanego kodu korekcyjnego a b a! b!( a b)!

Kodowanie za pomocą wielomianu generującego wyznaczane są bity reszty z dzielenia i one stanowią bity nadmiarowe; jeżeli będzie ich dostatecznie dużo można skorygować błędy Kodery wielomianowe są proste do realizacji sprzętowej

Układowa realizacja kodowania wielomianowego dane wej przerzutniki MS

Układowa realizacja kodowania wielomianowego dane wej. po pierwszym takcie zegara najpierw bity bardziej znaczące

Układowa realizacja kodowania wielomianowego dane wej. słowo informacyjne najpierw bity bardziej znaczące + + + + + + koder koder2 bity reszty

Przykład kodera IBM Bisync (z systemu IBM36) g()= 6 + 5 + 2 +

Kodowanie Reeda-Solomona szczególnie do korekcji błędów paczkowych Podstawowa jednostka w kodzie RS = grupa bitów (symbol), a nie bit Aby skorygować t symboli potrzeba 2t symboli dodatkowych (np. bajtów) symbol s-bitowy (np. s = 8) wtedy maksymalna długość całego słowa n = 2 s

Przykład kodowania korekcyjnego dotyczącego grup bitów, np. bajtów A B C X Y 5 5 34 54 27 A+B+C A+2B+3C Jeżeli odebrano 5 5 3 54 27 (jeden bajt błędny) A B C X Y Oblicza się A+B+C = 5; wartość błędu = X-(A+B+C) = 54-5 = 4 Ale gdzie ten błąd wystąpił? Oblicza się A+2B+3C = 5; (Y 5) / 4 = 3 Miejsce błędu = Y X Y X miejsce błędu Kod koryguje jeden bajt kosztem 2 bajtów dodatkowych

Kody splotowe (P. Elias 955) dane wejściowe kodowane są na bieżąco (jak dochodzą do wejścia) nie ma potrzeby zapamiętywania bloków danych w celu ich zakodowania dane wejściowe dane zakodowane przykład prostego kodera splotowego elementy pamięciowe multiplekser na każdy bit wejściowy przypada aż 3 bity wyjściowe! sprawność kodera =/3 bit informacji i 2 nadmiarowe

poz. funkcja przejścia = poz.2 funkcja przejścia = + D 2 poz.3 funkcja przejścia = + D + D 2 D = operator opóźnienia D = opóźnienie o takt D 2 = opóźnienie o 2 takty, itd. odpowiedź impulsowa kodera = przy pobudzeniu impulsem, tzn. wejściowy ciąg bitów = na. wyjściu + na 2. wyjściu + na 3. wyjściu

poz. funkcja przejścia = poz.2 funkcja przejścia = + D 2 poz.3 funkcja przejścia = + D + D 2 D = operator opóźnienia D = opóźnienie o takt D 2 = opóźnienie o 2 takty, itd. odpowiedź impulsowa kodera = przy pobudzeniu impulsem, tzn. wejściowy ciąg bitów = na. wyjściu + na 2. wyjściu + na 3. wyjściu odpowiedź impulsowa kodera =

poz. funkcja przejścia = poz.2 funkcja przejścia = + D 2 poz.3 funkcja przejścia = + D + D 2 D = operator opóźnienia D = opóźnienie o takt D 2 = opóźnienie o 2 takty, itd. odpowiedź impulsowa kodera = przy pobudzeniu impulsem, tzn. wejściowy ciąg bitów = na. wyjściu + na 2. wyjściu + na 3. wyjściu odpowiedź impulsowa kodera =

poz. funkcja przejścia = poz.2 funkcja przejścia = + D 2 poz.3 funkcja przejścia = + D + D 2 D = operator opóźnienia D = opóźnienie o takt D 2 = opóźnienie o 2 takty, itd. odpowiedź impulsowa kodera = przy pobudzeniu impulsem, tzn. wejściowy ciąg bitów = na. wyjściu + na 2. wyjściu + na 3. wyjściu odpowiedź impulsowa kodera =

poz. funkcja przejścia = poz.2 funkcja przejścia = + D 2 poz.3 funkcja przejścia = + D + D 2 D = operator opóźnienia D = opóźnienie o takt D 2 = opóźnienie o 2 takty, itd. odpowiedź impulsowa kodera = przy pobudzeniu impulsem, tzn. wejściowy ciąg bitów = na. wyjściu + na 2. wyjściu + na 3. wyjściu odpowiedź impulsowa kodera =

poz. funkcja przejścia = poz.2 funkcja przejścia = + D 2 poz.3 funkcja przejścia = + D + D 2 D = operator opóźnienia D = opóźnienie o takt D 2 = opóźnienie o 2 takty, itd. odpowiedź impulsowa kodera = przy pobudzeniu impulsem, tzn. wejściowy ciąg bitów = na. wyjściu + na 2. wyjściu + na 3. wyjściu odpowiedź impulsowa kodera =...

krata (trellis) stany kodera wyrażone przez stany przerzutników generowane stany na wyjściu pewne przejścia są niedozwolone!

stany kodera przy danej sekwencji bitów wejściowych dla kodów splotowych nie można określić odległości Hamminga, bo słowa kodowe jako takie nie istnieją!

dekodowanie kodów splotowych algorytm Viterbiego przykład A. Viterbi poszukiwanie takiego ciągu bitów, aby był on najmniej odległy (np. w sensie Hamminga) od ciągu odebranego współczesne dekodery Viterbiego specjalizowane układy scalone GSM, DVB, UMTS, WLAN

koder splotowy z systemu radiofonii DAB