- •Циклические коды.
- •1. Операции над двоичными многочленами.
- •Аппаратное умножение двоичных многочленов
- •Аппаратное деление многочленов.
- •2.Виды многочленов
- •Двойственные полиномы
- •Восьмеричное представление двоичных многочленов
- •Требования к образующему g(X).
- •Требования к образующему полиному.
- •Этап декодирования
- •Аппаратная реализация этапов кодирования и декодирования для циклических кодов.
- •Структурная схема кодирующего устройства.
- •Аппаратная реализация алгоритма декодирования.
- •Аппаратная реализация алгоритма декодирования.
Двойственные полиномы
P*(x) – полином двойственный P(x)
P*(x)=xmP(1/x), где m – степень P(x).
Пример:
P(x)=x4+x+1
P*(x)=x4P(1/x)=x4(1/x4+1/x+1)=x4+x3+1.
Свойства двойственности:
а) Полином двойственный неприводимому полиному является также неприводимым;
б) Полином двойственный примитивному является также примитивным. P(x)= x4+x3+1.
Восьмеричное представление двоичных многочленов
Для удобства и компактности записи двоичные многочлены представлены в восьмеричном виде:x8+x+1 100 000 011 403
4 0 3
726 111 010 110 x8+x7+x6+x4+x2+x+1
Используя представление двоичных кодов в виде полиномов, дадим следующее определение циклического кода.
Циклический код образуется путем умножения информационного k-значного кода, выраженного в виде полинома Q(x) степени k-1, на некоторый образующий полином G(x) степени (n-k = r).
Q(x)=1010(x3+x); G(x)=(x3+x+1); E(x)=(x6+x3+x2+x).
Отсюда, основное свойство циклического кода: многочлен E, выражающий разрешенную кодовую комбинацию циклического кода, будет делиться на образующий многочлен без остатка.
С другой стороны: ни один многочлен, соответствующий запрещенной кодовой комбинации, на образующий многочлен G(x) без остатка не делится. То есть остаток – это проверочный синдром.
Это основное свойство позволяет определить наличие ошибки в кодовой комбинации.
Отсюда следующее:
Процедура кодирования состоит в умножении кодовой комбинации из информационных символов на образующий многочлен G(x).
Процедура декодирования состоит в делении принятой кодовой комбинации, выраженной в E(x) на образующий полином G(x) и определения остатка R(x).
Если R(x)=0 – нет ошибки,
Если R(x)0 – есть ошибка, и ее надо определить по виду R(x).
Требования к образующему g(X).
Корректирующие свойства циклического кода определяются в основном образующим полиномом G(x). Поэтому, выбор образующего полинома – важнейший этап построения циклического кода.
Процедура кодирования (получения кодовой комбинации без остатка делящейся на G(x)) может быть реализована тремя путями:
E1(x)= Q(x)*G(x)
Исходная
кодовая комбинация
Достоинство: простота
Недостаток: информационные и проверочные разряды перемешались, что усложняет процесс дешифрирования.
E2(x)= Q(x)*xn-k+ R(x), где R(x)- частное от деления Q(x)*xn-k/ G(x)
Можно показать, что
F2(x) делится без остатка на G(x)
Q(x) R(x)
Структурная схема
k r
Достоинство: полезная информация Q(x) отделена от проверочной R(x).
Требования к образующему полиному.
1) Для того, чтобы разрешенная кодовая комбинация при циклическом сдвиге влево (т.е. при «x» наx) оставалась разрешенной, т.е. делилась без остатка наG(x) необходимо, чтобыG(x) являлся сомножителемxn-1.
Цикл. сдвиг
F1(x)- разрешенная кодовая комбинация; E2=E1=E1*x-C(xn-1),
где C=0, если степеньE1*x n;
C=1, если степень E1*x > n.
Отсюда, G(x) является сомножителем двучлена (xn-1).
2) Из определения циклического кода – степеньG(x)= r = n-k
3) Циклический код принадлежит к линейным кодам. Циклический код, являясь линейным, способен различать и исправлять количество ошибок равное количеству различных комбинаций проверочного синдрома.
По аналогии: корректирующая способность циклического кода будет тем выше, чем больше остатков может быть образовано при делении многочленов (запрещенных с одиночными ошибками, или, что то же самое, различных векторов ошибок) на образующий полиномG(x).
Наибольшее количество остатков, равное 2r-1 (т.е. равное n 2r>n, т.е. числу векторов одиночных ошибок) может обеспечить только примитивный многочлен.
G(x) должен быть примитивным полиномом (специальные таблицы), т.е. являясь делителем двучленаxn-1, не входит в разложениеx+1,гдеn представление в «свернутой» форме.
Пояснение: выбрать образующий полином кода (15,11)
(x15+1)
(x+1)(x2+x+1)(x4+x+1)(x4+x3+1)(x4+x3+x2+x+1)
<3 =3 3
степень4 степень = 4
(x4+x+1) и (x4+x3+1) – можно выбрать в качестве G(x).
!!! Циклические коды, образованные с помощью двойственных многочленов – эквивалентные.
(x4+x3+x2+x+1) – нельзя выбрать какG(x), потому что:
формально, он входит x5+1515
фактически, дает не 2r-1 (15 остатков), а только 5 остатков.
Операции кодирования – построение циклического кода с помощью образующей матрицы.
Для исключения (каждый раз) операция деления на практике построения циклического кода осуществляется при помощи образующей матрицы Gn,k(аналогично групповым кодам).
1
. Набор остатков от деления строже
. единичной матрицы, сдвинутой влево на
. Rij r разрядов, на P(x). При этом, вес каждого
1 остатка Ri dmin-1, что гарантировано
1 условием выбораP(x).
1
1
единичная, но
транспонированная матрица
Пример (*) r
Выбрать образующий многочлен для случая n= 15 , m= 4. Двучлен x15+1 = x2 -1 +1 можно записать в виде произведения всех неприводимых многочленов, степени которых являются делителями числа 4. Последнее делится на 1,2,4.
В таблице неприводимых многочленов находим,
1 многочлен первой степени x+1
1 многочлен второй степени x2+x+1
3 многочлена четвертой степени x4+x+1, x4+x3+1, x4+x3+x2+x+1
x15+1 = (x+1) *(x2+x+1) *(x4+x+1) *(x4+x3+1) *(x4+x3+x2+x+1)
Один из сомножителей (x4+x+1), (x4+x3+1) может быть взят за образующий многочлен.
После построения образующей матрицы процедура определения проверочных разрядов аналогична этой процедуре линейных групповых кодов:
k
bj = pij aj , i = 1,2,3, …r
i=1