Пакетный код исправления ошибок
В теории кодирования коды с исправлением пакетов ошибок используют методы исправления пакетов ошибок , которые представляют собой ошибки, которые возникают во многих последовательных битах, а не происходят в битах независимо друг от друга.
Многие коды были разработаны для исправления случайных ошибок . Однако иногда каналы могут вносить ошибки, локализующиеся в течение короткого интервала времени. Такие ошибки возникают в пакете (так называемые пакетные ошибки ), поскольку они встречаются во многих последовательных битах. Примеры пакетных ошибок можно найти в различных носителях данных. Эти ошибки могут быть вызваны физическим повреждением, например царапиной на диске или ударом молнии в случае беспроводных каналов. Они не независимы; они имеют тенденцию быть пространственно сконцентрированными. Если в одном бите имеется ошибка, вполне вероятно, что соседние биты также могут быть повреждены. Методы, используемые для исправления случайных ошибок, неэффективны для исправления пакетных ошибок.
Определения
[ редактировать ]
Взрыв длиной ℓ [1]
Скажи кодовое слово передается и принимается как Тогда вектор ошибки называется пакетом длины если ненулевые компоненты ограничиваются последовательные компоненты. Например, это взрыв длины
Хотя этого определения достаточно, чтобы описать, что такое пакетные ошибки, большинство инструментов, разработанных для исправления пакетных ошибок, основаны на циклических кодах. Это мотивирует наше следующее определение.
Циклический пакет длиной ℓ [1]
Вектор ошибки называется циклическим пакетом ошибок длины если его ненулевые компоненты ограничены циклически последовательные компоненты. Например, ранее рассмотренный вектор ошибок , представляет собой циклический пакет длины , поскольку мы рассматриваем ошибку, начиная с позиции и заканчивается на позиции . Обратите внимание, что индексы -based, то есть первый элемент находится в позиции .
В оставшейся части этой статьи мы будем использовать термин «пакет» для обозначения циклического пакета, если не указано иное.
Описание пакета
[ редактировать ]Часто бывает полезно иметь компактное определение пакета ошибок, охватывающее не только его длину, но также характер и местоположение такой ошибки. Мы определяем описание пакета как кортеж. где — шаблон ошибки (то есть строка символов, начинающаяся с первой ненулевой записи в шаблоне ошибки и заканчивающаяся последним ненулевым символом), и это место в кодовом слове, где можно найти пакет. [1]
Например, пакетное описание шаблона ошибки является . Обратите внимание, что такое описание не уникально, поскольку описывает ту же самую пакетную ошибку. В общем случае, если количество ненулевых компонентов в является , затем будет иметь разные описания пакетов, каждое из которых начинается с другой ненулевой записи . Чтобы устранить проблемы, возникающие из-за неоднозначности описаний пакетов, с помощью приведенной ниже теоремы, однако прежде чем делать это, нам сначала нужно дать определение.
Определение. Количество символов в заданном шаблоне ошибок обозначается
Теорема (единственность описаний пакетов) — Предположим , — вектор ошибок длины с двумя описаниями пакетов и . Если тогда два описания идентичны, то есть их компоненты эквивалентны. [2]
Позволять быть весом Хэмминга (или количеством ненулевых записей) . Затем имеет точно описания ошибок. Для нечего доказывать. Итак, мы предполагаем, что и что описания не идентичны. Мы замечаем, что каждая ненулевая запись появятся в узоре, и, таким образом, компоненты не включенные в шаблон, образуют циклическую серию нулей, начинающуюся после последней ненулевой записи и продолжающуюся непосредственно перед первой ненулевой записью шаблона. Набор индексов, соответствующий этому прогону, мы называем нулевым прогоном. Мы сразу замечаем, что с каждым описанием пакета связана нулевая серия и что каждая нулевая серия не пересекается. Поскольку у нас есть нулевых серий, и каждая из них не пересекается, в общей сложности мы имеем различные элементы во всех нулевых сериях. С другой стороны, у нас есть: Это противоречит Таким образом, описания пакетов ошибок идентичны.
Следствием приведенной выше теоремы является то , что мы не можем иметь два различных описания пакетов для пакетов длины
Циклические коды для исправления пакетов ошибок
[ редактировать ]Циклические коды определяются следующим образом: подумайте о символы как элементы в . Теперь мы можем думать о словах как о полиномах по где отдельные символы слова соответствуют различным коэффициентам многочлена. Чтобы определить циклический код, мы выбираем фиксированный полином, называемый генераторным полиномом . Кодовыми словами этого циклического кода являются все полиномы, которые делятся на этот образующий полином.
Кодовые слова представляют собой полиномы степени . Предположим, что порождающий полином имеет степень . Полиномы степени которые делятся на результат умножения полиномами степени . У нас есть такие многочлены. Каждому из них соответствует кодовое слово. Поэтому, для циклических кодов.
Циклические коды могут обнаруживать все пакеты длиной до . Позже мы увидим, что способность любого устройства обнаруживать пакетные ошибки код ограничен сверху . Циклические коды считаются оптимальными для обнаружения пакетов ошибок, поскольку они соответствуют этой верхней границе:
Теорема (возможность циклической коррекции пакетов) . Каждый циклический код с генераторным полиномом степени может обнаружить все пакеты длины
Нам нужно доказать, что если вы добавите пакет длины к кодовому слову (т.е. к многочлену, который делится на ), то результатом не будет кодовое слово (т. е. соответствующий многочлен не делится на ). Достаточно показать, что никакой всплеск длины делится на . Такой всплеск имеет вид , где Поэтому, не делится на (поскольку последний имеет степень ). не делится на (В противном случае все кодовые слова начинались бы с ). Поэтому, не делится на также.
Приведенное выше доказательство предлагает простой алгоритм обнаружения/коррекции пакетов ошибок в циклических кодах: по переданному слову (т. е. многочлену степени ), вычислите остаток этого слова при делении на . Если остаток равен нулю (т.е. если слово делится на ), то это допустимое кодовое слово. В противном случае сообщите об ошибке. Чтобы исправить эту ошибку, вычтите этот остаток из переданного слова. Результат вычитания будет делиться на (т.е. это будет допустимое кодовое слово).
По верхней границе обнаружения пакетов ошибок ( ), мы знаем, что циклический код не может обнаружить все пакеты длиной . Однако циклические коды действительно могут обнаружить большинство пакетов длины . Причина в том, что обнаружение не удается только тогда, когда пакет делится на . В двоичных алфавитах существуют всплески длины . Из них только делятся на . Поэтому вероятность отказа обнаружения очень мала ( ) при условии равномерного распределения по всем пакетам длины .
Теперь мы рассмотрим фундаментальную теорему о циклических кодах, которая поможет в разработке эффективных кодов, исправляющих пакеты ошибок, путем категоризации пакетов по различным смежным классам.
Теорема (различные смежные классы ) — Линейный код это -burst-error-исправляющий код, если все пакетные ошибки длины лежат в различных классах смежных .
Позволять быть отчетливыми пакетными ошибками длины которые лежат в одном классе кода . Затем является кодовым словом. Следовательно, если мы получим мы можем декодировать его либо в или . Напротив, если все пакетные ошибки и не лежат в одном смежном классе, то каждый пакет ошибок определяется своим синдромом. Ошибку затем можно исправить через ее синдром. Таким образом, линейный код это -burst-error-correcting code тогда и только тогда, когда все пакетные ошибки длины лежат в различных смежных классах .
Теорема (классификация кодовых слов пакетных ошибок) — Пусть быть линейным -код, исправляющий пакетные ошибки. Тогда никакой ненулевой пакет длины может быть кодовым словом.
Позволять быть кодовым словом с большой длиной . Таким образом, он имеет образец , где и это слова длины Следовательно, слова и это два пакета длины . Для двоичных линейных кодов они принадлежат одному и тому же классу. Это противоречит теореме о различных смежных классах, поэтому не существует ненулевого пакета длины. может быть кодовым словом.
Границы коррекции пакетных ошибок
[ редактировать ]Верхние границы обнаружения и исправления пакетов ошибок
[ редактировать ]Под верхней границей мы подразумеваем предел нашей способности обнаруживать ошибки, за пределы которого мы никогда не сможем выйти. Предположим, мы хотим спроектировать код, который может обнаружить все пакетные ошибки длины Естественный вопрос, который следует задать: учитывая и , какой максимум чего мы никогда не сможем достичь? Другими словами, какова верхняя граница длины всплесков, которые мы можем обнаружить с помощью любого код? Следующая теорема дает ответ на этот вопрос.
Теорема (возможность обнаружения пакетных ошибок) . Способность любого код
Сначала мы заметим, что код может обнаружить все пакеты длиной тогда и только тогда, когда никакие два кодовых слова не отличаются по длине . Предположим, что у нас есть два кодовых слова и которые отличаются на всплеск длины . При получении , мы не можем сказать, действительно ли переданное слово без ошибок передачи, или это с пакетной ошибкой произошедшее во время передачи. Теперь предположим, что каждые два кодовых слова отличаются более чем на единицу длины. Даже если переданное кодовое слово поражен взрывом длины , оно не изменится на другое допустимое кодовое слово. Получив его, мы можем сказать, что это со взрывом Из приведенного выше наблюдения мы знаем, что никакие два кодовых слова не могут иметь одно и то же первое кодовое слово. символы. Причина в том, что даже если они различаются во всех остальных символы, они все равно будут отличаться по длине Следовательно, количество кодовых слов удовлетворяет Применение в обе стороны и переставляя, мы видим, что .
Теперь повторяем тот же вопрос, но для исправления ошибок: учитывая и , какова верхняя граница длины всплесков, которые мы можем исправить с помощью любого код? Следующая теорема дает предварительный ответ на этот вопрос:
Теорема (возможность исправления пакетных ошибок) . Способность любого код удовлетворяет
Сначала мы заметим, что код может корректировать все пакеты длины тогда и только тогда, когда никакие два кодовых слова не отличаются на сумму двух пакетов длины Предположим, что два кодовых слова и различаются всплесками и длины каждый. При получении поражен взрывом , мы могли бы интерпретировать это так, как будто это было поражен взрывом . Мы не можем определить, является ли переданное слово или . Теперь предположим, что каждые два кодовых слова отличаются более чем на два пакета длины. . Даже если переданное кодовое слово поражен взрывом длины , оно не будет похоже на еще одно кодовое слово, пораженное другим пакетом. Для каждого кодового слова позволять обозначают совокупность всех слов, отличных от по длине Обратите внимание, что включает в себя сам. Из приведенного выше наблюдения мы знаем, что для двух разных кодовых слов и и непересекающиеся. У нас есть кодовые слова. Поэтому мы можем сказать, что . Более того, у нас есть . Подставив последнее неравенство в первое, затем взяв базу логарифмируя и переставляя, получаем приведенную выше теорему.
Более сильный результат дает граница Ригера:
Теорема (оценка Ригера) — Если это способность корректировать пакетные ошибки линейный блочный код, тогда .
Любой линейный код, который может исправить любой пакетный шаблон длины. не может иметь всплеск длины как кодовое слово. Если бы у него был взрыв длины как кодовое слово, затем пакет длины можно изменить кодовое слово на пакетный шаблон длиной , что также может быть получено путем создания пакета ошибок длиной во всех нулевых кодовых словах. Если векторы не равны нулю в первую очередь символов, то векторы должны быть из разных подмножеств массива, чтобы их разница не была кодовым словом пакетов длины . При обеспечении этого условия количество таких подмножеств как минимум равно числу векторов. Таким образом, количество подмножеств будет не менее . Следовательно, мы имеем по крайней мере разные символы, в противном случае разница двух таких полиномов была бы кодовым словом, представляющим собой сумму двух пакетов длины Таким образом, это доказывает границу Ригера.
Определение. Линейный код, исправляющий пакетные ошибки, достигающий указанной выше границы Ригера, называется оптимальным кодом, исправляющим пакетные ошибки.
Дальнейшие ограничения на коррекцию пакетных ошибок
[ редактировать ]Существует более одной верхней границы достижимой скорости кодирования линейных блочных кодов для множественной коррекции фазированных пакетов (MPBC). Одна из таких границ ограничена максимальной корректируемой длиной циклического пакета в каждом подблоке или, что эквивалентно, ограничением минимальной безошибочной длины или промежутка в каждом фазированном пакете. Эта граница, если ее свести к частному случаю границы для коррекции одиночного пакета, является границей Абрамсона (следствие границы Хэмминга для коррекции пакета ошибок), когда длина циклического пакета меньше половины длины блока. [3]
Теорема (количество всплесков) — Для в двоичном алфавите существуют векторы длины которые представляют собой всплески длины . [1]
Поскольку длина пакета существует уникальное описание пакета, связанное с пакетом. Взрыв может начаться в любом из позиции узора. Каждый узор начинается с и содержать длину . Мы можем думать об этом как о наборе всех строк, которые начинаются с и иметь длину . Таким образом, всего имеется возможны такие закономерности, и в общей сложности всплески длины Если мы учтем нулевой всплеск, мы получим векторы, представляющие пакеты длины
Теорема (ограничение на количество кодовых слов) — Если двоичный файл -код исправления пакетных ошибок имеет не более кодовые слова.
С , мы знаем, что существуют всплески длины . Скажем, код имеет кодовые слова, то есть кодовые слова, которые отличаются от кодового слова набором длины . Каждый из слова должны быть разными, иначе код будет иметь расстояние . Поэтому, подразумевает
Теорема (границы Абрамсона) — Если представляет собой двоичную линейную -код исправления пакетных ошибок, длина его блока должна удовлетворять:
Для линейного код, есть кодовые слова. Из нашего предыдущего результата мы знаем, что изоляция , мы получаем . С и должно быть целым числом, у нас есть .
Замечание. называется избыточностью кода и в альтернативной формулировке границ Абрамсона равна
Пожарные нормы
[ редактировать ]Хотя циклические коды в целом являются мощными инструментами для обнаружения пакетов ошибок, теперь мы рассмотрим семейство двоичных циклических кодов, называемых пожарными кодами, которые обладают хорошими возможностями исправления одиночных пакетов ошибок. Одиночным пакетом, скажем, длиной мы имеем в виду, что все ошибки, которыми обладает полученное кодовое слово, лежат в пределах фиксированного диапазона цифры.
Позволять — неприводимый многочлен степени над , и пусть быть периодом . Период , как и любой полином, определяется как наименьшее положительное целое число такой, что Позволять быть положительным целым числом, удовлетворяющим и не делится на , где это период . Определите пожарный кодекс следующим полиномом генератора :
Мы покажем это это -код исправления пакетных ошибок.
Лемма 1 —
Позволять — наибольший общий делитель двух многочленов. С является неприводимым, или . Предполагать затем для некоторой константы . Но, является делителем с является делителем . Но это противоречит нашему предположению, что не делит Таким образом, доказательство леммы.
Лемма 2 — Если представляет собой полином периода , затем тогда и только тогда, когда
Если , затем . Таким образом,
Теперь предположим . Затем, . Мы показываем, что делится на индукцией по . Базовый случай следует. Поэтому предположим . Мы знаем, что делит оба (поскольку он имеет период ) Но неприводима, поэтому должна делить обе и ; таким образом, он также делит разность двух последних многочленов, . Тогда следует, что делит . Наконец, он также разделяет: . По предположению индукции, , затем .
Следствием леммы 2 является то, что поскольку имеет период , затем делит тогда и только тогда, когда .
Если мы сможем показать, что все пакеты длины или менее встречаются в разных смежных классах , мы можем использовать их в качестве лидеров смежных классов , которые формируют исправимые шаблоны ошибок. Причина проста: мы знаем, что с каждым смежным классом связан уникальный синдром декодирования , и если все пакеты разной длины происходят в разных смежных классах, то все они имеют уникальные синдромы, что облегчает коррекцию ошибок.
Доказательство теоремы
[ редактировать ]Позволять и быть полиномами со степенями и , представляющий всплески длины и соответственно с Целые числа представляют начальные позиции пакетов и меньше длины блока кода. Ради от противного предположим, что и находятся в одном классе. Затем, является допустимым кодовым словом (поскольку оба термина находятся в одном смежном классе). Не ограничивая общности, выберем . По теореме деления можно написать: для целых чисел и . Перепишем многочлен следующее:
Обратите внимание, что при второй манипуляции мы ввели термин . Нам разрешено это делать, поскольку пожарные нормы действуют на . По нашему предположению, является допустимым кодовым словом и, следовательно, должно быть кратно . Как уже говорилось ранее, поскольку факторы являются относительно простыми, должно делиться на . Внимательно взглянув на последнее выражение, полученное для мы замечаем, что делится на (по следствию леммы 2). Поэтому, либо делится на или есть . Применяя еще раз теорему деления, мы видим, что существует многочлен со степенью такой, что:
Тогда мы можем написать:
Приравнивая степени обеих сторон, мы получаем С мы можем сделать вывод что подразумевает и . Обратите внимание, что в расширении: Термин появляется, но поскольку , полученное выражение не содержит , поэтому и впоследствии Это требует, чтобы , и . Мы можем дополнительно пересмотреть наше разделение к отражать то есть . Подставляя обратно в дает нам,
С , у нас есть . Но неприводима, поэтому и должно быть относительно простым. С это кодовое слово, должно делиться на , так как оно не может делиться на . Поэтому, должно быть кратно . Но оно также должно быть кратно , что означает, что оно должно быть кратно но это именно длина блока кода. Поэтому, не может быть кратным поскольку они оба меньше . Таким образом, наше предположение о быть кодовым словом неверно, и поэтому и находятся в разных классах, имеют уникальные синдромы и, следовательно, поддаются коррекции.
Пример: код пожарной безопасности с 5 пакетами ошибок, исправляющий ошибки.
[ редактировать ]Используя теорию, представленную в предыдущем разделе, рассмотрим построение - пакетная ошибка, исправляющая пожарный код. Помните, что для построения Кодекса пожарной безопасности нам нужен неприводимый многочлен , целое число , представляющий возможность исправления пакетов ошибок нашего кода, и нам необходимо удовлетворить свойству, которое не делится на период . Учитывая эти требования, рассмотрим неприводимый полином , и пусть . С является примитивным полиномом, его период равен . Мы подтверждаем это не делится на . Таким образом, является генератором пожарного кода. Мы можем вычислить длину блока кода, вычислив наименьшее общее кратное и . Другими словами, . Таким образом, приведенный выше код пожарной безопасности представляет собой циклический код, способный корректировать любой пакет длины или меньше.
Двоичные коды Рида – Соломона
[ редактировать ]Некоторые семейства кодов, такие как коды Рида-Соломона , работают с размерами алфавита, большими, чем двоичный. Это свойство наделяет такие коды мощными возможностями исправления пакетов ошибок. Рассмотрим код, работающий на . Каждый символ алфавита может быть представлен биты. Если это Код Рида – Соломона закончен , мы можем подумать о как кодировать .
Причина, по которой такие коды эффективны для исправления пакетов ошибок, заключается в том, что каждый символ представлен бит, и вообще неважно, сколько их биты ошибочны; будь то один бит или все биты содержат ошибки, с точки зрения декодирования это по-прежнему ошибка одного символа. Другими словами, поскольку пакетные ошибки обычно возникают в кластерах, существует большая вероятность того, что несколько двоичных ошибок будут способствовать возникновению ошибки одного символа.
Обратите внимание, что всплеск ошибки могут повлиять максимум символы и взрыв может повлиять максимум символы. Затем произошел взрыв может повлиять максимум символы; это означает, что Код, исправляющий -symbols-error, может максимально исправить пакет длины .
В целом, -исправление ошибок в коде Рида-Соломона может исправить любую комбинацию или меньше всплесков длины , помимо возможности исправить -случайные ошибки в худшем случае.
Пример двоичного кода RS
[ редактировать ]Позволять быть Код RS закончился . Этот код использовался НАСА в космическом корабле Кассини-Гюйгенс . [6] Он способен исправить ошибки в символах. Теперь мы создадим двоичный код RS. от . Каждый символ будет записан с использованием биты. Следовательно, двоичный код RS будет иметь как его параметры. Он способен корректировать любой одиночный пакет длины. .
Перемежающиеся коды
[ редактировать ]Перемежение используется для преобразования сверточных кодов из корректоров случайных ошибок в корректоры пакетных ошибок. Основная идея использования чередующихся кодов заключается в смешивании символов в передатчике. Это приводит к рандомизации пакетов принятых ошибок, которые расположены близко, и затем мы можем применить анализ для случайного канала. Таким образом, основная функция перемежителя на передатчике заключается в изменении последовательности входных символов. В приемнике обращенный перемежитель изменит принятую последовательность, чтобы вернуть исходную неизмененную последовательность на передатчике.
Способность перемежителя корректировать пакетные ошибки
[ редактировать ]
Теорема . Если способность некоторого кода исправлять пакетные ошибки то его способность исправлять пакетные ошибки -способ чередования
Предположим, что у нас есть код, который может исправить все пакеты длины Чередование может дать нам код, который может исправить все пакеты длины для любого данного . Если мы хотим закодировать сообщение произвольной длины с помощью чередования, сначала мы делим его на блоки длины . Мы пишем записи каждого блока в матрица с использованием порядка строк. Затем мы кодируем каждую строку, используя код. Мы получим матрица. Теперь эта матрица считывается и передается в порядке столбцов. Хитрость в том, что если произойдет всплеск длины в передаваемом слове, то каждая строка будет содержать примерно последовательные ошибки (более конкретно, каждая строка будет содержать пакет длиной не менее и самое большее ). Если затем и код может исправить каждую строку. Таким образом, чередование код может исправить всплеск длины . И наоборот, если то хотя бы одна строка будет содержать более последовательные ошибки и код может не исправить их. Таким образом, способность исправления ошибок чередующегося код точно Эффективность BEC чередующегося кода остается такой же, как и исходного. код. Это правда, потому что:
Блочный перемежитель
[ редактировать ]На рисунке ниже показан перемежитель 4 на 3.

