Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
разное / Методы преобраз-я сигналов и помехоустойчивое кодир-е [Н.Ф.Рожков].doc
Скачиваний:
125
Добавлен:
15.06.2014
Размер:
2.36 Mб
Скачать

2.5 Циклические коды

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

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

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

║0 0 1 0 1 1║

║0 1 0 1 1 0║

G = ║1 0 1 1 0 0║

║0 1 1 0 0 1║

║1 1 0 0 1 0║

║1 0 0 1 0 1║

При описании циклических кодов более удобно пользоваться многочленом (n-1)-й степени, содержащего фиктивную переменную x. Показатели степени y при х соответствуют номерам разрядов, а коэффициенты при х составляют 0 или 1, т.к. рассматриваются коды. При этом наименьшему разряду числа соответствует фиктивная переменная х0=1. Запишем, например в виде многочлена пятиразрядную кодовую комбинацию 10101:

G(x) = 1∙x4 + 0∙x3 + 1∙x2 + 0∙x + 1∙ х0 (2.38)

Члены с нулевыми коэффициентами опускаются, тогда:

G(x) = x4 + x2 + 1 (2.39)

Далее действия над кодовыми комбинациями сводятся к действиям над многочленами.

Циклический сдвиг образующего многочлена степени n-k соответствует простому умножению на х. Умножение на х многочлена соответствует циклическому сдвигу. Например, умножим (2.39) на х :

x4 + x2 +1 При этом, если степень превышает степень многочлена, то

x старший разряд (x5) заменяется на 1 и переносится вправо.

___________________

x5 + x3 + x + 1

|___________↑

Получим после умножения x3 + x + 1, т.е. 01011.

Сумму по модулю два образующей и сдвинутой можно получить умножением образующего многочлена на (х+1).

x4 + x3 + 0 + 0 + 1 То есть получим x3 + х, что соответствует

х + 1

_______________________ 10011

x4 + x3 + 0 + 0 + 1 +11001

x5 + x4 + 0 + 0 + х + 1 _________

|__________________↑ 01010

0 + x3 + 0 + х + 0

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

U1(x) = P(x);

U2(x) = P(x)x – C2(xn+1)

U3(x) = P(x) x2 – C3(xn+1) (2.40)

- . - . - . - . - . - . - . -

Un(x) = P(x) xn-1 - Cn(xn+1) ,

где С0, С3,…, Сn – коэффициенты, принимающие значение 1 при P(x) x2 ≥ (xn-1) и значение 0 при P(x) x2 < (xn-1)

При таком построении базовых полиномов полином P(x) называют образующим.

Если принять условие, что полином P(x) является делителем двучлена xn+1, то базовые кодовые комбинации, а вместе с ними и все разрешенные приобретают свойство делимости на P(x). Таким образом, принадлежность кодовой комбинации к группе разрешенных можно легко проверить делением ее номинала на образующий P(x). Если остаток от деления = 0, то она относится к разрешенной. Если разрешенная кодовая комбинация принята с искажением, то получается остаток от деления.

Таким образом, образующий полином P(x) должен удовлетворять требованию – он должен быть делителем двучлена (xn+1). Выбор P(x) однозначно определяет циклический код и его корректирующую способность.