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

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Automaty asynchroniczne
Wykład 11: Kody i metody korekcji błędów
Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
Macierze, wyznaczniki, odwracanie macierzy i wzory Cramera
Równanie różniczkowe zupełne i równania do niego sprowadzalne
DYSKRETYZACJA SYGNAŁU
Metoda simpleks Simpleks jest uniwersalną metodą rozwiązywania zadań programowania liniowego. Jest to metoda iteracyjnego poprawiania wstępnego rozwiązania.
dr A Kwiatkowska Instytut Informatyki
Badania operacyjne. Wykład 2
Michał Łasiński Paweł Witkowski
Metody numeryczne Wykład no 1.
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Przygotował Przemysław Zieliński
Czyli czym się różni bit od qubitu
Wykład 3: Zasady Działania Protokołów Telekomunikacyjnych
1.
Metoda simpleks opracowanie na podstawie „Metody wspomagające podejmowanie decyzji w zarządzaniu” D. Witkowska, Menadżer Łódź Simpleks jest uniwersalną.
Zapis informacji Dr Anna Kwiatkowska.
Kody Liniowe Systemy cyfrowe.
Równania i Nierówności czyli:
Temat 3: Co to znaczy, że komputer ma pamięć? Czy można ją zmierzyć?
Matematyka.
Elektronika cyfrowa i mikroprocesory
Kod Graya.
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
Układy kombinacyjne cz.2
opracowanie: Agata Idczak
Podstawy analizy matematycznej II
Systemy wspomagania decyzji
Liczby rzeczywiste ©M.
Liczby całkowite dodatnie BCN
Sterowanie – metody alokacji biegunów II
Źródła błędów w obliczeniach numerycznych
Warstwa łącza danych.
„Równania są dla mnie ważniejsze, gdyż polityka jest czymś istotnym tylko dzisiaj, a równania są wieczne.” Albert Einstein.
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Matematyka i system dwójkowy
Liczby Naturalne.
Złożone układy kombinacyjne
Programowanie Niskopoziomowe
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Metody matematyczne w Inżynierii Chemicznej
Podstawy Techniki Cyfrowej
1 informatyka +. 2 TYTUŁ: DZIELENIE WIELOMIANÓW - schemat Hornera - AUTORZY: Paweł Królikowski Agnieszka Brzostek.
Działania na ułamkach dziesiętnych
Zasady arytmetyki dwójkowej
Typy liczbowe, zmienne, operatory Zajęcia 4. Zmienne Zmienna – to w programowaniu element programu, który może mieć przypisaną pewną wartość (wartość.
Matematyka Ekonomia, sem I i II.
Rodzaje liczb.
Metody rozwiązywania układów równań liniowych
Warstwowe sieci jednokierunkowe – perceptrony wielowarstwowe
METODY REPREZENTOWANIA IFORMACJI
LICZBY NATURALNE I CAŁKOWITE Gimnazjum w Blachowni Hej, mam na imię Zbigniew! Jestem nauczycielem matematyki. Dziś wprowadzę was w cudowny świat liczb.
Liczby 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …(i tak dalej) nazywamy liczbami naturalnymi. Tak jak z liter tworzy się słowa, tak z cyfr tworzymy liczby. Dowolną.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
URZĄDZENIA TECHNIKI KOMPUTEROWEJ Zapis liczb binarnych ze znakiem.
Elementy cyfrowe i układy logiczne
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Technika Mikroprocesorowa 1
Metody matematyczne w Inżynierii Chemicznej
Rozkładanie wielomianów
Wstęp do Informatyki - Wykład 6
Układy asynchroniczne
Podstawy Automatyki Człowiek- najlepsza inwestycja
ALGORYTMY I STRUKTURY DANYCH
Działania pamięciowe na ułamkach dziesiętnych
Zapis prezentacji:

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

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

metoda najbardziej popularna i skuteczna CRC (Cyclic Redundancy Check)

Przykład CRC w systemie dziesiętnym Liczba (informacja) nadawana 745 wybieramy dzielnik – np. 7 „przesuwamy” liczbę w lewo 7450 dzielimy przez 7 – otrzymujemy resztę 2. Należałoby tę resztę odjąć od 7450, aby uzyskać liczbę podzielną przez 7, ale wtedy zmieniłaby się liczba informacyjna Można dodać dopełnienie do 7, czyli dodać 5 Ostatecznie liczba 745 zostaje „zakodowana” do postaci 7455, która dzieli się przez 7. Jeżeli odebrana liczba będzie zawierać jeden błąd np nie dzielą się bez reszty przez 7 – błąd można wykryć dzieli się przez 7!! Zmieniona liczba różni się o 1001 od oryginału, a 1001 jest podzielne przez 7.

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

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

Mnożenie Dzielenie x 6 + x 5 : x 3 + x + 1 x 3 + x 2 + x x 6 + x 4 + x 3 x 5 + x 4 + x 3 x 5 + x 3 + x 2 x 4 + x 2 x 4 + x 2 + x x reszta : iloraz dzielnik reszta

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

Dzielnik = wielomian generujący; jego wybór – bardzo ważny 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? gdzie n = długość słowa kodowego, k = długość wiadomości

ale podstawiając 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(x)

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

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

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

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

Błędy paczkowe długości L e(x) = = d(x)·x i (L – długość paczki) Wybór wielomianu g(x) określa rozkład błędów w paczce

d(x) jest niepodzielny przez g(x), gdy deg{g(x)} > deg{d(x)} – dobrze! L = < n – k wykrywane są wszystkie błędy, L= 1+ n – k tzn. deg{g(x)} = deg{d(x)} podzielność tylko, gdy g(x) = d(x); prawdopodobieństwo takiego błędu = 1/2 L-2 L > 1 + n - k błędy mogą zostać niewykryte ich prawdopodobieństwo = 1/2 n-k (L – długość paczki) Wybór wielomianu g(x) spośród innych błędów o tej samej długości

x 8 + x 2 + x + 1 x 10 + x 9 + x 5 + x 4 + x x 16 + x 12 + x x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11 + x x 8 + x 7 + x 5 + x 4 + x 2 + x + 1 CRC-8 CRC-10 ITU-16 CCITT-32ITU-32 nagłówek ATM ATM AAL HDLC, XMODEM, V.41 LAN, IEEE 802, DoD, V.42 niektóre stosowane wielomiany generujące x 12 + x 11 + x 3 + x + 1 CRC-12 x 16 + x 15 + x CRC-16 IBM Bisync Wybór wielomianu g(x) reszta 8-bitowa reszta 10-bitowa itd.

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

Rodzaje kodów korekcyjnych (protekcyjnych)

Kodowanie blokowe - proces kodowania w i-tym takcie nie zależy od przebiegu kodowania w poprzednich taktach. oznaczenie kodu nadmiarowego kod (n,k) bity informacyjnebity nadmiarowe bity informacyjne wydzielone od bitów nadmiarowych – kod systematyczny bity informacyjne i bity nadmiarowe „pomieszane” – kod niesystematyczny

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ą 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 dHdH 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 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 część całkowita

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

Przykład z jednowymiarową przestrzenią kodową d = 1 d = 2 d = 3 d = 4 d = 5 poprawne słowo kodoweniepoprawne słowo kodowe

m1m1 m2m2 m3m3 m4m4 m5m5 m6m6 m7m7 m8m8 Słowo informacyjne Macierz generująca G (k x n) Słowo kodowe c1c1 c2c2 c3c3 c4c4 c5c5 c6c6 c7c7 c8c8 c9c9 c 10 c 11 c 12 Formalne wyznaczanie bitów nadmiarowych m(1, k) c(1, n)

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

Macierz kontroli parzystości H syndrom s s1s1 s2s2 s3s3 s4s4 Kod odebrany c1c1 c2c2 c3c3 c4c4 c5c5 c6c6 c7c7 c8c8 c9c9 c 10 c 11 c 12 Po stronie odbiorczej odbiór bez błędów syndrom = 0 odbiór błędny syndrom wskazuje pozycję błędu macierz

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

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

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

H = [ P T 1 ] n n-k zatem nietransponowana macierz H będzie równa Dokładniejsza postać macierzy G i H Przykład konstrukcji kodu korekcyjnego …

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

Kodowanie za pomocą wielomianu generującego

Słowo informacyjne (jako wielomian) można pomnożyć przez wielomian generujący - otrzyma się wielomian na pewno podzielny przez g(x) ale bity informacyjne się „rozpłyną” – powstanie kod niesystematyczny Lepiej podzielić przez wielomian generujący (jak przy CRC) – dostanie się bity dodatkowe (reszty), które dołączy się do słowa informacyjnego. Błędy można wykryć i także zlokalizować (skorygować), o ile wielomian g(x) będzie dostatecznie wysokiego stopnia. Kodery wielomianowe są proste do realizacji sprzętowej…

Układowa realizacja kodowania wielomianowego dane wej przerzutniki MS

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

Kody splotowe (P. Elias 1955) – 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 multiplekser dane wejściowe dane zakodowane elementy pamięciowe na każdy bit wejściowy przypada aż 3 bity wyjściowe! sprawność kodera =1/3 1 bit informacji i 2 nadmiarowe przykład prostego kodera splotowego

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

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

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

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

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

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

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

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 GSM, DVB, UMTS, WLAN współczesne dekodery Viterbiego – specjalizowane układy scalone