Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MOZI.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
2.55 Mб
Скачать

5.3.2.Коды с повторением

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

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

Например, если исходная комбинация 10101, то полученная – 1010101010.

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

Алгоритм 1.

Принимаем первую половину кодовой комбинации, подсчитываем в ней число единиц k.

Если k – четно, то суммируем по модулю 2 первую и вторую части без изменений, если k – нечетно, то суммируем по модулю 2 первую и инверсную вторую части.

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

Алгоритм 2.

Принимаем первую половину кодовой комбинации, подсчитываем в ней число единиц k.

Если k – четно, то суммируем по модулю 2 первую и вторую части без изменений, если k – нечетно, то суммируем по модулю 2 первую и инверсную вторую части.

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

Примеры решения задач

  1. Принято кодовое слово 1110101010. Известно, что для его получения использовался код с повторением. Проверить, есть ли ошибка в принятом слове, если есть, то исправить её.

Решение. Принимает первую половину слова: 11101. Количество единиц 4 - четно, складываем её со второй частью: 11101

01010

______________

10111

Исходя из алгоритма 1 ошибка во втором разряде первой части, т.е. было передано следующее сообщение: 1010101010.

  1. Принято кодовое слово 1010101110. Известно, что для его получения использовался код с повторением. Проверить, есть ли ошибка в принятом слове, если есть, то исправить её.

Решение. Принимает первую половину слова: 10101. Количество единиц 3 - нечетно, складываем её с инвертированной второй частью: 10101

10001

_______________

00100

Исходя из алгоритма 2 ошибка в третьем разряде второй части, т.е. было передано следующее сообщение: 1010101010.

Задачи для самостоятельного решения

  1. Принято три кодовых слова 101010111011011111111001111010. Известно, что для их получения использовался код с повторением. Проверить, есть ли ошибка в принятых словах, если есть, то исправить её.

5.3.3.Групповой код Хемминга

Наиболее распространенным является алфавит, состоящий из двух символов {0,1}. Сообщение кодируется по заданной схеме более длинной последовательностью, чтобы при приеме можно было распознать и исправить ошибки, проанализировав информацию, содержащуюся в дополнительных символах.

Построение конкретного корректирующего кода производится исходя из требуемого объёма кода N, т.е. необходимого числа передаваемых команд или дискретных значений измеряемой величины и статистических данных о наиболее вероятных векторах ошибок в используемом канале связи. Вектором ошибки будем называть кодовую комбинацию, имеющую единицы в разрядах, подвергающихся искажению, и нули во всех остальных разрядах. Любую искаженную кодовую комбинацию можно рассматривать теперь как сумму (равно как и разность) по модулю два разрешенной кодовой комбинации и вектора ошибки.

Исходя из равенства

2k - 1 > N

определяем число информационных разрядов, необходимое для передачи заданного числа команд обычным двоичным кодом.

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

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

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

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

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