Wybuchowy kod korygujący błędy

W teorii kodowania kody korygujące błędy seryjne wykorzystują metody korekcji błędów seryjnych , które są błędami występującymi w wielu kolejnych bitach, a nie występującymi w bitach niezależnie od siebie .

Wiele kodów zostało zaprojektowanych w celu poprawiania przypadkowych błędów . Czasami jednak kanały mogą wprowadzać błędy, które są zlokalizowane w krótkim odstępie czasu. Takie błędy występują w serii (nazywanej błędami serii ), ponieważ występują w wielu kolejnych bitach. Przykłady błędów serii można znaleźć obszernie w nośnikach pamięci. Błędy te mogą być spowodowane fizycznym uszkodzeniem, takim jak rysa na płycie lub uderzenie pioruna w przypadku kanałów bezprzewodowych. Nie są niezależni; mają tendencję do koncentracji przestrzennej. Jeśli jeden bit ma błąd, prawdopodobne jest, że sąsiednie bity również mogą być uszkodzone. Metody stosowane do korygowania błędów przypadkowych są nieskuteczne w korygowaniu błędów serii.

Definicje

Wybuch długości 5

Wybuch długości

że słowo kodowe przesyłane i odbierane jako błędu nazywany jest wybuchem długości, niezerowe składowe mi są ograniczone do kolejne komponenty. Na przykład to seria o długości

Chociaż ta definicja jest wystarczająca do opisania, czym jest błąd serii, większość narzędzi opracowanych do korekcji błędów serii opiera się na kodach cyklicznych. To motywuje naszą następną definicję.

Cykliczny wybuch długości

błędu nazywany cyklicznym błędem serii o długości jego niezerowe składowe są ograniczone do kolejnych składowych wcześniej wektor błędu jest cyklicznym impulsem o długości że błąd zaczyna się od i kończąc na pozycji . Zauważ, że indeksy są , to znaczy, że pierwszy element znajduje się na pozycji .

W pozostałej części tego artykułu będziemy używać terminu impuls w odniesieniu do cyklicznego wybuchu, o ile nie zaznaczono inaczej.

Opis wybuchu

Często przydatna jest zwięzła definicja błędu serii, która obejmuje nie tylko jego długość, ale także wzór i lokalizację takiego błędu. Definiujemy opis wybuchu jako krotkę, gdzie wzorcem błędu (czyli ciągiem symboli rozpoczynającym się od pierwszego niezerowego wpisu w wzorzec błędu i kończący się ostatnim niezerowym symbolem), a lokalizacja w słowie kodowym, w której można znaleźć serię

przykład opis serii wzorca błędu to re 1000011,1 , ponieważ błąd serii. Ogólnie rzecz biorąc, jeśli liczba niezerowych składników w to będzie miała różne opisy wybuchów od innego niezerowego wpisu mi . Aby zaradzić problemom wynikającym z niejednoznaczności opisów wybuchów za pomocą poniższego twierdzenia, jednak zanim to zrobimy, najpierw potrzebujemy definicji.

Definicja. Liczba symboli w danym wzorcu przez

Twierdzenie (niepowtarzalność opisów wybuchów) , że jest wektorem błędu o długości dwoma opisami wybuchów i . l to oba opisy są identyczne, to znaczy ich składowe są równoważne.

Dowód

