Kod korekcji błędów - Error correction code

W informatyce , telekomunikacji , teorii informacji i teorii kodowania , kod korekcji błędów , czasami kod korekcji błędów ( ECC ) jest używany do kontrolowania błędów w danych w niepewnych lub zaszumionych kanałach komunikacyjnych . Główną ideą jest to, że nadawca koduje wiadomość z nadmiarowymi informacjami w postaci ECC. Redundancja umożliwia odbiornikowi wykrycie ograniczonej liczby błędów, które mogą wystąpić w dowolnym miejscu w komunikacie i często korygowanie tych błędów bez retransmisji. Amerykański matematyk Richard Hammingbył pionierem w tej dziedzinie w latach 40. XX wieku i wynalazł pierwszy kod korygujący błędy w 1950 roku: kod Hamminga (7,4) .

ECC kontrastuje z wykrywaniem błędów, ponieważ napotkane błędy można poprawić, a nie tylko wykryć. Zaletą jest to, że system wykorzystujący ECC nie wymaga kanału zwrotnego do żądania retransmisji danych w przypadku wystąpienia błędu. Wadą jest to, że do wiadomości dodawany jest stały narzut, co wymaga większej przepustowości kanału dosyłowego. ECC jest zatem stosowane w sytuacjach, w których retransmisja jest kosztowna lub niemożliwa, takich jak jednokierunkowe łącza komunikacyjne oraz przy transmisji do wielu odbiorców w trybie multicast . Korzystają również połączenia z długimi opóźnieniami; w przypadku satelity krążącego wokół Urana retransmisja spowodowana błędami może spowodować pięciogodzinne opóźnienie. Informacje ECC są zwykle dodawane do urządzeń pamięci masowej, aby umożliwić odzyskanie uszkodzonych danych, są szeroko stosowane w modemach i są używane w systemach, w których podstawową pamięcią jest pamięć ECC .

Przetwarzanie ECC w odbiorniku może być zastosowane do cyfrowego strumienia bitów lub w demodulacji cyfrowo modulowanej nośnej. W przypadku tych ostatnich ECC jest integralną częścią początkowej konwersji analogowo-cyfrowej w odbiorniku. Viterbi dekoder implementuje algorytm decyzji miękkiej demodulowanie cyfrowych danych z sygnału analogowego uszkodzony przez hałas. Wiele koderów/dekoderów ECC może również generować sygnał bitowej stopy błędów (BER), który może służyć jako sprzężenie zwrotne do precyzyjnego dostrojenia analogowej elektroniki odbiorczej.

Maksymalne ułamki błędów lub brakujących bitów, które można skorygować, są określone przez projekt kodu ECC, więc różne kody korekcji błędów są odpowiednie dla różnych warunków. Ogólnie rzecz biorąc, mocniejszy kod powoduje większą nadmiarowość, która musi być przesyłana przy użyciu dostępnej szerokości pasma, co zmniejsza efektywną przepływność, poprawiając jednocześnie odbierany efektywny stosunek sygnału do szumu. Noisy-kodowanie kanału Twierdzenie o Claude Shannon może być używany do obliczania maksymalną osiągalną przepustowość komunikacji dla określonego maksymalnego dopuszczalnego prawdopodobieństwa błędu. Ustala to granice teoretycznej maksymalnej szybkości przesyłania informacji w kanale o określonym poziomie szumu podstawowego. Jednak dowód nie jest konstruktywny, a zatem nie daje wglądu w to, jak zbudować zdolność do generowania kodu. Po latach badań niektóre zaawansowane systemy ECC od 2016 r. zbliżają się bardzo do teoretycznego maksimum.

Korekcja błędów w przód

W telekomunikacji , teorii informacji i teorii kodowania , korekcja błędów w przód ( FEC ) lub kodowanie kanałowe to technika wykorzystywana do kontrolowania błędów w transmisji danych w niepewnych lub zaszumionych kanałach komunikacyjnych . Główną ideą jest to, że nadawca koduje wiadomość w sposób nadmiarowy , najczęściej za pomocą ECC.

