Министерство образования и науки Российской Федерации Саратовский государственный технический университет Балаковский институт техники, технологии и управления КОДЫ С ОБНАРУЖЕНИЕМ И ИСПРАВЛЕНИЕМ ОШИБОК. КОДЫ ХЕММИНГА Методические указания к выполнению лабораторной работы по курсу “Информационные сети и телекоммуникации” для студентов специальности 210100 всех форм обучения Одобрено редакционно-издательским советом Балаковского института техники, технологии и управления Балаково 2005 Цель работы: ознакомление с основными принципами помехозащищенного кодирования. Получение практических навыков помехоустойчивого кодирования и исследование корректирующих свойств кода Хемминга. ОСНОВНЫЕ ПОНЯТИЯ Помехоустойчивое кодирование При телеуправлении, телеизмерении и телесигнализации в информационно-измерительных и информационно-управляющих системах (ИИС и ИУС) вся необходимая информация передается по каналам связи. При этом передача должна осуществляться без искажений или с минимальными искажениями. Для минимизации искажений информации в системах передачи данных (СПД) используется ее кодирование. Кодирование в СПД - это преобразование дискретного сообщения в дискретный сигнал, осуществляемое по определенному правилу. Обратный процесс-декодирование - это восстановление дискретного сообщения по сигналу на выходе дискретного канала, осуществляемое с учетом правила кодирования. Код есть совокупность условных сигналов или символов, обозначающих дискретные сообщения. Кодовая комбинация - это представление дискретного сигнала в соответствующем (например, двоичном) коде. Кодирование нашло широкое применение в современных информационных системах при защите передаваемой информации от помех либо несанкционированного доступа. Коды делятся на две основные разновидности: помехозащищенные и непомехозащищенные. Особенностью непомехозащищенных кодов является наличие их в составе кодовых комбинаций, которые отличаются друг от друга лишь в одном разряде. Типичным 2 кодом такого типа является двоичный код на все сочетания. Существует много непомехозащищенных кодов, например, единично-десятичный код, двоично-десятичный код, числоимпульсный код, код Морзе, код Грея и другие [1-3]. Помехозащищенными называют коды, позволяющие обнаружить или обнаружить и исправить ошибки в кодовых комбинациях. Отсюда деление этих кодов на две большие группы: 1. Коды с обнаружением ошибок. 2. Коды с обнаружением и исправлением, ошибок (корректирующие). Основой для обнаружения и исправления ошибок такими кодами является увеличение кодового расстояния между кодовыми комбинациями (кодовые комбинации различаются в двух и более разрядах). Кодовое расстояние (Хемминга) - это минимальное число элементов, в которых одна кодовая комбинация отличается от другой (по всем парам кодовых слов). В корректирующих кодах комбинации построены по определенному правилу, например, содержат четное число единиц. Построение помехоустойчивого кода с недоиспользованием части кодовых комбинаций, приводящей к так называемой “избыточности”. Избыточность означает, что из исходных символов можно построить больше комбинаций, чем предусмотрено при их приеме. Таким образом, уменьшение числа используемых комбинаций приводит к повышению помехоустойчивости кода, которая связана с увеличением кодового расстояния. Коды с обнаружением и исправлением ошибок Если кодовые комбинации составлены так, что отличаются на кодовое расстояние d ≥ 3, то они образуют корректирующий код, который позволяет по имеющейся в кодовой комбинации, не только обнаруживать, но и исправлять ошибки. Составление корректирующих кодов производят по следующему правилу. Сначала определяют количество контрольных сим- 3 волов m, которые следует добавить к кодовой комбинации, состоящей из k информационных символов. Далее устанавливают место, где должны быть расставлены в комбинации, и их состав, т. е. является ли данный контрольный символ “1” или “0”. На приеме обычно делают проверку на четность определенной части разрядов. Коды Хемминга Эти коды позволяют определять все одиночные ошибки при d=3, а также исправлять все одиночные ошибки и обнаруживать все двойные ошибки при d=4 (но не исправлять их). Рассмотрим код Хемминга, исправляющий все одиночные ошибки. В качестве исходного берут двоичный код на все сочетания с числом информационных символов k, к которому прибавляют контрольные символы m. Таким образом, общая длина закодированной комбинации: n=k+m. Рассмотрим последовательность кодирования по Хеммингу. Сначала определяем число контрольных символов. При передаче по каналу с шумами может быть искажен любой из n символов кода, или слово передано без искажений. С помощью контрольных символов m можно описать два события. Значит должно быть выполнено условие: 2m > n+1=(k+m)+1 Размещение контрольных символов. Так как произвольное расположение контрольных символов затрудняет проверку принятого кода, то для удобства обнаружения искаженного символа целесообразно размещать их на местах, кратных степени 2 (1,2,4,8 и т.д.). Поэтому при k=4, m=3 закодированная комбинация будет выглядеть так: 4 m1, m2, k4 m3, k3, k2, k1 (1) Определение состава контрольных символов С помощью проверки на четность выявляют какой из символов должен стоять на позиции “1” или “0”. Рассмотрим это на примере приведенной выше комбинации. Таблица 1. Составление проверочной таблицы для кодов Хемминга Разряды двоичных чисел Символы кода k3 k2 k1 0 0 1 m1 0 1 0 m2 0 1 1 k4 1 0 0 m3 1 0 1 k3 1 1 0 k2 1 1 1 k1 Таблица 2. Проверочная таблица для кода Хемминга. m1 m2 m3 +k4 +k4 +k3 +k3 +k2 +k2 +k1 +k1 +k1 В таблице 1 записаны все кодовые комбинации (исключая нулевую) для трехразрядного двоичного кода на все сочетания и рядом справа, сверху вниз проставлены символы комбинаций кода Хемминга, записанные в последовательности (1). Из таблицы 1 составляется таблица 2, в которой выписаны символы в трех строках в следующей закономерности. В первую строку записывают символы, против которых проставлены 1 в младшем (первом) разряде комбинации двоичного кода в таблице 1. Во вторую 5 строку проверочных коэффициентов записываются символы, против которых проставлены 1 во втором разряде двоичного кода. В третью строку записываются символы, против которых проставлены 1 в третьем разряде двоичного кода (m3, k3, k2, k1,). Состав контрольных символов с помощью проверок определяют следующим образом. Суммируют информационные символы, входящие в каждую строку таблицы 2, если сумма единиц в данной строке четная, то значение символов m, входящих в эту строку .равно нулю, если нечетная, то единице. По первой строке таблицы 2 определяют значение символа m1, по второй - m2, по третьей - m3. Декодирование Для проверки правильности комбинаций снова используем метод проверки на четность. Если комбинация принята без искажений, то сумма единиц по модулю 2 дает 0. При искажении какого-либо символа суммирование при проверке может дать единицу. По результату суммирования каждой из проверок, составляет двоичное число, указывающее на место искажения. Результатом корректирующего декодирования будет кодовая комбинация, состоящая из 4-х символов (без проверочных). Декодирование проходит в три этапа: 1. Сначала с информационными символами - k1, k2, k3, k4 проводится кодирование по Хеммингу, т.е. формируются проверочные символы – m1*, m2*, m3*. Например, символ m1* равен сумме по модулю информационных символов k1, k2, k3, k4. m1*= k1+ k3+k4=1+1+1=1, т2*= k1+ k2+k4=1+0+1=0, m3*= k1+ k2+k3 =1+0+1=0. 2. Затем исходные проверочные символы (m1, m2, m3) сравнивают с полученными в результате кодирования (m1*, m2*, m3*), т.е. складывают по модулю 2. Если полученная сумма равна 0, то комбинация принята без ис- 6 кажений и ошибка отсутствует. В противном случае значение этой суммы указывает (если отсчет принять слева) на порядковый номер символа кодовой комбинации, который был искажен. В рассматриваемом примере m3+m3*=0, т2+m2*=1, m1+ m1*=0, значит был искажен символ k2 (1202 = 610). 3. На последнем этапе исправляют искаженный символ и выделяют его из исходной комбинации информационные символы. m3+m3* т2+m2* m1+ m1* Искаженный символ 0 0 1 m1 0 1 0 m2 0 1 1 k4 1 0 0 m3 1 0 1 k3 1 1 0 k2 1 1 1 k1 ОПИСАНИЕ ЛАБОРАТОРНОЙ УСТАНОВКИ Функциональная схема установки изображена на рис. 1. Исходное сообщение через ключи k1, k2, k3, k4, подается на ИС DD1, DD2.1 (К561ЛП2), где вырабатываются проверочные символы k1, k2, k3. Затем в исходную кодовую комбинацию заносится одиночная ошибка. Генератор ошибки собран на ИС DD7(K561JIA7), DD8(К561ИЕ1), DD9(K561HE10). С генератора тактовой частоты (DD7). Импульсы с частотой примерно 1 кГц поступают на вход “СЭ” счетчика (DD8). При переводе ключа “ПУСК” в верхнее положение одновременно запрещается генерация импульсов и “запирается” счетчик путем подачи “+5В” на “RSзащелку” (DD7.2, DD7.4) генератора и на вход “С” счетчика соответственно. Оставшаяся на выходах Q1, Q2, Q3, двоичная комбинация подается на выходы D1, D2, D4, дешифратора DD9, и на одном из его выходов 7 Y0, Y1,… Y7, появляется высокий уровень напряжения (т.е. “1”). Эта “1” складывается по модулю 2 с соответствующим разрядом исходного сообщения (ИС DD2.2, DD2.3, DD2.4, DD3). Полученная кодовая комбинация проверяется на наличие ошибки: -вычисляются проверочные символы m1, m2, m3 (DD4, DD5.1); -эти проверочные символы сравниваются с m1*, m2*, m3* соответственно (сложение по модулю 2) полученной кодовой комбинации (комбинации с ошибкой), ИС DD5.1, DD5.3, DD5.4; -результат сравнения подается на входы дешифратора DD10, а “1” на одном из его выходов указывает место ошибки в полученном сообщении; -исправляется заданное сообщение DD6. На индикатор (на верхней крышке стенда) выводятся (свечение светодиода означает “1” в данном символе): -в первом (верхнем) ряду слева направо выводятся символы исходной кодовой комбинации m1, m2, k4, m3, k3, k2, k1; -во втором ряду – символы m1, m2, k4, m3, k3, k2, k1 сообщения с ошибкой; -в третьем ряду, символы m1, m2, k4, m3, k3, k2, k1 исправленного сообщения. Варианты заданий: 1. 0011 6. 1000 2. 1001 7. 0101 3. 1101 8. 1111 4. 0100 9. 1010 5. 1101 10. 0111 Порядок работы с установкой. 1. Ознакомиться с правилами техники безопасности. 2. Включить установку в сеть. 8 3. С помощью ключей k1, k2, k3, k4 задать исходную кодовую комбинацию. 4. Перевести тумблер “ПУСК” в верхнее положение, во всех строках должны появиться кодовые комбинации. 5. Выполнить необходимые задания и зафиксировать полученные результаты. 6. Выключить установку из сети. Задания к лабораторной работе. 1. Набрать на ключах k1, k2, k3, k4 кодовую комбинацию, соответствующую варианту задания. 2. Зафиксировать полученные результаты. 3. Проверить правильность работы по примеру. 4. Кодовая комбинация из четырех символов была закодирована по Хеммингу и передана по каналу связи с ошибкой. Необходимо декодировать полученную комбинацию и исправить введенную ошибку. 9 10 Рис. 1. Функциональная схема установки КОНТРОЛЬНЫЙ ВОПРОСЫ 1. Дайте определение кодирования, декодирования, кода, кодовой комбинации, кодового расстояния. 2. Какие коды относят к непомехозащищенным кодам ? 3. Каковы особенности непомехозащищенных кодов ? 4. Какими бывают помехозащищенные коды ? 5. Изложите порядок кодирования по Хеммингу. 6. Как найти число контрольных символов “m”, для слов с числом информационных символов “k”? 7. Изложите порядок декодирования кода Хемминга. Литература: 1. Питерсон У. Коды, исправляющие ошибки - М. 1976г. 2. Тутевич В.Н. Телемеханика - М. 1985г. 3. Передача дискретных сообщений / Под ред. В.П. Шувалова. М.: Радио и связь, 1990. 4. Игнатов В.А. Теория информации и передачи сигналов. М.: Радио и связь, 1991. Время, отведенное на выполнение лабораторной работы: Подготовка к работе 4 академических часа Выполнение работы 4 академических часа Обработка результатов эксперимента, 4 академических часа оформление отчета 11 КОДЫ С ОБНАРУЖЕНИЕМ И ИСПРАВЛЕНИЕМ ОШИБОК. КОДЫ ХЕММИНГА Методические указания к выполнению лабораторной работы по курсам “Телемеханика” и “Передача данных в информационно-управляющих системах” для студентов специальности 210100 всех форм обучения Составил Рецензент Редактор Корректор Подписано в печать Формат Бум. Тип. Усл. печ. л. Уч.-изд. л. Тираж Заказ Бесплатно Саратовский государственный технический университет 410054, г. Саратов, ул. Политехническая, 77 Копипринтер БИТТиУ, 413840, г. Балаково, ул. Чапаева, 140 12