Cel kodowania liniowego
W systemach cyfrowych informacja jest reprezentowana jako sekwencja bitów, czyli zer i jedynek. Aby przesłać ją przez medium fizyczne, na przykład kabel miedziany lub światłowód, bity trzeba odwzorować na sygnał fizyczny, taki jak zmienne napięcie albo impuls świetlny. Ten proces nazywa się kodowaniem liniowym. Kodowanie kanałowe jest odrębną operacją, która dodaje do danych nadmiarowe symbole potrzebne do wykrywania lub korekcji błędów.
Użycie stałego wysokiego poziomu dla '1' oraz niskiego lub zerowego dla '0' opisuje wariant unipolarny NRZ i może utrudniać transmisję. Problemy dotyczą składowej stałej, odzyskiwania zegara oraz dopasowania widma do kanału. Kody liniowe dobiera się z uwzględnieniem tych wymagań.
Pożądane właściwości kodów liniowych
Kod liniowy powinien mieć cechy wspierające poprawną i wydajną transmisję danych:
- Minimalizacja składowej stałej: Sygnał powinien mieć zerową lub bliską zeru średnią wartość napięcia, czyli być zrównoważony DC. Wiele sieci używa transformatorów lub sprzężenia AC, które blokują trwałą , co prowadzi do zniekształcenia sygnału.
- Samotaktowanie (self-synchronization): Kod samosynchronizujący zapewnia częste przejścia, czyli zmiany poziomu sygnału, także przy niekorzystnych sekwencjach danych. Odbiornik wykorzystuje je do wydobycia i utrzymania synchronizacji z nadajnikiem. Ogranicza to błędy próbkowania.
- Wydajność pasma: Kod powinien zajmować jak najmniejszą szerokość pasma dla danej przepływności. Niektóre kody, oferując dobrą synchronizację, wymagają dwukrotnie szerszego pasma niż prostsze kody.
- Możliwość wykrywania błędów: Niektóre kody posiadają wewnętrzne reguły, dzięki którym pewne sekwencje sygnału są niedozwolone. Jeśli odbiornik wykryje taką sekwencję, wie, że nastąpił błąd transmisji.
- Przezroczystość: Kod przezroczysty może reprezentować dowolną sekwencję bitów, w tym długie ciągi samych zer lub samych jedynek. Jego synchronizacja i składowa stała nadal zależą od wybranego kodu oraz kanału.
Popularne kody liniowe
Poniższe przykłady porównują sposób realizacji tych wymagań przez poszczególne kody.
NRZ polarny i unipolarny (Non-Return-to-Zero)
W kodzie NRZ poziom sygnału pozostaje stały przez cały czas trwania bitu.
- Polarny NRZ: Logiczne '1' jest reprezentowane przez dodatnie napięcie (), a '0' przez ujemne napięcie ().
- Unipolarny NRZ: Logiczne '1' to dodatnie napięcie (), a '0' to napięcie zerowe ().
Ocena: Dla prostokątnych impulsów ciągła część głównego płata widma sięga do , więc kod zajmuje niewielkie pasmo. Składowa stała zależy od poziomów i statystyki bitów, szczególnie w wersji unipolarnej. Długie sekwencje identycznych bitów utrudniają odzyskiwanie zegara.
RZ (Return-to-Zero)
W unipolarnym RZ '1' jest reprezentowana przez impuls trwający połowę okresu bitu, po którym sygnał wraca do zera. '0' jest reprezentowane przez brak impulsu (0V).
Ocena: Dla unipolarnego RZ, gdy strumień zawiera niezerowy udział jedynek, prążek przy częstotliwości zegarowej () ułatwia synchronizację. Przy prostokątnym impulsie o wypełnieniu 50% pierwszy zanik występuje przy , więc wymagane pasmo jest szersze niż dla NRZ. Składowa stała nadal zależy od danych, a długie ciągi zer nie zawierają przejść.
AMI (Alternate Mark Inversion)
AMI to kod trójwartościowy (+V, 0, -V), który ogranicza składową stałą przez naprzemienną polaryzację impulsów.
- Logiczne '0' jest reprezentowane przez 0V.
- Logiczna '1' (mark) jest reprezentowana przez naprzemiennie dodatnie () i ujemne () impulsy.
Ocena: Kolejne impulsy dla jedynek mają przeciwne polaryzacje, dlatego średnia składowa stała dąży do zera w długim strumieniu. Długa sekwencja '0' nadal daje stały poziom 0V i utrudnia odzyskiwanie zegara.
HDB3 (kod bipolarny dużej gęstości rzędu 3)
Modyfikacja kodu AMI stosowana w systemach telefonii cyfrowej E1, między innymi w europejskiej hierarchii PCM. Ogranicza długość ciągu zer, aby utrzymać przejścia potrzebne do synchronizacji.
- Działa na tych samych zasadach co AMI.
- Substytucja: Gdy pojawi się sekwencja czterech kolejnych zer (), zastępuje się ją wzorcem zawierającym impuls „naruszenia” (), który łamie zasadę naprzemienności AMI.
- Wybór wzorca ( lub ) zależy od parzystości liczby impulsów od ostatniego naruszenia: wybiera się przy nieparzystej liczbie, a przy parzystej. W ten sposób kolejne impulsy mają naprzemienne polaryzacje, a niezrównoważenie składowej stałej pozostaje ograniczone. jest zwykłym impulsem bipolarnym zgodnym z zasadą naprzemienności.
Ocena: HDB3 ogranicza odcinki bez impulsów, zachowując naprzemienność AMI poza kontrolowanymi naruszeniami. Reguła substytucji ogranicza niezrównoważenie składowej stałej, a wstawione impulsy dostarczają przejść do synchronizacji.
Kod Manchester
Kod Manchester jest kodem dwufazowym. Każdy okres bitu zawiera przejście sygnału w połowie, dzięki czemu informacja o zegarze jest obecna w strumieniu danych.
- W konwencji IEEE 802.3 logiczne '0' jest przejściem z poziomu wysokiego na niski.
- W konwencji IEEE 802.3 logiczne '1' jest przejściem z poziomu niskiego na wysoki.
Ocena: Przejście w każdym bicie ułatwia synchronizację, a równe czasy przebywania na poziomach dodatnim i ujemnym znoszą składową stałą w idealnym przebiegu. Dla prostokątnych impulsów pierwszy zanik występuje przy dwukrotnie większej częstotliwości niż w polarnym NRZ, więc kod wymaga szerszego pasma.