Вышеупомянутый перемежитель называется перемежителем блоков . Здесь входные символы записываются последовательно в строках, а выходные символы получаются путем последовательного чтения столбцов. Таким образом, это в форме множество. В целом, длина кодового слова.
Производительность перемежителя блоков : Для перемежитель блоков и пакетная длина верхний предел количества ошибок равен Это очевидно из того факта, что мы читаем выходной столбец, а количество строк равно . По приведенной выше теореме для корректирующей способности до максимально допустимая длина пакета составляет Для длительности пакета , декодер может выйти из строя.
Эффективность перемежителя блоков ( ): Его определяют путем определения отношения длины пакета, при которой декодер может выйти из строя, к памяти перемежителя. Таким образом, мы можем сформулировать как
Недостатки блочного перемежителя: Как видно из рисунка, столбцы читаются последовательно, получатель может интерпретировать одну строку только после получения полного сообщения, а не раньше. Кроме того, получателю требуется значительный объем памяти для хранения полученных символов и он должен хранить все сообщение. Таким образом, эти факторы порождают два недостатка: один — задержка, а другой — хранилище (довольно большой объем памяти). Этих недостатков можно избежать, используя описанный ниже сверточный перемежитель.
Сверточный перемежитель
[ редактировать ]Кросс-перемежитель представляет собой разновидность системы мультиплексор-демультиплексор. В этой системе линии задержки используются для постепенного увеличения длины. Линия задержки — это, по сути, электронная схема, используемая для задержки сигнала на определенную продолжительность времени. Позволять быть числом линий задержки и быть количеством символов, введенных каждой линией задержки. Таким образом, расстояние между последовательными входами = символы. Пусть длина кодового слова Таким образом, каждый символ во входном кодовом слове будет находиться на отдельной линии задержки. Пусть пакет ошибок длиной происходить. Поскольку расстояние между последовательными символами равно количество ошибок, которые может содержать вывод без чередования, равно По приведенной выше теореме для корректирующей способности до , максимальная допустимая длина пакета составляет Для длительности пакета декодер может выйти из строя.


