Цифровая связь - кодирование с контролем ошибок
Шум или ошибка - основная проблема в сигнале, которая нарушает надежность системы связи. Error control codingэто процедура кодирования, выполняемая для контроля появления ошибок. Эти методы помогают в обнаружении и исправлении ошибок.
В зависимости от применяемых к ним математических принципов существует множество различных кодов исправления ошибок. Но исторически эти коды были разделены наLinear block codes а также Convolution codes.
Линейные блочные коды
В линейных блочных кодах биты четности и биты сообщения имеют линейную комбинацию, что означает, что результирующее кодовое слово является линейной комбинацией любых двух кодовых слов.
Рассмотрим несколько блоков данных, которые содержат kбит в каждом блоке. Эти биты сопоставлены с блоками, которые имеютnбит в каждом блоке. Вотn больше, чем k. Передатчик добавляет избыточные биты, которые(n-k)биты. Соотношениеk/n это code rate. Обозначается онr и ценность r является r < 1.
В (n-k) добавленные здесь биты parity bits. Биты четности помогают в обнаружении ошибок и исправлении ошибок, а также в поиске данных. В передаваемых данных самые левые биты кодового слова соответствуют битам сообщения, а самые правые биты кодового слова соответствуют битам четности.
Систематический код
Любой линейный блочный код может быть систематическим кодом до тех пор, пока он не будет изменен. Следовательно, неизмененный блочный код называетсяsystematic code.
Ниже приводится представление structure of code word, согласно их размещению.
Если сообщение не изменено, оно называется систематическим кодом. Это означает, что шифрование данных не должно изменять данные.
Коды свертки
До сих пор мы обсуждали, что в линейных кодах предпочтительнее систематический неизмененный код. Здесь данные общегоn биты при передаче, k биты - это биты сообщения и (n-k) биты - это биты четности.
В процессе кодирования биты четности вычитаются из всех данных, а биты сообщения кодируются. Теперь биты четности снова добавляются, и все данные снова кодируются.
На следующем рисунке приводится пример блоков данных и потока данных, используемых для передачи информации.
Весь процесс, описанный выше, утомителен и имеет недостатки. Распределение буфера здесь является основной проблемой, когда система занята.
Этот недостаток устранен в кодах свертки. Где всему потоку данных присваиваются символы, а затем передаются. Поскольку данные представляют собой поток битов, нет необходимости в буфере для хранения.
Коды Хэмминга
Свойство линейности кодового слова состоит в том, что сумма двух кодовых слов также является кодовым словом. Коды Хэмминга - это типlinear error correcting коды, которые могут обнаруживать до двух битовых ошибок или исправлять однобитовые ошибки без обнаружения неисправленных ошибок.
При использовании кодов Хэмминга дополнительные биты четности используются для идентификации одиночной битовой ошибки. Чтобы перейти от однобитового шаблона к другому, необходимо изменить несколько битов в данных. Такое количество бит можно назватьHamming distance. Если четность имеет расстояние 2, может быть обнаружен переворот в один бит. Но это не исправить. Кроме того, невозможно обнаружить любые два переворота битов.
Однако код Хэмминга - лучшая процедура, чем ранее обсуждавшиеся, в обнаружении и исправлении ошибок.
Коды BCH
Коды BCH названы в честь изобретателей Bосе Cхаудари и Hocquenghem. Во время разработки кода BCH существует контроль над количеством символов, которые необходимо исправить, и, следовательно, возможна множественная битовая коррекция. Коды BCH - это мощный метод в кодах с исправлением ошибок.
Для любых положительных целых чисел m ≥ 3 а также t < 2m-1существует двоичный код BCH. Ниже приведены параметры такого кода.
Длина блока n = 2m-1
Количество проверочных цифр n - k ≤ mt
Минимальное расстояние dmin ≥ 2t + 1
Этот код можно назвать t-error-correcting BCH code.
Циклические коды
Циклическое свойство кодовых слов состоит в том, что любой циклический сдвиг кодового слова также является кодовым словом. Циклические коды следуют этому свойству цикличности.
Для линейного кода C, если каждое кодовое слово т.е. C = (C1, C2, ...... Cn)из C имеет циклический сдвиг компонентов вправо, он становится кодовым словом. Этот сдвиг вправо равенn-1циклические сдвиги влево. Следовательно, он инвариантен при любом сдвиге. Итак, линейный кодC, поскольку он инвариантен относительно любого сдвига, можно назвать Cyclic code.
Циклические коды используются для исправления ошибок. В основном они используются для исправления двойных ошибок и пакетных ошибок.
Следовательно, это несколько кодов с исправлением ошибок, которые должны быть обнаружены на приемнике. Эти коды предотвращают появление ошибок и мешают общению. Они также предотвращают перехват сигнала нежелательными приемниками. Для этого существует класс сигнальных методов, которые обсуждаются в следующей главе.