Niech będzie Hamminga (lub liczbą niezerowych wpisów) mi . Wtedy dokładnie opisy . do _ Zakładamy więc, że są identyczne. Zauważamy, że każdy niezerowy wpis pojawi się we wzorcu, a więc składowe nieuwzględnione we wzorcu utworzą cykliczny ciąg zer, rozpoczynający się po ostatnim niezerowym wpisie mi { i kontynuując tuż przed pierwszym niezerowym wpisem wzorca. Zbiór wskaźników odpowiadający temu przebiegowi nazywamy przebiegiem zerowym. Od razu zauważamy, że każdy opis sekwencji ma skojarzony z nim przebieg zerowy i że każdy przebieg zerowy jest rozłączny. Ponieważ mamy mamy w sumie we wszystkich przebiegach zerowych. Z drugiej strony mamy:

Jest to sprzeczne z , że opisy błędów serii

Konsekwencją powyższego twierdzenia jest to, że nie możemy mieć dwóch różnych opisów wybuchów dla wybuchów o długości

Kody cykliczne do korekcji błędów serii

Kody cykliczne zdefiniowane w następujący sposób: pomyśl o symbolach jako elementach w . Teraz możemy myśleć o słowach jako wielomianach nad gdzie poszczególne symbole słowa odpowiadają Aby zdefiniować kod cykliczny, wybieramy ustalony wielomian, zwany wielomianem generatora . Słowa kodowe tego kodu cyklicznego to wszystkie wielomiany, które są podzielne przez ten wielomian generatora.

Słowa kodowe to wielomiany stopnia . Załóżmy, że wielomian generatora ma stopień . Wielomiany stopnia , które są podzielne przez wielomiany stopień . Mamy . Każdemu z nich odpowiada słowo kodowe. Dlatego dla kodów cyklicznych.

Kody cykliczne mogą wykryć wszystkie serie długości do . Zobaczymy później, że zdolność wykrywania błędów serii dowolnego { . Kody cykliczne są uważane za optymalne do wykrywania błędów serii, ponieważ spełniają tę górną granicę:

Twierdzenie (zdolność do korekcji cyklu cyklicznego) - Każdy kod z wielomianem generatora stopnia wykryć wszystkie impulsy o długości

Dowód

że jeśli dodamy serię długości do do wielomianu podzielnego to nie będzie słowem kodowym (tj. odpowiedni wielomian nie jest podzielny przez ). Wystarczy pokazać, że żaden wybuch długości nie przez . wybuch gdzie Dlatego nie jest podzielne przez (ponieważ ten ostatni ma stopień ). nie jest podzielna przez (w przeciwnym razie wszystkie słowa kodowe zaczynałyby się od {\ ) Dlatego nie jest podzielna przez Displaystyle

wielomian stopnia ), oblicz resztę tego słowa po podzieleniu ⩽ przez . Jeśli reszta zero (tj. jeśli słowo jest podzielne przez słowo kodowe. W przeciwnym razie zgłoś błąd. Aby poprawić ten błąd, odejmij tę resztę od transmitowanego słowa. Wynik odejmowania będzie podzielny przez będzie to poprawne słowo

Przez górną granicę wykrywania błędów serii ( cykliczny nie może wykryć serii długości . Jednak kody cykliczne mogą rzeczywiście wykryć większość serii o długości . Powodem jest to, że wykrywanie kończy się niepowodzeniem tylko wtedy, gdy seria jest podzielna przez . Ponad alfabetami binarnymi istnieją serie długości -2 nich tylko x } niepowodzenia wykrywania jest bardzo małe ( założeniu jednolitego rozkładu we wszystkich

Rozważymy teraz fundamentalne twierdzenie dotyczące kodów cyklicznych, które pomoże w projektowaniu wydajnych kodów korygujących błędy serii poprzez kategoryzowanie serii według różnych cosetów.

( odrębne Cosets ) - Kod liniowy jest korygującym błędy serii, jeśli wszystkie błędy serii długości w odrębne zestawy . do .

Dowód

Niech będą odrębnymi błędami serii o długości które leżą w tym samym zestawie kodu do . Wtedy jest słowem kodowym. Dlatego zdekodować albo do , albo . W przeciwieństwie do tego, jeśli wszystkie błędy serii mi nie leżą w tym samym zestawie, to każdy błąd jest określony przez jego syndrom. Błąd można następnie naprawić poprzez jego syndrom. Zatem kod liniowy kodem korygującym błędy wtedy i tylko wtedy, gdy wszystkie błędy serii o długości odrębnych zestawy do . do .

Twierdzenie (klasyfikacja słowa kodowego błędu serii) będzie liniowym kodem korygującym błędy długości może być słowem kodowym.

Dowód

Niech słowem kodowym z wybuchem długości . Ma więc wzór , gdzie i są słowami i długości Stąd słowa i to dwa serie długości . W przypadku binarnych kodów liniowych należą one do tego samego zbioru. wybuch długości nie słowem kodowym.

Granice korekcji błędów wybuchu

Górne granice wykrywania i korekcji błędów serii

Przez górną granicę rozumiemy granicę naszej zdolności wykrywania błędów, której nigdy nie możemy przekroczyć. że chcemy zaprojektować kod, który błędy serii o Naturalnym pytaniem, które należy zadać, jest: biorąc pod uwagę k maksimum , którego nigdy nie możemy osiągnąć poza? Innymi słowy, jaka jest górna granica długości , które możemy wykryć za pomocą dowolnego kodu? Odpowiedzi na to pytanie dostarcza następujące twierdzenie.

wykrywania błędów serii) - Zdolność błędów serii

Dowód

Najpierw zauważamy, że kod może wykryć wszystkie serie długości wtedy i tylko wtedy gdy żadne dwa słowa kodowe nie różnią się serią długości . Załóżmy, że mamy dwa słowa kodowe różniące się serią długości . Po otrzymaniu możemy stwierdzić, czy przesłane słowo jest rzeczywiście bez błędów transmisji, czy też do jest to błąd podczas transmisji Załóżmy teraz, że każde dwa słowa kodowe różnią się o więcej niż serię długości Nawet jeśli przesłane słowo kodowe zostanie trafione serię o długości , nie zmieni się na inne poprawne słowo kodowe. Po otrzymaniu go możemy stwierdzić, że wybuchem obserwacji wiemy, że żadne dwa słowa kodowe nie mogą dzielić . Powodem jest to, że nawet jeśli różnią się one wszystkimi innymi symbolami, nadal będą się różnić o serię długości liczba spełnia Stosując po obu stronach i przestawiając, widzimy, że .

Teraz powtarzamy to samo pytanie, ale dla korekty błędów: biorąc pod uwagę k {\ , jaka jest górna granica długości serii, które możemy poprawić za pomocą dowolnego kod? Wstępną odpowiedź na to pytanie daje następujące twierdzenie:

Zdolność korekcji błędów serii) Zdolność błędów kodu spełnia

Dowód

Najpierw zauważamy, że kod może poprawić wszystkie serie długości wtedy i tylko różnią się sumą dwóch serii długości , że dwa słowa kodowe różnią się seriami i i długości każdy. Po otrzymaniu trafienia serią zinterpretować to tak, jakby to było trafiony wybuchem . Nie możemy stwierdzić, czy przesłane słowo jest { . Załóżmy teraz, że każde dwa słowa kodowe różnią się o więcej niż dwa . Nawet jeśli przesłane słowo kodowe zostanie trafione przez serię o długości nie będzie wyglądać jak inne słowo kodowe, które zostało trafione przez inne pękać. dla każdego słowa kodowego niech zestaw wszystkich słów, które różnią się od przez wybuch długości , że zawiera sam Z powyższej obserwacji wiemy, że dla dwóch różnych słów kodowych ) i są rozłączne. Mamy słowa Dlatego możemy powiedzieć, że . Ponadto mamy . Podłączając drugą nierówność do pierwszej, a następnie biorąc logarytm podstawowy zmieniając układ, otrzymujemy powyższe twierdzenie

Silniejszy wynik daje granica Riegera:

Twierdzenie (związek Riegera) jest zdolnością korygowania błędów serii blokowego .

Dowód

może poprawić dowolny wzór serii o długości serii o długości słowa kodowego. Gdyby miał rozerwanie długości , to rozerwanie długości mogłoby zmienić słowo kodowe na wzorzec rozerwania długości , co również można uzyskać, popełniając błąd w całym zerowym słowie kodowym. Jeśli wektory są niezerowe w pierwszych , to wektory powinny pochodzić z różnych podzbiorów tablicy, tak aby ich różnica nie była słowem kodowym serii o długości . Spełniając ten warunek, liczba takich podzbiorów jest co najmniej równa liczbie wektorów. Zatem liczba podzbiorów wynosiłaby co najmniej . Stąd mamy co najmniej , w przeciwnym razie różnica dwóch takich wielomianów byłaby słowem kodowym będącym sumą dwóch serii o Dowodzi to zatem związku Riegera.

Definicja. Liniowy kod korygujący błędy serii, osiągający powyższą granicę Riegera, nazywany jest optymalnym kodem korekcji błędów serii.

Dalsze ograniczenia korekcji błędów serii

Istnieje więcej niż jedna górna granica osiągalnej szybkości kodowania liniowych kodów blokowych dla wielofazowej korekcji serii (MPBC). Jedno takie ograniczenie jest ograniczone do maksymalnej możliwej do skorygowania długości impulsu cyklicznego w każdym podbloku lub równoważnie do ograniczenia minimalnej wolnej od błędów długości lub przerwy w każdym impulsie fazowym. To ograniczenie, zredukowane do szczególnego przypadku ograniczenia dla pojedynczej korekcji serii, jest wiązaniem Abramsona (następstwem wiązania Hamminga dla korekcji błędów serii), gdy cykliczna długość serii jest mniejsza niż połowa długości bloku.

Twierdzenie (liczba wybuchów) - dla binarnego } alfabetu, istnieją wektory długości są seriami długości .

Dowód

Ponieważ długość serii wynosi istnieje unikalny opis serii związany z serią. Wybuch może rozpocząć się w dowolnej . Każdy wzór zaczyna się od i zawiera długość . Możemy myśleć o tym jako o zbiorze wszystkich ciągów, które zaczynają się od mają długość . Tak więc w sumie możliwych jest łącznie wybuchów długość całkowicie zerowy, mamy długości

Twierdzenie (związane z liczbą słów kodowych) - Jeśli binarny -burst kod korygujący błąd ma co najwyżej słowa kodowe.

Dowód

Ponieważ istnieje wybuchy długości . Powiedzmy że kod ma słowa , to są słowa kodowe, które różnią się od słowa kodowego serią długości . Każde ze przeciwnym razie kod miałby . Dlatego implikuje

Twierdzenie (granice Abramsona) - Jeśli jest binarną liniową ( -burst kod korygujący błąd, jego długość bloku musi spełniać:

Dowód

Dla _ _ Wiemy to po naszym poprzednim wyniku

Izolując 1 {\ Displaystyle n . Ponieważ i musi całkowitą, mamy .

Uwaga. nazywa się redundancją kodu, aw alternatywnym sformułowaniu granic Abramsona jest

Kody przeciwpożarowe

Chociaż ogólnie kody cykliczne są potężnymi narzędziami do wykrywania błędów serii, teraz rozważymy rodzinę binarnych kodów cyklicznych o nazwie Fire Codes, które mają dobre możliwości korekcji błędów pojedynczej serii. Przez pojedynczą serię, powiedzmy o długości , że wszystkie błędy, które posiada odebrane słowo kodowe, mieszczą się w ustalonym .

Niech będzie nieredukowalnym wielomianem stopnia nad i i niech być okresem . Okres najmniej dodatnia liczba całkowita że będzie dodatnią liczbą całkowitą spełniającą i nie podzielne przez , gdzie okresem . Zdefiniuj kod przeciwpożarowy za pomocą następującego wielomianu generatora :

Pokażemy, korygującym błędy

Lemat 1 -

Dowód

Niech dwóch wielomianów Ponieważ jest nieredukowalny, lub . Załóżmy wtedy dla pewnej stałej . Ale jest dzielnikiem ponieważ jest dzielnikiem . Jest to jednak sprzeczne z naszym założeniem, że nie dzieli Zatem udowadniając lemat.

Lemat 2 - Jeśli jest wielomianem okresu wtedy i tylko wtedy, gdy

Dowód

Jeśli , wtedy . Zatem

Załóżmy teraz, że . Następnie . Pokazujemy, że jest podzielna przez indukcję na . Następuje przypadek podstawowy . Dlatego załóżmy, że . Wiemy, że oba (ponieważ ma kropkę }

Ale jest nieredukowalny, dlatego musi dzielić oba i ; w ten sposób dzieli również różnicę dwóch ostatnich wielomianów, . Wynika z tego, że dzieli . Wreszcie dzieli również: . Zgodnie z hipotezą indukcyjną, , a następnie .

Konsekwencją lematu 2 jest to, że ponieważ ma okres , to dzieli wtedy i tylko wtedy, gdy .

Twierdzenie - Kod przeciwpożarowy to błędów

Jeśli możemy pokazać, że wszystkie wybuchy o długości występują w różnych zestawach , możemy użyć ich jako liderów zestawu , które tworzą możliwe do skorygowania wzorce błędów. Powód jest prosty: wiemy, że z każdym cosetem związany jest unikalny syndrom dekodowania , a jeśli wszystkie impulsy o różnej długości występują w różnych cosetach, to wszystkie mają unikalne syndromy, ułatwiające korekcję błędów.

Dowód twierdzenia

Niech i będą wielomianami o stopniach i , reprezentujące serie długości i i odpowiednio z Liczby całkowite reprezentują pozycje początkowe impulsów i są mniejsze niż długość bloku kod. Ze względu na sprzeczność załóżmy, że ja ) . Wtedy a ważne słowo kodowe (ponieważ oba terminy znajdują się w tym samym zestawie). Bez utraty ogólności wybierz . Z twierdzenia o dzieleniu możemy napisać: dla i . Przepisujemy wielomian w następujący sposób:

Zauważ, że przy drugiej manipulacji wprowadziliśmy termin . Możemy to zrobić, ponieważ kody przeciwpożarowe działają na . Przy naszym założeniu, kodowym , a zatem być wielokrotnością ponieważ czynniki są względnie pierwsze, muszą być podzielne przez . Przyglądając się uważnie ostatniemu wyrażeniu wyprowadzonemu dla , że jest podzielna przez (zgodnie z Lematem 2). Dlatego jest albo podzielne przez lub jest . Stosując ponownie twierdzenie o dzieleniu, widzimy, że istnieje wielomian takim stopniu, że :

Wtedy możemy napisać:

Zrównując stopień obu boków, otrzymujemy Ponieważ my ⩾ co implikuje i . Zauważ, że w rozwinięciu:

Termin pojawia ponieważ , wynikowe nie zawiera , więc , a następnie Wymaga to i . Możemy dalej zrewidować nasz podział przez odzwierciedlić znaczy . Podstawienie z powrotem do daje nam

Ponieważ , mamy . Ale { \ muszą być względnie pierwsze. Ponieważ jest słowem kodowym, musi być podzielne przez , ponieważ nie może być podzielna przez . Dlatego być wielokrotnością . Ale musi to być również wielokrotność , co oznacza, że ​​musi to być wielokrotność ale jest to dokładnie długość bloku kodu. Dlatego być wielokrotnością ponieważ oba są mniejsze niż . Zatem nasze założenie, że \ i zespołami, a zatem możliwe do naprawienia.

Przykład: 5-burst error poprawiający kod pożaru

Korzystając z teorii przedstawionej w powyższej sekcji, rozważ konstrukcję kodu przeciwpożarowego korygującego błąd że aby skonstruować kod przeciwpożarowy, potrzebujemy nieredukowalnego wielomianu całkowitej musimy właściwość, że podzielna przez okres { na i . Ponieważ , jego okres wynosi . Potwierdzamy, że jest podzielna przez . Zatem,

jest generatorem kodów pożarowych. Możemy obliczyć długość bloku kodu, oceniając najmniejszą wspólną wielokrotność 2 . Innymi słowy, . Zatem powyższy ogniowy jest kodem cyklicznym zdolnym do korygowania dowolnego wybuchu o długości mniejszej.

Binarne kody Reeda-Solomona

Niektóre rodziny kodów, takie jak Reed-Solomon , działają na rozmiarach alfabetu większych niż binarne. Ta właściwość przyznaje takim kodom potężne możliwości korekcji błędów serii. Rozważ kod działający na . Każdy symbol alfabetu może być reprezentowany . Jeśli jest to kod Reeda-Solomona na } myśleć o nad kodem do [

Powodem, dla którego takie kody są skuteczne w korekcji błędów serii, jest to, że każdy symbol jest reprezentowany przez ma znaczenia, ile z tych bitów jest błędnych; niezależnie od tego bit, czy wszystkie bity zawierają błędy, z perspektywy dekodowania jest to nadal błąd pojedynczego symbolu. Innymi słowy, ponieważ błędy seryjne zwykle występują w klastrach, istnieje duże prawdopodobieństwo, że kilka błędów binarnych przyczyni się do błędu pojedynczego symbolu.

Zauważ, że seria błędów może mieć wpływ co najwyżej na m na większość symboli . wybuch co _ oznacza to, że może co najwyżej poprawić serię długości .

Ogólnie rzecz biorąc, -Solomona w ciągu poprawić dowolną kombinację t

wybuchów o długości oprócz możliwości korygowania przypadkowych błędów w najgorszym przypadku

Przykład binarnego kodu RS

Niech za RS code over . Kod ten został zastosowany przez NASA w ich statku kosmicznym Cassini-Huygens . Jest _ Teraz konstruujemy Binarny kod RS z . Każdy symbol zostanie zapisany przy użyciu bitów Dlatego binarny kod RS będzie miał parametry jako Jest w stanie skorygować każdą pojedynczą serię o długości .

Kody przeplatane

Przeplot służy do konwersji kodów splotowych z losowych korektorów błędów na korektory błędów serii. Podstawową ideą stosowania kodów z przeplotem jest pomieszanie symboli w nadajniku. Prowadzi to do randomizacji serii odebranych błędów, które są blisko siebie i możemy następnie zastosować analizę dla losowego kanału. Zatem główną funkcją wykonywaną przez element przeplotu w nadajniku jest zmiana wejściowej sekwencji symboli. W odbiorniku element rozplatający zmieni odebraną sekwencję, aby odzyskać pierwotną niezmienioną sekwencję w nadajniku.

Wydajność korygowania błędów serii przeplotu

Ilustracja kolejności głównych wierszy i kolumn

Twierdzenie - Jeśli zdolność korygowania błędów serii jakiegoś kodu wynosi to zdolność korygowania błędów serii jego -way przeplotu wynosi

Dowód

że mamy kod serie Przeplot może dostarczyć nam kodu, który może poprawić wszystkie serie długości dla dowolnego danego . Jeśli chcemy zakodować wiadomość o dowolnej długości za pomocą przeplotu, najpierw dzielimy ją na bloki o długości . każdego bloku w głównych Następnie kodujemy każdy wiersz za pomocą kodu . Otrzymamy macierz . Teraz ta macierz jest odczytywana i przesyłana w kolejności kolumnowej. w przesłanym słowie wystąpi seria długości, to każdy wiersz będzie zawierał w kolejne dokładniej ⌊ i co najwyżej ). h to i może poprawić każdy wiersz. Dlatego kod _ I odwrotnie, jeśli to co najmniej jeden wiersz będzie zawierał więcej niż błędy, a kod może ich nie poprawić. Dlatego korygowania błędów przeplatanego kodu wynosi dokładnie Wydajność BEC kodu z przeplotem pozostaje taka sama jak . To prawda, ponieważ:

Blok przeplotu

Poniższy rysunek przedstawia układ przeplotu 4 na 3.

Przykład przeplotu bloków

Powyższy układ przeplotu nazywany jest układem przeplotu blokowego . Tutaj symbole wejściowe są zapisywane sekwencyjnie w wierszach, a symbole wyjściowe są uzyskiwane przez sekwencyjne odczytywanie kolumn. Zatem ma to postać tablicy . , to długość słowa kodowego.

Pojemność elementu przeplatającego bloki : dla elementu długości górna granica liczby błędów Jest to oczywiste z faktu, że czytamy mądrze kolumnę wyjściową, a liczba wierszy to . Zgodnie z powyższym twierdzeniem dotyczącym zdolności korekcji błędów do dozwolonej długości Dla długości serii dekoder może zawieść.

Wydajność elementu przeplatającego bloki ( Można ją znaleźć, biorąc stosunek długości serii, w której dekoder może zawieść do pamięci elementu przeplatającego. W ten sposób możemy sformułować jako

Wady mechanizmu przeplotu bloków: Jak wynika z rysunku, kolumny są odczytywane sekwencyjnie, odbiorca może zinterpretować pojedynczy wiersz dopiero po odebraniu całej wiadomości, a nie wcześniej. Ponadto odbiornik wymaga znacznej ilości pamięci w celu przechowywania odebranych symboli i musi przechowywać całą wiadomość. Zatem czynniki te powodują dwie wady, jedną jest opóźnienie, a drugą jest pamięć (dość duża ilość pamięci). Tych wad można uniknąć, stosując splotowy element przeplatający opisany poniżej.

Przeplot splotowy

Cross Interleaver jest rodzajem systemu multipleksera-demultipleksera. W tym systemie linie opóźniające służą do stopniowego zwiększania długości. Linia opóźniająca jest w zasadzie obwodem elektronicznym służącym do opóźnienia sygnału o określony czas. Niech będzie liczbą linii opóźniających i liczbą symboli wprowadzonych przez każdą linię opóźniającą Zatem separacja między kolejnymi symbolami wejść = . Niech długość słowa kodowego Zatem każdy symbol w wejściowym słowie kodowym będzie znajdować się na odrębnej linii opóźniającej. Niech wystąpi błąd serii o długości . Ponieważ separacja między kolejnymi symbolami wynosi liczba błędów, które może zawierać przepleciony wynik, wynosi twierdzeniem, dla zdolności korekcji błędów do maksymalna dozwolona długość serii to Dla długości serii dekoder może ulec awarii.

Przykład splotowego elementu przeplotowego
Przykład narzędzia do usuwania przeplotu

Wydajność elementu przeplatającego krzyżowo ( Można ją znaleźć, biorąc stosunek długości serii, w której dekoder może zawieść, do pamięci elementu przeplatającego. W takim przypadku pamięć układu przeplotu można obliczyć jako

Zatem możemy sformułować w następujący sposób:

Wydajność układu przeplotu krzyżowego: Jak pokazano na powyższym rysunku układu przeplotu, dane wyjściowe to nic innego jak ukośne symbole generowane na końcu każdej linii opóźniającej. W tym przypadku, gdy przełącznik multipleksera wejściowego zakończy około połowy przełączania, możemy odczytać pierwszy wiersz w odbiorniku. W związku z tym musimy przechowywać maksymalnie około połowy wiadomości u odbiorcy, aby przeczytać pierwszy wiersz. To drastycznie zmniejsza zapotrzebowanie na pamięć o połowę. Ponieważ do odczytania pierwszego wiersza wymagana jest teraz tylko połowa wiadomości, opóźnienie jest również zmniejszone o połowę, co jest dobrą poprawą w stosunku do mechanizmu przeplotu bloków. W ten sposób cała pamięć układu przeplotu jest dzielona między nadajnik i odbiornik.

Aplikacje

Płyta CD

Bez kodów korekcji błędów dźwięk cyfrowy nie byłby technicznie wykonalny. Kody Reeda -Solomona mogą poprawić uszkodzony symbol z błędem pojedynczego bitu tak samo łatwo, jak mogą poprawić symbol z błędnymi wszystkimi bitami. To sprawia, że ​​kody RS są szczególnie odpowiednie do korygowania błędów serii. Zdecydowanie najpowszechniejszym zastosowaniem kodów RS są płyty kompaktowe. Oprócz podstawowej korekcji błędów zapewnianej przez kody RS, ochronę przed błędami serii wynikającymi z zadrapań na dysku zapewnia układ przeplotu krzyżowego.

Obecny cyfrowy system audio na płytach kompaktowych został opracowany przez NV Philips z Holandii i Sony Corporation z Japonii (umowa podpisana w 1979 r.).

Płyta kompaktowa zawiera aluminiowaną płytę o średnicy 120 mm pokrytą przezroczystą powłoką z tworzywa sztucznego, ze spiralną ścieżką o długości około 5 km, która jest skanowana optycznie za pomocą lasera o długości fali ~0,8 μm, ze stałą prędkością ~1,25 m/s. Aby osiągnąć tę stałą prędkość, obroty dysku zmieniają się od ~ 8 obr./s podczas skanowania wewnętrznej części toru do ~ 3,5 obr./s w części zewnętrznej. Wgłębienia i ziemie to zagłębienia (głębokość 0,12 μm) oraz płaskie segmenty stanowiące dane binarne wzdłuż toru (szerokość 0,6 μm).

Proces CD można wyabstrahować jako sekwencję następujących podprocesów:

  • Kodowanie kanałów źródła sygnałów
  • Mechaniczne podprocesy przygotowania płyty wzorcowej, tworzenia płyt użytkownika i wykrywania sygnałów osadzonych na płytach użytkownika podczas odtwarzania – kanał
  • Dekodowanie sygnałów wykrytych z płyt użytkownika

Proces podlega zarówno błędom serii, jak i przypadkowym błędom. Błędy związane z rozerwaniem obejmują błędy związane z materiałem dysku (wady odblaskowej folii aluminiowej, słaby współczynnik odbicia przezroczystego materiału dysku), produkcją dysku (błędy podczas formowania dysku i cięcia dysku itp.), obchodzeniem się z dyskiem (zadrapania – zazwyczaj cienkie, promieniowe i prostopadłe do kierunek nagrywania) i różnice w mechanizmie odtwarzania. Błędy losowe obejmują te spowodowane jitterem zrekonstruowanej fali sygnału oraz zakłóceniami w sygnale. CIRC ( ang. Cross-Interleaved Reed–Solomon code ) jest podstawą wykrywania i korygowania błędów w procesie CD. Koryguje serie błędów do 3500 bitów w sekwencji (długość 2,4 mm, jak widać na powierzchni płyty CD) i kompensuje serie błędów do 12 000 bitów (8,5 mm), które mogą być spowodowane drobnymi zarysowaniami.

Kodowanie: Fale dźwiękowe są próbkowane i konwertowane do postaci cyfrowej przez przetwornik A/D. Fala dźwiękowa jest próbkowana pod kątem amplitudy (przy 44,1 kHz lub 44 100 parach, po jednej dla lewego i prawego kanału dźwięku stereo). Amplituda w instancji jest przypisywana do ciągu binarnego o długości 16. Zatem każda próbka wytwarza dwa wektory binarne z lub 4 bajtów danych. Każda sekunda zarejestrowanego dźwięku to 44 100 × 32 = 1 411 200 bitów (176 400 bajtów) danych. Próbkowany strumień danych o szybkości 1,41 Mbit/s przechodzi przez system korekcji błędów i ostatecznie zostaje przekształcony w strumień o szybkości 1,88 Mbit/s.

Wejście dla enkodera składa się z ramek wejściowych, z których każda zawiera 24 8-bitowe symbole (12 16-bitowych próbek z przetwornika A/D, po 6 z lewego i prawego źródła danych (dźwięku). Ramkę można przedstawić za pomocą } i są z lewego i prawego kanału ramki

Początkowo bajty są permutowane w celu utworzenia nowych ramek reprezentowanych przez gdzie reprezentują i prawą próbkę z klatki po 2 interweniujących klatkach.

Następnie te 24 symbole wiadomości są kodowane przy użyciu kodu C2 (28,24,5) Reeda-Solomona, który jest skróconym kodem RS na . Jest to korekcja dwóch błędów, mająca minimalną odległość 5. Dodaje to 4 bajty nadmiarowości, P . Otrzymane 28-symbolowe słowo kodowe jest przepuszczane przez (28,4) element przeplatający krzyżowo, co prowadzi do 28 przeplatanych symboli. Są one następnie przepuszczane przez kod RS C1 (32,28,5), w wyniku czego powstają słowa kodowe składające się z 32 zakodowanych symboli wyjściowych. Dalsze przegrupowywanie nieparzystych symboli słowa kodowego z parzystymi symbolami następnego słowa kodowego jest przeprowadzane w celu rozbicia wszelkich krótkich serii, które mogą nadal występować po powyższym 4-ramkowym przeplocie opóźniającym. Zatem na każde 24 symbole wejściowe będą 32 symbole wyjściowe, co daje . Na koniec dodawany jest jeden bajt informacji kontrolnych i wyświetlających. Każdy z 33 bajtów jest następnie konwertowany na 17 bitów poprzez EFM (modulacja od ośmiu do czternastu) i dodanie 3 bitów scalających. Dlatego ramka sześciu próbek daje w wyniku 33 bajty × 17 bitów (561 bitów), do których dodaje się 24 bity synchronizacji i 3 bity scalające, co daje łącznie 588 bitów.

Dekodowanie: Odtwarzacz CD (dekoder CIRC) odbiera 32 wyjściowy strumień danych symboli. Strumień ten przechodzi najpierw przez dekoder D1. Indywidualni projektanci systemów CD decydują o metodach dekodowania i optymalizacji wydajności swoich produktów. Mając minimalną odległość 5 Dekodery D1, D2 mogą korygować kombinację i tak, że . W większości rozwiązań dekodujących D1 jest przeznaczony do korygowania pojedynczego błędu. A w przypadku więcej niż 1 błędu ten dekoder wyprowadza 28 wymazań. Element usuwający przeplot na kolejnym etapie rozdziela te wymazywania na 28 słów kodowych D2. Ponownie w większości rozwiązań D2 ma zajmować się tylko wymazywaniem (prostsze i tańsze rozwiązanie). W przypadku wystąpienia więcej niż 4 wymazań, D2 wyprowadza 24 wymazań. Następnie system ukrywania błędów próbuje interpolować (z sąsiednich symboli) w przypadku niepoprawnych symboli, w przeciwnym razie dźwięki odpowiadające takim błędnym symbolom zostają wyciszone.

Wydajność CIRC: CIRC ukrywa błędy długich popiersi poprzez prostą interpolację liniową. 2,5 mm długości ścieżki (4000 bitów) to maksymalna całkowicie korygowana długość serii. Długość ścieżki 7,7 mm (12 300 bitów) to maksymalna długość serii, którą można interpolować. Częstotliwość interpolacji próbek to jedna na 10 godzin przy współczynniku błędów bitowych (BER) i 1000 próbek na minutę przy BER = Niewykrywalne próbki błędów (kliknięcia): mniej niż jedna na 750 godzin przy BER = i pomijalne przy BER = .

Zobacz też