Цель работы: изучение алгоритма корректирующих кодов Хемминга для поиска и исправления ошибок в передаче сообщений, закодированных в двоичном коде.
1 Исходные данные:
Исходные данные представлены в таблице 1. Вариант № 6
Таблица
1
Исходные данные
2.1 Первоначальное кодирование
Кодирование текста представлено в таблице 2.1
Таблица 2.1 – Кодирование текста
Символ |
Код |
Бинарное представление |
U |
85 |
0101.0101 |
V |
86 |
0101.0110 |
W |
87 |
0101.0111 |
X |
88 |
0101.1000 |
8 |
56 |
0011.1000 |
8 |
56 |
0011.1000 |
5 |
53 |
0011.0101 |
4 |
52 |
0011.0100 |
2.2 Создание блоков
Исходный текст необходимо разбить на блоки по 16 бит и закодировать. Для этого я проведу группировку по 2 символа, как показано в таблице 2.2.1
Таблица 2.2.1 - Блоки
Блоки |
Символы |
1 |
UV |
2 |
WX |
3 |
88 |
4 |
54 |
В таблице 2.2.2 представлены закодированные блоки
Таблица 2.2.2 – Закодированные блоки
Номер блока |
Бинарный код |
1 |
0101.0101.0101.0110 |
2 |
0101.0111.0101.1000 |
3 |
0011.1000.0011.1000 |
4 |
0011.0101.0011.0100 |
2.3 Определение количества проверочных битов и из позиций в коде
Количество проверочных битов определяется по формуле (1), представленной ниже.
k = 2k – m – 1, где (1)
k – количество битов;
m – количество символов.
k = 2k – 16 – 1 = 2k – 17.
Методом подбора получаем следующую систему неравенств:
Таким образом, k лежит в диапазоне от 4 до 5. Ближайшим большим целым числом будет 5. Порядковый номер бита n вычисляется по формуле (2), изображенной ниже.
n = 2k, где (2)
k – любое положительно число.
В данном случае порядковые номера проверочных битов будут равны 1, 2, 4, 8 и 16.
В таблице 2.3 представлены бинарные коды с уже вставленными поверочными битами
Таблица 2.3 бинарные коды с уже вставленными поверочными битами
Номер бока |
Бинарный код |
1 |
0000101.00101.01001.0110 |
2 |
0000101.00111.01001.1000 |
3 |
0000011.01000.00101.1000 |
4 |
0000011.00101.00101.0100 |
2.4 Расчет значений проверочных битов
Расчет проверочных битов проводится с помощью таблицы кодировки, изображенной на рисунке 2.4.1
Рисунок 2.4.1 Таблица кодировки
Значения проверочных битов кода для каждого блока представлены в таблицах 2.4.1, 2.4.2, 2.4.3, 2.4.4 соответственно.
Таблица 2.4.1 – Значения проверочных битов в блоке №1 |
|||||
|
1 |
2 |
4 |
8 |
16 |
Количество единиц |
4 |
4 |
5 |
3 |
3 |
Бит четности |
0 |
0 |
1 |
1 |
1 |
|
|
|
|
|
|
Таблица 2.4.2 Значения проверочных битов в блоке №2 |
|||||
|
1 |
2 |
4 |
8 |
16 |
Количество единиц |
4 |
5 |
4 |
4 |
2 |
Бит четности |
0 |
1 |
0 |
0 |
0 |
|
|
|
|
|
|
Таблица 2.4.3 Значения проверочных битов в блоке №3 |
|||||
|
1 |
2 |
4 |
8 |
16 |
Количество единиц |
4 |
4 |
3 |
2 |
2 |
Бит четности |
0 |
0 |
1 |
0 |
0 |
|
|
|
|
|
|
Таблица 2.4.4 Значения проверочных битов в блоке №4 |
|||||
|
1 |
2 |
4 |
8 |
16 |
Количество единиц |
4 |
5 |
4 |
3 |
2 |
Бит четности |
0 |
1 |
0 |
1 |
0 |
2.5 Кодовая последовательность с контрольными битами
Кодовая последовательность с контрольными битами для каждого блока представлена в таблицах 2.5.1, 2.5.2, 2.5.3, 2.5.4 соответственно.
3 Декодирование и исправление ошибок
Для нахождения местоположения ошибки необходимо заново провести процедуру кодирования и сравнить результаты. Отталкиваясь от исходных данных необходимо проверить второй блок. В таблицах 3.1 и 3.2 представлены кодовая последовательность с проверочными битами и их значения соответственно.
Таблица 3.1 – Значения контрольных битов |
|||||
|
1 |
2 |
4 |
8 |
16 |
Количество единиц |
3 |
4 |
4 |
3 |
2 |
Бит четности |
1 |
0 |
0 |
1 |
0 |
Сравнивая таблицы 3.1 и 2.4.2, можно заметить, что первый, второй и восьмой биты различаются, следовательно, их сумма указывает на местоположение ошибки: 1 + 2 + 8 = 11.
Вывод: в ходе выполнения данного практического задания был изучен метод кодирования с применением кодов Хемминга.