Эффективность перекрестного перемежителя ( ): Его определяют путем определения отношения длины пакета, при которой декодер может выйти из строя, к памяти перемежителя. В этом случае память перемежителя можно рассчитать как
Таким образом, мы можем сформулировать следующее:
Производительность перекрестного перемежителя: Как показано на рисунке перемежителя выше, выходные данные представляют собой не что иное, как диагональные символы, генерируемые в конце каждой линии задержки. В этом случае, когда переключение входного мультиплексора завершается примерно наполовину, мы можем прочитать первую строку на приемнике. Таким образом, нам нужно сохранить максимум около половины сообщения в получателе, чтобы прочитать первую строку. Это радикально снижает потребность в хранилище вдвое. Поскольку теперь для чтения первой строки требуется только половина сообщения, задержка также уменьшается вдвое, что является хорошим улучшением по сравнению с перемежителем блоков. Таким образом, вся память перемежителя разделена между передатчиком и приемником.
Приложения
[ редактировать ]Компакт-диск
[ редактировать ]Без кодов, исправляющих ошибки, цифровое аудио было бы технически невозможно. [7] Коды Рида-Соломона могут исправить поврежденный символ с ошибкой в один бит так же легко, как они могут исправить символ, в котором все биты неправильны. Это делает коды RS особенно подходящими для исправления пакетов ошибок. [5] Безусловно, наиболее распространенное применение кодов RS - компакт-диски. Помимо базовой коррекции ошибок, обеспечиваемой кодами RS, защиту от пакетных ошибок из-за царапин на диске обеспечивает перекрестный перемежитель. [3]
Современная цифровая аудиосистема на компакт-диске была разработана компаниями NV Philips из Нидерландов и Sony Corporation из Японии (соглашение подписано в 1979 году).
Компакт-диск представляет собой алюминизированный диск диаметром 120 мм, покрытый прозрачным пластиковым покрытием, со спиральной дорожкой длиной около 5 км, который оптически сканируется лазером с длиной волны ~0,8 мкм с постоянной скоростью ~1,25 м/с. Для достижения этой постоянной скорости вращение диска варьируется от ~8 об/с при сканировании внутренней части дорожки до ~3,5 об/с на внешней части. Ямки и площадки — это впадины (глубиной 0,12 мкм) и плоские сегменты, составляющие бинарные данные вдоль дорожки (шириной 0,6 мкм). [8]
Процесс CD можно абстрагировать как последовательность следующих подпроцессов:
- Канальное кодирование источника сигналов
- Механические подпроцессы подготовки мастер-диска, производства пользовательских дисков и восприятия сигналов, встроенных в пользовательские диски, во время воспроизведения – канал
- Декодирование сигналов, полученных с пользовательских дисков
Этот процесс подвержен как пакетным ошибкам, так и случайным ошибкам. [7] Пакетные ошибки включают ошибки, связанные с материалом диска (дефекты алюминиевой отражающей пленки, плохой коэффициент отражения прозрачного материала диска), производством диска (дефекты во время формирования диска и резки диска и т. д.), обращением с диском (царапины – обычно тонкие, радиальные и ортогональные к диску). направлении записи) и вариации механизма воспроизведения. К случайным ошибкам относятся ошибки, возникающие из-за джиттера восстановленной волны сигнала и помех в сигнале. CIRC ( код Рида-Соломона с перекрестным чередованием ) является основой для обнаружения и исправления ошибок в процессе CD. Он последовательно исправляет пакеты ошибок длиной до 3500 бит (длиной 2,4 мм, если смотреть на поверхность компакт-диска) и компенсирует пакеты ошибок длиной до 12 000 бит (8,5 мм), которые могут быть вызваны небольшими царапинами.
Кодирование: звуковые волны дискретизируются и преобразуются в цифровую форму с помощью аналого-цифрового преобразователя. Звуковая волна дискретизируется по амплитуде (44,1 кГц или 44 100 пар, по одной для левого и правого каналов стереозвука). Амплитуда в экземпляре присваивается двоичной строке длиной 16. Таким образом, каждая выборка создает два двоичных вектора из или 4 байты данных. Каждая секунда записанного звука составляет 44 100 × 32 = 1 411 200 бит (176 400 байт) данных. [5] Поток дискретизированных данных со скоростью 1,41 Мбит/с проходит через систему исправления ошибок и в конечном итоге преобразуется в поток со скоростью 1,88 Мбит/с.
Вход для кодера состоит из входных кадров по 24 8-битных символа каждый (12 16-битных отсчетов от аналого-цифрового преобразователя, по 6 от левого и правого источников данных (звука). Кадр может быть представлен где и - это байты из левого и правого каналов из образец кадра.
Первоначально байты переставляются для формирования новых кадров, представленных где представлять -ые левые и правые выборки из кадра после двух промежуточных кадров.
Затем эти 24 символа сообщения кодируются с использованием кода Рида – Соломона C2 (28,24,5), который представляет собой сокращенный код RS. . Это исправление двух ошибок с минимальным расстоянием 5. Это добавляет 4 байта избыточности, формируем новый кадр: . Результирующее кодовое слово из 28 символов проходит через перекрестный перемежитель (28.4), что приводит к 28 перемеженным символам. Затем они пропускаются через код RS C1 (32,28,5), в результате чего получаются кодовые слова из 32 кодированных выходных символов. Дальнейшая перегруппировка нечетных символов кодового слова с четными символами следующего кодового слова выполняется для разделения любых коротких пакетов, которые все еще могут присутствовать после вышеупомянутого перемежения с задержкой из 4 кадров. Таким образом, на каждые 24 входных символа будет приходиться 32 выходных символа, дающих . Наконец, добавляется один байт информации управления и отображения. [5] Каждый из 33 байтов затем преобразуется в 17 бит посредством EFM (модуляция от восьми до четырнадцати) и добавления 3 битов слияния. Таким образом, в результате кадра из шести выборок получается 33 байта × 17 бит (561 бит), к которым добавляются 24 бита синхронизации и 3 бита слияния, что в сумме дает 588 бит.
Декодирование: проигрыватель компакт-дисков (декодер CIRC) принимает поток данных из 32 выходных символов. Этот поток сначала проходит через декодер D1. Отдельные разработчики систем компакт-дисков должны сами выбирать методы декодирования и оптимизировать характеристики своих продуктов. Находится на минимальном расстоянии 5. Каждый из декодеров D1 и D2 может корректировать комбинацию ошибки и стирания такие, что . [5] В большинстве решений декодирования D1 предназначен для исправления одиночной ошибки. А в случае более чем 1 ошибки этот декодер выдает 28 стираний. Обратный перемежитель на следующем этапе распределяет эти стирания по 28 кодовым словам D2. Опять же, в большинстве решений D2 настроен только на удаление (более простое и менее затратное решение). Если обнаружено более 4 стираний, D2 выводит 24 стирания. После этого система маскирования ошибок пытается выполнить интерполяцию (из соседних символов) в случае неисправимых символов, в результате чего звуки, соответствующие таким ошибочным символам, приглушаются.
Производительность CIRC: [7] CIRC скрывает длинные ошибки с помощью простой линейной интерполяции. Длина дорожки 2,5 мм (4000 бит) — это максимальная полностью корректируемая длина пакета. Длина дорожки 7,7 мм (12 300 бит) — это максимальная длина пакета, которую можно интерполировать. Частота интерполяции выборки составляет одну каждые 10 часов при частоте битовых ошибок (BER). и 1000 выборок в минуту при BER = Выборки необнаружимых ошибок (щелчки): менее одной каждые 750 часов при BER = и пренебрежимо мал при BER = .
См. также
[ редактировать ]- Обнаружение и исправление ошибок
- Коды, исправляющие ошибки с обратной связью
- Скорость кода
- Исправление ошибок Рида – Соломона
Ссылки
[ редактировать ]- ^ Jump up to: а б с д Фонг, WH (2011). «Границы кодирования для кодов коррекции множественных фазовых пакетов и кодов коррекции одиночных пакетов». arXiv : 1104.1408 [ cs.IT ].
- ^ МакЭлис, Р.Дж. (2004). Теория информации и кодирования (Студенческая ред.). Издательство Кембриджского университета. ISBN 978-0-521-83185-7 .
- ^ Jump up to: а б с Линг, Сан; Син, Чаопин (2004). Теория кодирования: первый курс . Издательство Кембриджского университета. ISBN 978-0-521-52923-5 .
- ^ Jump up to: а б Мун, Тодд К. (2005). Кодирование с коррекцией ошибок: математические методы и алгоритмы . Уайли. ISBN 978-0-471-64800-0 .
- ^ Jump up to: а б с д и ж Лин, Шу; Костелло, Дэниел Дж. (2004). Кодирование с контролем ошибок: основы и приложения (2-е изд.). Пирсон-Прентис Холл. ISBN 978-0-13-017973-9 .
- ^ «Кассини: Какая коррекция ошибок?» . quest.arc.nasa.gov . 1999. Архивировано из оригинала 27 июня 2012 г.
- ^ Jump up to: а б с Алгебраические коды контроля ошибок (осень 2012 г.) – раздаточные материалы Стэнфордского университета
- ^ МакЭлис, Роберт Дж. (1977). Теория информации и кодирования: математическая основа коммуникации . Расширенная книжная программа. Аддисон-Уэсли.