Redundancja umożliwia odbiornikowi wykrycie ograniczonej liczby błędów, które mogą wystąpić w dowolnym miejscu w komunikacie, i często korygowanie tych błędów bez ponownej transmisji. FEC daje odbiornikowi możliwość korygowania błędów bez potrzeby korzystania z kanału zwrotnego w celu żądania retransmisji danych, ale kosztem stałej, wyższej przepustowości kanału dosyłowego. FEC jest zatem stosowany w sytuacjach, w których retransmisja jest kosztowna lub niemożliwa, takich jak jednokierunkowe łącza komunikacyjne oraz podczas transmisji do wielu odbiorców w trybie multicast . Informacje FEC są zwykle dodawane do urządzeń pamięci masowej (magnetycznej, optycznej i półprzewodnikowej/flash), aby umożliwić odzyskanie uszkodzonych danych, są szeroko stosowane w modemach , są używane w systemach, w których podstawową pamięcią jest pamięć ECC oraz w sytuacjach rozgłoszeniowych, gdzie odbiornik nie ma możliwości zażądania retransmisji lub spowodowałoby to znaczne opóźnienie. Na przykład w przypadku satelity krążącego wokół Urana retransmisja z powodu błędów dekodowania może spowodować opóźnienie co najmniej 5 godzin.

Przetwarzanie FEC w odbiorniku może być zastosowane do cyfrowego strumienia bitów lub w demodulacji cyfrowo modulowanej nośnej. W przypadku tych ostatnich FEC jest integralną częścią początkowej konwersji analogowo-cyfrowej w odbiorniku. Viterbi dekoder implementuje algorytm decyzji miękkiej demodulowanie cyfrowych danych z sygnału analogowego uszkodzony przez hałas. Wiele koderów FEC może również generować sygnał bitowej stopy błędów (BER), który może być wykorzystany jako sprzężenie zwrotne do precyzyjnego dostrojenia analogowej elektroniki odbiorczej.

Maksymalna proporcja błędów lub brakujących bitów, które można skorygować, jest określona przez konstrukcję ECC, więc różne kody korekcji błędów w przód są odpowiednie dla różnych warunków. Ogólnie rzecz biorąc, mocniejszy kod powoduje większą nadmiarowość, która musi być przesyłana przy użyciu dostępnej szerokości pasma, co zmniejsza efektywną przepływność, poprawiając jednocześnie odbierany efektywny stosunek sygnału do szumu. Głośny-kanałowy kodowania twierdzenie Claude Shannon odpowiedzi na pytanie, jaka przepustowość jest pozostawione do transmisji danych podczas korzystania z najbardziej wydajnego kodu, który włącza się dekodowanie prawdopodobieństwo błędu do zera. Ustala to granice teoretycznej maksymalnej szybkości przesyłania informacji w kanale o określonym poziomie szumu podstawowego. Jego dowód nie jest konstruktywny, a zatem nie daje wglądu w to, jak zbudować zdolność do tworzenia kodu. Jednak po latach badań niektóre zaawansowane systemy FEC, takie jak kod biegunowy, osiągają pojemność kanału Shannona przy hipotezie ramki o nieskończonej długości.

Jak to działa

ECC uzyskuje się poprzez dodanie nadmiarowości do przesyłanych informacji za pomocą algorytmu. Bit nadmiarowy może być złożoną funkcją wielu oryginalnych bitów informacji. Oryginalna informacja może, ale nie musi pojawić się dosłownie w zakodowanym wyjściu; kody, które zawierają niezmodyfikowane dane wejściowe w wyniku są systematyczne , natomiast te, które nie zawierają, są niesystematyczne .

Uproszczonym przykładem ECC jest przesyłanie każdego bitu danych 3 razy, co jest znane jako (3,1) kod powtórzenia . Za pośrednictwem zaszumionego kanału odbiornik może zobaczyć 8 wersji wyjścia, patrz tabela poniżej.

Trójka otrzymana interpretowane jako
000 0 (bez błędów)
001 0
010 0
100 0
111 1 (bezbłędny)
110 1
101 1
011 1

Pozwala to na poprawienie błędu w jednej z trzech próbek poprzez „głosowanie większością” lub „głosowanie demokratyczne”. Zdolność korygowania tego ECC to:

  • Do 1 bitu trójki z błędem lub
  • do 2 bitów trypletu pominięte (przypadki nie pokazane w tabeli).

