double arrow

Принципы формирования кодовых комбинаций циклических кодов

Циклическим кодом называется линейный блоковый (n,k)-код, который характеризуется свойством цикличности, т.е. сдвиг влево на один шаг любого разрешенного кодового слова дает также разрешенное кодовое слово, принадлежащее этому же коду и у которого, множество кодовых слов представляется совокупностью многочленов степени (n-1) и менее, делящихся на некоторый многочлен g(x) степени r = n-k, являющийся сомножителем двучлена xn+1.
Многочлен g(x) называется порождающим.
Как следует из определения, в циклическом коде кодовые слова представляются в виде многочленов

где n - длина кода;
- коэффициенты из поля GF(q).
Если код построен над полем GF(2), то коэффициенты принимают значения 0 или 1 и код называется двоичным.
Пример. Если кодовое слово циклического кода

то соответствующий ему многочлен
Например, если код построен над полем GF(q)=GF(23), которое является расширением GF(2) по модулю неприводимого многочлена f(z)=z3+z+1, а элементы этого поля имеют вид, представленный в таблице 3,

Таблица 3
      a3   Z+1
a0     a4   Z2+Z
a1   Z a5   Z2+Z+1
a2   Z2 a6   Z2+1

то коэффициенты принимают значения элементов этого поля и поэтому они сами отображаются в виде многочленов следующего вида

где m - степень многочлена, по которому получено расширение поля GF(2);
ai - коэффициенты, принимающие значение элементов GF(2), т.е. 0 и 1.
Такой код называется q-ным.
Длина циклического кода называется примитивной и сам код называется примитивным, если его длина n=qm-1 над GF(q).
Если длина кода меньше длины примитивного кода, то код называется укороченным или непримитивным. Как следует из определения общее свойство кодовых слов циклического кода - это их делимость без остатка на некоторый многочлен g(x), называемый порождающим.
Результатом деления двучлена xn+1 на многочлен g(x) является проверочный многочлен h(x).
При декодировании циклических кодов используются многочлен ошибок e(x) и синдромный многочлен S(x). Многочлен ошибок степени не более (n-1) определяется из выражения

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

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

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

Таблица 4
(x) S(x)
  Rg(x)[1]
X Rg(x)[x]
X2 Rg(x)[x2]
· ·
· ·
· ·
X+1 Rg(x)[x+1]
X2+1 Rg(x)[x2+1]
· ·
· ·
· ·

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

Перечисленные многочлены можно складывать, умножать и делить, используя известные правила алгебры, но с приведением результата по mod 2, а затем по mod xn+1, если степень результата превышает степень (n-1).
Примеры.

 

Допустим, что длина кода n=7, то результат приводим по mod x7+1.

При построении и декодировании циклических кодов в результате деления многочленов обычно необходимо иметь не частное, а остаток от деления.
Поэтому рекомендуется более простой способ деления, используя не многочлены, а только его коэффициенты (вариант 2 в примере).

Пример.

1.

2.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: