Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_LabaPUK_06.doc
Скачиваний:
17
Добавлен:
08.02.2015
Размер:
301.06 Кб
Скачать
    1. Циклические коды

Код называется циклическим, если из того, что кодовое слово

U={ un-1, … , u1, u0}Mразр

принадлежит множеству разрешенных слов следует, что слово

={ un-2, … , u0, un-1,}Mразр,

, полученное сдвигом cлова U влево по кругу тоже принадлежит множеству разрешенных слов.

Циклический код является частным случаем полиномиальных кодов, в которых кодовое слово U={u0, u1, … ,un-1} представляется в виде полинома от фиктивной переменной x с коэффициентами, равными числам кода. Если код построен над полем GF(2)={0,1}, то коэффициенты многочлена - числа 0 или 1:

.

Замечание. Степени фиктивной переменной x используются только для обозначения места соответствующей компоненты кодового вектора в регистре сдвига и никакой иной смысловой нагрузки не несут.

Например для кодового слова U=[1010101] значности n=7 полином имеет вид

.

Над полиномами определены все арифметические операции по обычным правилам, в том числе и умножение в столбик и деление углом. При этом сложение и вычитание коэффициентов выполняется как суммирование по модулю два. Если степень результата превышает (n-1), то результат приводится по модулю полинома (хn+1).

Замечание. Результатом приведения одного полинома по модулю другого полинома является полином, являющийся остатком от деления первого на второй (модуль).

Циклическая перестановка соответствует умножению u(x) на x. В нашем случае:

,

п

x7+ x5+ x3+ x x7+1

x7+1 .

x5+ x3+ x+1=u`(x)

осле приведения результата по модулю (хn+1) (то есть деления u(x) на (х7+1)), получаем

u` (x) =x5+ x3+ x+1 и u`=[0101011],

что соответствует сдвигу битов кодового слова влево по кругу на один разряд.

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

Если не приводить полином, то при умножении полинома степени k на полином степени m степени полиномов складываются, и полином-результат имеет степень n=k+m. Исходное кодовое слово длины k при этом приобретает m новых разрядов, которые могут играть роль проверочных символов.

Циклический код это также блочный (n, k)-код, с длиной блока n, содержащий k информационных символов и m = n – k проверочных символов.

Операция кодирования для циклического кода состоит в умножении любого полинома p(x) степени k-1, соответствующего информационному подблоку на один и тот же полином g(x) степени (n-k), называемый образующим или порождающим или кодирующим полиномом (многочленом).

При этом число разрешенных кодовых слов остается прежним 2k, а общее число возможных кодовых слов становится равным 2n.

При декодировании выполняется деление на тот же образующий полином. При этом разрешенные кодовые слова делятся без остатка, а появление ненулевого остатка – это признак ошибки.

Ненулевой остаток от деления s(x) называется синдромным многочленом. Пусть вместо кодового слова U получено слово , которому соответствует многочлен. При этом вектор ошибки e, содержащий единицы в ошибочных позициях может быть получен как e= U.

Синдромный многочлен, определяемый как остаток от деления на порождающий многочлен g(x) зависит только от вектора ошибок:

, так как .

Этот факт используется при построении таблицы синдромов, применяемой при декодировании. Для всех возможных значений вектора ошибки e(x) вычисляются синдромы s(x) и записываются в таблицу. В процессе декодирования по синдрому s(x) находится соответствующий вектор ошибки e(x) и восстанавливается переданное слово как

u(x) =+ e(x).

Ошибка останется необнаруженной в том и только в том случае, если многочлен, соответствующий вектору ошибки делится на g(x) без остатка, то есть если вектор ошибки совпадет с разрешенным кодовым словом.

Таким образом, процесс декодирования циклических кодов (как и всех линейных блочных кодов) можно разбить на три этапа:

  1. Вычисление синдрома

  2. Определение ошибочных компонент принятого слова (вектора ошибки)

  3. Исправление ошибки или выдача сообщения о наличии неисправимой ошиб­ки

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]