Автор: Пользователь скрыл имя, 12 Октября 2011 в 14:15, лабораторная работа
Код Хэмминга – минимальное количество различий между двумя допустимыми кодовыми словами.
Кодом Хэмминга называется (n,k) – код, проверочная матрица которого имеет r n-k строк и столбцов, причем столбцами являются все различные ненулевые последовательности.
Код Хэмминга – минимальное количество различий между двумя допустимыми кодовыми словами.
Кодом Хэмминга называется (n,k) – код, проверочная матрица которого имеет r n-k строк и столбцов, причем столбцами являются все различные ненулевые последовательности.
Исправляющая способность кода Хэмминга определяется по следующему принципу: для обнаружения ошибок d>r, для исправления ошибок d>2r.
Схема Р.Хэмминга по конструированию кода , обнаруживающего и исправляющего одиночную ошибку, универсальна , т.к . код может быть построен для произвольной пары значений n и k, удовлетворяющих уравнению : .
Заметим
также, что вовсе не
Цель нашей работы : Произвести первичное кодирование и декодирование принятого сообщения, закодированного кодом Хэмминга. При этом осуществить обнаружение и исправление ошибок в кодовых словах, используя методику исправления с вычислением синдрома.
Исходные данные для выполнения работы:
A= 6, Б = 111001101010, В = 101001100010.
r = n-6
n = r +6
2r ≥ r + 7
r = 4
n,k
k = 6
n = 4 + 6 = 10
Отсюда, количество строк и столбцов в проверочной матрице будет (10,6).
Построим проверочные матрицы кода в упорядоченном и модифицированном (с проверкой на чётность) виде:
Матрица кода в упорядоченном виде:
H (10,6) =
Матрица кода в модифицированном (с проверкой на чётность) виде:
H (10,6) =
Передадим сообщение 111001101010, для этого составим таблицу разбив сообщение на 2 части 111001 и 101010.
1) Оформим позицию и значение бита:
позиция | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
значение | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
Сформируем контрольную сумму: сложение по mod 2 над кодами ненулевых битов:
10 = 1010
9 = 1001
7 = 0111
3 = 0011
0101
Пусть данное слово передано и получено принимающей стороной. Определим позицию ошибки:
позиция | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
значение | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
2)Оформим позицию и значение бита:
позиция | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
значение | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
Сформируем контрольную сумму: сложение по mod 2 над кодами ненулевых битов:
10 = 1010
7 = 0111
5 = 0101
1000
Пусть данное слово передано и получено принимающей стороной. Определим позицию ошибки:
позиция | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
значение | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
3) Сформируем системы проверочных и синдромных уравнений. Сформируем кодовое слово исследуемого кода, введём одиночную ошибку и покажем её исправление путём вычисление синдрома, а также по схеме декодера в процессе работы.
v = 111001101010 – переданное слово;
v’
= 101001100010 – принятое слово;
Разделив принятое сообщение на 2 части, составим таблицу 1:
К1 | К2 | К3 | К4 | К5 | К6 |
1 | 0 | 1 | 0 | 0 | 1 |
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
К6 | К5 | R4 | К4 | К3 | К2 | R3 | К1 | R2 | R1 |
1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
R1=k1+k2+k4 + K 5=1+0+1+1 = 1
R2=k1+k3+k4 + K6 = 1+ 0+ 1+ 1 =1
R3=k2+k3+k4=0+0+0=1
R4 = k5 + k6 = 1 +1 = 0
Синдромы:
S1= R1 + k1+k2+k4 + K 5=1+1+0+1+ 0 = 1
S2= R2 + k1+k3+k4 + K6 = 1+ 1+ 0+ 1 + 1 =0
S3 = R3+k2+k3+k4=1+0+0 + 11=0
S4 = R4 + k5 + k6 = 0 + 0 +1 = 1
Ошибка
в 9 позиции (1001).
Разделив принятое сообщение на 2 части, составим таблицу 2:
К1 | К2 | К3 | К4 | К5 | К6 |
1 | 0 | 0 | 0 | 1 | 0 |
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
К6 | К5 | R4 | К4 | К3 | К2 | R3 | К1 | R2 | R1 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
R1=k1+k2+k4 + K 5=0
R2=k1+k3+k4 + K6 = 0
R3=k2+k3+k4=0+0+0=0
R4 = k5 + k6 = 1 +1 = 1
Синдромы:
S1= R1 + k1+k2+k4 + K 5=1
S2= R2 + k1+k3+k4 + K6 = 0
S3 = R3+k2+k3+k4=0
S4 = R4 + k5 + k6 = 0
Ошибка
в 8 позиции (1000).
4) Переданное слово vа = 111001101010, а принятое слово v’a = 101001100010 тогда синдром будет следующим:
1001001111* = (1001) = 9
1010
1010010000* = (1000) = 8
Вывод.
Коды
Хемминга позволяют автоматически обнаруживать
наиболее вероятные ошибки при передаче
данных. Для их построения достаточно
приписать к каждому слову один добавочный
(контрольный) двоичный разряд и выбрать
цифру этого разряда так, чтобы общее количество
единиц в изображении любого числа было,
например, четным. Одиночная ошибка в каком-либо
разряде передаваемого слова (в том числе,
может быть, и в контрольном разряде) изменит
четность общего количества единиц. Счетчики
по модулю 2, подсчитывающие количество
единиц, которые содержатся среди двоичных
цифр числа, могут давать сигнал о наличии
ошибок.