
- •Корректирующие коды Хэмминга
- •Коды Хэмминга. Алгоритм кодирования
- •Коды Хэмминга. Алгоритм декодирования
- •Разработанный проект
- •Проект, разработанный на wpf
- •Режим работы с одним символом
- •Пример кодирования с исправлениями ошибок
- •Пример кодирования сообщения
- •Пример кодирования
- •Параметры кода
- •Исходный код программы
- •Класс, реализующий хранение и вывод информации на форму
- •Главный класс логики
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний аерокосмічний університет ім. М.Є. Жуковського
“Харківський авіаційний інститут”
Кафедра комп’ютерних систем та мереж
Титульный лист заполняется на украинском языке
Остальная часть отчета может быть как на украинском, так и на русском
Розрахунково-графічна робота № 3
з дисципліни “Теорія інформації та кодування”
Корректирующие коды Хэмминга
ХАІ.503.535.14В.050102, 1105079 ПЗ
Виконав студент гр. 535Б Сабельніков І.В.Фамилия И.О.
24.04.2014
(підпис, дата)
Перевірив канд.т.н., доцент
(науковий ступінь, вчене звання, посада)
Брежнєв Є.В.
(підпис, дата) (П.І.Б.)
Харків 2014
Постановка задачи
Цель работы: изучение принципов помехоустойчивого кодирования, ознакомление с классификацией корректирующих кодов и основными их характеристиками, с методами кодирования и декодирования на примере кода Хемминга.
1. Проект должен обеспечивать решение следующих задач:
- закодировать с помощью кода Хэмминга предложенный алфавит (варианты указаны в таблице 2);
Таблица 1. Варианты заданий для кодирования кодом Хэмминга
Вариант |
Исходный алфавит |
Исходный алфавит |
Исходный алфавит |
1,5,9,13,17 |
Кириллица А…М |
Латиница A…N |
Десятичные цифры 0….9 |
2,6,10,14,18,22 |
Кириллица О….Я |
Латиница О…Z |
Разрабатываемый интерфейс проекта должен позволять вводить с клавиатуры символ алфавита и отображать, соответствующий ему код Хэмминга. Должна быть также предусмотрена возможность его декодирования.
Должна быть предусмотрена возможность вывода всей кодой таблицы для каждого из алфавитов;
- в каждую строку таблицы с закодированной информацией внести одиночную ошибку, зафиксировать в кодовой таблице результат декодирования. Должна быть предусмотрена возможность внесения ошибки в рабочей области, отражающей все разряды кода Хэмминга для данного символа. После проведения декодирования должно быть отражено контрольное число (вектор ci) и результат декодирования (символ, слово);
- в последние две строки таблицы с закодированной информацией внести двойные ошибки, зафиксировать в кодовой таблице результат декодирования.
2. Проанализировать полученные результаты и сформулировать выводы.
3. Описать полученный код Хэмминга:
- количество контрольных и информационных символов и их номера;
- избыточность кода;
- минимальное кодовое расстояние;
4. Составить из предложенного алфавита слово длиной не менее 5 символов и закодировать его с помощью кода Хэмминга.
5. Представить краткий теоретический материал, в котором описать способ кодирования и декодирования информации с помощью кода Хэмминга.
6. Оценить результаты обнаружения и исправления одиночных и обнаружения двойных ошибок. Сделать выводы о корректирующей способности кода.
Письменный отчет должен содержать:
Титульный лист. (Название лабораторной работы. Фамилия, имя, отчество, номер группы исполнителя, дата сдачи.)
Распечатку текстов подпрограмм.
Все пункты 2, 3, 5, 6.
Коды Хэмминга. Алгоритм кодирования
Предположим, что нужно сгенерировать код Хемминга для некоторого информационного кодового слова. В качестве примера возьмём 15-битовое кодовое словоx1...x15, хотя алгоритм пригоден для кодовых слов любой длины. В приведённой ниже таблице в первой строке даны номера позиций в кодовом слове, во второй — условное обозначение битов, в третьей — значения битов.
Вставим в информационное слово контрольные биты r0...r4 таким образом, чтобы номера их позиций представляли собой целые степени двойки: 1, 2, 4, 8, 16... Получим 20-разрядное слово с 15 информационными и 5 контрольными битами. Первоначально контрольные биты устанавливаем равными нулю. На рисунке контрольные биты выделены розовым цветом.
В общем случае количество контрольных бит в кодовом слове равно двоичному логарифму числа бит кодового слова (включая контрольные биты), округлённому в большую сторону до ближайшего целого. Например, информационное слово длиной 1 или 2 бита требует двух контрольных разрядов, 3- или 4-битовое информационное слово — трёх, 5...11-битовое — четырёх, 12...26-битовое — пяти и т.д.
Добавим к таблице 5 строк (по количеству контрольных битов), в которые поместим матрицу преобразования. Каждая строка будет соответствовать одному контрольному биту (нулевой контрольный бит — верхняя строка, четвёртый — нижняя), каждый столбец — одному биту кодируемого слова. В каждом столбце матрицы преобразования поместим двоичный номер этого столбца, причём порядок следования битов будет обратный — младший бит расположим в верхней строке, старший — в нижней. Например, в третьем столбце матрицы будут стоять числа 11000, что соответствует двоичной записи числа три: 00011.
В правой части таблицы мы оставили пустым один столбец, в который поместим результаты вычислений контрольных битов. Вычисление контрольных битов производим следующим образом. Берём одну из строк матрицы преобразования (например, r0) и находим её скалярное произведение с кодовым словом, то есть перемножаем соответствующие биты обеих строк и находим сумму произведений. Если произведение получилось больше единицы, находим остаток от его деления на 2. Иными словами, мы подсчитываем сколько раз в кодовом слове и соответствующей строке матрицы в одинаковых позициях стоят единицы и берём это число по модулю 2.
Если описывать этот процесс в терминах матричной алгебры, то операция представляет собой перемножение матрицы преобразования на матрицу-столбец кодового слова, в результате чего получается матрица-столбец контрольных разрядов, которые нужно взять по модулю 2.
Например, для строки r0:
r0 = (1·0+0·0+1·1+0·0+1·0+0·0+1·1+0·0+1·0+0·0+1·1+0·0+1·1+0·1+1·1+0·0+1·0+0·0+1·0+0·1) mod 2 = 5 mod 2 = 1.
Полученные контрольные биты вставляем в кодовое слово вместо стоявших там ранее нулей. Кодирование по Хэммингу завершено. Полученное кодовое слово — 11110010001011110001.