Код Хэмминга 9;4
.doc1. Определить основные параметры для линейного корректирующего кода (9,4)
Основные параметры линейного корректирующего кода (9,4):
1. Основание кода q – число элементарных символов, выбранных для передачи сообщения: q ={0;1}
2. Длина кода n = 9 – число символов, выбранных для передачи сообщения.
3. Число информационных позиций в коде, выбранных для передачи данных k = 4.
4. Число проверочных позиций в коде r = n – k = 9 – 4 = 5.
5. Скорость передачи кода:
6. Кодовое расстояние кода d = 3 – наименьшее расстояние Хэмминга (число позиций, в которых кодовые слова отличаются друг от друга) между различными парами кодовых слов.
7. Кратность контролируемой ошибки t.
7.1. Кратность обнаружения ошибки:
То есть данный код позволяет обнаружить не более двух ошибок.
7.2. Кратность коррекции ошибки:
Значение кратности коррекции ошибки tк = 1, то есть данный код позволяет корректировать одну ошибку.
2. Записать порождающую и проверочную матрицы для кода (7,4), указав на способ получения проверочных символов
Код Хэминнга является линейным блочным кодом, для описания которых удобно пользоваться порождаюшей матрицей.
Запишем порождающую матрицу G. Матрица G будет иметь размерность . В качестве строк матрицы G выбираем любые линейно-независимые слова, отстоящие друг от друга на кодовое расстояние равное 3:
Пусть входное слово имеет вид:
Выходное слово получаем умножением входного слова на порождающую матрицу: . В результате получим выходное слово:
,
где
(1) |
То есть 4 крайних левых символов кодового слова совпадают с символами кодируемой информационной последовательности, остальные 3 – являются линейными комбинациями символами информационной последовательности.
Линейные коды кроме порождающей матрицы задаются также и проверочной матрицей. Эти матрицы связаны между собой соотношением . Поверочная матрица будет иметь размерность , где . Приведем проверочную матрицу в виде
3. Закодировать сообщения 0011, 1000 линейным корректирующим кодом (7,4). Нарисовать структурную схему кодирующего устройства и описать алгоритм его работы
Закодируем сообщение 0011
Закодируем сообщение 1000
На основании порождающей матрицы или приведенной выше системы проверочных уравнений (1) составим структурную схему кодера (рис. 1):
Рисунок 1
Кодер работает как схема при простой проверке на четность, причем делает несколько проверок, формируя соответственно, несколько проверочных символов. Если число единиц в последовательности m четно, то результатом суммирования будет 0, если нечетно – 1, что и показывают проверочные уравнения (1).
4. Декодировать сообщения 0011101 и 1000101 синдромным методом (указав на возможные ошибки при декодировании). Нарисовать структурную схему декодирующего устройства и описать алгоритм его работы
Допустим в канале передачи на вектор кодовой последовательности накладывается вектор ошибки , представляющий собой вектор длиной n = 7 с единицами в тех позициях, где присутствует ошибка. Соответственно, принятая комбинация будет иметь вид:
Приняв вектор декодер должен сначала определить, имеются ли в принятой последовательности ошибки. Если ошибки есть, он (декодер) должен выполнить действия по исправлению.
Чтобы выяснить является ли принятая последовательность кодовым словом декодер вычисляет синдром, определяемый следующим образом:
Пусть принятый вектор , тогда:
(2) |
Если синдром , следовательно, в принятой кодовой последовательности имеются ошибки.
В нашем случае для принятой комбинации 0011101:
, следовательно, в принятой комбинации есть ошибка
В нашем случае для принятой комбинации 1000101:
, следовательно, в принятой комбинации есть ошибка
Используем полученный синдром для исправления ошибки. Выше мы условились, что передаваемый вектор: ; вектор ошибки:; вектор принятый – и . Тогда
, то есть синдром зависит только от ошибки, имеющейся в принятой последовательности. Тогда найдя вектор ошибки, восстановим кодовое слово:
Как мы заметили выше синдром будет однозначно определяться вектором ошибки, следовательно, необходимо найти значения синдрома для всех возможных ошибок
…
и т.д.
То есть синдромами будут строки матрицы Н. Таким образом, запишем все возможные ошибки и соответствующие им синдромы в виде таблицы:
-
Номер символа, в котором ошибка
Вектор ошибки
Синдром ошибки
S1S2S3S4
Десятичный код синдрома
1
1000000
110
6
2
0100000
011
3
3
0010000
111
7
4
0001000
101
5
5
0000100
100
4
6
0000010
010
2
7
0000001
001
1
Из этой таблицы видно, что существует однозначное соответствие между сочетанием ошибок (при одиночной ошибке) и его синдромом, то есть, зная синдром, можно совершенно однозначно определить позицию кода, в котором произошла ошибка.
Полученный первый синдром S = 111, говорит об ошибке в третьем символе. Однако, если сравнить принятую комбинации 0011101 с закодированным сообщением 0011010, то видно, что имеются три ошибки.
Аналогично при сравнении принятой комбинации 1000101 с закодированным сообщением 1000110, то видно, что имеются две ошибки, хотя синдром показывает ошибку в втором символе.
Эти результаты объясняются тем, что код (7,4) (код Хэмминга) имеет кодовое расстояние равное 3 и позволяет обнаружить 2 ошибки и исправить 1 ошибку.
Основываясь на соотношениях (2) построим структурную схему декодирующего устройства (рис. 2):
Рисунок 2
Принцип работа декодирующего устройства прост: в соответствии с соотношениями (2) вычисляется суммирование по модулю 2 определенных позиции принятой комбинации.
Список использованной литературы
-
Теория прикладного кодирования: Учебное пособие в 2х т. Т.2; Под ред. проф. В.К. Конопелько. – Мн.: БГУИР, 2004 – 398с.
-
Богданович М.И. Цифровые интегральные микросхемы. Справочник. – Мн.: Беларусь, 1996. – 605с.
-
Хэмминг Р.В. Теория кодирования и теория информации. – М.: Радио и связь, 1987 г.