Kody splotowe. Zastosowanie

Podobne dokumenty
Kody splotowe (konwolucyjne)

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

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

W11 Kody nadmiarowe, zastosowania w transmisji danych

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

Laboratorium ochrony danych

Teoria informacji i kodowania

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

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

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

Matematyka dyskretna

Synteza strukturalna automatu Moore'a i Mealy

Temat 7. Dekodery, enkodery

Sławomir Kulesza. Projektowanie automatów asynchronicznych

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

PAMIĘĆ RAM. Rysunek 1. Blokowy schemat pamięci

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

Temat: Algorytm kompresji plików metodą Huffmana

Podstawowe moduły układów cyfrowych układy sekwencyjne cz.2 Projektowanie automatów. Rafał Walkowiak Wersja /2015

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

ZADANIE 1. Rozwiązanie:

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

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Teoria Informacji - wykład. Kodowanie wiadomości

Sławomir Kulesza. Projektowanie automatów synchronicznych

Badanie właściwości skramblera samosynchronizującego

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

1. Operacje logiczne A B A OR B

Kody blokowe Wykład 2, 10 III 2011

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

Synteza strukturalna automatów Moore'a i Mealy

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

f we DZIELNIKI I PODZIELNIKI CZĘSTOTLIWOŚCI Dzielnik częstotliwości: układ dający impuls na wyjściu co P impulsów na wejściu

wagi cyfry pozycje

KODOWANIE KANAŁOWE (NADMIAROWE) ERROR CONTROL CODING

4. UKŁADY FUNKCJONALNE TECHNIKI CYFROWEJ

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

Tranzystor JFET i MOSFET zas. działania

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

1 Automaty niedeterministyczne

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

Wstęp do informatyki- wykład 1

Automatyka. Treść wykładów: Multiplekser. Układ kombinacyjny. Demultiplekser. Koder

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

PODSTAWY TEORII UKŁADÓW CYFROWYCH

Sygnał a informacja. Nośnikiem informacji mogą być: liczby, słowa, dźwięki, obrazy, zapachy, prąd itp. czyli różnorakie sygnały.

Projekt zespołowy. Część1: Projekt potokowej jednostki przetwarzającej przeznaczonej do realizacji algorytmu FFT. Rok akademicki 2008/2009

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Automat skończony FSM Finite State Machine

Pracownia elektryczna i elektroniczna. Elektronika cyfrowa. Ćwiczenie nr 5.

Kodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski

Wstęp działanie i budowa nadajnika

Kompresja danych DKDA (7)

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

ZAKŁAD SYSTEMÓW ELEKTRONICZNYCH I TELEKOMUNIKACYJNYCH Laboratorium Podstaw Telekomunikacji WPŁYW SZUMÓW NA TRANSMISJĘ CYFROWĄ

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

Przetwarzanie i transmisja danych multimedialnych. Wykład 5 Kodowanie słownikowe. Przemysław Sękalski.

Pracownia Komputerowa wykład VI

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

Architektura komputerów Wykład 2

Złożoność obliczeniowa zadania, zestaw 2

ćwiczenie 202 Temat: Układy kombinacyjne 1. Cel ćwiczenia

pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.

Kombinacyjne bloki funkcjonalne

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

Mikrooperacje. Mikrooperacje arytmetyczne

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

TEMAT: PROJEKTOWANIE I BADANIE PRZERZUTNIKÓW BISTABILNYCH

WSTĘP DO ELEKTRONIKI

LABORATORIUM ELEKTRONIKI UKŁADY KOMBINACYJNE

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

Elektronika (konspekt)

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

Kwantyzacja wektorowa. Kodowanie różnicowe.

Algorytmy zachłanne. dr inż. Urszula Gałązka

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

Definicja układu kombinacyjnego była stosunkowo prosta -tabela prawdy. Opis układu sekwencyjnego jest zadaniem bardziej złożonym.

Niech x 1,..., x n będzie ciągiem zdarzeń. ---

