Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кузьмин Теория Информации.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.27 Mб
Скачать
      1. Алгоритм декодирования циклических кодов

Порождающий полином участвует в формировании каждой разрешенной комбинации циклического кода, поэтому каждая принятая без ошибки кодовая комбинация должна делиться на порождающий полином без остатка. Наличие же остатка при делении свидетельствует об ошибке в приеме. Это общий подход нахождения ошибок при декодировании циклического кода.

Идея исправления ошибок состоит в следующем. Ошибочная комбинация путем циклических сдвигов «подгоняется» под остаток таким образом, чтобы в сумме с остатком она давала бы исправленную комбинацию.

Остаток при этом представляет разницу между искаженными и правильными символами, а единицы в остатке стоят на местах искаженных разрядов в «подогнанной» циклическими сдвигами комбинации.

Таким образом, для обнаружения и исправления ошибочного разряда производят следующие операции.

  1. Принятую комбинацию делят на образующий полином.

  2. Подсчитывают количество единиц в остатке (находят вес остатка R). Если R tu , где tu - допустимое число исправляемых данным кодом ошибок, то принятую комбинацию складывают по модулю 2 с полученным остатком. Сумма дает исправленную комбинацию.

  3. Если R > tu , то производят циклический сдвиг принятой комбинации влево на разряд. Полученную комбинацию делят на образующий полином. При этом если R tu , то делимое суммируют с остатком.

  4. Производят циклический сдвиг вправо на один разряд комбинации, полученной в результате суммирования последнего делимого с последним остатком. Полученная комбинация уже не содержит ошибок.

  5. Если после первого циклического сдвига и деления R > tu , то повторяют операции 3 до тех пор, пока не получат R tu. Комбинацию, полученную в результате последнего циклического сдвига, суммируют с остатком от деления той комбинации на образующий полином.

  6. Производят циклический сдвиг кодовой комбинации вправо настолько, насколько была сдвинута исходная комбинация. В результате получают исправленную комбинацию.

Пример. При передаче кодовой комбинации 1 0 0 1 1 1 0 циклического кода, исправляющего одиночные ошибки (tи = 1), полученного с помощью образующего полинома ,

произошла ошибка в 4-м разряде. Принятая комбинация имеет вид 1 0 0 0 1 1 0.

Процесс нахождения и исправления ошибки следующий.

Делим принятую комбинацию на образующий полином (см. рис. 11).

Сравниваем вес полученного остатка ωR = 2 с числом исправляемых ошибок tи = 1. При этом ωR > tи.

Поскольку ωR > tи, то производим циклический сдвиг принятой комбинации на один разряд влево и результат делим снова на образующий полином (рис. 11, б). Замечаем, что вес полученного остатка равен 2. При этом ωR > tи..

Повторяем циклический сдвиг и деление до тех пор, пока не будет выполнено условие ωR ≤ tи (рис. 11, в - д).

На четвертом шаге замечаем, что условие ωR < tи выполняется, поэтому складываем по модулю 2 последнее делимое с последним остатком:

.

Производим циклический сдвиг полученной кодовой комбинации вправо на четыре разряда (именно столько циклических сдвигов было выполнено до этого: 1101001 → 1110100 → 0111010 → 0011101 → 1001110).

Замечаем, что последняя комбинация соответствует переданной кодовой комбинации. Ошибка наблюдалась в 4-м разряде и устранена в процессе выполнения операции декодирования.

Декодеры, выполняющие рассмотренный выше алгоритм, строятся на основе сдвигающих регистров. Отметим, что рассмотренный способ декодирования является общим для всех циклических кодов.