celem teorii kodowania kanałowego jest znalezienie kodów, które szybko się przesyłają, zawierają wiele ważnych słów kodowych i mogą poprawić lub przynajmniej wykryć wiele błędów. Chociaż nie wykluczają się wzajemnie, wyniki w tych obszarach stanowią kompromis. Tak więc różne kody są optymalne dla różnych aplikacji. Wymagane właściwości tego kodu zależą głównie od prawdopodobieństwa wystąpienia błędów podczas transmisji. W typowym CD upośledzenie to głównie kurz lub zadrapania.
płyty CD wykorzystują przeplatane kodowanie Reeda-Solomona do rozprowadzania danych na dysku.
chociaż nie jest to bardzo dobry kod, prosty kod powtórzeniowy może służyć jako zrozumiały przykład. Załóżmy, że weźmiemy blok bitów danych (reprezentujących dźwięk) i wyślemy go trzy razy. Przy odbiorniku zbadamy trzy powtórzenia kawałek po kawałku i zabierzemy głos większością. Chodzi o to, że nie wysyłamy tylko bitów w kolejności. Przeplatamy je. Blok bitów danych jest najpierw podzielony na 4 mniejsze bloki. Następnie przechodzimy przez blok i Wysyłamy Jeden bit z pierwszego, potem drugiego, itd. Odbywa się to trzy razy, aby rozłożyć dane na powierzchnię dysku. W kontekście prostego kodu powtarzania może to nie wydawać się skuteczne. Istnieją jednak bardziej wydajne kody, które są bardzo skuteczne w korygowaniu błędu „burst” zadrapania lub plamki pyłu, gdy ta technika przeplatania jest używana.
inne kody są bardziej odpowiednie dla różnych zastosowań. Komunikacja w przestrzeni kosmicznej jest ograniczona przez szum termiczny odbiornika, który ma bardziej charakter ciągły niż burzliwy. Podobnie modemy wąskopasmowe są ograniczone przez szumy, obecne w sieci telefonicznej, a także lepiej modelowane jako ciągłe zakłócenia. Telefony komórkowe ulegają szybkiemu zanikowi. Stosowane wysokie częstotliwości mogą powodować szybkie zanikanie sygnału, nawet jeśli odbiornik jest przesunięty o kilka cali. Ponownie istnieje klasa kodów kanałów, które są przeznaczone do zwalczania blaknięcia.
Linear codesEdit
termin Algebraiczna teoria kodowania oznacza pod-pole teorii kodowania, gdzie właściwości kodów są wyrażone w kategoriach algebraicznych, a następnie dalej badane.
teoria kodowania algebraicznego jest zasadniczo podzielona na dwa główne typy kodów:
- liniowe kody blokowe
- kody Konwolucyjne
analizuje następujące trzy właściwości kodu-głównie:
- długość słowa kodowego
- całkowita liczba poprawnych słów kodowych
- minimalna odległość między dwoma poprawnymi słowami kodowymi, wykorzystująca głównie odległość Hamminga, czasami także inne odległości, takie jak odległość Lee
kod bloków Liniowychedit
liniowe kody bloków mają właściwość liniowości, tzn. suma dowolnych dwóch słów kodowych jest również słowem kodowym, a są one stosowane do bitów źródłowych w blokach, stąd nazwa linear block codes. Istnieją kody blokowe, które nie są liniowe, ale trudno jest udowodnić, że kod jest dobry bez tej właściwości.
liniowe kody blokowe są sumowane przez ich alfabety symboli (np. binarne lub trójdzielne) i parametry (n, m,dmin), gdzie
- n jest długością słowa kodowego, w symbolach,
- M jest liczbą symboli źródłowych, które będą używane do kodowania jednocześnie,
- dmin jest minimalną odległością Hamminga dla kodu.
istnieje wiele rodzajów liniowych kodów blokowych, takich jak
- kody Cykliczne (np. Kody Hamminga)
- kody powtórzeń
- kody parzystości
- kody wielomianowe (np. kody BCH)
- kody Reeda–Salomona
- algebraiczne kody geometryczne
- kody Reeda–Mullera
- kody doskonałe
kody blokowe są powiązane z problemem pakowania sfery, który przez lata był przedmiotem pewnej uwagi. W dwóch wymiarach jest łatwy do wizualizacji. Weź kilka groszy płasko na stole i popchnij je razem. Rezultatem jest sześciokątny wzór jak gniazdo pszczoły. Ale kody blokowe opierają się na większej liczbie wymiarów, których nie można łatwo zwizualizować. Potężny kod (24,12) Golay używany w komunikacji w przestrzeni kosmicznej wykorzystuje 24 wymiary. Jeśli jest używany jako kod binarny (którym zwykle jest), wymiary odnoszą się do długości słowa kodowego zdefiniowanego powyżej.
teoria kodowania wykorzystuje N-wymiarowy model sfery. Na przykład, ile groszy można zapakować w okrąg na blacie stołu lub w 3 wymiarach, ile kulek można zapakować w globus. Inne uwagi wprowadź wybór kodu. Na przykład sześciokątne opakowanie do ograniczenia prostokątnego pudełka pozostawi pustą przestrzeń w rogach. W miarę jak wymiary stają się większe, procent pustej przestrzeni staje się mniejszy. Ale w pewnych wymiarach opakowanie wykorzystuje całą przestrzeń, a te kody są tak zwanymi „doskonałymi” kodami. Jedynymi nietrywialnymi i użytecznymi kodami doskonałymi są kody Hamminga o parametrach spełniających (2r – 1, 2R-1-r, 3) oraz kody binarne i trójdzielne Golaja.
inną właściwością kodu jest liczba sąsiadów, które może mieć pojedyncze słowo kodowe.Ponownie rozważmy grosze jako przykład. Najpierw pakujemy grosze w prostokątną siatkę. Każdy grosz będzie miał 4 w pobliżu sąsiadów (i 4 w rogach, które są dalej). W sześciokącie każdy grosz będzie miał 6 bliskich sąsiadów. Kiedy zwiększamy wymiary, liczba bliskich sąsiadów wzrasta bardzo szybko. W rezultacie rośnie również liczba sposobów na to, aby odbiornik wybrał sąsiada (stąd błąd). Jest to podstawowe ograniczenie kodów blokowych, a nawet wszystkich kodów. Może być trudniej spowodować błąd jednego sąsiada, ale liczba sąsiadów może być wystarczająco duża, więc całkowite prawdopodobieństwo błędu faktycznie cierpi.
właściwości liniowych kodów blokowych są wykorzystywane w wielu aplikacjach. Na przykład właściwość Syndrome-coset uniqueness liniowych kodów blokowych jest używana w kształtowaniu kratowym, jednym z najbardziej znanych kodów kształtowania.
Convolutional codesEdit
ideą kodu convolutional jest to, aby każdy symbol słowa kodowego był ważoną sumą różnych symboli wiadomości wejściowych. To jest jak splot stosowany w systemach LTI, aby znaleźć wyjście systemu, gdy znasz wejście i odpowiedź impulsową.
więc generalnie znajdujemy wyjście kodera splotowego systemu, który jest splotem bitu wejściowego, w stosunku do Stanów enkodera splotowego, rejestrów.
zasadniczo kody konwolucyjne nie zapewniają większej ochrony przed hałasem niż równoważny kod blokowy. W wielu przypadkach zazwyczaj oferują większą prostotę implementacji w stosunku do kodu blokowego o jednakowej mocy. Enkoder jest zwykle prostym obwodem, który posiada pamięć stanu i pewną logikę sprzężenia zwrotnego, Zwykle bramki XOR. Dekoder może być realizowany w oprogramowaniu lub firmware.
algorytm Viterbiego jest optymalnym algorytmem używanym do dekodowania kodów konwolucyjnych. Istnieją uproszczenia w celu zmniejszenia obciążenia obliczeniowego. Polegają na przeszukiwaniu tylko najbardziej prawdopodobnych ścieżek. Chociaż nie są optymalne, ogólnie stwierdzono, że dają dobre wyniki w środowiskach o niskim poziomie hałasu.
kody Konwolucyjne są używane w modemach voiceband (V. 32, V. 17, V. 34) i w telefonach komórkowych GSM, a także w urządzeniach łączności satelitarnej i wojskowej.