Wstęp do informatyki- wykład 2

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

Kodowanie Shannona-Fano

INSTYTUT CYBERNETYKI TECHNICZNEJ POLITECHNIKI WROCŁAWSKIEJ ZAKŁAD SZTUCZNEJ INTELIGENCJI I AUTOMATÓW

Realizer cz. 5 Krzysztof Górski

Przetworniki cyfrowo analogowe oraz analogowo - cyfrowe

Systemy bezpieczne i FTC (Niezawodne Systemy Cyfrowe)

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Podstawy Informatyki Elementarne podzespoły komputera

UKŁAD SCALONY. Cyfrowe układy można podzielić ze względu na różne kryteria, na przykład sposób przetwarzania informacji, technologię wykonania.

Język UML w modelowaniu systemów informatycznych

Pracownia Komputerowa wyk ad VI

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

Podstawowe pojęcia. Teoria informacji

Programowanie w językach asemblera i C

Arytmetyka stałopozycyjna

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Kodowanie informacji. Kody liczbowe

Transkrypt:

Kody splotowe Zastosowanie Niekiedy potrzeba buforowania fragmentu wiadomości przed zakodowaniem, tak jak to ma miejsce w koderze blokowym, jest przeszkodą, gdyż dane do zakodowania napływają strumieniem. Wtedy wyjściem jest zastosowanie kodera splotowego, który przetwarza dane w sposób ciągły. W praktyce kodery splotowe są stosowane np. jako sposób korekcji błędów przy zapisie na płytach DVD. Opis działania Działanie kodera splotowego można porównać do działania maszyny o skończonej liczbie stanów. Składa się ona z: 1. M-stopniowego rejestru przesuwnego (składającego się z M przerzutników), 2. n sumatorów modulo 2, 3. multipleksera. L-bitowy ciąg wiadomości jest kodowany w n(l+m) -bitowy ciąg wyjściowy. Def. Stopa kodu kodu splotowego wyraża się wzorem: L r= bitów /symbol n L M Zazwyczaj L» M, więc przyjmuje się w przybliżeniu: r= 1 n. Def. Długość ograniczona kodu splotowego jest równa liczbie przesunięć, podczas których pojedynczy bit wiadomości może wpłynąć na wyjście kodera. Dla kodera o M-stopniowym rejestrze przesuwnym, długość ograniczona kodu K = M + 1. Przykład Schemat przykładowego kodera splotowego dla n=2 oraz K=3 przedstawiony jest poniżej: Kod generowany przez ten koder jest kodem niesystematycznym. W przeciwieństwie do kodów blokowych, zazwyczaj stosuje się niesystematyczne kody splotowe. Niech wiadomość do zakodowania ma postać: 1. Przy rozpoczęciu kodowania zakładamy, że koder jest wyzerowany, czyli we wszystkich przerzutnikach znajdują się wartości 0. Kolejne bity wiadmości wsuwamy z lewej strony, po czym wędrują one zgodnie z kierunkiem strzałek, po drodze zapamiętywane w kolejnych przerzutnikach rejestru przesuwnego. Wynik dodawania (zgodnie ze schematem) w sumatorach modulo dwa przechodzi do multipleksera, a stąd na wyjście.

