Циклические коды
Циклическим кодом называется линейный блоковый (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, а элементы этого поля имеют вид, представленный в таблице 1,
| Таблица 1 | |||||
| 0 | 000 | 0 | a3 | 011 | Z+1 |
| a0 | 001 | 1 | a4 | 110 | Z2 +Z |
| a1 | 010 | Z | a5 | 111 | Z2 +Z+1 |
| a2 | 100 | Z2 | a6 | 101 | 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).
| Таблица 2 | |
| (x) | S(x) |
| 1 | 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).
Вам будет интересно - Курсовая работа: Цифровая коммутационная система AXE-10
Примеры.
![]() | ![]() |
Допустим, что длина кода n=7, то результат приводим по mod x7 +1.

При построении и декодировании циклических кодов в результате деления многочленов обычно необходимо иметь не частное, а остаток от деления.
Поэтому рекомендуется более простой способ деления, используя не многочлены, а только его коэффициенты (вариант 2 в примере).
Пример.
Похожий материал - Курсовая работа: Цифровая обработка сигналов
1. 
2. 
Матричное задание кодов
Циклический код может быть задан порождающей и проверочной матрицами. Для их построения достаточно знать порождающий g(x) и проверочный h(x) многочлены. Для несистематического циклического кода матрицы строятся циклическим сдвигом порождающего и проверочного многочленов, т.е. путем их умножения на x
и 
При построении матрицы H(n,k) старший коэффициент многочлена h(x) располагается справа.
Пример. Для циклического (7,4)-кода с порождающим многочленом g(x)=x3 +x+1 матрицы G(n,k) и H(n,k) имеют вид: 
где ![]()

