Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ТИК-контр-з / Циклические коды

.doc
Скачиваний:
64
Добавлен:
08.05.2015
Размер:
181.25 Кб
Скачать

ЦИКЛИЧЕСКИЕ КОДЫ

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

Циклический сдвиг строки матрицы с единицей в старшем (n-м) разряде (слева) равносилен умножению соответствующего строке многочлена на с одновременным вычитанием из результата многочлена , т.е. с приведением по модулю . Тогда любая разрешенная комбинация циклического кода может быть получена в результате умножения образующего многочлена на некоторый другой многочлен с приведением результата по модулю , или → при соответствующем выборе образующего многочлена любой многочлен циклического кода будет делиться на него без остатка.

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

Умножение и деление многочленов весьма удачно осуществляется на регистрах сдвига с обратными связями.

Для построения циклических кодов используется раздел теории алгебраических систем – теория колец.

Выделим в кольце подмножество всех многочленов, кратных некоторому многочлену . Такое подмножество называют идеалом, а многочлен - порождающим многочленом идеала.

Количество различных элементов в идеале определяется видом его порождающего многочлена. Если за порождающий многочлен взять 0, то весь идеал будет составлять только этот многочлен. Если , то в идеал войдут все многочлены кольца. В общем случае число элементов идеала, порожденного простым многочленом степени , составляет .

Как выбрать многочлен , способный породить циклический код с заданными свойствами?

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

Если многочлен системы является делителем , то любой элемент кольца либо делится на без остатка (тогда он является элементом идеала), либо в результате деления появляется остаток , представляющий собой многочлен степени не выше . Элементы кольца, дающие в остатке один и тот же многочлен , относятся к одному классу вычетов.

Групповой код способен исправить столько разновидностей ошибок, сколько различных классов насчитывается в разложении. Следовательно, корректирующая способность циклического кода будет тем выше, чем больше остатков может быть образовано при делении многочлена, составляющего искаженной кодовой комбинации, на образующий многочлен кода. Наибольшее число остатков, равное (исключая нулевой), может обеспечить только неприводимый (простой) многочлен, который делится сам на себя и не делится ни на какой другой многочлен (кроме 1).

Выбор образующего многочлена по заданному объему кода и заданной корректирующей способности.

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

Обнаружение одиночных ошибок

Вектор одиночной ошибки имеет 1 в искаженном разряде и 0 – в остальных. Ему соответствует многочлен , который не делится на . Среди неприводимых многочленов, входящих в разложение , многочленом наименьшей степени, удовлетворяющем этому условию, является . Остаток от деления любого многочлена на представляет собой 0 или 1. Так 0 при любом числе информационных разрядов необходим только один проверочный разряд. Значение символа этого разряда и обеспечивает четность числа единиц в любой разрешенной кодовой комбинации, а следовательно, и делимость ее на .

Исправление одиночных ошибок или обнаружение двойных ошибок

Так как в циклическом коде опознавателями ошибок являются остатки от деления многочленов ошибок на образующий многочлен кода , то должно обеспечивать требуемое число различных остатков при делении векторов ошибок с 1 в искаженном разряде. Наибольшее число остатков дает неприводимый многочлен. При степени многочлена он может иметь ненулевых остатков (нулевой остаток – для безошибочной передачи).

Следовательно, необходимым условием исправления любой одиночной ошибки является выполнение неравенства

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

Виды образующих многочленов для кодов

Код

Образующий многочлен

Число остатков

(3, 1)

3

(7, 4)

7

(15, 11)

15

(31, 26)

31

Методы образования циклического кода

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

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

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

Циклический код получается приставлением к произведению , имеющего младших нулей, остатка .

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

Пример

Построить циклический код (7, 4) для числа

В качестве образующего многочлена возьмем .

1. Умножим .

Имеем: .

2. Разделим на образующий многочлен

или

Остаток имеет порядок , т.е. . Окончательно циклический код для 10 будет

Если в качестве образующего многочлена взять , то будем иметь:

Окончательно: 1010011.

Коррекция ошибки циклического кода

Передается число 1010011 с использованием циклического кода, исправляющего одиночные ошибки .

Образующий многочлен . Пусть ошибка в 5-м разряде: 1000011

1) делим принятый код на

2) Сравниваем вес полученного остатка .

3) производим циклический сдвиг принятой комбинации на 1 разряд и делим на

4) повторяем пункт 3.

5) Складываем последнее делимое с остатком по mod 2

6) Производим циклический сдвиг вправо полученной комбинации на 3 разряда

.