Zauważmy, że multiplekser, na schemacie umieszczony jako przełącznik, w każdym swoim położeniu definiuje aktywną ścieżkę w koderze (w tym przypadku są dwie, również zaznaczone na schamacie). Prześledźmy kolejne fazy kodowania wiadomości 1 dla pierwszej ścieżki: Zauważmy, że gdy wyczerpią się bity z ciągu wejściowego, kodowanie przebiega dalej, aż do wyzerowania rejestru przesuwnego. Zakładamy wtedy, że na wejście kodera wchodzi cały czas wartość 0, jest to tzw ogon wiadomości. Zbierając dane z wyjścia kodera otrzymujemy ciąg 1. Postępując analogicznie dla drugiej ścieżki, otrzymamy 1. Multiplekser ustawia w ciąg wyjściowy naprzemiennie bity napływające z kolejnych ścieżek, więc w rezultacie otrzymujemy: c = ( ) jako zakodowany ciąg wyjściowy. Kodowanie z wykorzystaniem odpowiedzi impulsowych kodera Każdą ścieżkę od wejścia do wyjścia kodera można scharakteryzować za pomocą odpowiedzi impulsowej, czyli odpowiedzi danej ścieżki na symbol 1 podany na wejście (przy założeniu, że wszystkie przerzutniki były początkowo wyzerowane): g 0 i, g 1 i, g 2 i,..., g M i. Kompletny koder splotowy jest opisany przez zbiór wielomianów generujących (zbiór generujący): {g 1 D, g 2 D,..., g n D }, gdzie g i D =g 0 i g 1 i D g 2 i D 2... g M i D M, D zmienna opóźnienia jednostkowego (analogiczna do X przy kodowaniu cyklicznym). Splot w dziedzinie czasu transformuje się na mnożenie w dziedzinie częstotliwości. Wielomian kodowy dla i-tej ścieżki jest więc równy: c i D = g i D m D, gdzie m(d) jest wielomienem wiadomości do zakodowania.

Dla podanego wyżej przykładu kodera mamy: Odpowiedzi impulsowe ścieżek i odpowiadajęce im wielomiany generujące: g i = 1 ; g i D =1 D D 2 g i = 1 ; g i D =1 D 2 Ciąg wiadomości i wielomian wiadomości: m= 1 ; m D =1 D 3 D 4 Z tego wyliczamy wielomiany kodowe dla każdej ze ścieżek: c 1 D =g 1 D m D = 1 D D 2 1 D 3 D 4 =1 D D 2 D 3 D 6 c 2 D =g 1 D m D = 1 D 2 1 D 3 D 4 =1 D 2 D 3 D 4 D 5 D 6 Po zamianie wielomianów na ciągi i zmultipleksowaniu otrzymamy dokładnie taki sam wynik jak w powyższym przykładzie. Wynika z tego, że do pełnej charakterystyki kodera splotowego, która wystarczy do zakodowania dowolnej wiadomości, wystarczy podać zbiór odpowiedzi impulsowych dla wszystkich scieżek, czyli zbiór generujący. Diagramy: stanu oraz kratowy Na początku niniejszego opracowania działanie kodera splotowego zostało porównane do maszyny o skonczonej liczbie stanów. Stan kodera określony jest jednoznacznie przez zawartość rejestru przesuwnego. Tak więc koder o M-stopniowym rejestrze przesuwnym ma 2 M różnych stanów. Przejście od jednego do drugiego stanu odbywa się po podaniu na wejście bitu danych wynika z tego, że z danego stanu koder może przejść w jednym kroku maksymalnie do jednego z dwóch innych stanów (na wejściu 1 albo 0), może też pozostać w obecnym stanie. Wszystkie możliwe stany oraz przejścia pomiędzy nimi ilustruje diagram stanów kodera. Powracając do naszego przykładu diagram stanów dla niego ma postać: Węzły diagramu to kolejne stany. Linia ciągła oznacza przejście ze stanu do stanu spowodowane podaniem na wejście wartości 0. Linia przerywana analogicznie wartości 1. Przy liniach dodatkowo umieszczone są wartości podawane na wyjście kodera (dla obydwu ścieżek). Umożliwia to zakodowanie wiadomości przy pomocy diagramu rozpoczynamy w węźle oznaczającym stan i poruszamy się po odpowiednich liniach w zależności od tego, czy na wejściu pojawia się 0 czy 1, zbierając po drodze wartośći z wyjścia. Po wyczerpaniu bitów wiadomości kodujemy ogon złożony z zer, aż zatrzymamy się ponownie w węźle. Innym typem diagramu jest diagram kratowy. Nazwa wzięła się z regularnie rozmieszczonych