Choć prosta we wdrożeniu i szeroko stosowana, ta potrójna modułowa nadmiarowość jest stosunkowo nieefektywną funkcją ECC. Lepsze kody ECC zazwyczaj sprawdzają ostatnie kilkadziesiąt lub nawet ostatnie kilkaset wcześniej odebranych bitów, aby określić, jak zdekodować bieżącą małą garść bitów (zwykle w grupach od 2 do 8 bitów).

Uśrednianie hałasu w celu zmniejszenia błędów

Można powiedzieć, że ECC działa poprzez „uśrednianie hałasu”; ponieważ każdy bit danych wpływa na wiele przesyłanych symboli, zniekształcenie niektórych symboli przez szum zwykle umożliwia wyodrębnienie oryginalnych danych użytkownika z innych, nieuszkodzonych odebranych symboli, które również zależą od tych samych danych użytkownika.

  • Z powodu tego efektu „łączenia ryzyka”, systemy komunikacji cyfrowej, które używają ECC, mają tendencję do pracy dobrze powyżej pewnego minimalnego stosunku sygnału do szumu i wcale poniżej niego.
  • Ta tendencja „wszystko albo nic”efekt klifu – staje się bardziej wyraźna, gdy stosowane są silniejsze kody, które są bardziej zbliżone do teoretycznej granicy Shannona .
  • Przeplatanie zakodowanych danych ECC może zmniejszyć właściwości wszystko albo nic transmitowanych kodów ECC, gdy błędy kanału mają tendencję do występowania w seriach. Jednak ta metoda ma ograniczenia; najlepiej używać go na danych wąskopasmowych.

Większość systemów telekomunikacyjnych używa stałego kodu kanału zaprojektowanego tak, aby tolerować oczekiwany najgorszy przypadek bitowej stopy błędów , a następnie przestaje działać, jeśli bitowa stopa błędów jest jeszcze gorsza. Jednak niektóre systemy dostosowują się do danych warunków błędu kanału: niektóre przypadki hybrydowego automatycznego żądania powtórzenia wykorzystują stałą metodę ECC, o ile ECC może obsłużyć poziom błędu, a następnie przełącza się na ARQ, gdy poziom błędu jest zbyt wysoki; Adaptacyjna modulacja i kodowanie wykorzystuje różne współczynniki ECC, dodając więcej bitów korekcji błędów na pakiet, gdy występują wyższe współczynniki błędów w kanale, lub usuwając je, gdy nie są potrzebne.

Rodzaje ECC

Krótka klasyfikacja kodów korekcji błędów

Dwie główne kategorie kodów ECC to kody blokowe i kody splotowe .

  • Kody blokowe działają na blokach (pakietach) o stałym rozmiarze bitów lub symboli o ustalonym rozmiarze. Praktyczne kody blokowe można generalnie zakodować na sztywno w czasie wielomianowym do ich długości bloku.
  • Kody splotowe działają na strumieniach bitów lub symboli o dowolnej długości. Najczęściej są one dekodowane miękko za pomocą algorytmu Viterbiego , chociaż czasami stosuje się inne algorytmy. Dekodowanie Viterbiego umożliwia asymptotycznie optymalną wydajność dekodowania wraz ze wzrostem długości ograniczenia kodu splotowego, ale kosztem wykładniczego wzrostu złożoności. Kod splotowy, który jest zakończony, jest również „kodem blokowym”, ponieważ koduje blok danych wejściowych, ale rozmiar bloku kodu splotowego jest ogólnie dowolny, podczas gdy kody blokowe mają stały rozmiar podyktowany ich charakterystyką algebraiczną. Rodzaje terminacji dla kodów splotowych obejmują „obgryzanie ogona” i „przepłukiwanie bitów”.

Istnieje wiele rodzajów kodów blokowych; Kodowanie Reed-Solomon jest godne uwagi ze względu na jego szerokie zastosowanie w płytach kompaktowych , DVD i dyskach twardych . Inne przykłady klasycznych kodów blokowych to Golay , BCH , wielowymiarowa parzystość i kody Hamminga .

Hamming ECC jest powszechnie używany do korygowania błędów pamięci flash NAND . Zapewnia to jednobitową korekcję błędów i dwubitowe wykrywanie błędów. Kody Hamminga są odpowiednie tylko dla bardziej niezawodnych jednopoziomowych komórek (SLC) NAND. Gęstsze wielopoziomowe komórki (MLC) NAND mogą wykorzystywać wielobitową korekcję ECC, taką jak BCH lub Reed-Solomon. NOR Flash zazwyczaj nie używa żadnej korekcji błędów.

