Построение циклических кодов
Сведения из алгебры полиномов
ЦИКЛИЧЕСКИЕ КОДЫ
Описание циклических кодов основано на представлении комбинаций в виде многочленов (полиномов) от одной фиктивной переменной х с коэффициентами [17]. При наименьшем разряде полинома присутствует степень x0, а при наибольшем – степень xn-1, где n - длина разрядов. Например, комбинация 11011011 в виде полинома будет иметь вид х7+х6+х4+х3+х+1. Заметим, что арифметический знак + здесь рассматривается как фиктивная операция.
Сложение двух полиномов выполняется как поразрядное суммирование по модулю два (mod2). Например, b1=1011=х3+х+1, а b2=11101=х4+х3+х2+1. Тогда b1Åb1=х3+х+1+х4+х3+х2+1=х4+х2+х.
Умножение двух полиномов осуществляется в идеале поля Галуа (хn+1). Происходит это следующим образом. Пусть n=4, b1=0011=х+1, а b2=0110=х2+х. Тогда b1b2=(х+1)(х2+х)=х3+х.Пусть n=4, b1(х)=х3+х2, а b2(х)=х3+х+1. Тогда в обычной алгебре b1b2=х6+х5+х4+х2, а по модулю (х4+1) b1b2=Rem[(х6+х5+х4+х2)/(х4+1)]=х+1, где Rem[.] - остатокот деления. Следовательно, b1b2=х+1 (0011).
Таблица 5.1
Синдром ошибки | Принимаемое решение |
Нет ошибок. Информация выдается получателю | |
Ошибка в первом контрольном разряде. Информация выдается получателю | |
Ошибка во втором контрольном разряде. Информация выдается получателю | |
Ошибка в третьем контрольном разряде. Информация выдается получателю | |
Ошибка в четвертом контрольном разряде. Информация выдается получателю | |
Ошибка в первом разряде. Информация после исправления выдается получателю | |
Ошибка во втором разряде. Информация после исправления выдается получателю | |
Ошибка в третьем разряде. Информация после исправления выдается получателю | |
Ошибка в четвертом разряде. Информация после исправления выдается получателю | |
Ошибка в пятом разряде. Информация после исправления выдается получателю | |
Остальные коды синдрома | Ошибка не обнаружена. Информация стирается |
Циклические коды являются частным случаем групповых кодов и однозначно задаются с помощью порождающего (образующего) полинома
g(x)=gkxk+gk-1xk-1+…+g1x+g0.
Особенности порождающего полинома:
- порождающий полином g(x) имеет наименьшую степень среди многочленов данного идеала (хn+1);
- свободный член g0 всегда не равен нулю;
- любой многочлен циклической группы делится на g(x) без остатка;
- g(x) является делителем для двучлена (хn+1).
Так как любое кодовое слово b(х) должно делиться на g(x) , то
b(х)=n(х)g(х). (4.1)
Соотношение (4.1) описывает процесс кодирования слова. n=(nm-1,nm-2,…,n0) - вектор первичного (безызбыточного) кода длиной m разрядов, записанный в виде полинома
.
В результате применения соотношения (4.1) можно построить неразделимый циклический код, для которого образующая матрица имеет следующий вид:
.
Желательно циклический код представлять в виде разделимого кода, т.е. в кодовой комбинации b(х)=bn-1xn-1+bn-2xn-2+…+b1x+b0, коэффициенты кодового полинома при xn-1, xn-2,…,xk - информационные символы, а при xk-1,xk-2, …,x,1 - контрольные символы.
Для получения разделимого циклического кода достаточно вычислить остатки от деления произведения xkni(х), (i-0,1,…m-1) на порождающий полином g(x).
Если выбрать в качестве базисных кодовых полиномов xixk+Ri(х), то получим для разделимого кода порождающую матрицу в канонической форме Gm,n=|ImRm,k|. Причем,
. (4.2)
Пример. Полином g(х)=х3+х2+1 порождает циклический код (7,4). Информационные элементы кодовых комбинаций, используемые в качестве строк образующей матрицы, имеют следующую запись: ni(х)=х0, ni(х)=х1, ni(х)=х2, ni(х)=х3.
Тогда, R0(х)=Rem[xkx0/g(x)]=Rem[x3/(х3+х2+1)]=х2+1, R1(х)=Rem[x4/(х3+х2+1)]=х2+x+1, R2(х)=Rem[x5/(х3+х2+1)]=x+1, R6(х)=Rem[x6/(х3+х2+1)]=x2+x.
Образующая матрица будет иметь вид
.