- •Глава 8. Основы теории кодирования
- •8.2. Согласование источника с каналом по объемам алфавитов. Теоремы кодирования шеннона и потенциальные возможности системы передачи информации
- •8.2.1.Теорема Шеннона для дискретного канала связи без помех
- •8.2.2. Теорема Шеннона для дискретного канала связи с помехами
- •8.2.3. Теорема Шеннона для непрерывного канала связи
- •8.3. Основы экономного кодирования
- •8.3.1 Принципы экономного кодирования. Цель сжатия данных и типы систем сжатия
- •8.3.2. Префиксные коды
- •Избыточность кода Хаффмена
- •8.3.4. Код Шеннона-Фано
- •8.3.5. Неравномерное кодирование для последовательности сообщений
- •8.3.6. Арифметическое кодирование
- •Кодирование
- •Декодирование
- •8.3.7. Словарные методы сжатия
- •Кодирование
- •Декодирование
- •8.4. Основы помехоустойчивого кодирования
- •8.4.1 Принципы обнаружения и исправления ошибок
- •8.4.2. Классификация помехоустойчивых кодов
- •8.4.3. Основные характеристики помехоустойчивых кодов
- •8.4.4. Границы вероятности ошибочного декодирования
- •8.5. Блочные линейные коды
- •8.5.1. Математическое описание процессов кодирования и декодирования
- •8.5.2. Коды с проверкой на четность
- •8.5.3 Коды Хэмминга
- •8.5.4. Коды с постоянным весом
- •8.5.5. Циклические коды
- •1. Способы декодирования с обнаружением ошибок
- •2 Способы декодирования с исправлением ошибок
- •8.6. Непрерывные коды
- •8.6.1 Идея построения непрерывного кода Финка–Хегельбергера
- •8.6.2. Сверточные коды
- •8.6.3. Представление сверточных кодов с помощью многочленов
- •8.6.4. Графическое представление сверточных кодов
- •8.6.5. Методы декодирования сверточных кодов
- •8.6.6. Схемное построение декодера Витерби
- •8.7. Методы борьбы с ошибками
- •8.7.1. Системы с обратной связью
- •8.7.2. Формат кадра протоколов с обнаружением ошибок
- •8.7.3. Методы повторной передачи (arq)
- •8.7.4. Основные характеристики систем с решающей обратной связью
- •8.7.5. Показатели эффективности цифровой системы связи
8.5.3 Коды Хэмминга
Коды Хэмминга позволяют исправлять одиночную ошибку в блоке. Для каждого числа проверочных символов существует классический код Хэмминга с маркировкой
, (8.57)
т.е. — (7,4), (15, 11), (31, 26) ...
При других значениях числа информационных символов т получаются так называемые усеченные (или укороченные) коды Хэмминга. Так, для международного телеграфного кода МТК-2, имеющего 5 информационных символов, потребуется использование корректирующего кода (9,5), являющегося усеченным от классического кода Хэмминга (15,11), так как число символов в этом коде уменьшается (укорачивается) на 6. Для примера рассмотрим код Хэмминга (7,4).
В простейшем варианте при заданных четырех (т=4) информационных символах будем полагать, что они сгруппированы в начале кодового слова, хотя это и не обязательно. Дополним эти информационные символы тремя проверочными символами (), задавая их следующими равенствами проверки на четность, которые определяются соответствующими алгоритмами. Известно, что кодовое расстояние равно минимальному числу проверок, в которые входит информационный символ, плюс 1. В рассматриваемом коде. Следовательно, каждый информационный символ должен входить минимум в две проверки. Определим правило формирования проверочных символов следующим образом:
(8.58)
В соответствии с этим алгоритмом определения значений проверочных символов в табл. 8.13 приведены все возможные 16 кодовых слов кода Хэмминга (7,4).
Таблица 8.13. Кодовые комбинации кода Хэмминга (7,4)
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Составим производящую матрицу в канонической форме
или (табл.8.14).
Таблица 8.14. Производящая матрица в канонической форме
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
,
Составим проверочную матрицу
.
Транспонированная проверочная матрица будет иметь вид
.
Предположим, что на вход декодера для (7,4)-кода Хэмминга поступает кодовое слово
.
Апостроф означает, что любой символ слова может быть искажен помехой в канале связи и возникает ошибка .
В декодере в режиме исправления ошибок строится последовательность:
(8.59)
где – результат декодирования (синдром), который в данном случае является трехсимвольным.
Символы синдрома можно так же получить с использованием следующей процедуры
(8.60)
В данном случае синдром представляет собой сочетание результатов проверки на четность соответствующих символов кодовой группы и характеризует определенную конфигурацию ошибок(вектор ошибок).
Число возможных синдромов определяется выражением
. (8.61)
При числе проверочных символов имеется восемь возможных синдромов (23 = 8). Нулевой синдром (000) указывает на то, что ошибки при приеме отсутствуют или не обнаружены. Всякому ненулевому синдрому соответствует определенная конфигурация ошибок, которая и исправляется. Классические коды Хэмминга имеют число синдромов, точно равное их необходимому числу, позволяют исправить все однократные ошибки в любом информативном и проверочном символах и включают один нулевой синдром. Такие коды называются плотноупакованными.
Для рассматриваемого кода (7,4) в табл. 8.15 представлены ненулевые синдромы и соответствующие конфигурации ошибок.
Таблица 8.15. Ненулевые синдромы и соответствующие конфигурации ошибок для кода (7,4)
Синдром |
001 |
010 |
011 |
100 |
101 |
110 |
111 |
Конфи-гурация ошибок |
0000001 |
0000010 |
0001000 |
0000100 |
1000000 |
0010000 |
0100000 |
Ошиб- ка в символе |
Для определения и исправления искаженного разряда можно использовать матрицу одиночных ошибок, состоящую из единичной матрицы размерности , к которой приписывается транспонированная проверочная матрица.
.
При определении синдрома в проверочной матрице находится комбинация синдрома. Искаженный разряд – это разряд в данной строке, в которой стоит «1». Искаженный разряд исправляем посредством сложения строки в матрице ошибок полученной комбинации.
Пример. Для кода (7,4) задана комбинация .
Составляется матрица одиночных ошибок
Под воздействием помех принята комбинация - искажен третий разряд.
Определяем синдром
В проверочной матрице находим комбинацию 110.
Прибавляем третью строку единичной матрицы к полученной комбинации .
Сообщение исправлено.
Таким образом, код (7,4) позволяет исправить все одиночные ошибки. Простая проверка показывает, что каждая из ошибок имеет свой единственный синдром. При этом возможно создание такого цифрового корректора ошибок (дешифратора синдрома), который по соответствующему синдрому исправляет соответствующий символ в принятой кодовой группе. После внесения исправления проверочные символы на выход декодера не выводятся. Две или более ошибок превышают возможности корректирующего кода Хэмминга, и декодер будет ошибаться. Это означает, что он будет вносить неправильные исправления и выдавать искаженные информационные символы.
Идея построения подобного корректирующего кода, естественно, не меняется при перестановке позиций символов в кодовых словах. Все такие варианты также называются кодами Хэмминга (7,4). Часто проверочные разряды располагают не в начале или конце информационных разрядов, а в определенных местах. Рассмотрим методику построения такого кода на примере кода (7,4). Переведем номера разрядов в двоичную систему счисления и поставим им в соответствие проверочные и информационные разряды (табл.8.16).
Таблица 8.16. Места расположения информационных и проверочных разрядов и формирование проверочных разрядов для кода Хэмминга (7,4)
№ разряда |
№ разряда в двоичной системе |
Места расположения информационных и проверочных разрядов и формирование проверочных разрядов |
1 |
001 |
=++ |
2 |
010 |
=++ |
3 |
011 | |
4 |
100 |
=++ |
5 |
101 | |
6 |
110 | |
7 |
111 |
Т.е. 1-й проверочный разряд расположен там, где номер разряда имеет только одну 1 и к тому же на 1-м месте. Ему соответствует разряд под номером 1. Второй проверочный разрядрасположен там, где номер разряда имеет так же только одну 1 и к тому же на 2-м месте. Ему соответствует разряд под номером 2. Третий проверочный разрядрасположен там, где номер разряда имеет так же только одну 1 и к тому же на 3-м месте. Ему соответствует разряд под номером 4. Оставшиеся разряды 3-й, 5-й, 6-й и 7-й заполняем информациоными разрядами.
Выпишем разряды, у которых первый разряд равен 1:
= 1, 3, 5, 7.
Выпишем разряды, у которых второй разряд равен 1:
= 2, 3, 6, 7.
Выпишем разряды, у которых третий разряд равен 1:
= 4, 5, 6, 7.
Для получения первого проверочного разряда суммируем все разряды первой строки , кроме первого, т.е. 3, 5 и 7.
.
Для получения второго проверочного разряда суммируем все разряды второй строки , кроме первого, т.е. 3, 6, 7:
.
Для получения третьего проверочного разряда суммируем все разряды третьей строки , кроме первого, т.е. 5, 6, 7:
.
При этом синдром укажет номер искаженного разряда. Так, если синдром равен 0 1 1, то искажен третий разряд. Ему соответствует 1-й информационный символ.
Усеченные коды являются неплотно упакованными, так как число синдромов у них превышает необходимое. Так, в коде (9,5) при четырех проверочных символах число синдромов будет равно 24 =16, в то время как необходимо всего 10. Лишние 6 синдромов свидетельствуют о неполной упаковке кода (9,5).
Рассмотрим методику формирования проверочных разрядов на примере усеченного кода (9,5). В коде (9,5) имеется 9 разрядов, 5 из которых являются информационными. Пронумеруем разряды в десятичной и двоичной системе счисления (табл.8.17). Номерам разрядов в двоичной системе будут соответствовать синдромы.
Таблица 8.17. Места расположения информационных и проверочных разрядов и формирование проверочных разрядов для кода Хэмминга (9,5)
Расположим проверочные разряды на тех позициях, которым соответствуют номера разрядов в двоичной системе с одной единицей, а именно расположим на 1-м месте (№ разряда в двоичной системе – 0001),на 2-м (0010),на 4-м (0100) ина 8-м (1000). Информационные разряды расположим на оставшихся местах. Проверочный разрядполучим суммированием информационных разрядов, которым соответствует номер с единицей в 1- разряде двоичной системы счисления. Проверочный разрядполучим суммированием информационных разрядов, которым соответствует номер с единицей во 2- разряде двоичной системы. Аналогичнои. Для формирования разрядаостался один информационный разряд, что характерно для усеченных кодов. Чтобы не было простого дублирования информационного разряда для формированиявозьмем еще какой-нибудь разряд, например,, который также можно исключить из формирования. Тогда, а. Если же мы исключилиизи ввели в, то его номер также должен быть изменен. Поэтому теперьсоответствует номер 1110. Рассмотрим пример. Необходимо закодировать сообщение 1 1 0 1 0.
Имеется 5 информационных разрядов :
|
|
|
|
|
1 |
1 |
0 |
1 |
0 |
Рассчитаем количество проверочных разрядов
Маркировка кода Хэмминга .
Необходимо, чтобы выполнялось условие: ,– число полученных разрядов.
Если принять ,
23 =8;
тогда =8-1=7;7-5=2. 22 < 7+1 неравенство не выполняется.
Примем ,
24 =16;
тогда =16-1=15;15-5=10. 210 ≥ 15+1 неравенство выполняется.
24 ≥ +1,=4+5=9.
Получен код (9,5).
Получим проверочные разряды
1 1 0 1 0
=1+1+0=0;
=1+0+1=0;
=1+0+1=0;
=1+0=1.
Закодированное сообщение будет иметь вид:
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
Проверочные разряды можно также получить при помощи суммирования номеров ненулевых информационных разрядов в двоичной системе. Для данного примера ненулевыми информационными разрядами являются ,и. Им соответствуют номера разрядов 0 0 1 1, 0 1 0 1 и 1 1 1 0 соответственно. Просуммируем эти номера и получим проверочные разряды (табл. 8.18).
Таблица 8.18. Правило формирования проверочных разрядов
Разряд |
№ разряда |
0 0 1 1 | |
0 1 0 1 | |
1 1 1 0 | |
Сумма |
1 0 0 0 |
Проверочные разряды |
Пусть под воздействием помех в данной комбинации исказился 7=й разряд, т.е. 0 0 1 0 1 00 1 0. Определяем синдром:
=0+1+1+0=0;
=0+1+0+0=1;
=0+1+0+0=1;
=1+0+0=1.
Получен синдром 1 1 1 0.
Смотрим в таблицу 8.17 и ищем синдром 1 1 1 0 и определяем, что ему соответствует 7-й разряд. Исправляем 7-й разряд 0 0 1 0 1 0 1 1 0. Сообщение исправлено. Исключаем проверочные символы: 1 1 0 1 0.
Расширенные коды Хэмминга получают в результате дополнения кодов с общей проверкой каждой из кодовых комбинаций на четность, т.е. еще одним проверочным символом. Это позволяет увеличить минимальное кодовое расстояние до.
За показатель помехоустойчивости кода Хэмминга примем вероятность приёма кодовой комбинации с ошибками.
Расчёт вероятности ошибки произведём для семиэлементного кода, считая искажения символов в кодовых комбинациях равновероятными и независимыми.
Приём с ошибкой при применении кода Хемминга с исправлением одиночной ошибки будет в том случае, если искажено более одного символа. В соответствии с этим вероятность искажения кодовой комбинации равна
, (8.62)
где - вероятность отсутствия искажений;
- вероятность возникновения одной ошибки.