Klasyczne kody blokowe są zwykle dekodowane przy użyciu algorytmów twardej decyzji , co oznacza, że ​​dla każdego sygnału wejściowego i wyjściowego podejmowana jest twarda decyzja, czy odpowiada on jednemu czy zerowemu bitowi. W przeciwieństwie do tego, kody splotowe są zwykle dekodowane przy użyciu algorytmów miękkiej decyzji , takich jak algorytmy Viterbi, MAP lub BCJR , które przetwarzają ( zdyskretyzowane ) sygnały analogowe i które pozwalają na znacznie wyższą wydajność korekcji błędów niż dekodowanie twardej decyzji.

Prawie wszystkie klasyczne kody blokowe stosują algebraiczne własności ciał skończonych . Stąd klasyczne kody blokowe są często określane jako kody algebraiczne.

W przeciwieństwie do klasycznych kodów blokowych, które często określają zdolność wykrywania lub korygowania błędów, wiele nowoczesnych kodów blokowych, takich jak kody LDPC, nie ma takich gwarancji. Zamiast tego współczesne kody są oceniane pod kątem ich bitowych współczynników błędów.

Większość kodów korekcji błędów do przodu koryguje tylko przerzucanie bitów, ale nie wstawianie bitów lub usuwanie bitów. Przy tym ustawieniu odległość Hamminga jest odpowiednim sposobem pomiaru bitowej stopy błędów . Kilka kodów korekcji błędów do przodu jest zaprojektowanych do korygowania wstawiania i usuwania bitów, takich jak kody znaczników i kody znaków wodnych. Odległość Levenshteina jest bardziej odpowiednim sposobem pomiaru bitowej stopy błędów podczas korzystania z takich kodów.

Szybkość kodowania i kompromis między niezawodnością a szybkością transmisji danych

Podstawową zasadą ECC jest dodawanie nadmiarowych bitów, aby pomóc dekoderowi znaleźć prawdziwy komunikat zakodowany przez nadajnik. Współczynnik kodowania danego systemu ECC jest zdefiniowany jako stosunek liczby bitów informacyjnych do całkowitej liczby bitów (tj. informacji plus bitów redundancji) w danym pakiecie komunikacyjnym. Współczynnik kodowania jest zatem liczbą rzeczywistą. Niska szybkość kodowania bliska zeru implikuje silny kod, który wykorzystuje wiele nadmiarowych bitów, aby osiągnąć dobrą wydajność, podczas gdy duża szybkość kodowania bliska 1 implikuje słaby kod.

Nadmiarowe bity, które chronią informacje, muszą być przesyłane przy użyciu tych samych zasobów komunikacyjnych, które starają się chronić. Powoduje to fundamentalny kompromis między niezawodnością a szybkością transmisji danych. W jednej skrajności, silny kod (o niskiej szybkości kodowania) może wywołać znaczny wzrost SNR odbiornika (stosunek sygnału do szumu), zmniejszając bitową stopę błędów, kosztem zmniejszenia efektywnej szybkości transmisji danych. Z drugiej strony, nieużywanie żadnego ECC (tj. współczynnik kodowania równy 1) wykorzystuje cały kanał do celów przesyłania informacji, kosztem pozostawienia bitów bez dodatkowej ochrony.

Interesujące pytanie brzmi: jak wydajny pod względem przekazywania informacji może być ECC, który ma znikomy wskaźnik błędów dekodowania? Na to pytanie odpowiedział Claude Shannon swoim drugim twierdzeniem, które mówi, że przepustowość kanału jest maksymalną przepływnością, jaką może osiągnąć każdy ECC, którego stopa błędów dąży do zera: Jego dowód opiera się na losowym kodowaniu Gaussa, które nie jest odpowiednie w świecie rzeczywistym Aplikacje. Górna granica podana przez pracę Shannona zainspirowała długą podróż w projektowaniu ECC, które mogą zbliżyć się do najwyższej granicy wydajności. Różne kody mogą dziś osiągnąć prawie granicę Shannona. Jednak zdolność do osiągnięcia ECC jest zwykle niezwykle skomplikowana do wdrożenia.

