55
Декодирование циклических кодов. Обнаружение ошибок. Идея
обнаружения ошибок в принятом циклическом коде заключается в том, что при
отсутствии ошибок закодированная комбинация )( XF делится на образующий
многочлен )(X
без остатка. При этом контрольные символы
отбрасываются, а информационные символы
используются по назначению.
Если произошло искажение принятой комбинации, то эта комбинация )(XF
преобразуется в комбинацию
)()()(* X
XFXF
, (2.46)
где )(X
- многочлен ошибок, содержащий столько единиц, сколько
элементов в принятой комбинации не совпадает с элементами переданной
комбинации.
Пусть, например, была передана комбинация кода (7, 4) 1101001)(
XF ,
закодированная с помощью 1011)(
X
. Если она принята правильно, то
деление на )(X
дает остаток, равный нулю. Если же комбинация принята как
1101011)(* =XF , то при делении на )(X
образуется остаток 010)(
X
, что
свидетельствует об ошибке, и принятая комбинация бракуется.
Обнаружение и исправление ошибок. Существует несколько вариантов
декодирования циклических кодов [2]. Один из них заключается в следующем:
1) вычисление остатка. Принятую кодовую комбинацию делят на )(X
,
и если остаток 0)( =X
, то комбинация принята без искажений. Наличие
остатка свидетельствует о том, что комбинация принята искаженной.
Дальнейшая процедура исправления рассматривается ниже;
2) подсчет веса остатка w. Если вес остатка равен или меньше числа
исправляемых ошибок, т.е.
w
, то принятую комбинацию складывают по
модулю 2 с остатком и получают исправленную комбинацию;
3) циклический сдвиг на один символ влево. Если
w > , то производят
циклический сдвиг на один символ влево и полученную комбинацию снова
делят на )( X
. Если вес полученного остатка
w
, то циклически сдвинутую
комбинацию складывают с остатком и затем циклически сдвигают ее в
обратную сторону вправо на один символ. В результате получают
исправленную комбинацию;
4) дополнительные циклические сдвиги влево. Если после циклического
сдвига на один символ по-прежнему
w > , производят дополнительные
циклические сдвиги влево. При этом после каждого сдвига сдвинутую
комбинацию делят на )(X
и проверяют вес остатка. При
w ≤ выполняют
действия, указанные в подразд. 3, с той лишь разницей, что обратных
циклических сдвигов вправо делают столько, сколько их было сделано влево.
Пример 2.14. Пусть исходная комбинация 1001)(
XG , закодированная с
помощью 1011)(
=X
и 1
, имела вид 1001110)(
XF . При передаче по