Podręcznik
Strona: | SEZAM - System Edukacyjnych Zasobów Akademickich i Multimedialnych |
Kurs: | Sygnały i kodowanie w telekomunikacji |
Książka: | Podręcznik |
Wydrukowane przez użytkownika: | Gość |
Data: | środa, 4 grudnia 2024, 20:28 |
1. Definicja telekomunikacji
Zanim przejdziemy do zagadnień związanych z sygnałami i ich kodowaniem na potrzeby telekomunikacji określmy czym jest współczesna telekomunikacja. Do początków lat 90. ubiegłego stulecia telekomunikacja związana była prawie w stu procentach z telefonią i telegrafią. Rozwój Internetu, a następnie telefonii komórkowej drastycznie zmienił zakres usług, do realizacji których służyła telekomunikacja. Mimo to klasyczna definicja telekomunikacji pozostaje wciąż aktualna.
Telekomunikacja to dziedzina wiedzy i nauki oraz działalność techniczna i gospodarcza dotycząca przekazywania wiadomości na odległość za pomocą sygnałów.
Podana definicja wymaga jednak uściślenia i wyjaśnienia. Przede wszystkim dotyczy to słów: wiadomość, odległość i sygnał. Nie każde przekazywanie wiadomości dotyczy telekomunikacji. Intuicja podpowiada nam, że telekomunikacja to przekazywanie wiadomości na odległość i tak jest w istocie. Trudno jednak jednoznacznie określić, o jaką odległość chodzi. Wyznacznikiem nie jest odległość mierzona w metrach czy kilometrach. Tym wyznacznikiem jest sieć i system służący przekazywaniu wiadomości. Pomiędzy komputerem a drukarką sieciową może być odległość zaledwie kilkudziesięciu centymetrów, a połączenie takie uznamy za telekomunikacyjne. Jeżeli jednak drukarka i komputer są połączone kablem USB i nie pracują w sieci to takiego połączenia nie można wiązać z telekomunikacją. Jeszcze bardziej drastyczny przykład dotyczy smartfona. Wbudowany w nim mikrofon, jeżeli jest używany przy połączeniu telefonicznym to jest on urządzeniem telekomunikacyjnym. Ten sam mikrofon użyty w dyktafonie nim nie jest. Z kolei słowo wiadomość kojarzy się intuicyjnie ze słowem informacja. Powiadom mnie, znaczy to samo co poinformuj mnie. Ilość informacji można mierzyć. Im coś jest mniej prawdopodobne tym ilość informacji jest większa. Telekomunikacja określa ilość informacji nieco inaczej. Oto prosty przykład. Dwie osoby rozmawiają przez telefon i jedna z nich mówi do drugiej: rozmawiamy przez telefon. Ilość przekazanej informacji jest równa zeru, bo interlokutor o tym wie. Pojawia się pytanie czy z punktu widzenia definicji telekomunikacji ilość informacji w przekazie też była równa zeru, a więc nie przekazana została żadna wiadomość? Oczywiście, że nie – przekaz wiadomości nastąpił. Ilość informacji w wiadomości jest mierzona inaczej, o czym będzie mowa dalej. Czy przekaz wiadomości za pomocą wszelakiego rodzaju sygnałów wiąże się z telekomunikacją? Nie – pomijając niszowe obszary telekomunikacji przyjmuje się, że muszą to być sygnały elektryczne bądź fale elektromagnetyczne.
1.1. Kryteria podziału telekomunikacji
Niniejszy podręcznik dotyczy wyłącznie aspektów technicznych telekomunikacji, choć jak to wynika z definicji do telekomunikacji zalicza się też działalność nietechniczną w jej obszarze, na przykład marketing usług telekomunikacyjnych. Z technicznego punktu widzenia trzy najważniejsze kryteria podziału telekomunikacji to:
przeznaczenie wiadomości, rodzaj wiadomości i rodzaj czynności.
Wiadomości z jednego źródła mogą być kierowane równocześnie do wielu odbiorców i wtedy mówimy o telekomunikacji rozsiewczej, Może też być odwrotnie. Z wielu źródeł wiadomości mogą być kierowane do jednego punktu – to telekomunikacja zbiorcza. I wreszcie telekomunikacja porozumiewawcza. W tym przypadku wiadomości są przesyłane dwukierunkowo między dwoma lub wieloma punktami.
Telekomunikacja rozsiewcza – rozsyłanie wiadomości za pomocą e-maili do wielu odbiorców.
Telekomunikacja zbiorcza – przesyłanie obrazów z wielu kamer w mieście do centrum nadzoru.
Telekomunikacja porozumiewawcza – łączność telefoniczna.
Przesyłane wiadomości mogą mieć różne źródło i różną postać. Źródłem wiadomości może być człowiek, ale może też być jakieś urządzenie, np. serwer, kamera. Wiadomość może mieć postać sygnału, np. mowa ludzka, ale może też mieć inną postać, np. arkusza programu Excel.
Z technicznego punktu widzenia najważniejszy jest podział telekomunikacji biorący pod uwagę rodzaj czynności. Wiadomość niezależnie od źródła i jej postaci musi być przetworzona na postać umożliwiającą jej przesłanie (teletransmisja) do właściwego odbiorcy (komutacja).
1.2. Przetwarzanie, transmisja, komutacja
Przetwarzanie wiadomości ma na celu nadanie jej postaci wymaganej przez dane techniczne rozwiązania telekomunikacyjne. W szczególności może to być zamiana sygnału niosącego wiadomość na inny sygnał, albo nadanie wiadomości, która nie jest sygnałem postaci odpowiedniego sygnału. Czynności te odbywają się po stronie nadawczej (w nadajniku), a czynności odwrotne przywrócenie wiadomości jej pierwotnej postaci odbywa się po stronie odbiorczej (w odbiorniku).
Pomiędzy nadajnikiem a odbiornikiem musi istnieć trwały albo czasowy kanał, którym przesyłany jest sygnał elektryczny bądź fala elektromagnetyczna niosąca wiadomość, zwany dalej kanałem transmisyjnym. Utworzenie takiego kanału to zadanie komutacji. Komutacja to zespół środków umożliwiających tworzenie czasowych połączeń w celu przesyłania informacji. Na przykład, taki czasowy kanał przesyłowy jest tworzony, gdy nawiązujemy połączenie telefoniczne. Kanały przesyłowe mogą być tworzone tylko wewnątrz lub między sieciami telekomunikacyjnymi. Sieć telekomunikacyjna to zespół połączonych fizycznie bądź logicznie urządzeń telekomunikacyjnych pełniących określone funkcje. Przykładem sieci telekomunikacyjnej jest lokalna sieć komputerowa LAN (Local Area Network). Przesyłaniem sygnałów zajmuje się wyodrębniony dział telekomunikacji zwany teletransmisją. Teletransmisja to zespół środków umożliwiających przesyłanie sygnałów.
Zauważmy, że w przypadku teletransmisji mówimy o przesyłaniu sygnałów a nie wiadomości, bowiem zawsze w telekomunikacji do przesyłania wiadomości wykorzystywane są sygnały (elektryczne, albo fale elektromagnetyczne).
Telekomunikacja pełni funkcje usługowe w odniesieniu do osób (użytkowników), albo innych sieci, realizując wybrane usługi związane z przesyłaniem wiadomości na odległość. Wymaga to przyjęcia jakiegoś sposobu i zasad realizacji takiego zadania. Wszystkie urządzenia do przekazu wiadomości należące do danego systemu muszą działać według ściśle określonych, takich samych zasad charakteryzujących dany system. Klasyfikacja systemów telekomunikacyjnych może być przeprowadzona biorąc pod uwagę różne kryteria, takie jak na przykład rodzaj przesyłanych sygnałów, udostępniane usługi, wypełniane funkcje czy wykorzystywane medium transmisyjne. W eksploatacji jest wiele różnych systemów telekomunikacyjnych – na przykład systemy lokalizacyjny GPS (Global Positioning System), system telefonii komórkowej LTE (Long Term Evolution), system teletransmisyjny SDH (Synchronous Digital Hierarchy). W zależności od tego, czy system przesyła i przetwarza sygnały analogowe czy cyfrowe, systemy dzieli się systemy na analogowe i cyfrowe. Współcześnie zdecydowaną większość systemów stanowią systemy cyfrowe. Cechą charakterystyczną systemów cyfrowych jest przesyłanie wiadomości cyfrowych mających postać cyfrową. W systemach cyfrowych wiadomości są reprezentowane za pomocą sekwencji bitów.
1.3. Trochę o ilości informacji
Przesyłane te same znaki, albo sygnały mogą zawierać różną ilość informacji. Miarą ilości informacji jest entropia. Im mniej prawdopodobne dla odbiorcy jest to, co mu przekazujemy tym większa jest ilość informacji zawarta w przekazie. Tak zwana entropia indywidualna, nazywana również autoinformacją, oznaczana przez jest powiązana z prawdopodobieństwem pi zdarzenia xi i wyraża się następującym wzorem:
Podstawa logarytmu k może być dowolną liczbą spełniającą następujące warunki: k>0 i k≠1. Ze szczególnym i mającym największe znaczenie praktyczne przypadkiem, mamy do czynienia, gdy k=2. Jednostką informacji jest wtedy bit. Bit to ilość informacji w przypadku, gdy prawdopodobieństwo zdarzenia wynosi 0,5. Entropia indywidualna wynosi wówczas 1 bit. Wyniki kolejnych rzutów monetą można przedstawić za pomocą sekwencji zer i jedynek. Zdarzeniu x1 wyrzucenia reszki odpowiada 0, a zdarzeniu wyrzucenia orła x2 odpowiada 1. Każde zero i każda jedynka zawiera jednobitową informację, ponieważ wyrzucenie reszki albo orła jest tak samo prawdopodobne. Entropia indywidualna każdego z tych zdarzeń wynosi 1 bit. Zauważmy, że entropia dąży do nieskończoności, gdy prawdopodobieństwo zdarzenia dąży do zera. Jest ona równa 0 w przypadku zdarzeń pewnych, czyli takich, dla których prawdopodobieństwo wystąpienia jest równe 1. Rozszerzmy nasze rozważania i rozpatrzmy przypadek zdarzenia, na które składa się wynik dwukrotnego rzucenia monetą. Załóżmy, że prawdopodobieństwo wyrzucenia orła jest takie samo jak wyrzucenia reszki. Jeżeli w wyniku otrzymamy dwie reszki (00) to entropia zdarzenia, przy założeniu niezależności wyników rzutów wynosi 2 bity, ponieważ prawdopodobieństwo wyrzucenia kolejno dwóch reszek wynosi 0,25. W przypadku n-elementowej sekwencji rzutów monetą prawdopodobieństwo wynosi:
a entropia indywidualna:
Chcąc przesłać wiadomość o tym jaka n-elementowa sekwencja została wyrzucona musimy do tego użyć minimum n bitów. Następujący wzór definiuje, tak zwaną entropię stowarzyszoną, albo prościej entropię ze zbiorem n niezależnych zdarzeń:
Entropia określa minimalną średnią liczbę bitów przypadającą na zdarzenie.
Przyjmiemy, że zbiór niezależnych zdarzeń stanowią liczby od 0 do 127,
Rozważmy poprzedni przykład jeszcze raz, ale przyjmując, że połowa z sekwencji występuje dwa razy częściej niż druga połowa sekwencji. Prawdopodobieństwo wystąpienia sekwencji z pierwszej połówki wynosi p1=1/96, a z drugiej połówki p2=1/192. Tym razem entropia wynosi:
A więc nieco mniej niż w przypadku, gdy prawdopodobieństwa są jednakowe.
Zwróćmy uwagę na to, że z punktu widzenia telekomunikacji nie ma żadnego znaczenia skąd wzięły się prawdopodobieństwa użyte w obu przykładach. Ważna jest natomiast to, że entropia określa średnią liczbę bitów przypadających na zdarzenie. a to z kolei ma bezpośredni związek z szybkością transmisji.
2. Sygnały telekomunikacyjne
Zacznijmy od definicji sygnału i zauważmy, że matematyczne pojęcie funkcji jest zbieżne z pojęciem sygnału pod jednym warunkiem, że zmienną niezależną jest czas t. Zatem zmiana w czasie jednej lub więcej jakiś wielkości w czasie jest sygnałem.
Zmiana w czasie prędkości z jaką porusza się pojazd jest sygnałem. Zmiana ilości zużywanego paliwa w zależności od prędkości pojazdu nie jest sygnałem. Zmiana w czasie luminancji i chrominancji piksela na ekranie jest sygnałem.
2.1. Podział sygnałów
Sygnały można dzielić biorąc pod uwagę różne kryteria. Można brać pod uwagę fizyczną postać sygnału i wtedy z punktu widzenia telekomunikacji interesują nas wyłącznie sygnały elektryczne (prądowe albo napięciowe) i fale elektromagnetyczne, które też są sygnałami. Równie ważna jest struktura samego sygnału. I tak sygnały dzieli się na (rysunek 1.1):
- analogowe,
- dyskretne,
- cyfrowe.
Rys. 1.1. Ilustracja graficzna sygnałów
Sygnał analogowy to odpowiednik funkcji ciągłej. Jest on stale „obecny” w czasie. Sygnał dyskretny to odpowiednik funkcji dyskretnej. Jest on „obecny” tylko w wybranych chwilach. Amplitudy próbek sygnału dyskretnego należą ogólnie do zbioru liczb rzeczywistych. Gdy są zespolone, to część rzeczywista i część urojona też należą do zbioru liczb rzeczywistych. Inaczej jest w przypadku sygnału cyfrowego. Jest on reprezentowany za pomocą próbek, ale wartości jakie mogą one przyjmować należą do zbioru o skończonej liczności. Sygnały dyskretne i cyfrowe mogą być z natury takimi, ale mogą też powstawać w wyniku próbkowania i kwantowania sygnałów analogowych.
Sygnał mowy jest sygnałem analogowym. Po jego spróbkowaniu staje się sygnałem dyskretnym. Jeżeli rzucamy monetą o każdej pełnej minucie to w ten sposób powstaje sygnał cyfrowy.
2.2. Opis sygnałów
Sygnał może być reprezentowany za pomocą zależności jakiejś lub jakiś jego cech od czasu. Nie zawsze taka reprezentacja jest wystarczająca. Innym sposobem jest reprezentacja graficzna. Bardzo często wygodnie jest obliczyć widmo sygnału, korzystając z przekształcania sygnału za pomocą szeregu Fouriera, transformaty Fouriera, dyskretnego szeregu Fouriera albo dyskretnej transformaty Fouriera uzyskując w ten sposób informację o widmie amplitudowym albo widmowej gęstości mocy i widmie fazowym. Tematyka ta jest poruszana w wielu innych przedmiotach i dlatego tu ograniczymy się tylko do pewnych istotnych cech wyników przekształceń fourierowskich.
Jeżeli sygnał x(t) jest sygnałem analogowym, rzeczywistym i okresowym o okresie T0 (częstotliwości podstawowej f0 ) to może on być przedstawiony jako suma sygnałów sinusoidalnych o różnych amplitudach, fazach i częstotliwościach będących wielokrotnościami częstotliwości podstawowej (rysunek 1.2):
gdzie: Ai – amplituda, fi – częstotliwość, φi – faza.
Rys. 1.2. Sygnał okresowy przedstawiony jako suma sygnałów sinusoidalnych
Granica sumowania może być liczbą skończoną albo nie. Widmo X(fi) sygnału otrzymane w wyniku obliczania szeregu Fouriera jest prążkowe i składa się z prążków (delt Diraca):
i ma następującą cechę (rysunek 1.3):
|
Rys.1.3. Widmo sygnału okresowego
Moduł, czyli widmo amplitudowe jest funkcją parzystą, a widmo fazowe funkcją nieparzystą:
Zależności te można rozszerzyć na dowolne sygnały analogowe rzeczywiste, niekoniecznie okresowe. Wtedy jednak należy mówić o widmowej gęstości mocy, a nie amplitudzie. W telekomunikacji bardzo często posługujemy się pojęciem pasma częstotliwościowego sygnału. Sygnały o ograniczonym paśmie to takie, których widmo ma wartość zerową poza pewnym przedziałem częstotliwości [fd; fg]. Szerokość pasma B jest równa szerokości przedziału, tj. różnicy fg - fd.
W przypadku sygnałów dyskretnych rzeczywistych, a także cyfrowych widmo sygnału ma nieco inne cechy. Jeżeli sygnał składa się z N próbek, to dyskretna transformata Fouriera DFT (Discrete Fourier Transform) takiego sygnału jest obliczana ze wzoru:
a transformata odwrotna IDFT (Inverse DFT) ze wzoru:
gdzie n – numer próbki sygnału, i – numer harmonicznej, harmonicznej o numerze i odpowiada częstotliwość fi:
W powyższych wzorach przyjęliśmy ograniczenie na liczbę harmonicznych – jest ich tyle samo co próbek sygnału. W wyniku obliczania transformaty DTF otrzymujemy widmo dyskretne:
Gdyśmy obliczali transformatę DTF również dla i spoza zakresu [0;N-1] to okazałoby się, że wyniki obliczeń powtarzają się z okresem 2N. W przypadku sygnałów rzeczywistych obowiązuje zależność (rysunek 1.4):
W przypadku tych sygnałów nie ma potrzeby rozpatrywania widma poza przedziałem [0;2N-1].
W znaczącej mierze zastąpienie telekomunikacji analogowej telekomunikacją cyfrową spowodowane zostało możliwościami zastąpienia większości operacji na sygnałach analogowych operacjami matematycznymi. Należy jednak pamiętać, że w rzeczywistości wszystkie transmitowane sygnały są sygnałami analogowymi a jedynie interpretujemy je jako sygnały cyfrowe. W wielu przypadkach sygnały analogowe przed ich dalszym przetwarzaniem i transmisją wymagają cyfryzacji. Do takich sygnałów należą sygnały akustyczne, w tym sygnał mowy ludzkiej. Zamiana postaci takich sygnałów z analogowej na cyfrową wymaga wykonania dwóch operacji: próbkowania i kwantyzacji. Oczywiście obie te operacje muszą mieć takie cechy, by powrót do sygnału analogowego był możliwy bez jakichkolwiek zniekształceń sygnału oryginalnego, a przynajmniej by zniekształcenia były akceptowalne.
Rys.1.4. Widmo amplitudowe rzeczywistego sygnału dyskretnego
Po próbkowaniu sygnału analogowego otrzymujemy sygnał dyskretny. Powrót do sygnału analogowego bez zniekształceń jest możliwy (przynajmniej teoretycznie), jeżeli częstotliwość próbkowania ???????? spełnia następujący warunek:
gdzie fmax oznacza górną granicę pasma częstotliwościowego sygnału próbkowanego.
W praktyce możliwe jest zastąpienie nierówności ostrej nierównością nieostrą. W szczególnych przypadkach, na przykład, gdy próbkowany jest sygnał sinusoidalny o częstotliwości fmax z częstotliwością dwukrotnie większą od niej otrzymujemy wtedy dwie próbki na okres, z których nie jesteśmy w stanie odtworzyć ponownie sygnału sinusoidalnego.
Rys.1.5. Ilustracja graficzna błędu kwantyzacji
Operacja kwantowania polega na zastąpieniu rzeczywistej wartości próbki sygnału dyskretnego jedną z wartości ze zbioru o skończonej liczności. Na rysunku 1.5 pokazano przykład operacji próbkowania i kwantowania. Między wartością próbki sygnału dyskretnego, a jej wartością w sygnale cyfrowym jest różnica nazywana błędem, albo szumem kwantyzacji. Każdemu poziomowi kwantyzacji można przypisać sekwencję trzybitową ponieważ poziomów jest osiem (23=8). Liczność zbioru ma wpływ na wielkość szumu kwantyzacji. Im poziomów kwantyzacji jest więcej, tym szum jest mniejszy, ale więcej bitów reprezentuje każdy poziom.
3. Konwersja sekwencji bitów na sygnał
W tytule podrozdziału użyte zostało słowo sekwencja bitów, a nie sygnał binarny. Sekwencja bitów, które mają być transmitowane niekoniecznie jest sygnałem, a co więcej nawet, gdy nim jest to nie jest to sygnał, który zawsze nadaje się do transmisji. Jak wiemy transmitowane sygnały są zawsze sygnałami analogowymi. Konwersja sekwencji bitów na sygnał jest nazywana modulacją cyfrową albo kodowaniem liniowym.
3.1. Modulacje cyfrowe
est wiele rodzajów modulacji cyfrowych. Najogólniej można powiedzieć, że sprowadzają się one do zastąpienia pojedynczego bitu lub większej liczby bitów (bloku bitów, np. oktetu) sygnałem będącym kawałkiem sygnału sinusoidalnego lub impulsem prostokątnym o określonej amplitudzie i czasie trwania. Utworzony w ten sposób, dla sekwencji wielu bitów sygnał ma pewne widmo, które w maksymalny sposób powinno być dopasowane do transmitancji kanału transmisyjnego, co jest jednym z celów zastosowania modulacji. Modulacja cyfrowa powinna być w maksymalnym stopniu odporna na zakłócenia, tak by po stronie odbiorczej wiernie odtworzyć przesyłaną sekwencję bitów.
Sygnał sinusoidalny jest w pełni scharakteryzowany przez jego częstotliwość, amplitudę i fazę. Modulacje cyfrowe ustawiają te parametry w zależności od bitu (0 albo 1) lub bloku bitów. Parametry te zmieniają się wraz ze zmianą wartości logicznej bitu albo sekwencji bitów.
Rys.1.6. Modulacje jednowartościowe
W najprostszym przypadku zmiana podąża za zmianami kolejnych bitów z sekwencji i zmianie ulega tylko jeden z wymienionych parametrów sygnału sinusoidalnego. Tak działają modulatory jednowartościowe z kluczowaniem (zmianą) amplitudy, częstotliwości albo fazy – rysunek 1.6. Każdy z parametrów, w przypadku tych modulacji może przyjmować jedną z dwóch wartości.
Bardziej skomplikowane są modulacje wielowartościowe. Najbardziej przydatne z nich to modulacje, w których zmianie ulega faza sygnału sinusoidalnego M-PSK (Phase Shift Keying). W tym przypadku faza sygnału może przyjmować więcej niż dwie wartości, na przykład 4-PSK (inaczej QPSK), 8-PSK, 16-PSK itd. Jeden „kawałek” sygnału sinusoidalnego niesie informację o m bitach, gdzie .
We współczesnych zastosowaniach telekomunikacyjnych olbrzymie znaczenie mają modulacje wielowartościowe, ale dodatkowo wielowymiarowe. Wielowymiarowość oznacza, że więcej niż jeden parametr sygnału sinusoidalnego jest ustawiany w zależności od wartości logicznej bitów. Bardzo ważnym przykładem jest kwadraturowa modulacja amplitudy QAM-M (Quadrature Amplitude Modulation). Z trygonometrii wiadomo, że:
Stosując to przekształcenie dla sygnału sinusoidalnego x(t) otrzymujemy:
Zapiszmy to równanie następująco:
Sygnał x(t) ma dwie składowe kwadraturową (Q) i synfazową (I). Składowe te są wzajemnie ortogonalne (prostopadłe), co ilustruje rysunek 1.7, a to oznacza, że nie wpływają na siebie (zmiana jednej składowej nie zmienia drugiej składowej). Z matematycznego punktu widzenia dwa sygnały x1(t) i x2(t) są ortogonalne w przedziale [t1 ; t2] jeżeli spełniony jest następujący warunek:
Rys.1.7. Składowe synfazowa i kwadraturowa
Modulacja QAM-M jest modulacją wielowartościową. Liczba bitów reprezentowanych przez pojedynczy symbol zależy od M. Na rysunku 1.8 pokazano przykładową, tak zwaną konstelację modulacji QAM-16. Każdemu punktowi konstelacji, a jest ich w tym przypadku 16 odpowiada inna kombinacja amplitudy i fazy sygnału sinusoidalnego (inna kombinacja składowych: kwadraturowej i synfazowej) i każdemu punktowi odpowiada inna kombinacja czterech bitów. Należy zaznaczyć, że im więcej punktów ma konstelacja i im są one bardziej skupione wokół środka układu współrzędnych, tym większe jest niebezpieczeństwo przekłamania bitów w wyniku zakłóceń i zniekształceń wnoszonych w kanale transmisyjnym.
Rys.1.8. Przykład konstelacji QAM-16
W modulacji QAM założono stałość częstotliwości – częstotliwość nie jest modulowana. W systemach dostępowych i komunikacji radiowej stosuje się, tak zwane modulacje wielotonowe, w których używa się nie jednej częstotliwości sygnału sinusoidalnego, lecz wielu częstotliwości (wielu nośnych) równocześnie. Dla każdej nośnej są określane parametry modulacji QAM, takie jak wartościowość modulacji M i skupienie konstelacji. Modulacje wielotonowe występują pod nazwami OFDM (Orthogonal Frequency Division Multiplexing) albo DMT (Discrete Multi-Tone).
Dotychczas skupiliśmy się na modulowaniu sygnału sinusoidalnego, ale nie jest to jedyny rodzaj sygnału niosącego informacje cyfrowe. Drugą popularną grupą sygnałów są impulsy prostokątne. O ile widmo sygnału sinusoidalnego jest prążkowe (delta Diraca) to widmo impulsu prostokątnego jest nieograniczone w dziedzinie częstotliwości. Zawiera się ono w zakresie częstotliwości . W modulacjach cyfrowych sygnał sinusoidalny jest kluczowany z okresem T, co oznacza, ze czas trwania sygnału sinusoidalnego jest ograniczany do czas T. Tym samym postać sygnału odpowiadającego danemu bitowi lub sekwencji bitów po wykonaniu modulacji jest następująca:
gdzie w(t) jest tak zwanym oknem wagowym.
W najprostszym przypadku okno wagowe jest oknem prostokątnym:
Widmo sygnału jest splotem widma sygnału sinusoidalnego i widma okna (rysunek 1.9). Postać okna wagowego ma zatem istotny wpływ na widmo sygnału . Dlatego zamiast okna prostokątnego często używa się innych typów okien, których właściwości widmowe są korzystniejsze, na przykład okna Hamminga, o kształcie podniesionego sygnału kosinusoidalnego o okresie T.
Rys.1.9. Splot widma okna wagowego i widma sygnału sinusoidalnego (uwaga: pokazana jest widmowa gęstość mocy tylko dla dodatnich częstotliwości
3.2. Kodowanie liniowe
Impulsy prostokątne „samodzielnie” również mogą być sygnałami niosącymi informacje o bitach. Na przykład bitowi o wartości logicznej 1 odpowiada impuls prostokątny o czasie trwania T, a bitowi 0 impuls o przeciwnej polaryzacji i takim samym czasie trwania. Jest to najprostszy sposób konwersji bitów na sygnał (kod NRZ – Non Return to Zero). Ponieważ nie mamy tu do czynienia z modulacją, tego typu konwersje nazywa się kodowaniem liniowym, albo transmisyjnym. Najstarszymi, a zarazem najprostszymi kodami liniowymi oprócz wspomnianego kodu NRZ są kody: RZ (Return to Zero), AMI (Alternate Mark Inversion), HDB3 (High Density Bipolar 3) i CMI (Coded Mark Inversion). Klasyfikując te kody liniowe na wzór modulacji można powiedzieć, że są to kody jednowartościowe i jednowymiarowe. Przykłady konwersji strumienia bitów na wymienione kody liniowe pokazano na rysunku 1.10.
Stosując wybrany kod liniowy mamy na uwadze dopasowanie właściwości widmowych przesyłanych sygnałów do właściwości kanałów transmisyjnych, na przykład by sygnał nie zawierał składowej stałej, jeżeli składowa stała nie jest przepuszczana w kanale transmisyjnym, ale nie tylko. Ponieważ mamy do czynienia z transmisją cyfrową konieczne jest by kod liniowy umożliwiał w łatwy sposób odtwarzanie w odbiorniku częstotliwości zegara z jakim są nadawane impulsy, dawał jak największą odporność na zakłócenia i zniekształcenia sygnału w kanale, a nawet pozwalał wykrywać i usuwać błędy binarne.
Rys.1.10. Przykład konwersji bitów na wybrane kody liniowe
Choćby pobieżna analiza wymienionych kodów linowych pokazuje, że między nimi występują istotne różnice. Na przykład, gdy kodowanie dotyczy sekwencji składających się w większości z bitów o wartości logicznej 1 (albo 0) w sygnałach otrzymanych po użyciu koderów RZ i NRZ pojawia się składowa stała, a gdy nadawane mają być długie ciągi bitów o wartości logicznej w sygnale generowanym przez koder AMI występują długie odcinki czasu z zerowym sygnałem (brakiem sygnału), co utrudnia, a czasami wręcz uniemożliwia odtworzenie w odbiorniku okresu nadawania (częstotliwości zegara). Wspomnianych wad koderów RZ, NRZ i AMI nie mają kodery HDB3 i CMI. W obu składowa stała nie występuje. W koderze HDB3 po trzech kolejnych zerach (brak sygnału) pojawia się impuls prostokątny o polaryzacji dodatniej albo ujemnej, co eliminuje problem z jakim spotykamy się używając kodera AMI. Z kolei w przypadku kodera CMI sygnał nigdy nie ma wartości 0 i nigdy impuls o danej polaryzacji nie trwa dłużej niż 1,5T. Zwróćmy uwagę, że w przypadku kodu HDB3 i kodu CMI można wykrywać i czasami usuwać błędy wnoszone w kanale transmisyjnym.
Przedstawione tu cechy koderów liniowych były związane przede wszystkim z transmisją sygnałów elektrycznych. W światłowodach impulsy światła są nadawane bądź nie. W takim przypadku trudniej jest mówić o polaryzacji, a w szczególności o polaryzacji dodatniej czy ujemnej. Dlatego w przypadku transmisji optycznej stosuje się nieco inne kodery liniowe (rysunek 1.11).
Rys.1.11. Przykład konwersji bitów na kody liniowe nBmB
W dotychczas przedstawionych kodach liniowych obowiązywała reguła jeden bit reprezentuje jeden impuls prostokątny. Jeżeli n-bitowa sekwencja jest reprezentowana przez m impulsów, z których każdy może przyjmować jeden z L poziomów to taki kod liniowy jest kodem z rodziny nBmL. Jednym z najpopularniejszych kodów z tej rodziny jest kod 2B1Q. W tym kodzie dwubitowej sekwencji jest przypisywany impuls prostokątny o jednej z czterech możliwych wartości amplitud. Stąd w akronimie kodu jest litera Q – quaternary. Na rysunku 1.12 jest pokazana sekwencja bitów i odpowiadający jej sygnał wyjściowy w kodzie 2B1Q.
Rys.1.12. Przykład kodu liniowego 2B1Q
Przedstawioną zasadę kodowania można zastosować dla większej liczby amplitud sygnałów prostokątnych. W ogólności prowadzi to do modulacji L-PAM (Pulse Amplitude Modulation). Liczba amplitud sygnału wynosi L. W kodzie 2B1Q, L jest równe 4, dwa bity są reprezentowane przez jeden impuls mogący przyjmować jedną z czterech wartości, a w kodzie 4B3T, cztery bity są reprezentowane przez ciąg trzech impulsów o jednej z trzech amplitud (T od słowa ternarny), L jest równe 3.
Jeżeli maksymalna amplituda impulsów jest niezależna od wartościowości, to w miarę wzrostu wartościowości rośnie prawdopodobieństwo błędnego odbioru symbolu. Może ono być wyznaczone z zależności:
gdzie: energia przypadającej na jeden transmitowany bit, widmowa gęstość mocy No szumu białego, a erfc jest symbolem, tzw. komplementarnej funkcji błędu i wyraża się wzorem::
Wzrost prawdopodobieństwa popełnienia błędu w stosunku do modulacji dwuwartościowej wynika z coraz to mniejszego odstępu pomiędzy amplitudami kolejnych symboli, gdy rośnie wartościowość modulacji i proporcjonalnego negatywnego wzrostu wpływu szumu na poziom odbieranego sygnału. To spostrzeżenie stało się podstawą fundamentalnego dla transmisji danych twierdzenia Shannon’a-Hartley’a. Zgodnie z nim teoretyczna, maksymalna pojemność kanału transmisyjnego C (przepustowość) zależy od szerokości B widma częstotliwościowego kanału oraz stosunku SNR (Signal to Noise Ratio) w kanale. Może ona być wyrażona zależnością:
Zależność tę można zastosować tylko wtedy, gdy stosunek SNR ma stałą wartość w rozpatrywanym zakresie częstotliwości (paśmie B). Oczywiście, stosunek SNR nie musi mieć stałej wartości w funkcji częstotliwości. W związku z tym, w ogólnym przypadku przepustowość kanału można wyrazić następująco:
gdzie fd i fg oznaczają odpowiednio dolną i górną częstotliwość kanału transmisyjnego.
Możliwości transmisyjne w kanale charakteryzuje maksymalna efektywność widmowa transmisji definiowana następująco:
Przedstawione modulacje cyfrowe i kody liniowe oczywiście nie wyczerpują tematyki. Więcej o modulacjach cyfrowych i kodach liniowych znajdzie Czytelnik w licznych publikacjach na ten temat.
3.3. Skrambling
W transmisji cyfrowej długie sekwencje impulsów o tej samej polaryzacji nie są korzystne. Podobnie niekorzystne jest by w widmie sygnału dominowały pewne jego składowe. Wynika to z jednej strony z problemów odtwarzania zegara taktującego z sygnału liniowego, tj. ze strumienia odbieranych danych, z drugiej z potrzeby unikania gwałtownych zmian mocy nadajnika, a z trzeciej z niebezpieczeństwa występowania silnych przeników. W tym celu stosuje się technikę prowadzącą w efekcie do kształtowania widma sygnału poprzedzającą modulację cyfrową, albo kodowanie liniowe. Technikę taką nazywa się skramblowaniem, a układ ja wykonujący skramblerem. Danymi wejściowymi i wyjściowymi skramblera są bity. Skrambler pracuje z ustalonym taktem zegarowym. Jest on resetowany, gdy liczba bitów na jego wyjściu dojdzie do pewnej ustalonej granicznej wartości. W zależności od zastosowania ta graniczna wartość może być równa liczbie bitów w ramce, ale nie zawsze. Aby skrambler był resetowany ramkowo liczba bitów w ramce musi być duża.
Na rysunku 1.13 pokazano schemat funkcjonalny przykładowego skramblera. Składa się on z siedmiu przerzutników i dwóch sumatorów modulo 2. Wielomian generatora ma tu postać x7+x6+1. Skrambler jest taktowany z częstotliwością zegara urządzenia oraz synchronizowany ramkowo, tzn. jest restetowany na początku ramki.
Rys.1.13. Przykład skramblera z siedmioma przerzutnikami
Po stronie odbiorczej jest przywracana pierwotna sekwencja danych. Operację taką przeprowadza układ deskramblera, o identycznym wielomianie generatora, jak w skramblerze. Skrambler i deskrambler pracują z taktem ramkowym, a więc są zsynchronizowane z ramką. Jeżeli strumień bitów wejściowych będzie miał składową o pewnym okresie, mniejszym niż liczba bitów w ramce to składowa ta zostanie zamieniona na składową o okresie tym większym im większy jest stopień wielomianu generatora. W podanym tu przykładzie, jeżeli dane wejściowe byłyby na przemian zerami i jedynkami, to na wyjściu skramblera otrzymamy sekwencję również okresową, ale o okresie 27-1, czyli o okresie 123 (2N-1, gdzie N – stopień wielomianu generatora). Stosując wielomiany o bardzo dużym stopniu można uzyskiwać, tak zwane sekwencje pseudoprzypadkowe, na przykład o okresie powtarzania 220-1, gdy wielomian generatora ma postać x20+x17+1.
Oprócz tego, że sygnał wyjściowy ze skramblera ma bardziej równomierny rozkład statystyczny niż sekwencja wejściowa dodatkowo skrambler utajnia, choć płytko, przesyłane dane.
3.4. Kodowanie kompresyjne
Celem kodowania kompresyjnego jest zmniejszenie objętości (liczby bitów) reprezentujących sygnał lub plik. Kodowanie kompresyjne dzieli się na:
- stratne,
- bezstratne.
Kodowanie stratne dotyczy przede wszystkim sygnałów lub plików, które odbiera człowiek za pomocą narządu słuchu lub wzroku. Ich wierne przesłanie albo zarejestrowanie nie jest możliwe w stu procentach. Zawsze w procesie przetwarzania takich sygnałów wprowadzamy jakieś zakłócenia i zniekształcenia. Ich wielkość i znaczenie percepcyjne mogą być różne. W szczególności w przypadku przesyłania takich sygnałów staramy się minimalizować ich przepływność binarną ze względu na ograniczenia przepustowości kanału transmisyjnego, czasami kosztem znacznego pogorszenia ich jakości i utraty części informacji. Tak nie możemy postąpić w wielu innych przypadkach, na przykład, gdy plik jest arkuszem Excel. Nie znaczy to wcale, że nie można zmniejszyć objętości takiego pliku w stosunku do jego objętości pierwotnej, zachowując całość informacji. Tego rodzaju kodowanie nazywa się kodowaniem bezstratnym. Czytelnik zapewne zna co najmniej kilka programów, które zmniejszają rozmiary plików bez straty informacji.
Kodowanie stratne
Szczególne znaczenie i wpływ na współczesną teleinformatykę miała cyfryzacja sygnału mowy na potrzeby przesyłania go w sieci telefonicznej. Klasyczne pasmo sygnału telefonicznego zawiera się w zakresie od 300 Hz do 3,4 kHz. Wystarczyłoby zatem próbkować ten sygnał z częstotliwością niewiele większą od 3,1 kHz. Ponieważ jednak, filtry ograniczające pasmo sygnału nie działają idealnie, a także z innych powodów, związanych z rozwiązaniami użytymi w systemach teletransmisyjnych zdecydowano się przyjąć częstotliwość próbkowania fp równą 8 kHz. Przed określeniem liczby poziomów kwantyzacji przeprowadzono badania i okazało się, że gdy użyjemy 256 poziomów kwantyzacji, to szum kwantyzacji jest wtedy na tyle mały, że nie ma istotnego wpływu na wrażenia percepcyjne po przywróceniu sygnałowi postaci analogowej.
Ponieważ do zapisania w postaci binarnej każdego z 256 poziomów wystarczy 8 bitów (28=256) zatem przepływność binarna tak przetworzonego sygnału mowy wynosi 64 kbit/s (8 kHz . 8 bitów). Wielokrotności tej przepływności, jak również jej wybrane podwielokrotności są typowymi przepływnościami stosowanymi nie tylko do transmisji sygnału mowy.
Kodowanie sygnału mowy
Techniki kodowania sygnału mowy w celu jego kompresji rozwijały się przez wiele lat ze względu na niewystarczające możliwości transmisyjne systemów telekomunikacyjnych. Po raz pierwszy z problemem oszczędnego wykorzystywania dostępnych zasobów transmisyjnych stykamy się już w analogowych systemach telefonicznych wykorzystujących kable podmorskie. Przyjęto wtedy rozwiązanie oparte na wykrywaniu przerw w mówieniu (ciszy), ich usuwaniu w nadajniku i odtwarzaniu w odbiorniku, dzięki czemu uzyskano możliwość jednoczesnego przesyłania większej liczby rozmów. Rozwiązanie to znalazło również zastosowanie w telefonii międzynarodowej, a w wersji cyfrowej, na przykład w systemach satelitarnych. Kodowanie kompresyjne to nie tylko zawężanie pasma sygnału czy eliminacja ciszy – to także techniki kodowania sygnału mowy, który wcześniej poddany został cyfryzacji, a więc techniki, które pozwalają zmniejszyć przepływność binarną sygnału. Techniki kodowania kompresyjnego sygnału mowy są możliwe do zastosowania dzięki, tak zwanej redundancji sygnału mowy. Sygnał mowy zawiera informacje mało istotne, albo zupełnie nieistotnych z punktu widzenia słuchacza i celu kompresji, które można z niego usunąć. Wiemy już, że pasmo sygnału mowy można znacząco ograniczyć, usunąć z niego ciszę, kwantować, stosując 256 poziomów kwantyzacji, a mimo to najczęściej akceptujemy jego jakość, gdy jest to sygnał telefoniczny. Na pewno jednak nie uznalibyśmy jego jakości za wystarczająco dobrą, gdyby był on nagrany na płytę CD.
Opracowano wiele różnych metod kodowania kompresyjnego cyfrowego sygnału mowy z myślą o zastosowaniach telekomunikacyjnych. Ich praktyczne implementacje nazywane kodekami (koder i dekoder) mogą być zarówno hardwareowe, jak i softwareowe. Najprostsze kodeki to zwykłe przetworniki A/C, nazywane kodekami PCM (modulacja impulsowo-kodowa). Bardziej skomplikowane rozwiązanie to, tak zwana różnicowa modulacja kodowo-impulsowa DPCM. W koderach PCM każda bieżąca próbka jest kodowana niezależnie od wcześniejszych i późniejszych próbek sygnału. Tymczasem, nawet pobieżna obserwacja przebiegi czasowego mowy pozwala zauważyć w nim pewną powtarzalność (rysunek 1.14).
Rys.1.14. Przebiegi czasowe głoski dźwięcznej i bezdźwięcznej
Nie powinno to nas dziwić, jeżeli uzmysłowimy sobie, że wypowiadane głoski mają pewien czas trwania (najczęściej rzędu kilkudziesięciu milisekund). Z dużym przybliżeniem można powiedzieć, że cechy sygnału w trakcie trwania głoski, a przynajmniej w jej stacjonarnej części, niewiele się zmieniają. Jeżeli sygnał jest próbkowany z częstotliwością 8 kHz, to w czasie, np. 50 ms mamy 400 jego próbek. To, że przez cały czas trwania głoski słyszymy i rozpoznajemy ją jako tę właśnie głoskę oznacza, że próbki mowy są ze sobą skorelowane (zależne jedna od drugiej). Dotyczy to nie tylko głosek dźwięcznych, gdzie powtarzalność przebiegu jest spowodowana okresowością drgań strun głosowych i zauważalna w ich przebiegu czasowym, ale również głosek bezdźwięcznych, których przebiegi nie wykazują wizualnie powtarzalności (rysunek 1.14). Korelacja pomiędzy próbkami pozwala w przybliżeniu określić amplitudę bieżącej próbki na podstawie pewnej liczby próbek wcześniejszych albo próbek następujących po próbce bieżącej. Amplituda x(n) każdej bieżącej (wejściowej) próbki sygnału mowy jest porównywana z amplitudą dla niej przewidywaną, w bloku, tak zwanego predykatora. W kwantyzatorze jest kwantowany nie sygnał wejściowy, ale błąd predykcji r(n) definiowany następująco:
Błąd predykcji ma z reguły dużo mniejszą amplitudę niż sam sygnał, a zatem może być kodowany za pomocą mniejszej liczby bitów. Na wejście predykatora podawany jest sygnał błędu predykcji oraz przewidywana próbka sygnału mowy Rozszerzenie modulacji DPCM o techniki adaptacji skoku kwantyzacji, o których mówiliśmy wcześniej prowadzi do kodowania ADPCM (rysunek 1.15).
Rys.1.15. Koder ADPCM
Na zakończenie krótko scharakteryzujemy technikę kodowania sygnałów dźwiękowych znaną pod nazwą MP3. Zaznaczmy, że koder MP3 nie działa w czasie rzeczywistym, a więc nie ma on zastosowania w systemach, w których sygnał musi być kodowany na bieżąco, w możliwie jak najkrótszym czasie. Koder MP3 koduje sygnał zapisany w formacie wave, w taki sposób by znacząco zredukować rozmiar pliku zajmowanego przez sygnał, nie powodując istotnej utraty jakości sygnału. W formacie wave sygnał jest próbkowany z częstotliwością 44,1 kHz , każda jego próbka reprezentowana za pomocą sekwencji 16 bitowej, a więc plik z jednosekudowym sygnałem stereofonicznym zajmuje aż 1,4112 Mbita. Redukcja objętości sygnału jest możliwa tylko dlatego, że słuch człowieka nie jest doskonały. Najogólniej można powiedzieć, że człowiek nie słyszy pewnych dźwięków w obecności innych. Jest to tak zwany efekt maskowania (rysunek 1.16).
Rys.1.16. Maskowanie dźwięków w dziedzinie czasu (a) i w dziedzinie częstotliwości (b
Maskowanie w przód jest szczególnie zauważalne, gdy sygnał maskowany pojawi się w czasie Δt1 < 10 ms, a jest zupełnie niezauważalny, gdy Δt1 > 200 ms. Maskowanie w tył dotyczy sytuacji, gdy sygnał maskujący pojawi się po sygnale maskowanym. Maskowanie w tył jest do pominięcia, gdy Δt2 > 20 ms. Niesłyszalne są dźwięki słabe, występujące w sąsiedztwie dźwięków mocnych o zbliżonych częstotliwościach – maskowanie w dziedzinie częstotliwości. Wrażliwość na dźwięki zależy również od ich częstotliwości i natężenia. Dźwięki o zbyt małym natężeniu nie są w ogóle słyszalne. Koder MP3 wykorzystuje wspomniane cechy słuchu. Dzieli sygnał na interwały czasowe, a ponadto pasmo zajmowane przez sygnał dzieli na 32 podpasma. W każdym interwale eliminuje dźwięki o bardzo dużych i bardzo małych częstotliwościach. Ponadto eliminuje dźwięki maskowane (niesłyszalne, albo słabo słyszalne). Dodatkowo dla sygnałów stereofonicznych koduje się ich różnicę i sumę, a nie każdy kanał osobno. Dzięki temu uzyskuje się przeciętnie 10-12 krotne zmniejszenie objętości pliku w stosunku do pliku wave.
Kodowanie obrazów nieruchomych
Najpopularniejszym standardem kompresji obrazów nieruchomych (np. zdjęć fotograficznych, rysunków, obrazów graficznych) jest standard JPEG. Jego nazwa pochodzi od akronimu nazwy międzynarodowego zespołu ekspertów (Joint Photographics Experts Group) powołanego przez kilka organizacji międzynarodowych. Wynikiem prac zespołu jest opublikowany w 1991 roku standard JPEG.
Standard JPEG wyróżnia dwa tryby kodowania: bezstratny i stratny. Tryb bezstratny polega na kodowaniu predykcyjnym DPCM oraz wykorzystywaniu kodu Huffmana albo kodu arytmetycznego. W trybie bezstratnym uzyskuje się średnio stopień kompresji 2. Tryb stratny pozwala osiągnąć dużo wyższy średni stopień kompresji 10÷20 razy. Opiera się on na wykorzystaniu dyskretnej transformaty kosinusowej DCT (Discrate Cosinus Transform), zróżnicowanym kodowaniu jej współczynników, a następnie, tak jak w trybie bezstratnym, użyciu jednej z metod kodowania bezstratnego.
Obraz źródłowy to zbiór, tak zwanych pikseli równomiernie rozmieszczonych w przestrzeni dwuwymiarowej Piksel to najmniejszy element cząstkowy obrazu. Każdy piksel jest określany za pomocą zestawu komponentów. Mogą to być różne komponenty. Najczęściej stosuje się dwa następujące zestawy komponentów:
- zestaw kolorów podstawowych RGB (czerwony-Red, zielony-Green i niebieski-Blue);
- Jasność, barwa i nasycenie (luminancja i chrominancja).
W koderze JPEG obraz źródłowy jest dzielony na bloki o wymiarze 8x8 pikseli, które podlegają kodowaniu kompresyjnemu. Dla każdego bloku i każdego komponentu osobno jest obliczana 64 punktowa transformata DCT. W wyniku wykonanych obliczeń dla każdego bloku i każdego komponentu otrzymujemy 64 współczynniki transformaty (liczby rzeczywiste). Współczynniki DCT są następnie kwantowane. Najczęściej po kwantowaniu wiele współczynników ma wartość zerową, dzięki czemu stosując jedną z metod kodowania bezstratnego uzyskuje się duży stopień kompresji. W koderze JPEG obraz źródłowy jest dzielony na bloki o wymiarze 8x8 pikseli, które podlegają kodowaniu. W koderze JPEG obraz źródłowy jest dzielony na bloki o wymiarze 8x8 pikseli, które podlegają kodowaniu kompresyjnemu. Dla każdego bloku i każdego komponentu osobno jest obliczana 64 punktowa transformata DCT. W wyniku wykonanych obliczeń dla każdego bloku i każdego komponentu otrzymujemy 64 współczynniki transformaty (liczby rzeczywiste). Współczynniki DCT są następnie kwantowane. Najczęściej po kwantowaniu wiele współczynników ma wartość zerową, dzięki czemu stosując jedną z metod kodowania bezstratnego uzyskuje się duży stopień kompresji.
Kodowanie obrazów ruchomych
Kompresja obrazów ruchomych opiera się na:
- zmniejszeniu rozdzielczości obrazu: format CIF (4:1), format QCIF (16:1).
- zmniejszeniu częstotliwości próbkowania;
- zmniejszeniu liczby poziomów kwantyzacji;
- zmniejszeniu częstotliwości ramkowania (zmniejszeniu liczby klatek w czasie);
- kompresji obrazu w ramce;
- redukcji informacji z ramki na ramkę;
- estymacji ruchu.
Jedną z najczęściej stosowanych metod kompresji obrazów ruchomych jest metoda opisana w standardzie MPEG. Podobnie, jak w przypadku standardu JPEG nazwa standardu wywodzi się od akronimu nazwy grupy ekspertów (Moving Picture Experts Group) powołanych do opracowania standardu kompresji obrazów ruchomych. Owocem pracy tej grupy był standard MPEG-1, opracowany już w 1990 roku, a następnie standardy: MPEG-2 (1991), MPEG-4 (1998) i MPEG-7 (2006?).
Strumień danych MPEG można podzielić na dwie grupy;
- Grupa danych systemowych zawierająca informacje o synchronizacji czasu w celu odpowiedniego ich połączenia w procesie dekodowania.
- Dane skompresowanego obrazu i dźwięku.
Sekwencja wideo składa się z nagłówka, grupy obrazów i znacznika końca sekwencji wideo. Każdy obraz to trzy macierze opisujące składowe luminancji i chrominancji. W procesie kodowania obraz dzieli się na plastry zawierające kolejne makrobloki ułożone z lewej strony na prawą i z góry na dół (rysunek 1.17). Makroblok to macierz 16x16 współczynników luminancji i macierze 8x8 współczynników chrominancji.
Rys.1.17. Podział obrazu na bloki i makrobloki
W przypadku sekwencji wideo kolejne obrazy najczęściej niewiele się między sobą różnią. Zatem nie ma potrzeby pełnego kodowania każdej klatki (obrazu). Różnice pomiędzy obrazami dotyczą zwykle występujących na nich obiektach ruchomych. Chcąc zminimalizować ilość informacji należy wyznaczyć kierunek ruchu obiektów w obrazie, skompensować ten ruch, a następnie zakodować różnicę między obrazami punkt po punkcie. Wyznaczanie ruchu obiektów jest dokonywane na bazie makrobloków. Dla każdego makrobloku w obrazie aktualnym jest poszukiwany najbardziej podobny do niego makroblok w obrazie poprzednim. Informacja o kierunku ruchu makrobloku (wektor ruchu) jest przesyłana do dekodera. W koderze makrobloki koduje się korzystają z metod predykcyjnych. Jeżeli kierunek ruchu jest poprawnie określony to kodowanie błędu predykcji wymaga mniejszej liczby bitów niż kodowanie oryginalnego obrazu. Wyróżnia się trzy typy obrazów:
- obrazy wewnętrzne (I) zakodowane z wykorzystaniem informacji zawartych tylko w nich samych;
- obrazy prognozowane (P), zakodowane z wykorzystaniem informacji o najbliższym poprzednim obrazie I albo P. Jest to, tak zwane przewidywanie wprzód (obrazuje je rysunek 1.18);
- obrazy dwukierunkowo prognozowane (B), to znaczy takie, których kodowanie wykorzystuje obrazy będące zarówno poprzedzające jak i następujące po obrazie B (rysunek 1.18). Obrazów B nie używa się nigdy jako obrazy odniesienia. Takie dwukierunkowe przewidywanie umożliwia bardzo wydajną kompresję bez powielania (propagacji) błędów, które może mieć miejsce w przypadku wykorzystywania obrazów P. Obrazy B odtwarza się poprzez interpolację danych z dwóch sąsiednich obrazów typu I lub P (jednego poprzedzającego i jednego następującego).
Średni stopień kompresji w standardach MPEG wynosi od kilkudziesięciu do stu razy. Oprócz kodeków MPEG stosowane są inne standardy, np. H.263.
Rys.1.18. Prognozowanie obrazów
Kodowanie bezstratne
W cyfrowych systemach telekomunikacyjnych, a także w systemach gromadzenia danych z oczywistych powodów zależy nam na tym, by dane miały jak najmniejszą „objętość”. Każde zdarzenie elementarne (wiadomość elementarna) należące do pewnego zbioru zdarzeń elementarnych (np. cyfry od 0 do 9, litery alfabetu polskiego) przed wysłaniem albo zapisaniem w pamięci jest przedstawiane w postaci dokładnie określonej sekwencji bitów, nazywanej słowem kodowym. Operacja ta nazywana jest kodowaniem. Słowo kodowe może składać się z mniejszej bądź większej liczby bitów. Zależy nam na tym, by wiadomość składająca się z sekwencji zdarzeń elementarnych liczyła jak najmniej bitów (miała jak najmniejszą objętość), ale także na tym, by odbierana albo odczytana wiadomość była dokładnie taka sam, jak wiadomość nadana. Różnica może być spowodowana dwiema przyczynami. Pierwsza przyczyna to przekłamania strumienia bitów, np. przekłamania spowodowane zakłóceniami, zaś druga to niewłaściwe wybranie słów kodowych. Sposobami zabezpieczania się przed błędami spowodowanymi przekłamaniami bitów zajmiemy się dalej. Tu przyjmijmy, że tego typu błędy nie występują. Zatem skąd mogą brać się niezgodności między wiadomościami odebranymi a nadanymi? Wyjaśnimy to na prostym przykładzie. Załóżmy, że zbiór wiadomości elementarnych składa się z cyfr od 0 do 3. Następnie przyjmijmy, że wiadomości elementarne są kodowane następująco: 0, 00, 01 i 10. Tego typu kod jest nazywany kodem nieosobliwym, ponieważ każdej wiadomości jest w sposób jednoznaczny przypisane słowo kodowe. Jeżeli byłaby nadawana następująca wiadomość: 0132 to reprezentujący ją strumień bitów miałby postać: 0001001. Odbiornik nie zna przesyłanej mu wiadomości, a jedynie przesłany strumień bitów, który jest w nim konwertowany (dekodowany) na wiadomości elementarne. Dekodowanie może dać jednak kilka różnych rezultatów - wiadomość odebrana to 00032, 0132, 1202, 1032 albo 00202, podczas gdy wiadomość nadana odpowiada drugiemu z wyników dekodowania. Widzimy, że zastosowanie kodu nieosobliwego nie jest warunkiem wystarczającym by jednoznacznie i poprawnie zdekodować odebraną sekwencję bitów. Jeżeli jednak dobralibyśmy słowa kodowe w taki sposób, by początek żadnego z nich nie stanowił innego słowa kodowego, to błędne dekodowanie nie występowałoby. Kody mające tę właściwość należą do klasy kodów prefiksowych. W podanym przykładzie warunek ten nie był spełniony, ponieważ słowo kodowe 0 występowało na początku dwóch innych słów kodowych (00 i 01), a więc ten kod nie był kodem prefiksowym, ale był kodem nieosobliwym. Przyjęcie następujących słów kodowych 00, 01, 10 i 11, odpowiednio dla wiadomości elementarnych 0, 1, 2 i 3 nie spowoduje wieloznaczności przy dekodowaniu wiadomości, ponieważ zaproponowany kod jest nie tylko kodem nieosobliwym, ale także kodem prefiksowym. Kod prefiksowy nie musi charakteryzować się słowami kodowymi o jednakowej długości.
Powróćmy do zagadnienia minimalizacji liczby bitów reprezentujących wiadomość. Przypomnijmy, że entropia określa graniczną minimalną średnią liczbę bitów słów kodowych wiadomości elementarnych należących do pewnego zbioru wiadomości elementarnych. Kod, dla którego średnia długość słowa kodowego jest równa entropii nazywa się kodem optymalnym. W tym miejscu zdefiniujmy pojęcie efektywności kodu. Jeżeli przez Lśr oznaczymy średnią długość słowa kodowego danego kodu, to efektywność kodu E wyraża się następującą zależnością:
Kod optymalny to kod cechujący się efektywnością równą 100 %. Problem znalezienia kodu optymalnego a zarazem prefiksowego został rozwiązany i od nazwiska autora nazywany jest kodem Huffmana. Aby znaleźć kod Huffmana dla danego zbioru wiadomości elementarnych niezbędna jest wiedza o prawdopodobieństwach występowania tych zdarzeń w wiadomości, którą mamy przesłać. Prawdopodobieństwa te można wyznaczyć na podstawie samej wiadomości. Na przykład, gdy chcielibyśmy przesłać tekst Trylogii H. Sienkiewicza należałoby najpierw obliczyć częstość występowania w niej każdego ze znaków alfabetu, a następnie przystąpić do znalezienia kodu Huffmana. Takie postępowanie jest możliwe, ale niepraktyczne, szczególnie w przypadku systemów teletransmisyjnych. W przypadku przesyłania plików tekstowych napisanych w danym języku można posłużyć się prawdopodobieństwami występowania znaków alfabetu obliczonymi dla danego języka, a nie obliczonymi na podstawie wiadomości. Jeżeli przesyłany tekst jest długi to różnica pomiędzy prawdopodobieństwami obliczonymi dwiema metodami nie będzie duża. Jako ciekawostkę podajmy, że średnia autoinformacja na literę w języku polskim wynosi 1,5 bita. Niestety kod Huffmana zastosowany do tekstów nie będzie dobry w przypadku innych plików. Aby prawidłowo zdekodować odebraną wiadomość dekoder musi znać używany w koderze kod Huffmana. Najogólniej możliwe są trzy sposoby postępowania. Pierwszy, polega na ustaleniu jednego kodu znanego koderowi i dekoderowi. Drugi sposób wymaga przesłaniu na początku transmisji każdej nowej wiadomości, tak zwanej tabeli kodów. Drugie rozwiązanie daje większe możliwości kompresji, ale tylko wtedy, gdy przesyłany plik jest długi. Jeżeli plik jest krótki to zysk z użycia kodu jest znacznie zmniejszany, ponieważ tabela kodów stanowi relatywnie dużą część przesyłanych bitów. Trzeci sposób opiera się na dynamicznym określaniu tabeli kodów. Mianowicie nadajnik po wysłaniu pewnej porcji bitów, a odbiornik po ich odebraniu, na podstawie informacji zawartych w wiadomości reprezentowanej za pomocą tych bitów, określają według tych samych zasad tabelę kodów, które jest stosowana do przesyłania kolejnej porcji wiadomości. Sposób ten jest najodpowiedniejszy w przypadku przesyłania plików o nieznanych cechach.
Na zakończenie przedstawimy kolejne kroki algorytmu, według którego wyznacza się słowa kodu Huffmana.
- Określ prawdopodobieństwa występowania poszczególnych wiadomości elementarnych.
- Uszereguj wiadomości elementarne według rosnącego prawdopodobieństwa. Każdemu prawdopodobieństwu przypisz punkt nazywany węzłem.
- Dodaj dwa najmniejsze prawdopodobieństwa i utwórz nowy węzeł. Przypisz mu wynik sumowania. Połącz każdy z dwóch węzłów linią z nowym węzłem. W dalszych rozważaniach pomiń te dwa węzły.
- Z pozostających węzłów i węzła nowoutworzonego wybierz dwa węzły o najmniejszych prawdopodobieństwach. Utwórz nowy węzeł, przypisz mu prawdopodobieństwo będące wynikiem sumowania prawdopodobieństw tych dwóch węzłów. Połącz liniami te węzły z nowoutworzonym węzłem. W dalszych rozważaniach pomiń te dwa węzły.
- Jeżeli pozostał Ci tylko jeden węzeł przejdź dalej, jeżeli więcej to powróć do punktu 4 algorytmu.
- Wszystkim liniom dolnym odchodzącym od węzła przypisz cyfrę 1 a liniom górnym 0, albo odwrotnie.
- Słowo kodowe odpowiadające danej wiadomości elementarnej składa z sekwencji bitów przypisanych kolejnym liniom, poczynając od ostatnio utworzonego węzła, a kończąc na węźle odpowiadającym wiadomości elementarnej, albo odwrotnie.
Dla zbioru wiadomości elementarnych składającego się z liter a, b, c, d oraz e, występujących w wiadomości z prawdopodobieństwami wynoszącymi odpowiednio 0,3; 0,1; 0,2; 0,1 i 0,3 wyznacz słowa kodu Huffmana.
Przykład 1.10
Dla zbioru wiadomości elementarnych składającego się z liter a, b, c oraz d, występujących w wiadomości z prawdopodobieństwami wynoszącymi odpowiednio: 0,4, 0,2 , 0,2 , 0,2 wyznacz słowa kodu Huffmana. Obliczyć średnią liczbę bitów na literę.
Rozwiązania znajdują się w materiałach dodatkowych do modułu.
Z przedstawionego przykładu wynika, że algorytm tworzenia słów kodowych nie prowadzi do jednoznacznego rezultatu. Możliwe jest otrzymanie różnych wyników. Oznacza to, że kod Huffmana nie jest deterministyczny. Jednak posługując się algorytmem zawsze otrzymamy taką samą średnią liczbę bitów na wiadomość elementarną, niezależnie od wyniku kodowania.
Warto jednak wiedzieć, że zbiór wiadomości elementarnych może być tworzony w różny sposób. W przykładzie za wiadomość elementarną przyjęliśmy pojedyncze litery. Jednak nic nie stoi na przeszkodzie, by za wiadomość elementarną przyjmować, np. sekwencje dwuliterowe (ogólniej wieloliterowe), utworzone z zbioru jednoliterowych wiadomości elementarnych. Jeżeli dla nowego zbioru takich wiadomości elementarnych zastosujemy kod Huffmana to może okazać się, że przesłanie wiadomości wymagać będzie mniejszej liczby bitów, niż gdy wiadomości elementarne są jednoliterowe. Zysk jest jednak okupiony znaczną komplikacją drzewa kodowego i koniecznością wyznaczenia prawdopodobieństw wiadomości elementarnych.
3.5. Kodowanie nadmiarowe
Kodowanie nadmiarowe nazywane też kodowaniem korekcyjnym ma na celu wykrywanie (detekcję) błędów lub wykrywanie i usuwanie (korekcja) błędów w przesyłanym strumieniu bitów. Kodowanie nadmiarowe nie jest operacją wykonywaną na transmitowanym sygnale, lecz na strumieniu bitów, które mają być przesłane. Najogólniej można powiedzieć, że do przesyłanego strumienia bitów dodaje się dodatkowe bity, które służą detekowaniu i korygowaniu błędów binarnych. Dodawanie bitów zmniejsza efektywną szybkość transmisji. Liczba dodawanych bitów oraz ich struktura logiczna zależy od zastosowanego kodu nadmiarowego. W uproszczeniu można powiedzieć, że im więcej bitów możemy dodać, tym większa jest skuteczność kodu. Pojawia się pytanie: na ile możemy zwiększać skuteczność kodu nadmiarowego kosztem zmniejszania efektywnej szybkości transmisji? Idealny kod to taki, którego zastosowanie pozwala uniknąć jakichkolwiek błędów binarnych, i który nie zmniejsza szybkości transmisji w stosunku do wartości maksymalnej określonej za pomocą twierdzenia Shannon’a. Oczywiście takiego kodu nie ma. Chcąc ocenić skuteczność użytego kodu, albo porównać różne kody między sobą posługujemy się pojęciem zysku kodowego. Najwygodniej pojęcie to zdefiniować graficznie, co zostało zaprezentowane na rysunku 1.20. Zysk kodowy wiąże stosunek SNR w kanale transmisyjnym z jakością transmisji określoną za pomocą bitowej stopy błędów BER (Bit Error Ratio) definiowanej następująco:
BER=liczba przekłamanych bitów/suma wszystkich bitów. |
Dla zadanej bitowej stopy błędów jest to różnica między wymaganą minimalną wartością stosunku SNR w przypadku braku kodowania nadmiarowego i z kodowaniem nadmiarowym. Najczęściej różnicę tą podaje się w [dB] w odniesieniu do stosunku energii Eb przypadającej na jeden bit do gęstości widmowej mocy gaussowskiego szumu białego N0.
Rys. 1.20. Ilustracja graficzna zysku kodowego
Zdefiniujmy teraz dwa podstawowe parametry kodu nadmiarowego: minimalną odległość Hamminga i współczynnik kodu. Minimalna odległość Hamminga to najmniejsza różnica między dwoma kodowanymi słowami (sekwencjami), rozumiana jako sumaryczna liczba pozycji o różnej wartości logicznej bitów. Na przykład dla dwóch sekwencji 1001010 i 1101011 różnica jest na pozycjach 2 i 7, zatem odległość Hamminga wynosi 2. Minimalna odległość Hamminga dmin dla całego zbioru słów kodowych decyduje o możliwościach detekowania i korygowania błędów. I tak, niezależnie od kodu nadmiarowego minimalna liczba wykrywanych błędów emin wynosi:
a minimalna liczba wykrywanych i korygowanych błędów cmin wynosi:
Współczynnik kodu R to stosunek:
gdzie: k – liczba bitów sekwencji kodowanej, n – liczba bitów sekwencji po zakodowaniu.
Im mniejszy jest współczynnik kodu tym więcej jest bitów nadmiarowych, i tym większa przepustowość kanału transmisyjnego jest wymagana.
Trzybitowe słowa (zaznaczone kolorem zielonym) zakodowano w następujący sposób:
S1={0000000}, S2={1001000}, S3={0100100}, S4={0010011},
S5={0001001}, S6={0011101}, S7={1111000}, S8={1111111}.
Współczynnik kodu wynosi 3/7. Minimalna odległość Hamminga dmin=2, stąd: emin = 1, cmin =1/2.
Wyjaśnienia wymaga minimalna liczba wykrywanych i korygowanych błędów binarnych. Załóżmy, że odebrana została sekwencja 0001000. Nie ma wątpliwości, że zawiera ona jeden błąd, ale nie można go skorygować. Błąd może dotyczyć: pierwszego bitu (nadane było słowo S2), czwartego bitu (nadane było słowo S1) albo siódmego bitu (nadane było słowo S5). Jeżeli cmin < 1, to nie ma gwarancji korygowania błędów.
Istnieje wiele kodów nadmiarowych. Najogólniej można je podzielić na kody systematyczne i niesystematyczne. W słowie kodowym kodu systematycznego bity informacyjne (sekwencja kodowana) nie są zmieniane, a słowo kodowe powstaje przez dodanie do nich pewnej liczby bitów, tak zwanych kontrolnych. Inaczej jest w przypadku kodów niesystematycznych, w słowie kodowym nie da się wyróżnić sekwencji kodowanej i bitów kontrolnych. Najogólniej kody nadmiarowe dzieli się na kody blokowe i splotowe. W przypadku blokowych kodów nadmiarowych kodowany strumień bitów jest dzielony na jednakowo liczne bloki i każdy blok jest kodowany niezależnie od pozostałych. W kodach splotowych jest inaczej, słowo kodowe zależy nie tylko od kodowanej informacji, ale również od pewnej liczby poprzedzających słów kodowych.
Kody parzystości
Najprostszym kodem blokowym i zarazem systematycznym jest kod oparty na sumowaniu modulo 2 liczby jedynek w kodowanej porcji informacji (w bloku). Wynikiem takiej operacji jest 1 (liczba jedynek nieparzysta) lub 0 (liczba jedynek parzysta). Wynik ten jest dodawany do bloku. Kody tak działające są nazywane kodami parzystości. Nie umożliwiają one korygowania błędów, a nawet wykrywania błędów, jeżeli ich liczba w bloku jest parzysta. Powszechnie stosowanym kodem tego typu jest kod ASCII, a także kody BIP-N (Binary Interleaved Parity) – bitowej kontroli parzystości, w którym N oznacza liczbę bloków, na które dzielona jest przesyłana informacja. Dla każdego bloku oblicza się bit kontroli parzystości, ale nie jest on, tak jak w kodzie ASCII dopisywany do każdego bloku, lecz tworzy jedną N-bitową sekwencję parzystości.
Cykliczne kody nadmiarowe
Cykliczne kody nadmiarowe CRC (Cyclic Redundancy Check) są kodami blokowymi. Podobnie jak kody z kontrolą parzystości są one powszechnie stosowane we współczesnej telekomunikacji i teleinformatyce.
Pozwalają one skutecznej niż kody z kontrolą parzystości wykrywać błędy w przesyłanym bloku bitów. Blok n bitów, które mają być przesłane może być kodowany na kilka sposobów. W każdym z nich blok bitów, oznaczmy je następująco: , jest zastępowany wielomianem o współczynnikach przyjmujących takie wartości jak kolejne bity bloku (0 albo 1). Wielomian ten ma następującą postać:
i jest nazywany wielomianem wiadomości. Z kodem cyklicznym jest związany, tak zwany wielomian generatora G(x). Wielomian ten ma ogólnie następującą postać:
Stopień wielomianu generatora i wartości współczynników zależą od konkretnego zastosowania.
Kody cykliczne dzielą się na kody systematyczne i niesystematyczne. W przypadku kodu niesystematycznego wielomian kodowy powstaje w wyniku pomnożenia wielomianu wiadomości przez wielomian generatora. Współczynniki tak otrzymanego wielomianu są odpowiednimi bitami ciągu kodowego.
Wielomian wiadomości: , wielomian generatora: ,
wielomian kodowy:
Symbol ⊕ oznacza sumowanie modulo 2. Słowo kodowe: 111010000.
W przypadku kodowania systematycznego zamiast mnożenia wykonuje się dzielenie wielomianu przez wielomian generatora stopnia r. W wyniku dzielenia otrzymujemy wielomian stopnia n-i oraz wielomian R(x) będący resztą z dzielenia:
Przykład dzielenia modulo 2 wielomianów:
(x5⊕x3⊕x2)x3⊕x2)=x2⊕x
x5⊕x4
x4⊕x3⊕x2
x4⊕x3
x2 - reszta z dzielenia
Do kodowanego bloku bitów dopisuje się resztę z dzielenia wielomianów. Chcą sprawdzić poprawność wiadomości wykonuje się identyczną operację dzielenia i sprawdza się, czy otrzymana bity reszty są takie same jak dopisane przy tworzeniu słowa kodowego.
Przedstawione kody cykliczne pozwalają jedynie wykrywać błędy, ale nie dają możliwości ich usuwania. Są jednak kody cykliczne, których użycie pozwala nie tylko wykrywać, ale i usuwać błędy. Warto tu wspomnieć o kodzie Reed’a-Solomon’a. Jest to kod bajtowy, a nie bitowy, a zatem wykrywa się błędne bajty i ewentualnie je koryguje.
Kody splotowe
Dotychczas zajmowaliśmy się kodami blokowymi. Kodowanie informacji zawartej w bloku jest niezależne od postaci wiadomości w blokach poprzedzających i następujących po kodowanym bloku. Inaczej jest w kodach splotowych. W tych kodach historia kodowania ma znaczenie. W najprostszym przypadku może ona dotyczyć dwóch ostatnich bitów wiadomości. Kodowanie następującego po nich bitu zależy od tego jakie były te dwa wcześniejsze bity, a dokładniej jak je kodowano.
Rys.1.21. Schemat przykładowego kodera splotowego
Na rysunku 1.21 pokazano schemat blokowy przykładowego kodera splotowego. W jego skład wchodzą dwa sumatory modulo 2 i dwa jednobitowe rejestry przesuwne (Rp1 i Rp2). Każdemu bitowi podawanemu na wejście kodera odpowiadają dwa bity otrzymywane w różny sposób, stąd na schemacie widnieje przełącznik. Współczynnik kodu, którego schemat pokazano na rysunku 1.21 wynosi ½. W czasie trwania jednego taktu pracy kodera najpierw są wyznaczane dwa bity wyjściowe, a następnie bit wejściowy jest wpisywany do rejestru pierwszego Rp1, a bit z tego rejestru jest wpisywany do rejestru drugiego Rp2. Pracę kodera splotowego często ilustruje się za pomocą struktury kratowej. Dla najprostszego kodera struktura taka jest pokazana na rysunku 1.22. Stan rejestrów przesuwnych w każdej poziomej linii jest taki sam. Pojawienie się w danym stanie rejestru przesuwnego zera oznacza konieczność wyboru drogi górnej, albo prawej, a bitu o wartości logicznej 1 wyboru drogi dolnej, albo lewej. Należy zauważyć, że działanie kodera w pełni opisuje uproszczona struktura, ze względu na jej powtarzalność, poczynając od trzeciego taktu – ogólnie od M-tego taktu, gdzie M oznacza liczbę rejestrów przesuwnych (patrz rysunek 1.22).
Rys.1.22. Struktura kratowa kodera splotowego pokazanego na rys.1.21
Wyznaczmy sekwencję wyjściową z kodera splotowego pokazanego na rys.1.21, jeżeli na wejściu mamy następującą sekwencję bitów: 1101001. Przyjąć stan początkowy w rejestrach 01.
Rozwiązanie w prezentacji załączonej w materiałach dodatkowych.
Modulacje kodowe
Okazuje się, że zysk kodowy może być jeszcze większy, gdy połączy się kodowanie splotowe z modulacją cyfrową, w porównaniu z zastosowaniem tylko modulacji cyfrowej. Takie techniki kodowania są nazywane modulacjami kodowymi TCM (Trellis Coded Modulation). Idea modulacji kodowej sprowadza się do równoczesnego użycia kodu splotowego i modulacji cyfrowej. Na rysunku 1.23 pokazany jest ogólny schemat kodera TCM. J bitów kodowanych jest podawanych na wejście kodera splotowego, a pozostałe K nie. Liczba bitów wyjściowych z kodera splotowego jest o jeden większa niż liczba bitów wejściowych. Bity te służą do wyboru stanu rejestrów przesuwnych, a pozostałe bity do wyboru jednej z dwóch równoległych dróg przejścia.
Rozważmy działanie kodera TCM, gdy koder splotowy składa się z dwóch rejestrów przesuwnych (rysunek 1.22), a modulacją jest modulacja QAM-8. Na rysunku 1.24 pokazano strukturę kratową kodera z modulacją QAM-8. W tym przypadku na wyjściu kodera mamy trzy bity yi , yi+1 oraz yi+2 zależne od pary bitów wejściowych xi oraz xi +1. Na przykład, jeżeli koder splotowy jest w stanie 01 (w rejestrze Rp1 jest 0, a w rejestrze Rp2 bit 1) i na wejściu kodera splotowego pojawia się bit xi = 0 to na jego wyjściu mielibyśmy bity yi =1 oraz yi +1 = 1. Ponieważ bit xi +1 = 0 to do sekwencji 11 dopisana jest 0 (yi +3 =0), co z kolei odpowiada punktowi 110 z konstelacji QAM-8. Ze stanu 01 następuje przejście do stanu 00. Zwróćmy uwagę, że przypisanie do punktów konstelacji sekwencji trzybitowych musi być takie by odległości między punktami dla dwóch linii równoległych były jak największe.
Rys.1.23. Ogólny schemat blokowy kodera TCM
Rys.1.24. Krata kodera TCM, dla kodera splotowego pokazanego na rys.1.21 i modulacji QAM-8Rys.1.24.
Punkty konstelacji QAM-8 zaznaczono kolorami. Takie same kolory mają prostokąty, w których zamieszczone są wyjściowe sekwencje bitów. Przypisanie sekwencji bitów punktowi z konstelacji nie jest przypadkowe. Wybrano je tak by odległości między punktami tego samego koloru były możliwie duże. W takim przypadku ryzyko popełnienia błędu po stronie dekodera jest zminimalizowane.