1 1 0 0 1 1 1 0 1 0 1 0
1 1 1 1 0
1 1 0 0 1
0 1 1 1 1
0 0 0 0 0
1 1 1 1 0
1 1 0 0 1
0 1 1 1 0
0 0 0 0 0
1 1 1 0 0
1 1 0 0 1
0 1 0 1 0
0 0 0 0 0
1 0 1 0
3 строка:
1 0 1 0 0 0 1 0 0 0 0 |1 1 0 0 11 1 0 0 1 1 1 0 0 1 0 1
1 1 0 1 0
1 1 0 0 1
0 0 1 1 1
0 0 0 0 0
0 1 1 1 0
0 0 0 0 0
1 1 1 0 0
1 1 0 0 1
0 1 0 1 0
0 0 0 0 0
1 0 1 0 0
1 1 0 0 1
1 1 0 1
4 строка:
0 0 0 0 0 0 1 0 1 1 0 1
1 1 1 0 0
1 1 0 0 1
0 1 0 1 1
0 0 0 0 0
1 0 1 1 0
1 1 0 0 1
1 1 1 1 0
1 1 0 0 1
0 1 1 1 0
0 0 0 0 0
1 1 1 0 0
1 1 0 0 1
0 1 0 1
5 строка:
1 1 0 0 1 1 1 0 1 1 0 1
1 1 1 0 0
1 1 0 0 1
0 1 0 1 1
0 0 0 0 0
1 0 1 1 0
1 1 0 0 1
1 1 1 1 0
1 1 0 0 1
0 1 1 1 0
0 0 0 0 0
1 1 1 0 0
1 1 0 0 1
0 1 0 1
6 строка:
1 1 0 0 1 1 0 1 0 1 1 0
0 1 1 1 0
0 0 0 0 0
1 1 1 0 0
1 1 0 0 1
0 1 0 1 0
0 0 0 0 0
1 0 1 0 0
1 1 0 0 1
1 1 0 1 0
1 1 0 0 1
0 0 1 1 0
0 0 0 0 0
0 1 1 0
7 строка:
1 1 0 0 1 1 1 1 0 0 0 0
1 0 1 0 1
1 1 0 0 1
1 1 0 0 1
1 1 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0
Сформированная матрица аналогична матрице, полученной первым способом:
M =
8.3.3. Проверка правильности кодирования
Для проверки правильности сформированного кода необходимо и достаточно полученную кодовую комбинацию разделить на образующий полином.
Если она делится на полином без остатка, значит, код пойдет верно, наличие остатка свидетельствует об ошибке в кодировании.
1 строка:
1 0 0 0 0 1 0 0 0 0 1 |1 1 0 0 11 1 0 0 1 1 1 1 1 0 0 1
1 0 0 1 1
1 1 0 0 1
1 0 1 0 0
1 1 0 0 1
1 1 0 1 0
1 1 0 0 1
0 0 1 1 0
0 0 0 0 0
0 1 1 0 0
0 0 0 0 0
1 1 0 0 1
1 1 0 0 1
0 0 0 0
5 строка:
1 0 1 1 1 0 1 0 1 0 0 |1 1 0 0 11 1 0 0 1 1 1 0 1 1 0 1
1 1 1 0 0
1 1 0 0 1
0 1 0 1 1
0 0 0 0 0
1 0 1 1 0
1 1 0 0 1
1 1 1 1 1
1 1 0 0 1
0 1 1 0 0
0 0 0 0 0
1 1 0 0 0
1 1 0 0 1
0 0 0 0
Т. к. вес остатка равен нулю, сообщение закодировано верно.
8.4. Проверка циклического кода на возможность исправления ошибок
Рассмотренная система кодирования позволяет обнаруживать и исправлять заданное количество ошибок. Факт существования ошибки при передаче блока по КС может быть обнаружен по остатку от деления на образующий полином. Если остаток от деления отличен от нуля, это свидетельствует о наличии ошибки.
Для поиска вектора ошибки Е используют следующий алгоритм.
Осуществляется деление принятого блока на образующий полином, определяется вес его остатка. Если величина веса W больше кратности ошибки, то осуществляется циклический сдвиг на один разряд до тех пор, пока вес остатка не будет кратен ошибке. Тогда дальнейшая работа прекращается и к деформированной кодовой группе прибавляется остаток, таким образом исправляется ошибка. После этого осуществляется сдвиг в обратном порядке на столько же разрядов, на сколько он был осуществлен при поиске остатка.
Допустим, в некотором блоке закодированного сообщения умышленно была допущена ошибка.
5 строка:
B =
1 0 1 1 1 0 1 0 0 0 1 |1 1 0 0 11 1 0 0 1 1 1 0 1 1 0 1
1 1 1 0 0
1 1 0 0 1
0 1 0 1 1
0 0 0 0 0
1 0 1 1 0
1 1 0 0 1
1 1 1 1 0
1 1 0 0 1
0 1 1 1 0
0 0 0 0 0
1 1 1 0 1
1 1 0 0 1
0 1 0 0
Вес остатка равен 1, следовательно, необходимо сложить его с сообщением.
Таким образом, ошибка в блоке сообщения была исправлена.
Итак, циклический код – это блочный код, все базовые комбинации которого могут быть получены из одной путем циклического сдвига всей кодовой комбинации пошагово на один разряд справа налево. Идея построения циклических кодов базируется на использовании неприводимых в поле двоичных чисел многочленов.
В ходе проделанной работы было закодировано сообщение циклическим кодом, способным обнаружить и исправлять одну ошибку. На практике была подтверждена эффективность метода.
Необходимо построить сверточный код, способный обнаруживать и исправлять одну ошибку при передаче сообщения М = (АКСЕНЕНКО_И), закодированного с помощью метода Хаффмана.
Важнейшей проблемой теории помехоустойчивой передачи информации является повышение основного показателя помехоустойчивости примерно на восемь порядков.
Современные коды имеют кодовую скорость R, лежащую в диапазоне 0.2 – 0.95. Чем ближе граница, тем менее эти коды перегружены. Приближение R к 0.5 позволяет решить проблему повышения помехоустойчивости.
Для блочных кодов вся информация, подлежащая передаче, разбивается на блоки равной длины, в которых есть информационные и кодовые разряды.
I + П = Р (9.1)
где I – информационные разряды (кадры)
П – проверочные разряды
(9.2)В качестве величины кодовой скорости принято R = 0.5.
Данные коды обладают самой большой избыточностью. Для надежного обнаружения и исправления ошибок сверточные коды должны обладать памятью, постоянно хранить информацию о Р кадрах. Чем больше Р, тем большими возможностями обладают коды по обнаружению и исправлению ошибок.
Р называют шагом сложения. Он определяет допустимое количество элементов, которые могут быть поражены помехой (т.е. определяет кратность ошибки).
Одна из структурных схем кодеров приведена на рис. 9.1:
Рис. 9.1. Структурная схема дешифратора
В основе построения кодера лежит регистр сдвига. Количество разрядов этого регистра определяется как 2Р + 1. С первого и с четвертого разрядов информация поступает на сумматор, на выходе которого формируются контрольные разряды. Информационные разряды формируются на выходе седьмого разряда. Синхронный переключатель К обеспечивает поочередное подключение к выходам информационных и контрольных разрядов. Засчет этого на выходе кодера формируется сверточный код, в котором поочередно идут информационные и контрольные разряды.
Работа кодера осуществляется следующим образом: на вход подается комбинация из 0 и 1. В результате информационные разряды в регистре сдвига перемещаются от первого разряда к седьмому. В первых разрядах регистра сдвига формируются сигналы а1, а2, … , аi. На выходе сумматора формируется сигнал
. Сигналы b по физическому смыслу представляют собой контрольные или проверочные разряды. Каждый информационный разряд передаваемой кодовой комбинации участвует в формировании двух контрольных разрядов: первый формируется, когда аi находится в первой ячейке регистра сдвига; второй – когда аi находится в четвертой ячейке.Таким образом, количество информационных и контрольных разрядов всегда одинаково и следуют они так, что за каждым информационным разрядом идет контрольный..
Требуется передать сообщение, состоящее из семи разрядов: М = (1000010).
В этом случае из формулы 9.2:
m = 7
n = 14
то по формуле 7.3 k = 7
Таблица 9.1
№ | а1 | а2 | а3 | а4 | а5 | а6 | а7 | ai | bj |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
3 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
4 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
5 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
6 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
7 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
8 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
9 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
10 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
11 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
12 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Таким образом, получено закодированное сообщение: