Алгоритм декодирования циклических кодов

Важным свойством циклических кодов является то, что они все строятся с помощью образующего полинома P(x). Образующий полином P(x) принимает участие в образовании каждой кодовой ком­бинации, поэтому формируемые комбинации кода делятся на образующий полином без остатка.

Если все элементы принятой кодовой комбинации приняты без ошибок, то остаток R(x) от деления равен нулю. Наличие ошибок приводит к тому, что R(x)=0. Следовательно, синдромом цикличе­ского кода является многочлен R(х).

Таким образом, остатки от деления принятой комбинации на образующий полином является опознавателями ошибок цикличе­ских кодов. Но данные остатки еще не указывают непосредственно на место ошибки в кодовой комбинации.

Для определения номеров элементов, в которых произошла ошибка, существует несколько методов. Один из них основан на свойстве, которое заключается в том, что R(x) полученный при де­лении принятого многочлена Н(х) на , равен R(х), полученному в результате деления соответствующего многочлена ошибок Е(х) на

.

Многочлен ошибок Е(х)=А(х)+Н(х), где А(х) - исходный много­член циклического кода. Так, если ошибка произошла в , то при коде (9,5) =100000000, ошибке в соответствует =010000000 и т.д. Остаток от деления Е(0,1) на для данного 9-элементного кода всегда оди­наков, он не зависит от вида передаваемой комбинации. В рассмат­риваемом примере R(0,1)=0101. Наличие ошибки в других элемен­тах (> ) приведет к другим остаткам. Остатки зависят только от вида и n. Для n=9 и =10011 будет следующее соответствие:

Элемент с ошибкой
Синдром          

Указанное однозначное соответствие можно использовать для опре­деления места ошибки. Синдром не зависит от переданной кодовой ком­бинации, но в нем сосредоточена вся информация о наличии ошибок. Об­наружение и исправление ошибок в систематических кодах может произ­водиться только на основе анализа синдрома.

На основании приведенного свойства существует следующий метод определения места ошибки. Сначала определяется остаток соответствующий наличию ошибки в старшем разряде. Если ошибка про­изошла в следующем разряде (более низком), то такой же остаток получится в произведении принятого многочлена и х, т.е. Н(x).

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

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

– принятая кодовая комбинация делится на ;

– подсчитывается вес остатка (количество единиц в остатке);

– если < ( - допустимое количество ошибок, которое, исправляется кодом), то исправление сводится к сложению приня­той кодовой комбинаций с остатком;

– если , то производят циклический сдвиг принятой ко­довой комбинации влево на один разряд, а затем делят на ее и определяют вес остатка. Если то делимое суммируют с остат­ком, а затем производят циклический сдвиг на один элемент вправо. Это и будет исправленная кодовая комбинация; г

– если после первого сдвига остаток дает , то повторя­ют операцию сдвига на один разряд влево, а затем деление и опре­деление веса остатка производят до тех пор, пока не будет удовле­творяться условие .

Исправленная комбинация получается в результате сдвигов вправо суммы последней кодовой комбинации и остатка на столько разрядов, на сколько сдвинута исходная кодовая комбинация влево.

Пример: Рассмотрим данную методику применительно к r=3 и . Передано 1001110: Образующий полином Р(х)=х3+х+1, ошибка произошла на позиции
, т.е. принято 1000110. Определить номер элемента с ошибкой.

1. Находим R(0,1) от деления 1000110 на P(0,1)=1011. Итак, R(0,1)=011, .

2. Сдвигаем 1000110 влево на один разряд, имеем 0001101; а R(0,1)=110,

3. Сдвигаем влево еще на разряд (всего на два), имеем 0011010; R(0,1)=111,

4. Повторяем сдвиг (всего на три разряда), имеем 0110100, а R(0,1)=101,

5. Делаем еще сдвиг (всего 4 разряда), при этом имеем 1101000. Тогда R(0,1)=001,

6. Производим сложение сдвинутой кодовой комбинации с остатком. Имеем 1101000 001=1101001.

7. Сдвигаем эту кодовую комбинацию вправо на 4 разряда и получаем исправленную кодовую комбинацию:1101001 1110100 0111010 0011101 1001110.


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



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