Najpopularniejsze ECC charakteryzują się kompromisem między wydajnością a złożonością obliczeniową. Zazwyczaj ich parametry dają szereg możliwych współczynników kodowania, które można zoptymalizować w zależności od scenariusza. Zwykle optymalizacja ta jest wykonywana w celu uzyskania niskiego prawdopodobieństwa błędu dekodowania przy jednoczesnym zminimalizowaniu wpływu na szybkość transmisji danych. Innym kryterium optymalizacji współczynnika kodowania jest zrównoważenie niskiego współczynnika błędów i liczby retransmisji w celu zrównoważenia kosztów energetycznych komunikacji.

Połączone kody ECC dla lepszej wydajności

Klasyczne (algebraiczne) kody blokowe i kody splotowe są często łączone w połączone schematy kodowania, w których większość pracy wykonuje kod splotowy o krótkiej długości ograniczenia dekodowany przez Viterbiego, a kod blokowy (zwykle Reed-Solomon) o większym rozmiarze symbolu i długości bloku „wymazuje” wszelkie błędy popełnione przez dekoder splotowy. Dekodowanie jednoprzebiegowe za pomocą tej rodziny kodów korekcji błędów może dawać bardzo niskie współczynniki błędów, ale dla warunków transmisji dalekiego zasięgu (takich jak przestrzeń kosmiczna) zalecane jest dekodowanie iteracyjne.

Połączone kody były standardową praktyką w komunikacji satelitarnej i kosmicznej, odkąd Voyager 2 po raz pierwszy użył tej techniki podczas spotkania z Uranem w 1986 roku . Statek Galileo użył iteracyjnych, połączonych kodów, aby zrekompensować warunki o bardzo wysokim współczynniku błędów spowodowanych uszkodzoną anteną.

Kontrola parzystości o niskiej gęstości (LDPC)

Kody kontroli parzystości o niskiej gęstości (LDPC) to klasa wysoce wydajnych liniowych kodów blokowych utworzonych z wielu kodów pojedynczej kontroli parzystości (SPC). Mogą zapewnić wydajność bardzo zbliżoną do pojemności kanału (teoretyczne maksimum) przy użyciu iterowanego podejścia do dekodowania miękkich decyzji, przy liniowej złożoności czasowej pod względem długości bloku. Praktyczne implementacje polegają w dużej mierze na równoległym dekodowaniu składowych kodów SPC.

Kody LDPC zostały po raz pierwszy wprowadzone przez Roberta G. Gallagera w jego pracy doktorskiej w 1960 roku, ale ze względu na wysiłek obliczeniowy w implementacji kodera i dekodera oraz wprowadzenie kodów Reeda-Solomona , były one w większości ignorowane do lat 90. XX wieku.

Kody LDPC są obecnie używane w wielu najnowszych, szybkich standardach komunikacyjnych, takich jak DVB-S2 (Digital Video Broadcasting – Satellite – Second Generation), WiMAX ( standard IEEE 802.16e dla komunikacji mikrofalowej), High-Speed ​​Wireless LAN ( IEEE 802.11n ), 10GBase-T Ethernet ( 802.3an ) i G.hn/G.9960 (standard ITU-T dla sieci za pośrednictwem linii energetycznych, telefonicznych i kabla koncentrycznego). Inne kody LDPC są znormalizowane dla standardów komunikacji bezprzewodowej w ramach 3GPP MBMS (patrz kody fontannowe ).

Kody turbo

Turbokodowanie to iterowany schemat miękkiego dekodowania, który łączy dwa lub więcej stosunkowo prostych kodów splotowych i przeplotu w celu utworzenia kodu blokowego, który może działać z dokładnością do ułamka decybela limitu Shannona . Poprzedzając kody LDPC pod względem praktycznego zastosowania, zapewniają one teraz podobną wydajność.

Jednym z pierwszych komercyjnych zastosowań turbokodowania była cyfrowa technologia komórkowa CDMA2000 1x (TIA IS-2000) opracowana przez Qualcomm i sprzedawana przez Verizon Wireless , Sprint i innych operatorów. Jest również używany do ewolucji CDMA2000 1x specjalnie dla dostępu do Internetu, 1xEV-DO (TIA IS-856). Podobnie jak 1x, EV-DO został opracowany przez Qualcomm i jest sprzedawany przez Verizon Wireless , Sprint i innych operatorów (nazwa marketingowa Verizon dla 1xEV-DO to Broadband Access , konsumenckie i biznesowe nazwy marketingowe Sprint dla 1xEV-DO to Power Vision i Mobile Szerokopasmowy ).

