разное / ИТ / лабораторная 6 / Хэмминг
.docОмский государственный технический университет
Кафедра «Автоматизированные системы обработки информации и управления»
Отчет
по лабораторной работе №2
«Исследование процессов кодирования и декодирования при передаче дискретных сообщений кодами Хэмминга»
Выполнил:
студент гр. Ас-
Проверил:
Омск-2002
Задание к лабораторной работе:
1. Определить длину информационной i , длину проверочной k последовательности кода и формируем код Хэмминга.
2. Построить порождающую матрицу кода. 3. Построить проверочные матрицы кода в модифицированном (с проверкой на четность) виде. 4. Сформировать системы проверочных и синдромных уравнений. 5. Сформировать кодовое слово исследуемого кода, ввести одиночную ошибку и показать ее исправление путем вычисления синдрома. 6. Показать на примере, что код не гарантирует обнаружение тройных ошибок.
7. Произвести первичное декодирование принятого сообщения, закодированного кодом Хэмминга. При этом осуществить обнаружение и исправление ошибок в кодовых словах, используя методику исправления с вычислением синдрома.
Результаты выполнения работы
1. Определяем длину информационного i и длину проверочного к последовательного кода и формируем код Хэмминга.
Нам дана длина кода – n. Информационные и проверочные биты определим из соотношения:
2к > i+k (1)
Т.к. длина кода n=7, а длину информационного кода возьмем равную i=4, то согласно соотношению (1) количество проверочных бит k=n-i, k=3:
23 > 4+3.
Код (7,4,3).
Формируем код Хэмминга: k1 k2 i3 k4 i5 i6 i7 (проверочные биты стоят на местах: 20, 21, 22, 23 и т.д.):
1. 00001
2. 00010
3. 00011 00001 k1 = i3 i5 i7
4. 00100 00010 k2 = i3 i6 i7
5. 00101 00100 k4 = i5 i6 i7
6. 00110
7. 00111
2. Кодом Хэмминга называется (n,k)-код, проверочная матрица которого имеет i = n-k строк и 2i-1 столбцов, причем столбцами являются все различные ненулевые последовательности. Столбец Р – проверка на четность. Строим порождающую матрицу кода, которая состоит из единичной матрицы Ii, содержащей информационные биты и прямоугольной матрицы Ki,k, составленной из проверочных битов:
G =
3. Построим проверочную матрицу.
Проверочная матрица имеет вид H(n,i)=|Ki,kT, Ii|; где Ii - единичная матрица;
Ki,kT - прямоугольная матрица в транспонированном виде матрицы Ki,k из порождающей матрицы. Проверочная матрица любого кода Хэмминга всегда содержит минимум три линейно зависимых столбца.
В нашем случае H(8,4)=|K4,4T, I4|: K4,4T =
Отсюда получаем проверочную матрицу вида:
H =
4. Сформируем системы проверочных и синдромных уравнений. Для этого умножим единичную матрицу I8,8 на транспонированную проверочную матрицу H8,4,получим:
=
5. Сформируем кодовое слово исследуемого кода, введем одиночную ошибку и покажем ее исправление путем вычисления синдрома. Произведение любого кодового слова G1 на транспонированную проверочную матрицу дает нулевой вектор размерности (n-i): Gi·Hn,iT =[00...]
Возьмем любой код из порождающей матрицы G, умножим на HT и проверим на наличие ошибки:
=
Как видно из полученного результата - ошибки нет.
Произведение некоторого кодового слова Gi', т.е. с ошибкой, на транспонированную проверочную матрицу называется синдромом и обозначается Si: Gi'·H(n, k)T= Si.
Пусть переданное кодовое слово G=00101010, а принятое слово - G'=00100010. Синдром, соответствующий принятому слову будет равен S=G'·H(8,4)T=[1000]. Вычисленный синдром указывает на ошибку в пятой позиции. Покажем это:
= 1000
6. Код Хэмминга позволяет выявить только одну ошибку.
Показать на примере, что код не гарантирует обнаружение тройных ошибок.
Пусть передано кодовое слово 10001111. Сделаем три ошибки и получим код 10100101. Проверим его:
= 0000
Как видно из полученного результата, проверяемый код не содержит ошибок, хотя на самом деле в нем три ошибки.
7. Произвести первичное декодирование принятого сообщения, закодированного кодом Хэмминга. При этом осуществить обнаружение и исправление ошибок в кодовых словах, используя методику исправления с вычислением синдрома. Возьмем произвольный информационный код: i = 0110.
Вычислим для него проверочные биты. Для этого из порождающей матрицы берем прямоугольную матрицу, состоящую из проверочных битов, и находим k:
Ki,k = k = 0110
Полученный код имеет вид:
Декодирование означает исключение проверочных битов. Получим код 0110.
Проверим наш код на наличие ошибок:
= 0000
Вычисленный синдром показывает на то, что код ошибки не содержит.
Введем ошибку и проверим ее при помощи матрицы синдромных уравнений:
= 1010
Вычисленный синдром указывает на ошибку в третьей позиции.