węzłów, pomiędzy którymi rozpięte są krzyżujące się linie przejść pomiędzy stanami. Kolejnym stanom odpowiadają kolejne wiersze kraty, natomiast kolejne kolumny to poziomy (nazywane też głębokościami), które odpowiadają za kolejne kroki kodowania. W przeciwieństwie do diagramu stanów, rozpiętość diagramu kratowego zależy od długości wiadomości do zakodowania. Oto przykład (wciąż rozpatrujemy ten sam koder) dla wiadomości o długości L: j=0 1 2 3 4 L L+1 L+2 Dekodowanie algorytm Viterbiego Rozpatrzmy koder splotowy zdefiniowany przez diagram kratowy. Dekoder posiada (lub rekonstruuje na podstawie innych danych) taki sam diagram i wykorzystuje go do dekodowania oryginalnego ciągu. Odbierając kolejny podciąg n bitów dekoder porusza się w diagramie wkratowym w prawo, wzdłuż linii oznaczonej tym ciągiem (który w koderze oznacza ciąg wyjściowy), przechodząc do kolejnego stanu. Zauważmy, że z danego węzła diagramu nie są osiągalne wszystkie stany, tak samo jak nie są dopuszczalne wszystkie kombinacje podciągów. Jeśli dekoder napotka na taki niedozwolony ciąg, mamy do czynienia z przekłamamiem transmisji. Ponieważ nie istnieje linia oznaczona odczytanym podciągiem, musimy znaleźć algorytm decyzyjny, który wybierze dalszą drogę w grafie. W praktyce, nie możemy polegać jedynie na istnieniu odpowiedniej ścieżki w grafie z aktualnego punktu, gdyż przypadkowa zamiana jednego dozwolonego podciągu na inny, też dozwolony wprawdzie pozwoli nam posunąć się dalej, ale później spowoduje lawinę błędów i, w rezultacie, błędną rekonstrukcję. Dlatego trzeba analizować wszystkie możliwe ścieżki, dzięki czemu otrzymamy rezultat o maksymalnej wiarygodności dekodowania. Tak działa algorytm Viterbiego, który do oceny wiarygodności dekodowania dla każdej ścieżki używa odległości Hamminga pomiędzy odczytanym ciągiem a ciągiem zdekodowanym przy użyciu danej ścieżki. Dla kolejnych poziomów w diagramie kratowym postępujemy wg następującego algorytmu: Algorytm Viterbiego: Dla każdego węzła na danym poziomie: wybierz tą ze ścieżek dochodzących do tego węzła, która daje w wyniku najmniejszą sumaryczną odległość Hamminga pomiędzy odczytanym ciągiem a ciągiem zdekodowanym. W przypadku, gdy wszystkie ścieżki dają taki sam wynik, wybierz jedną losowo. Pozostałe ścieżki odrzuć, a sumaryczną odległość Hamminga zapamiętaj w węźle, w celu wykorzystania w następnym kroku. Ścieżki, które pozostają w diagramie po odrzuceniu pozostałych nazywają się ścieżkami aktywnymi lub ścieżkami ocalenia. Algorytm startuje ze stanu wyzerowanego kodera (lewy skrajny punkt diagramu kratowego) oraz sumarycznej odległości równej 0, zakończy się po dojściu do puktu końcowego po prawej stronie, gdzie nastąpi ostateczny wybór ścieżki. W praktyce zapamiętanie wszystkich ścieżek ocalenia, gdy ciąg do zakodowania jest bardzo długi (np ciąg bitów w strumieniu danych na płycie DVD) jest niemożliwe, ze względu na szybko wzrastające

wymagania pamięciowe. Wtedy algorytm stosuje się sekwencyjnie na oknie o ograniczonej długości. W tej wersji nie jest to już algorytm o maksymalnej wiarygodności dekodowania, ale przy odpowiedniej długości okna (5 lub więcej razy długość K kodu), jest wystarczająco dobry.