Lokalne dekodowanie i testowanie kodów

Czasami wystarczy zdekodować pojedyncze bity komunikatu lub sprawdzić, czy dany sygnał jest słowem kodowym i zrobić to bez oglądania całego sygnału. Może to mieć sens w ustawieniach przesyłania strumieniowego, w których słowa kodowe są zbyt duże, aby można je było klasycznie dekodować wystarczająco szybko i gdzie na razie interesuje się tylko kilka bitów wiadomości. Również takie kody stały się ważnym narzędziem w teorii złożoności obliczeniowej , np. do projektowania probabilistycznie sprawdzalnych dowodów .

Kody dekodowane lokalniekodami korekcji błędów, w przypadku których pojedyncze bity komunikatu mogą być probabilistycznie odzyskane przez patrzenie tylko na małą (powiedzmy stałą) liczbę pozycji słowa kodowego, nawet po tym, jak słowo kodowe zostało uszkodzone w pewnym stałym ułamku pozycji. Kody testowalne lokalnie to kody korygujące błędy, dla których można probabilistycznie sprawdzić, czy sygnał jest zbliżony do słowa kodowego, patrząc tylko na niewielką liczbę pozycji sygnału.

Przeplatanie

Krótka ilustracja pomysłu na przeplatanie

Przeplatanie jest często stosowane w systemach komunikacji cyfrowej i pamięci masowej w celu poprawy wydajności kodów korekcji błędów w przód. Wiele kanałów komunikacyjnych nie jest pozbawionych pamięci: błędy zwykle występują w seriach, a nie niezależnie. Jeśli liczba błędów w słowie kodowym przekracza możliwości kodu korekcji błędów, nie udaje się odzyskać oryginalnego słowa kodowego. Przeplatanie łagodzi ten problem poprzez tasowanie symboli źródłowych w kilku słowach kodowych, tworząc w ten sposób bardziej równomierny rozkład błędów. Dlatego przeplatanie jest szeroko stosowane do korekcji błędów seryjnych .

Analiza nowoczesnych kodów iterowanych, takich jak kody turbo i kody LDPC , zazwyczaj zakłada niezależny rozkład błędów. Dlatego systemy wykorzystujące kody LDPC zazwyczaj stosują dodatkowe przeplatanie symboli w słowie kodowym.

W przypadku kodów turbo przeplot jest integralnym elementem, a jego odpowiednia konstrukcja ma kluczowe znaczenie dla dobrej wydajności. Iteracyjny algorytm dekodowania działa najlepiej, gdy na wykresie czynników reprezentującym dekoder nie ma krótkich cykli ; układ przeplatania jest wybrany w celu uniknięcia krótkich cykli.

Projekty z przeplotem obejmują:

  • przekładki prostokątne (lub jednolite) (podobne do metody wykorzystującej współczynniki pomijania opisane powyżej)
  • sploty splotowe
  • losowe elementy przeplatające (gdzie element przeplatający jest znaną przypadkową permutacją)
  • S-losowy element przeplatający (gdzie element przeplatający jest znaną losową permutacją z ograniczeniem, że żadne symbole wejściowe w odległości S nie pojawiają się w odległości S na wyjściu).
  • bezsporny wielomian permutacji kwadratowej (QPP). Przykładem zastosowania jest standard telekomunikacji mobilnej 3GPP Long Term Evolution .

W wielo nośnik systemów komunikacyjnych, przeplatanie po drugiej nośników może być stosowana w celu zapewnienia częstotliwości różnorodności , na przykład w celu zmniejszenia zaniki selektywne częstotliwościowo lub zakłócenia wąskopasmowego.

Przykład

Transmisja bez przeplotu :

Error-free message:                                 aaaabbbbccccddddeeeeffffgggg
Transmission with a burst error:                    aaaabbbbccc____deeeeffffgggg

Tutaj każda grupa tej samej litery reprezentuje 4-bitowe jednobitowe słowo kodowe korygujące błędy. Słowo kodowe cccc jest zmieniane w jednym bicie i można je poprawić, ale słowo kodowe dddd jest zmieniane w trzech bitach, więc albo nie można go w ogóle zdekodować, albo może zostać zdekodowane niepoprawnie .

Z przeplataniem :

Error-free code words:                              aaaabbbbccccddddeeeeffffgggg
Interleaved:                                        abcdefgabcdefgabcdefgabcdefg
Transmission with a burst error:                    abcdefgabcd____bcdefgabcdefg
Received code words after deinterleaving:           aa_abbbbccccdddde_eef_ffg_gg

W każdym ze słów kodowych „aaaa”, „eeee”, „ffff” i „gggg” zmieniany jest tylko jeden bit, więc jednobitowy kod korygujący błędy dekoduje wszystko poprawnie.

Transmisja bez przeplotu :

Original transmitted sentence:                      ThisIsAnExampleOfInterleaving
Received sentence with a burst error:               ThisIs______pleOfInterleaving

Termin „Przykład” jest w większości niezrozumiały i trudny do poprawienia.

Z przeplataniem :

Transmitted sentence:                               ThisIsAnExampleOfInterleaving...
Error-free transmission:                            TIEpfeaghsxlIrv.iAaenli.snmOten.
Received sentence with a burst error:               TIEpfe______Irv.iAaenli.snmOten.
Received sentence after deinterleaving:             T_isI_AnE_amp_eOfInterle_vin_...

Żadne słowo nie jest całkowicie stracone, a brakujące litery można odzyskać przy minimalnym zgadywaniu.

Wady przeplatania

Zastosowanie technik przeplatania zwiększa całkowite opóźnienie. Dzieje się tak, ponieważ cały przeplatany blok musi zostać odebrany przed dekodowaniem pakietów. Również przekładki ukrywają strukturę błędów; bez elementu przeplatającego bardziej zaawansowane algorytmy dekodowania mogą wykorzystać strukturę błędów i osiągnąć bardziej niezawodną komunikację niż prostszy dekoder połączony z elementem przeplatającym. Przykład takiego algorytmu opiera się na strukturach sieci neuronowych .

Oprogramowanie do kodów korekcji błędów

Symulowanie zachowania kodów korekcji błędów (ECC) w oprogramowaniu jest powszechną praktyką projektowania, walidacji i ulepszania kodów ECC. Nadchodzący bezprzewodowy standard 5G otwiera nową gamę aplikacji dla oprogramowania ECC: Cloud Radio Access Networks (C-RAN) w kontekście radia definiowanego programowo (SDR) . Pomysł polega na bezpośrednim wykorzystaniu oprogramowania ECC w komunikacji. Na przykład w 5G oprogramowanie ECC mogłoby być zlokalizowane w chmurze i anteny podłączone do tych zasobów obliczeniowych, poprawiając w ten sposób elastyczność sieci komunikacyjnej i ostatecznie zwiększając efektywność energetyczną systemu.

W tym kontekście dostępne są różne rodzaje oprogramowania Open Source wymienione poniżej (niewyczerpujące).

  • AFF3CT (A Fast Forward Error Correction Toolbox): pełny łańcuch komunikacyjny w C++ (wiele obsługiwanych kodów, takich jak Turbo, LDPC, kody Polar itp.), bardzo szybki i wyspecjalizowany w kodowaniu kanałów (może być używany jako program do symulacji lub jako biblioteka dla SDR).
  • IT++ : biblioteka C++ klas i funkcji do algebry liniowej, optymalizacji numerycznej, przetwarzania sygnałów, komunikacji i statystyki.
  • OpenAir : implementacja (w C) specyfikacji 3GPP dotyczących Evolved Packet Core Networks.

Lista kodów korekcji błędów

Dystans Kod
2 (wykrywanie pojedynczego błędu) Parytet
3 (korekta pojedynczych błędów) Potrójna redundancja modułowa
3 (korekta pojedynczych błędów) idealny Hamming taki jak Hamming(7,4)
4 ( ODSTĘPOWANY ) Rozszerzony Hamming
5 (podwójna korekcja błędów)
6 (podwójny błąd poprawny/potrójny błąd wykrywania)
7 (korekta trzech błędów) doskonały kod binarny Golay
8 (TECFED) rozszerzony kod binarny Golay

Zobacz też

Bibliografia

Dalsza lektura

Zewnętrzne linki