ÌÈÍÈÑÒÅÐÑÒÂÎ ÎÁÐÀÇÎÂÀÍÈß È ÍÀÓÊÈ ÐÎÑÑÈÉÑÊÎÉ ÔÅÄÅÐÀÖÈÈ
Ãîñóäàðñòâåííîå îáðàçîâàòåëüíîå ó÷ðåæäåíèå âûñøåãî ïðîôåññèîíàëüí...
41 downloads
459 Views
932KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ÌÈÍÈÑÒÅÐÑÒÂÎ ÎÁÐÀÇÎÂÀÍÈß È ÍÀÓÊÈ ÐÎÑÑÈÉÑÊÎÉ ÔÅÄÅÐÀÖÈÈ
Ãîñóäàðñòâåííîå îáðàçîâàòåëüíîå ó÷ðåæäåíèå âûñøåãî ïðîôåññèîíàëüíîãî îáðàçîâàíèÿ ÑÀÍÊÒ-ÏÅÒÅÐÁÓÐÃÑÊÈÉ ÃÎÑÓÄÀÐÑÒÂÅÍÍÛÉ ÓÍÈÂÅÐÑÈÒÅÒ ÀÝÐÎÊÎÑÌÈ×ÅÑÊÎÃÎ ÏÐÈÁÎÐÎÑÒÐÎÅÍÈß
ОСНОВЫ КОДИРОВАНИЯ СООБЩЕНИЙ В СИСТЕМАХ СВЯЗИ Методические указания к выполнению лабораторных работ № 1–4
Ñàíêò-Ïåòåðáóðã 2004
Составитель Г. И. Никитин
Рецензент доктор технических наук, профессор В. А. Силяков
Методические указания к выполнению лабораторных работ посвящены актуальному для систем связи вопросу кодирования текстовых сообщений. Дается теоретическое описание различных вариантов кодов. Рассматривается порядок выполнения лабораторных работ. Предназначены для радиотехнических специальностей всех форм обучения. Подготовлены кафедрой радиотехнических систем и рекомендованы к изданию редакционно-издательским советом Санкт-Петербургского государственного университета аэрокосмического приборостроения.
© ГОУ ВПО СПбГУАП, 2004
Редактор А. В. Семенчук Компьютерный набор и верстка Н. С. Степановой
Подписано к печати 03.06.04. Формат 60×84 1/16. Бумага офсетная. Печать офсетная. Усл. печ. л. 7,95. Уч. -изд. л. 8,14. Тираж 150 экз. Заказ № 306
Редакционно-издательский отдел Отдел электронных публикаций и библиографии библиотеки Отдел оперативной полиграфии СПбГУАП 190000, Санкт-Петербург, ул. Б. Морская, 67
2
ПРЕДИСЛОВИЕ Подавляющее число современных систем связи работает при передаче самого широкого спектра сообщений (от телеграфа до телевидения) в цифровом виде. Из-за наличия помех в каналах связи ошибка при приеме любого цифрового символа (1 или 0) вызывает искажение передаваемой информации. Это может привести, особенно в космических системах связи при передаче цифровой информации, к катастрофическим последствиям. В настоящее время по каналам связи передаются цифровые данные со столь высокими требованиями к достоверности передаваемой информации, что удовлетворить эти требования традиционными путями совершенствования антенно-фидерных трактов радиолиний, увеличения излучаемой мощности, снижения собственного шума приемника оказывается экономически невыгодным или просто невозможным. Высокоэффективным средством борьбы с помехами в цифровых системах связи является применение помехоустойчивого кодирования, основанного на введении искусственной избыточности в передаваемое сообщение за счет добавления к информативным кодовым словам ряда проверочных символов. В последнее время коды, обнаруживающие и исправляющие ошибки при передаче цифровой информации в зашумленных каналах, нашли широкое применение во многих системах передачи и хранения информации. Так, в системах персонального радиовызова (пейджинговых системах), в сотовых и спутниковых системах применяются помехоустойчивые блочные циклические и непрерывные сверточные коды. Настоящие методические указания к выполнению лабораторных работ являются дополнением лекционных курсов: "Радиотехнические системы передачи информации", "Прикладная теория информации", "Системы подвижной радиосвязи" и "Спутниковые системы передачи информации". В процессе изучения этих курсов студенты выполняют 4 лабораторные работы: "Первичные коды", "Эффективные коды", "Корректирующие коды Хемминга" и "Циклические коды". 1
Методические указания написаны в соответствии с образовательным стандартом для инженеров: направление 654200 "Радиотехника", специализация 200700 "Радиотехника"; для магистров: направление 552500 "Радиотехника"; для студентов всех форм обучения: направление 654100 "Электроника и микроэлектроника", специализация 200400 "Промышленная электроника". Автор выражает признательность и благодарность М. Я. Романовой за помощь при подготовке материалов указаний к изданию и за корректировку программ выполнения лабораторных работ на компьютерах.
2
Список сокращений АКФ АРБ АТС БРК ВКФ ДУ ЗНД ЗУ ИКАО ИМО ИС ИСЗ ИЦСС КЭАТС КУ
– автокорреляционная функция – аварийный радиобуй – автоматическая телефонная станция – бортовой радиокомплекс – взаимнокорреляционная функция – декодирующее устройство – защита от несанкционированного доступа – запоминающее устройство – Международная организация гражданской авиации – Международная морская организация – источник сообщений – искусственный спутник Земли – интегрально-цифровые системы связи – квазиэлектронные АТС – кодирующее устройство Коды БЧХ – Боуза–Чоудхури–Хоквингема РС – Рида–Соломона ЦК – циклические коды НДК – натуральный двоичный код СДК – симметричный двоичный код КПВ – код с постоянным весом КПЧ – код с проверкой на четность Л П С – линейная переключательная схема МККТТ – Международный консультативный комитет по телефонии и телеграфии ММП – метод максимального правдоподобия ОКС – общий канал сигнализации ОФМ – относительная фазовая модуляция ПС – получатель сообщений ПСП – псевдослучайная последовательность П П И – пункт приема информации ППРЧ – программная перестройка рабочих частот СМД – синдромный метод декодирования СПД – система передачи данных СР – сдвигающий регистр ТИ – тактовый импульс ЦС – центр системы ЧВМ – частотно-временная матрица ЭМС – электромагнитная совместимость
3
Лабораторная работа № 1 ПЕРВИЧНЫЕ КОДЫ Цель работы: ознакомление со структурной схемой системы цифровой связи, с основными определениями и понятиями теории кодирования, изучение основных характеристик цифровых систем связи, систем синхронизации и принципов помехоустойчивого кодирования на примере первичного стандартного международного телеграфного кода МТК-2. 1. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ПОДГОТОВКЕ К ЛАБОРАТОРНОЙ РАБОТЕ Для допуска к выполнению лабораторной работы студенты должны предварительно получить зачет по коллоквиуму. При подготовке к коллоквиуму необходимо ознакомиться с разд. 1–3 ЛР № 1, рекомендованной литературой и подготовиться к ответам на контрольные вопросы и задачи (разд. 4). 1. 1. Структурная схема цифровой системы связи По своей структуре сообщения и соответствующие им сигналы, предназначенные для передачи от источника сообщения к получателю, делятся на дискретные (цифровые) и непрерывные (аналоговые). Дискретными называются такие сообщения, которые предполагают передачу конечного числа символов (знаков). Наиболее характерным примером дискретного сообщения является буквенно-цифровой текст. Как правило, под дискретными понимаются только цифровые сообщения, которые и передаются по цифровым системам связи. Непрерывными (аналоговыми) называются такие сообщения, в которых подлежащая передаче совокупность сведений является непрерывной функцией времени. К непрерывным сообщениям относятся: речь, музыка, передача изображений и т. п. Хотя реальные аналоговые сообщения могут иметь достаточно широкий спектр, однако их с достаточной для практики точностью можно передавать (воспринимать) в ограниченной полосе частот. Так, например, спектр частот речевого сигнала ограничивается полосой тональных частот, равной 300–3400 Гц [1, разд. 1.1 и 2.1]. 4
В. А. Котельниковым показано, что любая функция x(t) с ограниченным спектром (S(f) = 0 при частоте f > Fв) на протяжении конечного интервала времени Т при условии, что T Fв >> 1, может быть определена конечным числом отсчетов, равным Nотс = 2ТFв с достаточной для практики точностью. Необходимый период выборок (отсчетов), называемый периодом дискретизации ∆t, при этом будет ∆t =
T 1 , = N отс 2 Fв
(1.1)
где Fв – верхняя граничная частота спектра аналогового сигнала. Таким образом, передача любого непрерывного сообщения может быть сведена к передаче конечного числа символов, т. е. осуществлена теми же методами, что и передача дискретного сообщения в цифровой системе связи. Для преобразования аналоговых сообщений в цифровую форму требуется выполнение трех операций: дискретизация сообщения по времени; дискретизация сообщения по уровню (квантование); превращение сообщений, дискретизированных по времени и по уровню, в последовательности чисел, выраженных в виде соответствующих кодовых комбинаций. Устройства, которые осуществляют преобразование непрерывных сообщений в цифровую форму, называются аналого-цифровыми преобразователями (АЦП). Их часто называют также преобразователями "напряжение-код" [1, разд. 2.2]. Для формирования сигналов, передаваемых цифровой системой связи необходимо осуществить кодирование и модуляцию сообщений. Кодирование. В общем случае любые сообщения дискретного источника состоят из конечного множества символов, составляющих алфавит символов сообщений. Так, любой печатный текст состоит из конечного числа знаков (букв, цифр, знаков препинания), который для европейских языков составляет 52–55 знаков, а для китайского и ряда восточных языков – несколько тысяч знаков. Если требуется передать только буквы, которых в русском алфавите насчитывается 32, то необходимо передать ряд чисел от 0 до 31. При этом каждому символу дискретного сообщения (букве) должно соответствовать определенное число (номер). Закон, по которому устанавливается нумерация, выбирается с учетом 5
особенностей данного конкретного источника. Совокупность чисел составляет алфавит символов сигнала. Операция сопоставления (идентификация) элементов алфавита символов сообщений элементам символов сигнала называется кодированием. При этом алфавит символов сообщений обычно называют первичным алфавитом, а соответствующие им элементы алфавита символов сигнала – первичным кодом. В дальнейшем первичный код может быть подвергнут дополнительному кодированию (вторичному), в частности помехоустойчивому. Отметим, что первичный код по отношению к первичному алфавиту символов сообщения будет являться вторичным алфавитом. Таким образом, кодированием называют преобразование дискретных сообщений в дискретные сигналы, представляемые в виде кодовых комбинаций, а декодированием – обратный процесс однозначного восстановления передаваемых дискретных сообщений. Технические средства, осуществляющие эти операции, называются, соответственно, кодирующим устройством (кодером) и декодирующим устройством (декодером). При двухстороннем обмене сообщениями между двумя корреспондентами (дуплексная связь) в состав оборудования системы связи каждого корреспондента входят и кодер, и декодер. В этом случае кодирующе-декодирующее устройство называется кодеком. Модуляция. Под модуляцией понимается воздействие на один или несколько параметров сигнала – переносчика информации, который генерируется в передающем устройстве. В системах связи в качестве переносчика сообщений от передатчика к приемнику используются в большинстве случаев синусоидальные колебания или периодические последовательности импульсов. Реже используется постоянный ток – в кабельных линиях связи. Поскольку в цифровых системах связи, как правило, при кодировании сообщений применяется двоичный код ("1" и "0"), то модулируемый параметр должен принимать лишь два значения: одно, соответствующее передаче единицы, другое – нуля. Для подчеркивания этого факта процесс модуляции сигнала в данном случае называют манипуляцией, а более общий термин – модуляция используют в тех случаях, когда параметры сигнала изменяются непрерывно при передаче непосредственно аналоговых сообщений. Обычно осуществляется манипуляция только одного из параметров сигнала-переносчика. Если в качестве переносчика используется сигнал синусоидальной формы f (t) = Asin (ωt + ϕ), то можно осуществлять 6
модуляцию (манипуляцию) по амплитуде А, частоте ω или фазе ϕ, что приводит, соответственно, к амплитудной (АМ), частотной (ЧМ) и фазовой (ФМ) модуляциям. Если переносчиком является последовательность импульсов прямоугольной формы, то можно изменять их амплитуду (АИМ), а также временные параметры: ширину (ШИМ), частоту (период) следования (ЧИМ) или фазу (ФИМ). При использовании в качестве переносчика информации постоянного тока для передачи двоичной информации применяются полярные признаки: "1" передается импульсом положительной полярности, а "0" – импульсом отрицательной полярности ("активная пауза"). Возможно при передаче "1" генерировать импульс, а при "нулевой" посылке ничего не передавать в канал связи. В этом случае сигнал называют сигналом с "пассивной" паузой. Классификация основных модуляционных признаков сигналов показана на рис. 1.1. Модуляционные признаки сигналов
полярные
амплитудные
частотные
фазовые
временные
комбинированные
Рис. 1.1
Комбинированная модуляция подразумевает одновременное использование двух (двойная) и трех (тройная) видов модуляции, например по амплитуде и частоте (АМ–ЧМ), амплитуде и фазе (АМ–ФМ) и т. п. Устройства, осуществляющие модуляцию сигналов, называются модуляторами, а обратный процесс выделения кодовых слов из принятого модулированного сигнала (демодуляция) выполняют демодуляторы. При наличии в аппаратурном составе корреспондента и модулятора, и демодулятора такое объединенное устройство называется модемом. Выбор вида модуляции (манипуляции) при передаче сообщений определяется типом информационного канала, требованиями, предъявляемыми к помехоустойчивости систем связи, и технико-экономическими соображениями. Таким образом, система передачи цифровой информации представляет собой упорядоченную совокупность технических средств и в об7
щем случае содержит кодирующее и декодирующее устройство (кодек), модулятор и демодулятор (модем), передатчик и приемник сигналов, а также синхронизатор [1, разд. 6]. С помощью этих средств осуществляется передача информации в цифровой форме из одного пункта пространства в другой. Такая система вместе с каналом связи, включающим физическую среду, в которой распространяются содержащие передаваемую информацию сигналы, образует цифровую линию связи, структурная схема которой без синхронизатора приведена на рис. 1.2.
Источник сообщения
Модулятор
Кодер
Модем
Кодек Получатель сообщения
Декодер
Демодулятор
Линия связи
Передатчик Среда распространения Приемник
Источник помех
Канал связи
Рис. 1.2
По цифровым линиям связи можно передавать сообщения самой различной физической природы: цифровые данные, полученные от ЭВМ, речь, тексты, телеграммы, команды управления, результаты измерения различных физических величин с телеметрируемых объектов и т. д. Естественно, что все эти сообщения предварительно должны быть соответствующим образом преобразованы и затем унифицированы, т. е. представлены в цифровой форме, удобной для последующей передачи. Независимо от того, для каких целей и с помощью каких средств обеспечивается передача цифровой информации, качество передачи этой информации можно характеризовать рядом показателей. К наиболее важным из них относятся достоверность и скорость передачи информации. 8
1. 2. Основные характеристики цифровых систем связи Достоверность передачи информации
Система связи должна обладать помехоустойчивостью, т. е. способностью восстанавливать с достаточной верностью переданное сообщение при приеме сигнала, искаженного помехой, поступающей от различного рода источников помех (рис. 1.2). При приеме цифровой информации регистрируется последовательность импульсов, составляющая кодовое слово. Если в результате воздействия помех принятое кодовое слово не будет соответствовать переданному, то получателю с выхода декодирующего устройства при простом кодировании выдается искаженное сообщение. Для количественной оценки соответствия принятого сообщения переданному используют отношения чисел ошибочно принятых элементов сообщения Мош к общему числу переданных элементов Мобщ М К ош = ош . (1.2) М общ Следует различать достоверность, обеспечиваемую каналом связи (на разряд), и системой связи (на кодовое слово или группу слов). Отношение (1.2) называют частостью ошибок или коэффициентом ошибок. При ограниченном времени передачи величина Кош является случайной и зависит от этого времени. Однако если общее время передачи информации (сеанс связи) значительно и статистические характеристики процесса передачи при этом неизменны (стационарный канал связи), то величина Кош остается устойчивой и почти не меняется от сеанса к сеансу. Практически такие условия во многих случаях выполняются. Поэтому в первом приближении коэффициент ошибок можно считать близким к вероятности ошибки приема одного элемента сообщения p1. В связи с этим достоверность передачи цифровой информации, как правило, и оценивается величиной вероятности ошибочного приема p1 одного элемента сообщения. Из-за своей простоты и удобства оценка качества передачи цифровой информации по допустимому значению p1 нашла наиболее широкое применение. Скорость передачи информации
При передаче цифровой информации различают два понятия скорости передачи: техническую и информационную. 9
Техническая скорость характеризует быстродействие аппаратуры, входящей в состав передающей части системы связи. Она определяется количеством элементов дискретного сообщения, переданных в секунду. Эта характеристика была предложена в телеграфии французским инженером Жаном Бодо. В его честь единица технической скорости названа бодом. Техническая скорость передачи определяется величиной
B=
1 бод, τ0
(1.3)
где τ0 – длительность посылки одного элемента дискретного сообщения. Техническую скорость передачи часто называют скоростью манипуляции (модуляции). Зная продолжительность единичного интервала τ0, легко определить скорость манипуляции В и наоборот. Так, при В = 1000 бод = 1к бод → τ0 = 1 мс, или при τ0 = 20 мс → B = 50 бод. Наряду с технической скоростью передачи, в теории информации широко применяются понятия информационной скорости передачи и пропускной способности канала связи. Под информационной скоростью понимают количество информации, поступившее по линии связи от источника информации к получателю за одну секунду. Информационная скорость измеряется числом двоичных единиц (бит) в секунду. Термин «бит» происходит от английского названия двоичной единицы – binary digit. Скорость передачи информации зависит от целого ряда факторов: технической скорости передачи, статистических свойств источника, типа канала связи, применяемых сигналов, уровня помех и вида искажений сигналов в канале. Потенциальные возможности канала характеризует его пропускная способность, которая определяется как верхняя граница (или максимум) скорости передачи информации [1, разд. 2.3 и 4.2]. Необходимо отметить отличие в понятиях пропускной способности канала (информационной скорости) и технической скорости (скорости манипуляции). Пропускная способность характеризует быстродействие канала с информационной точки зрения, а скорость манипуляции – технические возможности аппаратуры. Пропускная способность является основной характеристикой при решении задачи согласования канала связи с источником сообщений. 10
Конкретные значения скорости передачи цифровой информации и вероятности ошибки существенно зависят от типа канала связи, вида сигнала и его энергии, уровня помех в канале, требований к качеству передачи и т. п. Так, при передаче команд, как правило, предъявляются очень высокие требования к достоверности и сравнительно невысокие требования к скорости передачи (вероятность искажения команды иногда не должна превышать 10–6–10–8, а время передачи команды может быть значительным – порядка секунды). Дискретные команды в некоторых системах управления должны обладать высокой криптостойкостью (не поддаваться быстрой расшифровке) и имитостойкостью (обладать свойствами, затрудняющими повторение команд с целью нарушения нормальной работы управления). При передаче цифровых последовательностей, полученных дискретизацией непрерывных сообщений, требования к достоверности передачи ниже, чем при передаче команд, и допустимая вероятность ошибки кодовой комбинации обычно составляет 10–3–10–5. Зато требования к скорости передачи существенно выше, и скорость может достигать значений в десятки и сотни тысяч двоичных единиц в секунду, а в современных цифровых системах связи доходит до десятков миллионов двоичных единиц в секунду. 1.3. Основные параметры кодов Коды характеризуются следующими основными параметрами. Основание кода (модуль) m определяется числом отличающихся друг от друга символов в алфавите. Простейший число-импульсный унитарный код имеет алфавит, состоящий из одних единиц, и применяется, например в АТС для вызова абонента по телефону с помощью телефонного диска (номеронабирателя). Все другие коды имеют алфавит, состоящий из двух ("0" и "1") и более символов, отличающихся друг от друга. Коды с основанием m = 2 называются двоичными, с основанием m = 3 – троичными и т. д. При использовании в процессе кодирования электрических импульсов значение m определяет число различных градаций их амплитуды, фазы, частоты или других так называемых избирающих признаков. В системах связи двоичная система счисления и двоичные коды получили наиболее широкое применение, главным образом, из-за сравнительно простой аппаратурной реализации логических операций и арифме11
тических действий, а также устройств для передачи, опознавания и запоминания сообщений. Преобразование сообщения в сигнал при двухпозиционных кодах производится с помощью простых электронных схем-триггеров, которые могут находиться только в одном из двух устойчивых состояний: 0 и 1. Устройства с тремя состояниями реализуются значительно сложнее, поэтому многоосновные коды с основанием m > 2 применяются значительно реже. Длина кодовой комбинации – n, называется разрядностью кода или длиной слова, n равно количеству символов (элементарных сигналов) в кодовой комбинации. Для конкретного заданного кода имеется свое множество (набор) кодовых комбинаций, каждая из которых соответствует передаче отдельного дискретного сообщения первичного алфавита источника сообщений. Код называется равномерным, если все кодовые комбинации одинаковы по длине (n = const), и неравномерным, если величина n в коде непостоянна (n = var). Неравномерность в длине кодовых комбинаций усложняет построение автоматических преобразующих устройств (наборных, буквопечатающих и др.), а также исключает возможность разделения кодовых комбинаций при их последовательном приеме без применения специальных разделительных символов между ними. Поэтому для упрощения работы декодирующих устройств предпочтительнее иметь одинаковое число элементов в каждой кодовой комбинации. Число кодовых комбинаций – N в коде, каждая из которых может передавать свое отдельное сообщение. Значение N для кода с основанием m и числом элементов n определяется выражением (1.4) N = mn . Совокупность кодовых комбинаций называется кодовым словарем. Если все возможные комбинации n-элементного кода используются для кодирования сообщения, то такой первичный код называется полным, а также простым или обыкновенным (иногда такой код называют примитивным). Основным назначением первичных кодов является представление дискретной информации источника сообщений в цифровой форме. Помимо первичных кодов в цифровых системах передачи информации находят применение корректирующие коды, позволяющие обнаруживать и исправлять ошибки, вызванные помехами в канале связи. В 12
соответствии с этим корректирующие коды получили название – помехоустойчивые коды. Сущность построения корректирующих (помехоустойчивых) кодов состоит в том, что из общего числа кодовых комбинаций N, которые можно получить при n-элементном коде (для двоичного кода N = 2n), для передачи сообщений выбирается меньшее число N0 < N комбинаций, называемых разрешенными. Остальные N – N0 комбинаций, называемые запрещенными, не используются для передачи сообщений, что приводит к избыточности в коде. Избыточность кода, в котором используются только N0 кодовых комбинаций из общего возможного числа N, характеризуется коэффициентом избыточности, определяемым выражением χ = 1−
log 2 N 0 n n − n0 , = 1− 0 = log 2 N n n
(1.5)
где n – число разрядов данного кода; n0 – число разрядов неизбыточного (полного) кода, у которого N0 такое же, как у данного кода (n > n0). Коды, обладающие большей избыточностью, имеют и большую помехоустойчивость. Увеличение избыточности приводит к уменьшению пропускной способности системы связи, так как значительно возрастает число элементов т в кодовых комбинациях. Поэтому выбор кодов с определенными корректирующими возможностями, а следовательно, и с определенной избыточностью, должен быть всегда строго обоснован, исходя из характера распределения ошибок в канале связи и получения необходимой достоверности принимаемой информации [1, разд. 5.1]. Кодовое расстояние – d определяется количеством разрядов, в которых одна кодовая комбинация данного кода отличается от другой. Для двоичного кода кодовое расстояние определяется количеством ненулевых разрядов при суммировании по модулю 2 двух сравниваемых кодовых комбинаций. Пример Кодовая комбинация
№1 –
Кодовая комбинация
№2 –
11110
Кодовое расстояние
d=4 }
11011
⊕
00101
13
Минимальное кодовое расстояние – dmin равно наименьшему числу не совпадающих по значению одноименных разрядов при попарном сравнении всех N комбинаций кода. Для двоичного кода dmin – это наименьшее количество ненулевых разрядов в сумме по модулю 2 всех пар кодовых комбинаций. Впервые понятие кодового расстояния ввел в теорию кодирования Р. Хемминг, поэтому dmin называют хемминговым расстоянием. Для полных, простых кодов (1.4) всегда dmin = 1. Пример Кодовая комбинация i-я Кодовая комбинация (i + 1)-я dmin = 1 }
⊕
00100 00101 00001
Очевидно, что при построении корректирующего кода желательно выбирать разрешенные кодовые комбинации таким образом, чтобы хемминговы расстояния между ними были как можно большими. Корректирующие коды могут обеспечивать решение задач обнаружения ошибок и исправления ошибок, возникших при передаче кодовых комбинаций по каналам связи. Корректирующие возможности избыточных кодов полностью характеризуются именно величиной кодового расстояния dmin. Если код используется только для обнаружения ошибок кратностью gобн, то необходимо и достаточно, чтобы dmin ≥ g обн + 1. (1.6) Кратностью ошибки g называют число позиций кодовой комбинации, на которых под действием помехи одни символы оказались замененными на другие, например 0 на 1 или 1 на 0. С учетом (1.6) условие обнаружения всех ошибок кратностью gобн записывается в виде (1.7) gобн ≤ dmin – 1. Чтобы можно было исправить все ошибки кратностью gиспр и менее, необходимо иметь большее минимальное расстояние, удовлетворяющее условию (1.8) dmin ≥ 2gиспр + 1. В этом случае любая кодовая комбинация с числом ошибок g отличается от каждой разрешенной комбинации не менее, чем в g + 1 позици14
ях. Условие исправления всех ошибок кратностью не более gиспр можно записать в виде d −1 g испр ≤ min . (1.9) 2 Корректирующие коды можно одновременно использовать и для обнаружения и для исправления ошибок [1, разд. 5]. Вес кода (кодовой комбинации) – W определяется для двоичного кода количеством единиц в данной кодовой комбинации. Пример Кодовая комбинация – 01111 – W = 4. Кодовая комбинация – 10000 – W = 1. Взвешенность кода – соответствие символов кода весовым коэффициентам системы счисления. Для любой системы счисления произвольное число N записывается в виде значений коэффициентов ki ряда N=
n −1
∑ ki mi = kn −1 mn−1 + ... + k1 m1 + k0 m0 ,
(1.10)
i=0
где N – число разрядов кода; k – весовой коэффициент (0 ≤ ki ≤ m–1). Характеристики кодов Двоичное
Основание
Недвоичное (многоосновной код) Длина (разрядность)
Закон комбинирования
Постоянная (неравномерные коды) Непостоянная (неравномерные коды) С полным использованием комбинаций (безызбыточный код) (избыточный код)
Правило сопоставления сообщений с кодовыми комбинациями
С обнаружением ошибок
С исправлением ошибок
Взвешенные коды Невзвешенные коды
Рис. 1.3
15
Если в основу правил соответствия кодовых комбинаций числам положены математические системы счисления (1.10), то такие коды называются арифметическими или взвешенными. Так, десятичное число 14 (по модулю 10) запишется в двоичной системе (по модулю 2) следующим образом: 14(mod 10) = 1 × 23 + 1 × 22 + 1 × 21 + 0 × 20 = 8 + 4 + 2 + 0 = 1110 (mod 2), где ki принимает только два значения: 0 и 1. Примером взвешенного кода является натуральный двоичный код (НДК), в котором все кодовые комбинации соответствуют последовательности чисел десятичной системы счисления. Примером невзвешенного кода является рефлексный двоичный код (РДК) Грея. Классификация основных характеристик кодов приведена на рис. 1.3. 1.4. Первичные стандартные коды К системам передачи дискретных сообщений относится система телеграфной передачи – самый старый вид электрической связи. Изобретателем электрического телеграфа был член-корреспондент Петербургской Академии наук П. Л. Шиллинг. Построенная им в 1832 г. линия телеграфной связи содержала многие элементы, используемые и в настоящее время. Продолжателем работ П. Л. Шиллинга был другой русский ученый академик Б. С. Якоби – изобретатель первого в мире буквопечатающего телеграфного аппарата (1850 г.). Им же впервые осуществлена передача телеграфных сигналов по одному проводу и разработан принцип синхронной передачи. Наибольшую известность и распространение получил код, предназначенный для передачи телеграфных сообщений, предложенный в 1837 г. американским изобретателем С. Морзе. Код Морзе, достаточно широко применяемый и до настоящего времени, является неравномерным, т. е. его комбинации содержат различное число знаков. В этом коде элементы кодовых комбинаций "1" и "0" используются в двух сочетаниях: как одиночные (0 и 1) или как тройные (111 и 000). Сигнал, соответствующий одной единице, называется точкой, трем единицам – тире. Нуль используется как элемент, отделяющий один знак от другого. Совокупность трех нулей завершает каждую кодовую комбинацию, что позволяет просто отделять одну кодовую комбинацию (букву) от другой. Таким образом, комбинация "000" является своеобразным маркером, обеспе16
чивающим фазирование по циклам [1, разд. 6]. Неоптимальность, а следовательно, и избыточность кода Морзе заложены в самой структуре построения кода и, в первую очередь, в наличии маркера "000". Очевидно, что для сокращения времени передачи необходимо присвоить наиболее часто встречающимся буквам в передаваемом тексте более короткие кодовые комбинации и наоборот. Именно по этому принципу и был построен код Морзе: он основан на статистике букв в английском языке. Статистика букв в русском языке, естественно, другая (максимальная вероятность появления буквы "О" равна 0,090, а минимальная – буквы "Ф" – 0,002), поэтому можно было бы улучшить код Морзе, переставив обозначения букв в соответствии с частотой их появления. По подсчетам А. А. Харкевича, построение модернизированного кода Морзе для русского языка позволило бы сократить среднюю длину кодовых комбинаций с 9,96 до 9,17 элементов (на 8%), т. е. полученная от этого экономия времени передачи была бы незначительна. Поскольку для передачи одного элемента кодовой комбинации (0 или 1) необходимо время τ0, то общее время передачи каждого знака будет существенно различаться. Так, самая короткая комбинация кода Морзе (буква "Е" – одна точка) по продолжительности равна 4τ0 (с учетом одного пробела – 000), а самая длинная (буква "Ш") – 18τ0. Большая неравномерность кода Морзе является его серьезным недостатком. К положительным свойствам кода Морзе следует отнести высокую помехоустойчивость и возможность приема на слух. Высокая помехоустойчивость кода Морзе обусловлена его большой избыточностью. При приеме на слух (за счет модуляции посылок тональной частотой) высокая достоверность принимаемой информации объясняется тем, что процесс преобразования сигнала в знак осуществляется человеком, который при достаточном опыте может различать сигналы, значительно искаженные помехами. Кроме того, при ручной манипуляции телеграфным ключом передача ведется со сравнительно небольшой скоростью манипуляции В = 10 – 20 бод (1.3). Для устранения недостатка, связанного с неравномерностью кода, французский инженер Ж. Бодо в 1874 г. предложил для телеграфной связи использовать двоичный равномерный пятиэлементный код. Учитывая заслуги Бодо в области телеграфии, Международный консультативный комитет по телефонии и телеграфии (МККТТ) в 1927 г. постановил единицу скорости манипуляции (1.3) называть в его честь бодом. 17
Если в секунду передается один элементарный импульс, то скорость передачи равна 1 боду. Поскольку пятиэлементный двоичный код позволяет получить только 32 кодовые комбинации (25 = 32), а число необходимых кодовых комбинаций для передачи различных букв, цифр и знаков равно 56, то при использовании кода Бодо применяется двухрегистровый режим работы. При этом весь первичный алфавит (буквы, цифры, знаки) разделяется на две равные группы (два регистра), в каждой из которых оказывается по 28 символов алфавита. Каждому регистру приписывается специально выделяемая кодовая комбинация, которая является его признаком (адресом). При переходе от одного регистра к другому производится смена адреса, и те же самые кодовые комбинации используются теперь для передачи величин, входящих в состав второго регистра. В тех случаях, когда структура передаваемых сообщений такова, что переходы с одного регистра на другой и обратно используются сравнительно редко, среднее время, требуемое для передачи одного знака сообщения при пятиэлементных кодовых комбинациях, оказывается меньшим по сравнению с использованием непосредственно шестиэлементного кода (26 = 64). В конце XIX века американский инженер Д. Муррей предложил двоичный пятиэлементный код, который отличался от кода Бодо тем, что для наиболее часто встречающихся букв и знаков использовались кодовые комбинации с наименьшим числом ненулевых разрядов. Такой код позволил уменьшить нагрузку на телеграфную аппаратуру и повысить надежность ее работы. Коды Бодо и Муррея многие годы применялись на телеграфных линиях связи. Кроме того, находили применение и некоторые другие разновидности двоичных пятиэлементных кодов. В условиях быстрого развития телеграфной связи применение различных кодов препятствовало унификации телеграфной аппаратуры и затрудняло развитие международных телеграфных линий связи. В конце 20-х гг. ХХ века назрела необходимость в стандартизации телеграфного кода. В 1931 г. МККТТ принял стандартный код 1, в основу которого положен код Бодо. В 1932 г. был принят стандартный код 2, в основу которого положен код Муррея. Для телеграфных аппаратов с русско-латинским алфавитом был разработан вариант Международного телеграфного кода 2 (МТК-2). Таблица этого равномерного 5-элементного кода составлена так, чтобы на 18
регистрах "буквы латинские" и "цифры" она совпадала с международным стандартом МККТТ (Прил 1). Для русского алфавита введен третий регистр, переход на который осуществляется передачей комбинации из пяти нулей. Разместить 31 русскую букву аналогично латинским не удается, поэтому 5 русских букв помещены в цифровом регистре. Отметим, что знаки в таблице кода размещены таким образом, чтобы соответствующие им кодовые комбинации МТК-2 шли в порядке возрастания номеров этих знаков. Код МТК-2 получил повсеместное распространение и до сих пор широко используется в буквопечатающих телеграфных аппаратах. В тех случаях, когда передаваемый текст в равной мере содержит буквы и цифры, экономнее использовать равномерный шестиэлементный код, общее число комбинаций которого составляет 26 = 64. Внедрение ЭВМ в системы управления потребовало передачи по каналам связи ряда вспомогательных служебных комбинаций, т. е. расширения первичного кода. В связи с этим был разработан и применяется в системах передачи данных семиэлементный равномерный код, названный стандартным кодом передачи данных (СКПД). Применяющийся стандартный первичный код МТК-2 и соответствующая аппаратура используются в настоящее время, наряду с другими новыми кодами. В данной лабораторной работе исследуется именно код МТК-2. 1.5. Принципы помехоустойчивого кодирования При передаче цифровых сообщений по реальным каналам связи возникают искажения принятых кодовых комбинаций из-за воздействия помех. В случае применения двоичных кодов (символы "1" и "0") при действии помех вместо единицы может быть принят нуль и наоборот. Это приведет к регистрации в месте приема другой используемой кодовой комбинации, а следовательно, к приему другого знака первичного алфавита. Старейшим способом повышения достоверности в системах передачи является способ многократного повторения (дублирования) всего сообщения или его отдельных элементов. На приемном конце канала связи при этом применяется метод накопления повторяющихся посылок путем принятия решения о виде символа по "k" повторившимся значениям в процессе l-кратной передачи (метод "k" из "l") или по большинству принятых одноименных элемен19
тов (метод "голосования по большинству" или "мажоритарный метод"). Этот метод повышения помехоустойчивости исследуется в данной лабораторной работе. К методу многократного повторения примыкают методы повышения помехоустойчивости при применении корреляционного и инверсного кодов, а также кода с проверкой на четность. Подробнее эти виды кодов необходимо изучить при подготовке к сдаче отчета по данной работе, прочитав разд. 5.3 в [1]. 1.6. Методы синхронизации и фазирования в цифровых системах связи В современных цифровых системах связи кодированные сообщения передаются по каналам связи с постоянной скоростью и представляют собой непрерывную последовательность набора "1" и "0". Поэтому необходима синхронизация отсчетов времени в передатчике и приемнике для верного декодирования как отдельных сигналов с длительностью τ0, так и кодовых слов, содержащих n единичных элементов с длительностью nτ0. В соответствии с этим различают два вида синхронизации: по элементам (тактовая синхронизация) и кодовым комбинациям (фазирование по циклам). Восстановление цикловой синхронизации путем последовательного сдвига импульсов фазирования с шагом, равным длительности τ0 тактовых интервалов, демонстрируется при выполнении лабораторной работы. Подробнее изучить методы синхронизации и фазирования в цифровых системах связи необходимо самостоятельно при подготовке к сдаче отчета по данной работе, прочитав разд. 6 в [1]. 2. ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ Описание работы
Первый этап лабораторной работы – ввод кодограммы с клавиатуры компьютера, содержащей от 4 до 10 буквенных символов. Далее происходит автоматическое преобразование введенной буквенной последовательности в двоичную кодовую последовательность. Перекодировка осуществляется с использованием таблицы кода МТК-2, хранящейся в памяти (Прил. 2). Закодированное первичным кодом сообщение отображается на экране. Для наглядности коды отдельных символов разделены маркерами в 20
виде пробелов между кодовыми словами (в синхронных системах связи пробелов нет, коды следуют «впритык» друг за другом). Далее на экране производится демонстрация влияния помех в канале связи и сбоев в фазировании по циклам на качество принятой и декодированной информации. При наблюдении влияния помех с помощью датчика случайных чисел производится инвертирование (замена 1 на 0 или 0 на 1) отдельных разрядов в одной из букв кодограммы. Номера искажаемых букв и разрядов случайны, возможно совпадение искажаемых букв и разрядов при пятикратном повторении кодограммы. При исследовании влияния сбоев в цикловой синхронизации производится последовательный сдвиг исходной двоичной кодограммы на один, два, три, четыре и пять разрядов вправо и влево. После каждого сдвига осуществляется декодирование сдвинутой последовательности в соответствии с таблицей кода МТК-2 и вывод самой сдвинутой последовательности (с маркерами-пробелами) и результата ее декодирования. Вывод на экран сдвинутой последовательности сопровождается текстовой информацией с указанием величины сдвига. Цикловая синхронизация восстанавливается при сдвиге на пять разрядов (с «потерей» первых букв), так как первичный код МТК-2 – пятиразрядный. Этим имитируется процесс поиска начала кодовых слов при установлении начальной синхронизации по циклам с помощью "контрольного" слова [1, разд. 6]. Текстовой пример, поясняющий ход выполняемых операций и наблюдаемый на экране, приведен в Прил. 3. Пример в приложении представлен в укороченном виде. Всего на экране представляется 50 строк, которые необходимо будет переписать для последующего помещения в отчет по работе и обработки данных. Выполнение работы
2.1. Для выполнения лабораторной работы необходимо выбрать соответствующую позицию в меню и нажать клавишу <ENTER>. После ее нажатия в левом нижнем углу экрана появится подсказка: Введите кодируемое сообщение > 2.2. После согласования с членами бригады, выполняющей работу, ввести контрольное слово, содержащее не менее 4 и не более 10 символов, например, имя или фамилию одного из членов бригады (ЕЛЕНА, 21
ИГОРЬ, ЖАРОВ), наименование футбольной команды (СПАРТАК, ДИНАМО) и т. п. Кодовое слово необходимо набрать на клавиатуре прописными буквами. 2.3. После набора контрольного слова необходимо нажать клавишу < ENTER > 2.4. Далее происходит автоматическое преобразование введенной символьной информации в двоичную кодовую последовательность, согласно таблице кода МТК-2. 2.5. В случае некорректного ввода символов в правом нижнем углу экрана появится окно с диагностическим сообщением. Окно исчезнет после нажатия любой клавиши и произойдет завершение работы. 2.6. Если символы введены корректно, то в верхней части экрана появится окно с введенным сообщением, представленным в символьной и двоичной форме. Для наглядности коды отдельных символов разделяются пробелами (в синхронных системах связи коды следуют "впритык" друг за другом без пробелов). Аккуратно спишите символьное и двоичное представления введенного сообщения на развернутый лист в клеточку. Кодовые слова необходимо писать одно под другим так, как это представляется на экране. Учтите, что всего на листе придется разместить 50 строк. 2.7. Далее производится демонстрация влияния помех в канале связи на качество принятой информации. С помощью датчика случайных чисел с равномерным законом распределения производится инвертирование отдельных разрядов в одном из кодовых слов кода МТК-2. 2.7.1. Искаженное сообщение в двоичной и символьной форме появляется в окне, расположенном под окном с эталонным сообщением. 2.7.2. Следуя указанию в нижней части экрана, аккуратно спишите искаженное кодовое слово в следующей строчке под соответствующим словом из эталонной последовательности и нажмите клавишу < ENTER > 2.7.3. Пп. 2.7.1–2.7.2 будут повторяться, причем возможны совпадения номеров искаженных кодовых слов и разрядов, в силу ограниченности диапазона датчика случайных чисел. 2.8. По окончании демонстрации влияния помех в канале связи производится демонстрация и исследование влияния сбоев цикловой синхронизации. Производится последовательный сдвиг эталонного сообщения на один, два, три, четыре и пять разрядов вправо и влево. 22
2.8.1. Сообщения с нарушенной синхронизацией появляются в окне, расположенном как и в п. 2.7.1. Действия при фиксации результатов сбоя в цикловой синхронизации, аналогичны рассмотренным в пп. 2.7.1– 2.7.2, за исключением того, что искаженные последовательности следует переписывать полностью. Цикловая синхронизация восстанавливается при сдвиге на 5 разрядов, так как первичный код МТК-2 – пятиразрядный. 2.9. По окончании исследования влияния сбоев в цикловой синхронизации студентам предлагается эксперимент, имитирующий простейший способ введения избыточности при передаче данных в канале с однократными ошибками. 2.9.1. В окне в верхней части экрана появляется случайным образом сформированная исходная кодограмма, представленная в двоичной форме, с однократной ошибкой в одном из кодовых слов (1-й прием). 2.9.2. Под кодограммой из п. 2.9.1 появляется исходная кодограмма с однократной ошибкой в другом кодовом слове (2-й прием). Необходимо зафиксировать в черновике обе кодограммы. 2.9.3. В правом нижнем углу экрана появляется окно, в котором последовательно задаются вопросы о характеристиках получившегося избыточного кода: коэффициент избыточности, минимальное кодовое расстояние, кратности обнаруживаемых и исправляемых ошибок для данного случая. 2.9.4. Необходимо последовательно по мере появления вопросов в окне ввести ответы на эти вопросы. 2.9.5. В случае ошибки при вводе (неверные значения или некорректный формат) в правом нижнем углу экрана появится окно с диагностическим сообщением, которое необходимо проанализировать. Окно исчезнет после нажатия любой клавиши. 2.9.6. П. 2.9.4 повторяется до правильного ответа на вопрос. 2.9.7. В случае корректного ввода введенные значения снабжаются комментарием "ВЕРНО!". 2.9.8. Под кодограммой из п. 2.9.2 появится исходная кодограмма с однократной ошибкой в кодовом слове, не совпадающим с искаженными словами из пп. 2.9.1 и 2.9.2 (3-й прием). 2.9.9. Необходимо выполнить действия пп. 2.9.3–2.9.7 для случая трехкратного приема. 2.9.10. По окончании ввода ответов в средней части экрана появится окно с указанием о выполнении мажоритарного декодирования. 23
2.9.11. Руководствуясь правилом мажоритарного декодирования, необходимо ввести правильную кодограмму в двоичном виде. Для наглядности кодовые слова целесообразно отделять друг от друга пробелами. 2.9.12. В случае неправильно выполненного декодирования в правом нижнем углу экрана появится окно с диагностическим сообщением, которое необходимо проанализировать. Окно исчезнет после нажатия любой клавиши. 2.9.13. В случае правильно выполненного декодирования в средней части экрана появится окно с комментарием "ВЕРНО!" и декодированной кодограммой в символьной форме. 2.9.14. Пп. 2.9.1–2.9.13 необходимо зафиксировать в черновике. 2.10. На этом выполнение лабораторной работы заканчивается и на экране появится основное меню. 3. ПОРЯДОК ОФОРМЛЕНИЯ И СОДЕРЖАНИЕ ОТЧЕТА При оформлении отчета следует пользоваться методической разработкой "Первичные коды" и [1–5]. 1. Поместить в отчете рис. 1.1–1.3 настоящих методических указаний и текст, списанный с экрана. 2. По данным распечатки "Искажения отдельных разрядов" осуществить мажоритарное декодирование букв контрольного слова, в кодовых словах которых имеются ошибки, последовательно для l = 2, 3, 4, 5 повторений (пример и разд. 5.3.1в [1]). 3. Рассчитать избыточность c кодовых слов при числе повторений l =1, 2, 3, 4, 5 и построить график зависимости χ = f (l). 4. Определить минимальное кодовое расстояние dmin для первичного кода и для повторяющихся кодовых слов (l = 2, 3, 4, 5). Построить график зависимости dmin = f (l). 5. Определить из логических соображений значения числа обнаруживаемых ошибок gобнl и числа исправляемых ошибок gиспрl в каждом разряде кодового слова при числе повторений кодовых слов – l = 1, 2, 3, 4, 5 и мажоритарном методе декодирования. На одном графике построить зависимости gобнl = f (l) и gиспрl = f (l). Вывести формулы, связывающие gобнl и gиспрl с числом повторений l. Отметим, что выражения (1.7) и (1.9) позволяют определить число обнаруживаемых gобн и исправляемых gиспр ошибок в пределах одного кодового слова при применении корректирующих кодов, в то время как 24
gобнl и gиспрl определяют соответствующее число ошибок в одном разряде кодового слова. При методе повторений g-кратные ошибки обнаруживаются или исправляются одновременно во всех разрядах повторяющегося l раз кодового слова. 6. Определить значение вероятности p1 ошибочного приема символа по выборке, представленной в отчете. Поскольку в контрольное слово при имитации воздействия помех вносится всего одна ошибка (искажается один разряд), то 1 p1 = , bn где b – число букв в контрольном слове; n – число разрядов кода (для МТК-2 n = 5). 7. Определить по рассчитанной в п. 6 вероятности p1 значение вероятности pош ошибочного приема кодового слова (одной буквы) без повторения кодограмм (l = 1). 8. При числе повторений кодовых слов l = 1, 2, 3, 4, 5 определить из логических соображений значение кратности ошибки gош, приводящее к ошибочному приему кодового слова, при приеме с инверсией одного и того же разрядного символа. Найти аналитическое выражение, связывающее кратность ошибки gош с числом повторений l. Построить график зависимости gош = f (l). 9. Рассчитать вероятность pg того, что ошибка будет иметь кратность не менее gош, воспользовавшись данными расчетов пп. 6 и 7. Учесть, что при значениях вероятности ошибочного приема символа p1 < 0,1 (п. 6) вероятность pg (формула (90) в [1]) может быть рассчитана по упрощенной формуле pg = Clg p1g (1 − p1 )l − g , g
g
где Cl – число сочетаний l по g: Cl = l! / g ! ( l − g )! Эта формула определяет вероятность точно gош-кратной ошибки при l-кратном приеме данного символа. При расчете по этой формуле не учитывается существенно меньшие вероятности ошибок с кратностью большей, чем gош, что предусматривается в формуле (90) в [1]. Построить зависимость pg = f (l) в логарифмическом масштабе по шкале pg (идет вниз от начала координат графика). Расчетные данные свести в таблицу, в которой указать значения l, gош, расчетную формулу для определения pg при разных l, значения pg, а также значение pошl из п. 10. 25
10. Рассчитать вероятность ошибочного приема pошl, n кодового слова, состоящего из n разрядов (для МТК-2 n = 5) при l-кратном повторении информации. Построить график зависимости pошl, n = f (l), воспользовавшись данными, рассчитанными в п. 9. Объяснить причину немонотонного уменьшения вероятности pош при увеличении l. 11. Поместить в отчет рис. 26 из учебного пособия [1] с классификацией методов синхронизации. Пояснить сущность режима поиска начала циклов по данным эксперимента "Сбой синхронизации". 12. Определить время сохранения синфазности по циклам Т при применении автономного метода синхронизации (время расхождения фазы на один тактовый интервал) при значениях нестабильностей генераторов ξ =10–6, 10–7, 10–8 и диапазоне скоростей передачи данных В = 50 бод – 5 кбод. Построить график зависимости T = f(B) для трех значений ξ с логарифмическим масштабом по обеим осям координат (формулы (97)– (100) в [1]). 13. В отчете дать объяснения полученных результатов по каждому пункту. 4. КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАЧИ 1. Назвать основные причины быстрого развития систем передачи цифровой информации. Какие обстоятельства способствуют этому развитию? 2. Охарактеризовать основные особенности цифровой передачи информации. 3. Объяснить разницу между технической и информационной скоростью передачи информации. В каких случаях техническая скорость может быть больше информационной, а в каких меньше? 4. Пояснить принципы преобразования непрерывных сообщений в цифровые. Дать определение теоремы Котельникова и пояснить ее физическую сущность. 5. Нерерывное сообщение с верхней граничной частотой спектра Fв = 5 кГц преобразуется в цифровое и передается с использованием пятиразрядного двоичного кода. При применении синхронного метода передачи определить скорость передачи данных. 6. Закодировать первую букву своей фамилии кодом МТК-2 (Прил. 2). Показать, с использованием временных диаграмм, как будет выглядеть это сообщение при амплитудной, фазовой и частотной модуляциях. 26
7. Зарисовать временную диаграмму кодированного сообщения своих инициалов (имя, фамилия – код МТК-2) при использовании для передачи сообщения одного пятиразрядного слова с двойной модуляцией (АМ–ЧМ, АМ–ФМ, ЧМ–ФМ). 8. Какой код называется первичным? Какой максимальной избыточностью может обладать такой код? Почему для передачи цифровой информации в основном применяется двоичная система счисления? 9. Перечислить основные характеристики кодов, пояснить их физическую сущность. Определить кодовое расстояние для букв А и Я (код МТК-2, Прил. 1) и минимальное кодовое расстояние для первичных полных кодов. 10. Определить избыточность кода с проверкой на четность, корреляционного и инверсного кодов и минимальное кодовое расстояние для них. 11. Пояснить необходимость синхронизации и фазирования. Дать классификацию методов синхронизации и фазирования и их сравнительные характеристики. 12. Что понимается под термином "скремблирование"? С какой целью оно применяется? Привести примеры кодов, одновременно решающих задачи скремблирования. 13. Дать определение веса кода. Для кода МТК-2 определить число кодовых комбинаций с весом w = 3 и привести общую формулу для расчета числа равновесных кодовых комбинаций для n-разрядного кода. Определить dmin для равновесных кодов с w = 2, 3, 4 и n = 5. Прокомментировать результат. 14. Идеальные синхронизаторы связных радиостанций на аэродроме и на самолете (нестабильность ξ = 0) были сфазированы до вылета самолета. Определить, на каких дальностях самолета от аэродрома будет в полете нарушена синхронизация при приеме цифровых сообщений со скоростями синхронной связи В = 0,05; 0,5; 5 и 50 кбод, если допустимая погрешность синфазности ε доп = 40%. 15. Идеальные синхронизаторы береговой и корабельной радиостанций (нестабильность ξ = 0) перед выходом корабля в море были сфазированы. После выхода в море многократно повторяемым кодом МТК-2 (Прил. 1) позывной корабля "МУЖ" на выходе корабельного демодулятора синхронной системы связи стал дешифрироваться словом "ЖАК". Определить, по какой причине и при каком удалении корабля от порта 27
это произошло, если скорость передачи данных по синхронной системе связи между берегом и кораблем – В = 5 кбод. 16. Решить предыдущую задачу 15 при следующих условиях: позывной корабельной радиостанции – "ЛИАП"; при удалении корабля от порта позывной дешифрируется словом "ФИНС "; скорость передачи данных В = 50 кбод. Рекомендуемая литература
1. Журавлев А. К., Никитин Г. И. Радиотехнические системы передачи информации: Учеб. пособие / ЛИАП. Л., 1984. 86 с. 2. Радиотехнические системы передачи информации: Учеб. пособие для вузов / Под ред. В. В. Калмыкова. М.: Радио и связь, 1990. 304 с. 3. Теория передачи сигналов: Учебник для вузов/А. Г. Зюко, Д. Д. Кловский, М. В. Назаров, Л. М. Финк. М.: Радио и связь, 1986. 304 с. 4. Емельянов Г. А., Шварцман В. О. Передача дискретной информации: Учебник для вузов. М.: Радио и связь, 1982. 240 с. 5. Супрун Б. А. Первичные коды. М.: Связь, 1970. 161 с.
28
ПРИЛОЖЕНИЕ 1 Относительные частоты появления букв русского языка и коды МТК-2, аппарата СТ-35 (Бодо, МТК-1) и Морзе № п/ п
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Буква
Относительная частота
МТК-2
Код СТ-35 (МТК-1, Бодо)
Код Морзе
A Б B Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Ь, Ъ Э Ю Я Пробел
0,062 0,014 0,038 0,013 0,025 0,072 0,007 0,016 0,062 0,010 0,028 0,035 0,026 0,053 0,090 0,023 0,040 0,045 0,053 0,021 0,002 0,009 0,004 0,012 0,006 0,003 0,016 0,014 0,003 0,006 0,018 0,175
11000 10011 11001 01011 10010 10000 01111 10001 01100 11010 11110 01001 00111 00110 01000 01101 01010 10100 00001 11100 10110 00101 01110 01010* 01011* 00101* 10101 10111 10110* 11010* 11101 00100
10000 00110 01101 01010 11110 01000 11101 11001 01100 10010 10011 11011 01011 01111 11100 11000 00111 00101 10101 10100 01110 11010 10110 10101* 01100* 10111 00100 01001 01110* 01111* 00011 10001
.– –... .–– ––. –.. . ...– –– .. .. .––– –.– .–.. –– –. ––– .––. –.– ... – ..– ..–. .... –.–. ––– –––– ––.– –.–– –..– ..–.. ..–– .–.–
Примечание. * – цифровой регистр.
29
ПРИЛОЖЕНИЕ 2 Международный телеграфный код 2 (МТК-2) Числа в десятичной форме 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
30
Те же числа в двоичной форме (двоичный код) 24
23
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
22
21
20
0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
Регистры русский, цифра, латинский T 5 T Возврат каретки О 9 О Пробел Х Щ Н Н , N M . M Перевод строки M . M Л ) L P 4Ч R Г Ш G И 8 I П О Ц : C Ж = V Е З Е З + Z Д Кто там? D Б ? В С ' S Ы 6 Y Ф Э F Ь / Х В 2 W Й Ю J Цифров.регистр У 7 U Я 1 О К ( К Латинск. регистр Русский регистр
ПРИЛОЖЕНИЕ 3 Пример, поясняющий ход выполняемых операций и наблюдаемый на экране Текст, выводимый на экран
Пояснения
Л И А П 01001 01100 11000 01101 В 1-й букве искажен 2-й разряд Г И А П 01011 01100 11000 01101 .....................................………… Сбой синхронизации влево Количество сдвинутых тактов: 1 Д В Е Й 10010 11001 10000 11010
Введенное слово, двоичное представление слова (кодограмма) Справочная информация Искаженное слово Искаженная кодограмма Справочная информация Искаженное слово Сдвинутая кодограмма
Примечание. При сдвиге кодограммы вправо и влево первые разряды первого кодового слова и, соответственно, последние разряды последнего кодового слова представляются "нулями". При искажениях и сбоях синхронизации получающиеся коды служебных сообщений ("возврат каретки", "перевод строки" и др.) заменяются при декодировании знаком*. Общее число строк в тексте, наблюдаемом на терминале, равно 50.
31
Лабораторная работа № 2 ЭФФЕКТИВНЫЕ КОДЫ Цель работы: изучение основных понятий теории информации, информационных характеристик систем передачи сообщений и методов эффективного статистического кодирования на примере эффективного кода Хафмена. 1. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ПОДГОТОВКЕ К ЛАБОРАТОРНОЙ РАБОТЕ Для выполнения лабораторной работы студенты должны предварительно изучить разд. 1 и получить у преподавателя допуск к работе. 1.1 Информация, сообщение, кодирование, сигнал Под информацией понимают совокупность сведений о каких-либо сообщениях, явлениях или предметах, которые получает потребитель. Академия наук СССР рекомендовала следующее определение: информация – это сведения, являющиеся объектом хранения, передачи и преобразования. Информацию, представленную в форме, которая позволяет осуществлять ее преобразование с целью передачи, обработки и практического использования, называют сообщением. Всякое сообщение является совокупностью сведений о состоянии какой-либо материальной системы, которые передаются человеком (или устройством), наблюдающим эту систему, другому человеку (или устройству), не имеющему возможностей получить эти сведения из непосредственных наблюдений. Наблюдаемая материальная система вместе с наблюдателем представляет собой источник информации (корреспондент), а человек или устройство, которому предназначаются результаты наблюдения – получатель информации (абонент). Источник информации может вырабатывать непрерывное или дискретное сообщения. Передача сообщений на расстояние осуществляется с помощью какого-либо материального носителя (бумага, магнитная лента и т. п.) или физического процесса (звуковых или электромагнитных волн, тока и т. п.). Физический процесс, отображающий (несущий) передаваемое сообщение, называется сигналом. Сигналы формируются путем изменения 32
тех или иных параметров физического носителя по закону передаваемых сообщений. Этот процесс изменения параметров сигнала в соответствии с передаваемым сообщением называется модуляцией и осуществляется в системах связи с помощью модулятора. Любое преобразование сообщения в определенный сигнал путем установления между ними однозначного соответствия называют в широком смысле кодированием. Кодирование может включать в себя процессы преобразования и дискретизации непрерывных сообщений (аналого-цифровое преобразование), модуляцию (манипуляцию в цифровых системах связи) и непосредственно кодирование в узком смысле слова. Обратная операция называется декодированием. Рассмотрим передачу дискретных сообщений. Последовательный процесс преобразования сообщения в кодирующем устройстве (кодере) может быть представлен структурной схемой, показанной на рис. 2.1. Источник сообщений
Кодер канала
Кодер источника {xi}
{gk}
Модулятор {θs}
Рис. 2.1
Источник дискретных сообщений в общем случае характеризуется ансамблем X = {x1,..., xi,..., xmi} сообщений, представляющих собой конечное число символов xi. Совокупность символов x1,..., xi,..., xmi называется алфавитом источника сообщений, а число различных символов mi является объемом алфавита источника сообщений. Для полного описания источника сообщений необходимо задать вероятности появления символов p (x1),..., p (xi),..., p (xm), причем их сумма равна 1. В частном случае символами алфавита источника могут быть буквы. Наиболее часто повторяющаяся буква русского языка – "О". Ее вероятность появления p (x) = 0,09 означает, что на 1000 букв русского текста приходится в среднем 90 букв "О". Наиболее редко встречающаяся в тексте – буква "Ф", для которой p (x) = 0,002. Вероятность появления промежутка между словами в тексте (пробел) наибольшая и равна 0,175. Отметим, что по этой причине на клавиатуре пишущих машинок клавиша "пробел", которой наиболее часто пользуются, выполнена не в виде кнопки, как для других букв, а в виде протяженной планки, размещаемой ниже всей клавиатуры. Кодер источника, который иногда может и отсутствовать, служит для представления сообщений в более удобной для передачи и компак33
тной форме без потери информации. Кодер источника имеет свой алфавит G = {gk}, k = 1, 2,..., mk, где mk – объем алфавита кодера источника. Например, русские буквы алфавита источника могут в кодере источника перекодироваться в цифры десятичной системы счисления с символами (буквами) алфавита (0, 1, 2,..., 9) с объемом m = 10, или в двоичный код с алфавитом 0 и 1 и, следовательно, с объемом алфавита m = 2 (например, первичный код МТК-2, [2]). С помощью кодера источника возможно устранение избыточности источника сообщений путем применения эффективного статистического кодирования. Кодер канала может иметь свой алфавит θ = {θs}, s = 1, 2,..., ms. С помощью кодера канала может вводиться избыточность при применении корректирующих кодов в целях повышения помехозащищенности системы связи. Таким образом, в процессе преобразования сообщения в сигнал операция кодирования позволяет в итоге уменьшить влияние различных помех и искажений на передачу сообщений. Итак, в процессе кодирования сообщений могут выполняться следующие операции: преобразование сообщений из одной формы в другую, например, непрерывных в дискретные (натуральное, первичное кодирование); устранение естественной избыточности источника сообщений (эффективное или статистическое кодирование); введение специально рассчитанной искусственной избыточности в сообщение (помехоустойчивое кодирование). Соответствующие кодеры (рис. 2.1) можно построить либо для каждой из указанных выше операций отдельно, либо объединить их в единое устройство. 1.2. Информационные характеристики системы передачи сообщений Такие понятия теории информации, как количество информации, передаваемое по каналу связи, энтропия, избыточность, пропускная способность канала являются интегральными оценками эффективности системы связи. Теория указывает потенциальные возможности системы связи, которые надо стремиться реализовать на практике. Мера количества информации
Мера количества информации должна отражать сущность работы систем передачи сообщений и служит основой для сравнения их между 34
собой. Для систем связи в большинстве случаев не имеет значения конкретное содержание сообщений, их ценность, важность, истинность или ложность. Системы передачи информации можно уподобить почте, для которой важен только сам факт отправления письма, а содержание пересылаемых писем никак не учитывается. Поэтому понятие количества информации, применяемое для характеристики технических систем, значительно беднее, чем используемое нами в повседневной жизни. Тем не менее, мера количества информации должна согласовываться с интуитивными представлениями о существенных сторонах сообщений. При этом разумно руководствоваться следующими соображениями: чем длиннее сообщение, тем большее количество информации оно должно содержать; количество информации в сообщении тем больше, чем больше число возможных сообщений; количество информации должно обладать свойством аддитивности, т. е. количество информации, содержащееся, например, в двух независимых сообщениях, должно равняться сумме количества информации, переносимой каждым сообщением; большее количество информации несут маловероятные сообщения (сенсации). Понятие количества информации прошло следующие этапы эволюции: 1. Сообщение состоит не из одного, а из многих символов (букв, знаков, элементов). Число возможных элементов определяется объемом m соответствующего алфавита (mi , mk , ms – i – источник, к – кодер, s – сигнал), а число элементов в сообщении – n. При выборе первого элемента сообщения производится выбор из m возможных элементов. При выборе второго делается выбор из того же числа m элементов, но число возможных комбинаций выбора двух элементов составляет уже m2 (при m = 2, например "0" и "1", возможных комбинаций 4: "00", "01", "10" и "11"). Если же сообщение содержит n элементов, то число различных сочетаний этих элементов: (2.1) N = mn . Значение N определяет число возможных сообщений. Оно и может служить мерой количества информации. Однако мера N не обладает свойством аддитивности. Действительно, количество информации в сообщении из n символов не равно сумме количеств информации из n1 и n2 символов, так как 35
mn # mn1 + mn2, если n1 + n2 = n. 2. Для удовлетворения условию аддитивности можно выбрать в качестве меры количества информации не само число N, а некоторую его функцию J = f (N). Р. Хартли в 1928 г. предложил логарифмическую меру количества информации: J = log (N) = nlog (m). (2.2) Эта мера обладает свойством аддитивности, а именно: nlog (m) = n1log (m) + n2log (m), если n1 + n2 = n. Основание логарифма в (2.2) не имеет существенного значения. Широко пользуются логарифмом по основанию 2 (причем обозначение "2" опускается). В этом случае количество информации измеряется в двоичных единицах (дв. ед.) или битах. Однако мера (2.2) не удовлетворяет четвертому интуитивному требованию, так как не учитывается зависимость количества информации, содержащейся в сообщении, от вероятности появления сообщения. В то же время эта вероятность характеризует неожиданность данного сообщения для получателя. 3. К. Шеннон учел требуемую зависимость и предложил определять количество информации, содержащееся в сообщении xi (i = 1, 2, ... , mi) и относящееся к выбору данной буквы xi алфавита источника, в виде (2.3) J(xi) = log [1/p(xi)] = –log [p(xi)] , где p (xi) – вероятность появления сообщения xi, причем сумма всех p (xi) = 1. Как следует из (2.3), количество информации, содержащееся в сообщении, тем больше, чем меньше вероятность этого сообщения. Такая зависимость соответствует интуитивным представлениям об информации. Действительно, сообщения, ожидаемые с большей вероятностью, легко угадываются получателем, а достоверные сообщения, вероятность которых равна 1, вообще не содержат информации, так как всегда могут быть предсказаны точно (очевидно, если p (xi) = 1, то J (xi) = 0). Наоборот, сообщения, являющиеся сенсациями, имеют малую вероятность появления и их трудно предсказать, поэтому они содержат больше информации. Количество информации, определяемое (2.3), является случайной величиной, принимающей значение J (xi) с вероятностью p (xi) в зависимости от появления буквы xi в сообщении источника. Однако при передаче больших массивов сообщений важно не количество информа36
ции в одном конкретном символе J(xi), а количество информации, усредненное по всем возможным сообщениям, содержащим n символов. Такой мерой количества информации является математическое ожидание (среднее значение) случайной величины J(xi), содержащей n символов (букв), усредненное по всему ансамблю X: mi
mi
i =1
i =1
J ( Χ ) = n ∑ p ( xi ) J ( xi ) = −n ∑ p ( xi )log p ( xi ).
(2.4)
Это соотношение носит название формулы Шеннона. Для равновероятных сообщений (p (xi) = 1/mi) меры информации по Хартли (2.2) и по Шеннону (2.4) совпадают m
J ( Χ ) = −n ∑ 1/ m log (1/ m) = n log m. i =1
Поэтому меру Шеннона (2.4) можно рассматривать как обобщение меры Хартли на ансамбль сообщений с распределением вероятностей, отличающимся от равномерного. Энтропия источника дискретных сообщений
Для характеристики источника сообщений более удобной величиной является средняя величина (математическое ожидание) количества информации, содержащейся в одном символе (букве) сообщения. Эта величина называется энтропией источника сообщений. В случае отсутствия статистической связи между символами, энтропия источника: m
H ( Χ ) = J ( Χ ) / n = − ∑ p ( xi )log p ( xi ).
(2.5)
i =1
Понятие энтропии (от греческого "эн-тропе" – обращение) распространилось на ряд областей знания. Энтропия характеризует неопределенность каждой ситуации. Энтропия в термодинамике определяет вероятность теплового состояния вещества (закон Больцмана), в математике – степень неопределенности ситуации или задачи, в теории информации она характеризует способность источника "отдавать" информацию. Приобретение информации сопровождается уменьшением неопределенности, поэтому количество информации можно измерять количеством исчезнувшей неопределенности, т. е. энтропией. Энтропию называют также информационной содержательностью сообщения. 37
Анализируя выражение (2.5), можно отметить некоторые свойства энтропии дискретной случайной величины. 1. Энтропия источника является величиной вещественной и положительной – H (x) ≥ 0. Энтропия равна 0 в случае, когда отсутствует возможность выбора, т. е. когда величина X может принимать только одно значение с вероятностью p(x) = 1. В передаче такого сообщения нет смысла, поскольку результат заранее известен получателю. Источники с малой энтропией не являются информативными. Они выдают знаки, которые с большой вероятностью известны получателю. В этом смысле энтропия источника характеризует его информационную емкость. 2. Энтропия случайной величины, имеющей всего два значения x1 и x2, не превышает 1. При объеме алфавита источника mi= 2 и одинаковой вероятности сообщений p(x1) = p (x2) = 0,5 энтропия достигает максимального значения Hmax(x) = 1 дв. ед. Следовательно, в качестве единицы измерения информации (дв. ед., бит) взята информация, содержащаяся в одном из двух равновероятных сообщений. 3. Максимальная энтропия источника Hmax(x) достигается лишь в случае равных вероятностей выбора букв алфавита, т. е. когда p (xi) = 1/m, (i = 1, 2, ..., m), тогда m
H max ( x ) = − ∑ 1/ m log(1/ m) = log m.
(2.6)
i =1
Такой источник называют идеальным (оптимальным), так как каждый его символ несет максимальное количество информации. Для конкретизации этих свойств энтропии приведем два примера. Пример Определить энтропию источника сообщений, если он может выдавать m = 5 знаков с вероятностями p(x1) = 0,4; p(x2) = 0,1; p(x3) = 0,2; p (x4) = 0,1; p (x5) = 0,2. (Сумма всех p(xi) = 1). Решение: m
H ( x ) = − ∑ p ( xi ) log 2 p ( xi ) = − (0,4log 2 0,4 + 0,1log 2 0,1 + i =1
+0,2log 2 0,2 + 0,1log 2 0,1 + 0,2log 2 0,2) = 2,12 бит/знак.
38
Пример Решить предыдущий пример при условии одинаковой вероятности появления каждого из пяти знаков: p (xi) = 1/m = 0,2. Решение: m
H ( x ) = − ∑ p ( xi )log 2 p ( xi ) = −5 ∗ 0,2log 2 0,2 = 2,32 бит/знак. i =1
Отметим, что это значение H(x) соответствует Hmax(x). При наличии кодера источника, в свою очередь, представляющего каждую из m букв алфавита источника кодовой группой из nk символов (разрядов), определяют удельную энтропию H1(x), приходящуюся на один разряд кодовой группы:
H1 ( x ) =
H ( x) , nk
(2.7)
где nk – длина кодовой группы (слова), а в обозначении удельной энтропии H1(x) индексом 1 подчеркивается, что энтропия отнесена к одному разряду кодовой группы, а не к знаку источника сообщения. Пример Определить максимальные значения энтропии Hmax(x), H1max(x), H1(x) для первичного пятиразрядного (nК = 5) кода МТК-2, если известно, что с учетом неравновероятности появления m = 32 буквенных знаков текста энтропия источника сообщений H(x) = 4,36 бит/знак. Решение: В соответствии с (2.6) и (2.7) Hmax(x) = log32 = 5 бит/знак; H1max ( x ) =
H max ( x ) = 5/ 5 = 1 бит/разряд; H1(x) = 4,36/5 = 0,87 бит/разряд. nk
Это означает, что кодер источника (рис. 2.1) выдает разряды сообщения при кодировании буквенного алфавита источника первичным кодом МТК-2 с "недогрузкой" в информационном смысле на 13% по сравнению с потенциальными возможностями. В теории информации доказывается, что энтропия источника зависимых сообщений всегда меньше энтропии источника независимых сообщений при том же объеме алфавита и тех же безусловных вероятностях сообщений. 39
Если источник выдает последовательность букв из алфавита объемом m = 32 и буквы выбираются равновероятно и независимо друг от друга, то энтропия источника (2.6) Hmax(x) = log m = 5 бит. Однако таким источником могла бы быть обезьяна, нажимающая в хаотическом порядке клавиши пишущей машинки (идеальный источник!). Если буквы передаются не хаотически, а составляют связный, например русский текст, то появление их неравновероятно (см. выше – вероятность появления буквы "О" в 45 раз больше, чем буквы "Ф"), и, главное, буквы в тексте зависимы. Так, после гласных не может появиться "Ь", мала вероятность сочетания более трех согласных подряд, вероятность последовательности, не образующей осмысленных слов (идеальный источник), практически равна нулю. Расчеты показывают [5], что для текстов русской художественной прозы энтропия оказывается менее 1,5 бит на букву. Еще меньше, около 1 бита на букву, энтропия поэтических произведений, так как в них имеются дополнительные вероятностные связи, обусловленные ритмом и рифмами. Слово, рифмуемое с окончанием предыдущей стихотворной строки, легко угадывается без произнесения или чтения его, и поэтому информации не несет (H(x) = 0). Энтропия телеграмм обычно не превышает 0,8 бит на букву, поскольку их тексты довольно однообразны (особенно поздравительных). Количественно эта характеристика источника оценивается его избыточностью. Избыточность источника сообщений
Абсолютная избыточность источника определяется формулой (2.8) χa = Hmax(x) – H(x). Чаще используется понятие относительной избыточности, которую и называют избыточностью источника: χ=
H max ( x ) − H ( x ) H ( x) = 1− = 1 − µ, H max ( x ) H max ( x )
(2.9)
где µ = H(x) / Hmax(x) – относительная энтропия. Избыточность 0 ≤ χ ≤ 1 и учитывает как взаимосвязь (корреляцию) символов в передаваемой последовательности, так и неопределенность каждого символа. Она является важной характеристикой источника, так как указывает, насколько можно сократить число символов и довести его до минимального nmin в последовательности данного источника, если 40
то же количество информации будет передаваться последовательностью, составленной из равновероятных и независимых символов, т. е. при H(x) = Hmax(x). Действительно, для данного (реального) источника количество информации, содержащееся в последовательности из n символов, равно (2.5) J = nH(x), а для идеального J = nminHmax. Приравнивая количества информации этих источников, получим nmin или избыточность кода источника n n − nmin n χ= = 1 − min = 1 − µ, (2.10) n n где отношение µ = nmin / n получило название коэффициента сжатия, равного относительной энтропии. Таким образом, источник с избыточностью χ # 0 формирует последовательности сообщений, число n символов, в которых больше минимально необходимого nmin для передачи данного количества информации. Установлено, что избыточность текстов на русском и английском языках χ ≅ 0,7, т. е. объем книги и другой печатной продукции примерно в 3,3 раза больше, чем это необходимо для отображения содержащейся в ней информации (при χ = 0,7 значение nmin / n = 0,3 = 1/3,3). Однако это не дает повод утверждать, что такая избыточность бесполезна. Избыточность текста обеспечивает высокую достоверность передачи информации, позволяет легко находить опечатки и исправлять ошибки. В частности, получатель телеграммы догадывается об ее подлинном содержании даже при нескольких ошибочно переданных буквах. Отметим, что именно необходимость разговаривать при воздействии акустических помех явилась причиной того, что все национальные языки в процессе своего возникновения и развития оказались избыточными, и значение избыточности для всех языков близко к χ = 0,7 – 0,9 [5]. В технических приложениях естественную избыточность источников трудно использовать для повышения помехоустойчивости систем связи. Лишние символы в последовательности сообщений часто нежелательны, так как увеличивают время передачи информации, а при ее хранении требуют дополнительной памяти в запоминающих устройствах. Вопросам устранения избыточности сообщений уделяется большое внимание, и с этой целью осуществляют статистическое (эффективное) кодирование дискретных сообщений, в частности, применяют коды Шеннона–Фано и Хафмена. H ( x ) / H max ( x ) =
41
Отметим, что для повышения помехозащищенности канала связи целесообразно вводить избыточность снова, что делается при помехоустойчивом кодировании. Производительность источника
Производительность источника H′(X) есть среднее количество информации, создаваемое источником в единицу времени: H ′( X ) = lim
H ( XT ) , T
(2.11)
T →∞
где H(XT) – энтропия случайной последовательности, заданной на интервале T. При наличии кодера источника, с учетом определения удельной энтропии (2.7) выражение (2.11) преобразуется
H ′( X ) =
H1 ( X )
τx
= Vx H1 ( X ),
(2.12)
где τx – средняя длительность одного символа (разряда) кодового слова; Vx = 1/ τx – скорость формирования символов кодером источника. Из (2.12) следует весьма важный вывод о том, что источник может генерировать сообщения с большой скоростью, но, тем не менее, его производительность с информационной точки зрения будет чрезвычайно низкой, если H1(X) << 1. Причиной этого является избыточность источника. Различие понятий производительности и скорости формирования символов объясняется тем, что количество информации характеризует не сам факт появления сообщения, а определенное его свойство – степень его неожиданности, нетривиальность выбора этого сообщения из множества других. Производительностью источника можно управлять, изменяя длительность символов τx . Поэтому различают неуправляемые и управляемые источники. Для неуправляемых источников производительность – постоянная величина. Так, телеметрические датчики обычно выдают информацию с постоянной скоростью и могут служить примером неуправляемых источников с фиксированной скоростью создания сообщений. 42
Для управляемых источников формирование символов сообщений происходит по внешним командам и, следовательно, длительность символа может изменяться. Например, чтение чисел из запоминающего устройства осуществляется импульсами, интервал между которыми определяется возможностями и быстродействием периферийных устройств. Очевидно, что производительность управляемого источника может меняться в широких пределах. Производительность источника является основной характеристикой при решении задач согласования источника с каналом связи. 1.3. Эффективное кодирование дискретных сообщений Цели эффективного кодирования
Основной целью эффективного (статистического) кодирования является преобразование сообщения в сигнал с меньшей, чем у сообщения, избыточностью (в пределе – без избыточности). Сигналы без избыточности имеют максимальную удельную энтропию. Для передачи информации с помощью таких сигналов требуется минимальное количество символов. Поэтому такие коды называют эффективными, а также экономными и оптимальными. В результате эффективного кодирования скорость передачи информации по дискретному каналу связи может быть приближена к его пропускной способности. В этом случае говорят о согласовании источника с каналом. Скорость передачи информации и пропускная способность дискретного канала без помех
Вопросы статистического кодирования сообщений рассмотрим в предположении, что передача ведется по каналу связи в отсутствии помех. В этом случае принятый за время T сигнал YT совпадает с переданным ST, равны их энтропии H(ST) = H(YT) и скорость передачи информации R = lim
H ( ST ) H1 ( S ) = , τ T T →∞
(2.13)
где H1(S) – удельная энтропия сигнала; τ – длительность символов сигналов неуправляемого источника (τ = const). При однозначном преобразовании сообщения в сигнал H(XT) = H(ST) и скорость передачи может быть выражена через удельную энтропию H1(X) сообщения: 43
R = lim
H ( ST ) H ( X T ) H1 ( X ) = lim = = H ′( X ), τ T T
T →∞
T →∞
(2.14)
т. е. скорость равняется производительности источника (2.12). Пропускная способность канала C, характеризующая его потенциальные возможности, определяется как верхняя граница (или максимум) скорости передачи информации R. Для дискретного канала без помех максимальное значение скорости достигается при равновероятных и независимых символах сигнала (2.6)
H1 ( S ) H1 ( S ) max log mS = = , (2.15) p ( x) τ τ τ где ms – алфавит кодера канала (сигнала). В частности, для двоичного канала ms = 2 и C = 1/τ численно совпадают со скоростью манипуляции символов в канале. Полное согласование источника с каналом достигается при R / C = 1, а качество согласования определяется отношением C = max R = max
H (S ) R = 1 = 1 − χS , C log mS
(2.16)
где χs = 1 – H1(S) / log ms – избыточность сигнала по аналогии с (2. 9). При заданном канале отношение R/C полностью определяется избыточностью сигнала и его удельной энтропией H1(S). Чтобы R / C → 1, следует выбирать такой способ кодирования сообщений источника, при котором H1(S) → log ms, т. е. в результате кодирования должна получаться последовательность, составленная из равновероятных и независимых символов. Основная теорема кодирования
Вопрос о возможности передачи информации со скоростью, равной пропускной способности канала без помех, решается положительно при применении безызбыточного кодирования [(2.16) – при χs = 0]. Это утверждение доказывается одной из основных теорем теории информации, которая называется теоремой кодирования для источника. Поскольку при этом предполагается, что последовательность кодовых символов принимается без ошибок, то эту теорему называют также теоремой кодирования для канала без помех. 44
Одна из возможных формулировок этой теоремы следующая: Если производительность источника H′(X) = C – ε, где C – пропускная способность канала связи, а ε > 0 – сколь угодно малая величина, то существует способ кодирования, обеспечивающий передачу всех сообщений, вырабатываемых источником, со скоростью R = H′(X) = C – ε. Если H′(X) > C, то длительная передача всех сообщений невозможна. Доказательство этой теоремы можно найти в [3]. Другая формулировка этой теоремы приведена в [1]. Избыточность источника возникает за счет: неравной вероятности набора символов, составляющих алфавит источника; зависимости выбора последующего символа от предыдущего (так, в связном русском тексте после гласных не может появиться "Ъ", мала вероятность сочетания более трех согласных подряд и т. п.). Устранение избыточности достигается следующим образом: 1-й этап – применяется укрупнение алфавита источника для устранения статистической связи между соседними символами (кодируются не отдельные буквы, а целые слова текста), при этом уменьшается неравновероятность букв укрупненного алфавита; 2-й этап – при последующем кодировании используются неравномерные коды; при этом наиболее вероятные буквы ранее укрупненного алфавита источника передаются меньшим количеством символов. Теорема кодирования является теоремой существования, т. е. она доказывает, что оптимальные (эффективные) коды существуют, но не дает указаний о том, как построить такие коды. В настоящее время разработано большое количество эвристических приемов, позволяющих осуществить статистическое кодирование и найти код, близкий к оптимальному. Однако основные свойства и особенности, которыми должны обладать такие эффективные коды, следуют из теоремы кодирования. 1. Для обеспечения минимальной средней длины кодового слова избыточность должна быть сведена к минимуму (желательно к нулю). Для этого эффективный код должен состоять из кодовых слов, в которых все символы равновероятны и статистически независимы. Это позволяет уравнять скорость передачи с пропускной способностью канала связи, что и является целью безызбыточного кодирования. 2. Ни одна из кодовых комбинаций не должна получаться из другой, более короткой, путем добавления новых символов. Эффективные коды 45
не требуют разделительных символов (маркеров) и при этом должно выполняться их однозначное декодирование. Коды, удовлетворяющие этому условию, называются префиксными кодами, так как ни одно кодовое слово не является передней частью ("префиксом" – приставкой) другого кодового слова. 3. Эффективные коды являются неравномерными, т. е. для передачи разных символов сообщения mi используются кодовые комбинации разной длины. Наиболее вероятные сообщения кодируются самыми короткими кодовыми словами, вследствие чего средняя длина кодового слова в сообщении уменьшается, что и позволяет решить задачу равенства скорости передачи и пропускной способности канала. При неравномерном эффективном кодировании средняя длина кодового слова n определяется выражением
n=
mi
∑ nk p ( xk ),
k =1
(2.17)
где p (x k ) – вероятность появления сообщения (кодового слова), причем их сумма равна 1; nk – длина кодовых слов xk (k = 1, 2, ..., mi). По аналогии с выражением (2.10), где предполагалось применение равномерных кодов с постоянной длиной кодовых слов (n = const), при использовании эффективных неравномерных кодов (n = var) избыточность кода источника nmin n − nmin = 1− . (2.18) n n Очевидно, когда n = nmin, что эквивалентно равенству Hmax(X) = H(X), избыточность кода χk равна нулю, и при применении эффективных кодов обеспечивается полное согласование источника сообщений с каналом (2.16). При этом энтропия источника H(X) является оценкой среднего числа n двоичных символов, требуемых для кодирования сообщений. Процедуру построения эффективного кода, близкого к оптимальному, предложили практически одновременно Шеннон и Фано (код Шеннона – Фано). Эта процедура рассмотрена подробно в [1, разд. 3.3]. В данной лабораторной работе студенты знакомятся с процедурой построения эффективных кодов, предложенной Хафменом. При малом алфавите источника и неравновероятных символах xi выгодно кодироχk =
46
вать не отдельные символы, а целые блоки из нескольких символов (букв). В этом студенты убеждаются, исследуя в лабораторной работе метод кодирования Хафмена. Код Хафмена
Д. А. Хафменом был предложен систематический метод кодирования, который всегда приводит к получению оптимального множества кодовых слов для кодирования данного множества сообщений. Для дискретных систем с двоичным алфавитом кодера (m = 2) методика построения кода Хафмена сводится к следующей процедуре: 1. Все mi = M сообщений (буквы алфавита источника) выписываются в порядке убывания вероятностей p (xi) (табл. 2.1). 2. Две последние буквы алфавита, имеющие наименьшие вероятности p (xМ–1) и p (xM), группируются вместе и объединяются в одну вспомогательную букву, которой приписывается суммарная вероятность p∑= = p (xM–1) + p (xM). 3. Вероятности букв, не участвовавших в объединении, и полученная суммарная вероятность снова располагаются в порядке убывания вероятностей (в следующем столбце табл. 2.1). Объем нового алфавита таким образом уменьшается на единицу: М–1. 4. Производят второе укрупнение алфавита, состоящего уже из М–1 символов, путем объединения двух символов с наименьшими вероятностями и вычисляют их общую вероятность. Получают новый алфавит объемом М–2. 5. Упорядочивают по вероятности символы этого нового алфавита. 6. Образуют последовательность укрупненных алфавитов путем последовательного повторения операций пп. 4 и 5, пока в ансамбле не останется единственное сообщение с вероятностью, равной 1 (шаговая процедура, записываемая в столбцах табл. 2.1). 7. Проведя линии, соединяющие символы при последовательном укрупнении алфавита, получают так называемое кодовое дерево, концы ветвей которого являются символами исходного алфавита источника сообщений. Приписывая ветвям дерева, исходящим из каждого промежуточного узла, различные символы алфавита кодера (0 или 1), получают кодовые слова, соответствующие кодируемым сообщениям источника.
47
Методика поясняется примером, представленным в табл. 2.1, где для алфавита источника с объемом М = 8 приняты произвольные значения M
вероятностей p(xi) , но
∑ p ( xi ) = 1.
i =1
Таблица 2.1 xi
Вероятности
p(xi)
x1 x2 x3 x4 x5 x6 x7 x8
0,729 0,081 0,081 0,081 0,009 0,009 1 0,009 0,001
Шаговая процедура (кодовое дерево) 1 0,729 0,081 0,081 0,081 0,010 1 0,009 0,009
0
0
0,729 0,729 0,081 0,081 0,081 0,081 1 0,081 0,081 0,018 1 0,028 0 0,010 0
1 0,729 0,729 0,729 1 1 0,109 0,162 0,271 0 1 0,081 0,109 0 0,081 0
Кодовые слова
1 011 010 001 00011 00010 00001 00000
Для составления кодовой комбинации, соответствующей данному сообщению xi , необходимо проследить путь перехода сообщения по строкам и столбцам таблицы. Для наглядности кодовое дерево построено в поле табл. 2.1. Целесообразно строить кодовое дерево, начиная с первого столбца таблицы, располагая ветви против группируемых попарно вероятностей p (xi) и соединяя их со значением суммарной вероятности p∑, располагаемой в следующем столбце. Ветвям с большей вероятностью присваивается символ 1, а с меньшей – 0 (или наоборот). Такое последовательное ветвление продолжается до тех пор, пока ветвь не закончится узлом с вероятностью p (xi) каждой буквы алфавита источника. Отдельно кодовое дерево для алфавита источника, рассматриваемого в примере, приведено на рис. 2.2. Перемещаясь по кодовому дереву сверху вниз, можно записать для каждой буквы алфавита xi соответствующую ей кодовую комбинацию x2 x3 x4 x5 x6 x7 x8 x1 1 011 010 001 00011 00010 00001 00000 Код Хафмена при любом распределении вероятностей p (xi) дает однозначный ансамбль набора кодовых слов, в то время как при коде Шеннона – Фано на выходной ансамбль кодовых слов влияет субъек48
1
0
0,729 x1
0,271 0,162
0,081 x2
1
1
0 0
0,109 0 0,028
1
0,081 0,081 x3 x4 0,018 0,009 x5
1
1
0
0
1
0,009
0,009 x 6
0,010 0
x7
0,001 x8
Рис. 2.2
тивный выбор границ последовательного разбиения алфавита на две группы [1]. Существенное преимущество кода Хафмена по сравнению с кодом Шеннона – Фано проявляется при применении кодов с основанием большим 2 (М > 2) и заключается в том, что методика Хафмена гарантирует однозначное построение кода с наименьшим для данного распределения вероятностей средним количеством символов на букву, что показано в [1, с. 43–46]. Достоинства и недостатки эффективных кодов
Кратко сформулируем перечисленные выше достоинства оптимальных эффективных кодов. 1. При эффективном кодировании, учитывающим вероятности появления букв алфавита источника сообщений, удается построить коды с максимальной удельной энтропией на символ. 2. Обеспечивается преобразование сообщения в сигнал с меньшей, чем у сообщения избыточностью (в пределе – без избыточности). 3. На передачу сообщения затрачивается минимальное количество символов. 4. Решается задача согласования источника сообщений с каналом связи, в результате чего скорость передачи информации может быть приближена к пропускной способности канала. 5. Не требуется введения специальных разделительных символов (маркеров), как, например, в коде Морзе для отделения одной кодовой ком49
бинации от другой, так как ни одна комбинация эффективного кода не совпадает с началом другой, более длинной. Такое свойство кода называется "неприводимостью", и коды называются префиксными или кодами без запятой. К недостаткам эффективных кодов можно отнести следующее: 1. Эффективные коды являются неравномерными, т. е. кодовые комбинации имеют различное количество символов. Если линия связи работает с постоянной скоростью передачи, то на выходе кодера необходимо буферное запоминающее устройство (" упругая задержка") для записи в него "пульсирующих" по длительности кодовых групп и последующего считывания в канал символов с постоянной скоростью. Аналогичная "упругая задержка" должна быть и на стороне приема. 2. Наибольший эффект оптимальные коды дают при кодировании исходного сообщения длинными блоками, поскольку при этом достигается равновероятность и статистическая независимость блоков. Однако блочное кодирование вызывает необходимость накапливать слова алфавита источника, прежде чем поставить им в соответствие определенную кодовую группу эффективного кода. Это приводит к большим задержкам при передаче и приеме сообщений, что затрудняет (или исключает) применение эффективных кодов в системах, работающих в реальном масштабе времени. Эффективное кодирование (кодом Хафмена) применяется при записи информации на магнитные носители (системы архивации) и в системах факсимильной связи. 3. Существенным недостатком эффективных кодов является то, что они непомехозащищенные. Любая одиночная ошибка при приеме переводит передаваемую комбинацию в другую, не равную ей по длительности, что влечет за собой неправильное декодирование целого ряда последующих кодовых групп. Такое специфическое влияние помех называется "треком ошибок" или пакетом ошибок. В чистом виде эффективное кодирование можно применять только для каналов без помех. Таким образом, непосредственная передача сообщений при применении эффективных кодов по каналу связи с шумами приводит к недопустимо большим искажениям (потере информации). Однако эффективное кодирование, устраняющее статистическую избыточность в передаваемом сообщении, наилучшим образом подготавливает непрерывную кодовую последовательность, полученную после первич50
ного кодирования сообщений источника, к последующему помехоустойчивому кодированию с помощью корректирующих кодов в кодере канала (рис. 2.1). Целенаправленное введение избыточности при помехоустойчивом кодировании путем добавления дополнительных проверочных символов в кодовые информативные группы позволяет при декодировании обнаруживать и исправлять ошибки, вызванные помехами. 2. ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ Описание работы
Лабораторная работа выполняется в диалоговом режиме. Ввод данных осуществляется с клавиатуры, выходная информация отображается на экране дисплея компьютера. После введения заданных студентами вероятностей p (x1) и p (x2) появления 2-х сообщений x1 и x2 осуществляется последовательное группирование символов алфавита источника сообщений в блоки с длиной l = 2, 3 и 4 символа. Каждой новой комбинации источника сообщений присваивается обозначение, соответственно, Yi , Zi , Qi и рассчитывается вероятность появления этой комбинации. Далее выполняется операция упорядочения вероятностей по величине от большего значения к меньшему. На экран выводятся расчетные значения вероятностей появления блоков источника сообщений Xi , Yi , Zi , Qi и присвоенные им кодовые слова эффективного кода Хафмена. Выполнение работы
Перед выполнением лабораторной работы целесообразно подготовить следующие табл. 2.2–2.6. Группировка по 1 Таблица 2.2 Алфавит источника
x1 x2
Обозначения Вероятность кодовых слов p (Si)
Код Хафмена
Число символов
X1 X2
51
Группировка по 2 Таблица 2.3 Алфавит источника x1 x1 x1 x2 x2 x1 x2 x2
Обозначения Вероятность кодовых слов p (Si) Y1 Y2 Y3 Y4
Код Хафмена
Число символов
Группировка по 3 Таблица 2.4 Алфавит источника
Обозначения Вероятность кодовых слов p (S1)
x1 x1 x1
Z1
x1 x1 x2
Z2
x1 x2 x1
Z3
..............
.........
x2 x2 x2
Z8
Код Хафмена
Число символов
Группировка по 4 Таблица 2.5 Алфавит источника
52
Обозначения Вероятность кодовых слов p (S1)
x1 x1 x1 x1
Q1
x1 x1 x1 x2
Q2
x1 x1 x2 x1
Q3
..............
.........
x2 x2 x2 x2
Q16
Код Хафмена
Число символов
Таблица 2.6 l
p (xk)
H(S)
H1(S)
n minc
χи
n
nс
n minc / nс
χк
R/C
1 2 3 4
Табл. 2.2–2.5 и большая часть табл. 2.6 будут заполнены в ходе выполнения лабораторной работы. 2.1. Для выполнения лабораторной работы необходимо выбрать соответствующую позицию в основном меню и нажать клавишу < ENTER >. После появления подсказки: < Введите вероятность > ввести заданную вероятность (число, меньшее 1, например: 0,765). 2.2. В случае некорректного ввода в правом нижнем углу экрана появится окно с диагностическим сообщением. Окно исчезнет после нажатия любой клавиши, а подсказка 2.1 появится вновь. 2.3. В случае корректного ввода вероятности на экране появится табл. 2.7 и окно результатов, характеризующее правильность вводимых ответов. Таблица 2.7 № п/ п
Алфавит источника
1 2
x1 x2
Вероятность
Код Хафмена
nк
Студентам необходимо построить и ввести кодовые слова кода Хафмена для каждой из букв алфавита источника данного ансамбля. В случае правильного ввода в окне результатов в соответствующей позиции появится сообщение < ВЕРНО >. Если кодовое слово введено неправильно, то появится сообщение < НЕВЕРНО >. В любом случае следует продолжить ввод кодовых слов кода Хафмена до конца, после чего будет предоставлена возможность исправить допущенные ошибки. Нажатие клавиши < ESC > во время ввода приведет к прекращению выполнения работы и выходу в основное меню. Правильно построенные кодовые слова кода Хафмена необходимо занести в табл. 2.2 протокола выполняемой работы. 53
2.4. По завершению построения и ввода кода Хафмена в колонку nk необходимо ввести длины кодовых слов построенного кода Хафмена. Ввод длин кодовых слов происходит аналогично п. 2.3. 2.5. После корректного ввода длин кодовых слов построенного кода Хафмена в нижней строке экрана появится запрос: < Желаете получить справочную информацию Y/N?". В случае ввода символа "Y" на экране будет предъявлено окно, содержащее справочную информацию о вычислении энтропии, средней длины кодового слова и т. п. Окно справочной информации исчезнет после нажатия любой клавиши. В случае ввода "N" окно справочной информации не предъявляется. 2.6. После предъявления или непредъявления окна справочной информации табл. 2.8 на экране будет сдвинута на две колонки влево. Таблица 2.8 Вероятность
Код Хафмена
nк
В правом нижнем углу экрана будет предъявлено окно, в котором будут последовательно задаваться вопросы, в ответ на которые необходимо определить и ввести следующие теоретико-информационные характеристики построенного кода Хафмена: среднюю длину кодового слова n, среднюю длину на символ энтропию источника удельную энтропию
nc , H(S), H1(S),
избыточность источника
χи ,
избыточность кода χk , качество согласования источника с каналом R/C. 2.7. При выполнении п. 2.6 для получения значений двоичных логарифмов следует пользоваться данными Прил. 1 или встроенной программой, которая активизируется одновременным нажатием комбинации клавиш < ALT > <Shift Left > < L >. Правила пользования этой программой приведены в Прил. 2. 2.8. При выполнении вычислений, согласно п. 2.6 может возникнуть необходимость использования калькулятора. В ходе выполнения лабораторной работы можно использовать встроенный программный 54
калькулятор, который активизируется одновременным нажатием комбинации клавиш < CTRL > < Shift Right > < C >. Правила пользования этой программой приведены в Прил. 3. 2.9. Результаты вычислений по п. 2.6 необходимо занести в соответствующие столбцы первой строки табл. 2.6 (l = 1). 2.10. В случае неверного определения характеристик п. 2.6 или некорректного их ввода в правом нижнем углу экрана будет появляться окно с диагностическим сообщением, которое следует проанализировать. Окно исчезнет после нажатия любой клавиши, после чего необходимо ввести правильный ответ. 2.11. Нажатие клавиши < ESC > в любом из п. 2.6 приведет к прекращению выполнения лабораторной работы и появлению на экране основного меню. 2.12. После корректного определения и ввода характеристик п. 2.6 на экране будет предъявлено дерево кода Хафмена, которое необходимо зафиксировать в протоколе. Оно исчезнет при нажатии любой клавиши. 2.13. Из исходных вероятностей p (x1) и p (x2) будет автоматически построен алфавит с вероятностями, значения которых являются результатом объединения символов x1 и x2 по два (группирование по 2). На экране будет предъявлена таблица, как в п. 2.3, но с другим алфавитом источника Y1–Y4 и с вышеопределенными вероятностями. Необходимо повторить действия, рассмотренные в пп. 2.3–2.12. Результаты заносятся в протокол работы в табл. 2.3 и вторую строку табл. 2.6 (l = 2). 2.14. Повторить п. 2.13 для группировки исходных символов х1 и х2 по три (Z1–Z8) и четыре (алфавит источника Q1–Q16), причем для случая Q1–Q16 код Хафмена строится автоматически, поэтому для данного случая выполнение работы будет продолжено с п. 2.4. Кодовое дерево для алфавита (Q1–Q16) не предъявляется. Результаты заносятся в табл. 2.4 и 2.5 и в третью и в четвертую строки (l = 3 и l = 4) табл. 2.6 соответственно. 2.15. Далее в лабораторной работе исследуется влияние ошибок на результат декодирования информации, закодированной кодом Хафмена. На экране предъявляется окно, в котором представлены: двоичный эквивалент последовательности букв источника Z1–Z8 (п. 2.14), т. е. эталонная последовательность; эта же последовательность со случайным образом искаженным одним разрядом. 55
Необходимо, пользуясь табл. 2.4, декодировать искаженную последовательность и определить количество символов, не совпадающих с эталонной последовательностью, т. е. определить длину трека ошибки. Предыдущий пункт повторяется для последовательности Z8–Z1. 2.16. Результаты, полученные в п. 2.15, следует зафиксировать в протоколе работы. На этом выполнение лабораторной работы заканчивается и на экране появится основное меню. Пример Пусть введена вероятность p (x1) = 0,366. Вероятности для данного случая: 0,634; 0,366. 0,634
0
Строим очевидный код: и заносим его в табл. 2.2. Определяем длины кодовых слов. На экране будет табл. 2.9.
1 0,366
Таблица 2.9 № п/ п
Алфавит источника
Вероятность
Код Хафмена
nк
1 2
x1 x2
0,634 0,366
0 1
1 1
Проверка
∑ p ( Si ) = 1
Определяем характеристики и заносим их в табл. 2.6 и будет табл. 2.10. Таблица 2.10 l
1 2 3 4
p (xk)
H(S)
H1(S)
0,634 0,951 0,951 0,366
nminc
χи
0,049
nс
n
1
1
nminc / nс
χк
R/C
0,049
0,951
Автоматически формируются следующие вероятности при группировке x1 и x2 по два символа: 0,4019, 0,232, 0,232, 0,134. Строим код Хафмена: 56
0,402
0
0,232
0
0,232
0,598 1
0
0,134
1 0,366
1
и заносим его в табл. 2.3. Определяем длины кодовых слов. На экране будет табл. 2.11. Таблица 2.11 № п/ п
Алфавит источника
Вероятности
Код Хафмена
nк
1 2 3 4
Y1 Y2 Y3 Y4
0,40196 0,23204 0,23204 0,13396
0 10 110 111
1 2 3 3
Проверка
∑ p ( Si ) = 1
Определяем характеристики и заносим их в табл, 2.6 и будет табл. 2.12 Таблица 2.12 l
1 2 3 4
p (xk)
H(S)
H1(S)
n minc
χи
n
nс
0,634 0,951 0,951 0,049 1 1 0,366 1,903 0,951 0,951 0,049 1,964 0,982
nminc / nс
χк
R/C
0,951 0,969
0,049 0,031
0,951 0,969
Автоматически формируются следующие вероятности при группировке x1 и x2 по три символа: 0,255, 0,147, 0,147, 0,147, 0,085, 0,085, 0,085, 0,049. Строим код Хафмена:
57
0
0,366 0,147 0,147 0,147 0,085 0,085 0,085 0,049
0,294
0
0
1
0 0,425
0 0
0,17
1 0 1
0,134 1
1 0,575
1 1 0,281
и заносим его в табл. 2.4. Определяем длины кодовых слов. На экране будет табл. 2.13. Таблица 2.13 № п/ п
Алфавит источника
Вероятности
1 2 3 4 5 6 7 8
Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8
0,255 0,147 0,147 0,147 0,085 0,085 0,085 0,049
Проверка
Код Хафмена
00 100 101 110 010 011 1110 1111
nк
1 3 3 3 3 3 4 4
∑ p ( Si ) = 1
Определяем характеристики и заносим их в табл. 2.6 и будет табл. 2.14.
58
Таблица 2.14 l p (xk)
H(S)
H1(S)
1 0,634 2 0,366 3 4
0,951 1,902 2,853 3,807
0,951 0,951 0,951 0,951 0,951
nminc
χи
n
nс
0,049 1 1 0,049 1,964 0,982 0,049 2,880 0,960 0,049 3,843 0,958
n minc / nс
χк
R/C
0,951 0,969 0,990 0,992
0,049 0,031 0,010 0,008
0,951 0,969 0,990 0,992
Для следующего случая при группировке по 4 (Q1–Q16) код Хафмена строится автоматически, поэтому сразу переходим к определению характеристик и занесению их в табл. 2.6. Теперь переходим к исследованию влияния ошибок на декодирование кода Хафмена. Эталонная последовательность для Z1–Z8: 0010010111001001111101111 Последовательность с ошибкой: 0010110111001001111101111 Видно, что в данном случае второй символ декодируется неверно (Z3 вместо Z2). Трек ошибки равен 2. Аналогично для последовательности Z8–Z1: 1111111001101011010110000 Последовательность с ошибкой: 1111111001001011010110000 Здесь тоже трек ошибки равен 2. На этом выполнение лабораторной работы закончено. Преподавателю предъявляется протокол выполненной работы. 3. ПОРЯДОК ОФОРМЛЕНИЯ И СОДЕРЖАНИЕ ОТЧЕТА При оформлении отчета и подготовке к зачету необходимо пользоваться методической разработкой "Эффективные коды", а также литературой [1–5]. 1. Поместить в отчете рис. 2.1. 2. Привести в отчете заполненные в ходе выполнения работы табл. 2.2–2.6. 3. Под табл. 2.2–2.4 привести деревья кода Хафмена и процедуры их построения. 59
4. Для двоичного источника с алфавитом М = х1, х2 и соответствующих значений p (х1) и p (х2) определить значение энтропии источника. Построить график зависимости энтропии двоичного источника от вероятности p (x) во всем диапазоне 0 ≤ p (x) ≤ 1. 5. Определить максимальное значение энтропии источников X, Y, Z и Q и максимальное значение удельной энтропии (на символ). Построить на одном графике зависимости Hmax(S) = f(l) и H1max (S) = f (l), где l – количество объединяемых в блок исходных символов х 1 и х 2, (l = 1, 2, 3, 4). 6. На основании данных табл. 2.6 построить следующие зависимости: n = f (l ) и nc = f (l ) на одном графике; χи = f (l ) и χk = f (l ) на одном графике; R / C = f(l). Сделать оценку качества согласования источника с каналом по отношению скорости передачи R к пропускной способности канала C. 7. Исследовать влияние помех на правильность декодирования кодов Хафмена путем определения трека ошибки в последовательности кодовых комбинаций Z1–Z8. С этой целью записать последовательно, друг за другом, без пропусков между кодовыми комбинациями все 8 кодов Хафмена для алфавита источника Z (от Z 1 до Z8), взятых из табл. 2.4. Наметить пунктиром границы кодовых комбинаций и над каждым кодовым словом разместить соответствующее значение Zi. В полученной непрерывной последовательности набора "1" и "0", имитируя одиночную ошибку, изменить на противоположный символ с номером, равным номеру бригады по списку в лабораторном журнале. Произвести декодирование искаженной последовательности, зафиксированной в черновике, пользуясь табл. 2.4, столбцом "Код Хафмена". Под каждой вновь полученной комбинацией записать декодированное значение Zi. Отметить полученный трек ошибки. Эти же действия проделать для последовательности кодовых комбинаций Z8–Z1. 8. По всем пунктам в отчете привести расчетные формулы с пояснением входящих в них обозначений, дать объяснения полученных результатов и сделать выводы по каждому пункту отчета. 4. КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАЧИ 1. Дайте определения понятий "информация", "сигнал", модуляция", "кодирование", "объем алфавита". 60
2. Сравните три вида определения меры количества информации. Достоинства определения меры по Шеннону. 3. Поясните определение "энтропия". Перечислите свойства энтропии. 4. Дайте определение избыточности источника сообщений, коэффициента сжатия и коэффициента избыточности. 5. Поясните различие понятий производительности и скорости формирования символов источника сообщений. 6. Объясните, зачем нужно производить эффективное (статистическое) кодирование и в чем его суть. 7. Поясните связь между скоростью передачи информации и пропускной способностью дискретного канала. 8. Дайте определение теоремы кодирования для канала без помех. Какие свойства оптимальных кодов являются следствием этой теоремы? 9. Почему оптимальные коды называются "префиксными"? Какой факт подчеркивается этим названием? 10. Поясните преимущества блочного кодирования и его особенности. 11. Поясните процедуру кодирования по методу Хафмена. Назовите достоинства процедуры Хафмена. 12. Перечислите достоинства эффективных кодов и возможности их применения. 13. Что такое "неприводимость" кода? 14. Что понимается под термином "упругая задержка"? 15. Как влияют помехи на декодирование сообщений при зффективном кодировании? 16. Что такое "трек ошибок"? 17. Перечислите операции, которые необходимо выполнить при максимально эффективной и помехоустойчивой передаче бинарных последовательностей. 18. Определите избыточность алфавита двоичного источника, выдающего независимые сообщения "0" и "1", на выходе которого вероятность появления символа "0" равна p(0) = 0,2. 19. Сравните пропускные способности двух дискретных каналов без помех, если в первом канале используются сигналы с основанием кода ms = 2 при технической скорости передачи В = 100 бод, а во втором канале основание кода ms = 8 и В = 40 бод. 20. Оцените производительность источника сообщений в виде телеграфного аппарата, если он работает со скоростью передачи 300 знаков в минуту, передавая: последовательность произвольного набора независи61
мых и равновероятных букв; осмысленный русский текст; только поздравительные телеграммы; цифры в случайной последовательности. 21. При переводе русского текста на английский число букв в среднем уменьшается в 1,3 раза. При переводе того же текста на финский язык число букв возрастает примерно в 1,4 раза. Найдите соотношение энтропий данных иностранных языков к русскому, и английского к финскому. 22. Определите относительную энтропию двух сообщений: аббревиатуры – ЛИАП; полного развернутого наименования института без сокращений. Оцените избыточность второго сообщения. 23. Фокусник в присутствии зрителей распечатывает новую колоду игральных карт, содержащую 32 листа. Перемешав карты, он вынимает из колоды одну карту. Какое количество информации (по пп. 1–7) получает зритель, если: 1) вынутая карта предъявляется зрителям и оказывается "пиковой дамой"; 2) вынутая карта не предъявляется зрителям, но по достоверному утверждению фокусника является "дамой"; 3) вслед за этим (п. 2) карта показывается зрителям и оказывается "дамой пик"; 4) после предъявления зрителям (п. 3) карта возвращается в колоду, которая перемешивается, после чего из нее вновь извлекается "дама пик"; 5) предъявленная "дама пик" не возвращается в колоду, а откладывается, и из колоды снова достается "пиковая дама"; 6) отложенная ранее карта (п. 5) показывается зрителям и действительно оказывается "пиковой дамой"; 7) отложенная карта (п. 5) оказывается "тройкой". Поясните с позиции зрителя, знакомого с основами теории информации, в чем суть фокусов. 24. Закодировать двоичным кодом Шеннона – Фано множество из пяти сообщений с вероятностями p1 = 0,4; p2 = p3 = p4 = p5 = 0,15. Оценить среднюю длину кодовых слов n . Закодировать сообщения этого же источника кодом Хафмена, определить среднюю длину кодовых слов n . Сравнить результаты кодирования по этим двум методам и сделать выводы.
62
Рекомендуемая литература
1. Журавлев А. К., Никитин Г. И. Радиотехнические системы передачи информации: Учеб. пособие / ЛИАП. Л., 1984. 86 с. 2. Дмитриев В. И. Прикладная теория информации. М.: Высш. шк., 1989. 328 с. 3. Шеннон К. Связь при наличии шума. Теория информации и ее приложения: Сб. переводов / Под ред. А. А. Харкевича. М.: Физматгиз, 1969. 328 с. С. 82–112. 4. Новик Д. А. Эффективное кодирование. М.: Энергия, 1965. 236 с. С. 33–63. 5. Теория передачи сигналов: Учебник для вузов / А. Г. Зюко, Д. Д. Кловский, М. В. Назаров, Л. М. Финк. М.: Радио и связь, 1986. 304 с.
63
ПРИЛОЖЕНИЕ 1 Таблица двоичных логарифмов. Энтропия двоичного ансамбля p
0,01 0,02 0,03 0,04 0,05 0,06 0,07 0,08 0,09 0,10 0,11 0,12 0,13 0,14 0,15 0,16 0,17 0,18 0,19 0,20 0,21 0,22 0,23 0,24 0,25 0,25 0,27 0,28 0,29 0,30 0,31 0,32
64
–log p
6,643 5,644 5,059 4,644 4,322 4,059 3,936 3,644 3,474
3,322 3,184 3,059 2,943 2,836 2,737 2,644 2,556 2,474 2,396 2,322 2,252 2,184 2,120 2,059 2,000 1,943 1,889 1,836 1,786 1,737 1,690 1,644
–p log p
H (p)
–(1 – p) log (1 – p)
–log (1 – p)
1–p
0,066 0,113 0,152 0,186 0,216 0,243 0,268 0,291 0,313 0,332 0,350 0,367 0,383 0,397 0,411 0,423 0,434 0,445 0,455 0,464 0,473 0,481 0,488 0,494 0,500 0,505 0,510 0,514 0,518 0,521 0,524 0,526
0,081 0,141 0,194 0,242 0,286 0,327 0,366 0,402 0,436 0,469 0,499 0,529 0,557 0,584 0,610 0,634 0,658 0,680 0,701 0,722 0,741 0,760 0,778 0,795 0,811 0,827 0,841 0,855 0,869 0,881 0,893 0,904
0,014 0,028 0,042 0,056 0,070 0,084 0,097 0,111 0,124 0,137 0,150 0,162 0,175 0,187 0,199 0,211 0,223 0,235 0,246 0,257 0,269 0,279 0,290 0,301 0,311 0,321 0,331 0,341 0,351 0,360 0,369 0,378
0,014 0,029 0,044 0,059 0,074 0,089 0,105 0,120 0,136 0,152 0,168 0,184 0,201 0,217 0,234 0,252 0,269 0,286 0,304 0,322 0,340 0,358 0,377 0,396 0,415 0,434 0,454 0,474 0,494 0,514 0,535 0,556
0,99 0,98 0,97 0,96 0,95 0,94 0,93 0,92 0,91 0,90 0,89 0,88 0,87 0,86 0,85 0,84 0,83 0,82 0,81 0,80 0,79 0,78 0,77 0,76 0,75 0,74 0,73 0,72 0,71 0,70 0,69 0,68
ОКОНЧАНИЕ ПРИЛ. 1 p
0,33 0,34 0,35 0,36 0,37 0,38 0,39 0,40 0,41 0,42 0,43 0,44 0,45 0,46 0,47 0,48 0,49 0,50
–log p
1,599 1,556 1,514 1,474 1,434 1,396 1,358 1,322 1,286 1,252 1,217 1,184 1,152 1,120 1,089 1,059 1,029 1,000
–p log p
H (p)
–(1 – p) log (1 – p)
–log (1 – p)
1–p
0,528 0,529 0,530 0,531 0,531 0,530 0,529 0,529 0,527 0,526 0,523 0,521 0,518 0,515 0,512 0,508 0,504 0,500
0,915 0,925 0,934 0,943 0,951 0,958 0,965 0,971 0,976 0,981 0,986 0,989 0,993 0,995 0,997 0,999 0,999 1,000
0,387 0,396 0,404 0,412 0,420 0,428 0,435 0,442 0,449 0,455 0,462 0,468 0,474 0,480 0,485 0,491 0,495 0,500
0,578 0,599 0,621 0,644 0,667 0,690 0,713 0,737 0,761 0,786 0,811 0,836 0,852 0,889 0,916 0,943 0,971 1,000
0,67 0,66 0,65 0,64 0,63 0,62 0,61 0,60 0,59 0,58 0,57 0,56 0,55 0,54 0,53 0,52 0,51 0,50
65
ПРИЛОЖЕНИЕ 2 Инструкция по использованию встроенной программы вычисления двоичных логарифмов
Для вызова программы вычисления двоичных логарифмов необходимо на клавиатуре одновременно нажать следующую комбинацию клавиш: < ALT > < Shift Left > < L >. В левом верхнем углу экрана терминала будет предъявлено окно: Введите X или –1
X =
Необходимо ввести число, двоичный логарифм которого необходимо определить, или –1. В первом случае в окне появится искомое значение двоичного логарифма и указание о нажатии любой клавиши для продолжения работы. После выполнения указания окно вернется в исходное состояние. Во втором случае сеанс работы с программой завершится и окно исчезнет с экрана.
66
ПРИЛОЖЕНИЕ 3 Инструкция по использованию встроенного калькулятора
Для вызова калькулятора необходимо нажать одновременно следующую комбинацию клавиш: < CTRL > < Shift Right > < C >. В правом верхнем углу терминала будет предъявлено окно калькулятора следующего вида. PCALC Programm ers Calculator 5,0 Cls ................. Save ..............
Верхняя часть окна используется для ввода чисел и вывода результатов. В нижней части представлены список команд и режимы работы. Вычисления производятся в следующей последовательности: 1. На цифровой клавиатуре набирается первое число, которое записывается в верхнем углу окна калькулятора. 2. Нажатием клавиш +, –, *, / выбирается нужное действие сложение, вычитание, умножение или деление. 3. Набирается второе число, следующее за знаком операции (высвечивается в окне). 4. Для получения результата необходимо нажать клавишу = или < ENTER >. В окне высветится результат. Команды калькулятора: < C > (очистка) – стереть содержимое окна калькулятора < E > (сбросить ввод) – стереть текущий ввод. < I > (вставить запомненное значение) – число из памяти используется в качестве операнда. < S > (сохранить) – записать результат в память. Пример Необходимо вычислить выражение: 0,1⋅5 + 0,2⋅3 – 0,3⋅2
67
Алгоритм решения Действие
1. Очистить калькулятор, нажав клавишу < C > 2. Ввести первое число, 0,1 3. Нажать клавишу < * > 4. Ввести второе число, 5 5. Нажать клавишу < = > 6. Нажать клавишу < S > 7. Нажать клавишу < C > 8. Ввести третье число, 0,2 9. Нажать клавишу < * > 10. Ввести четвертое число, 3 11. Нажать клавишу < + > 12. Нажать клавишу < I > 13. Нажать клавишу < = > 14. Нажать клавишу < S > 15. Нажать клавишу < C > 16. Ввести пятое число, –0,3 17. Нажать клавишу < * > 18. Ввести шестое число, 2 19. Нажать клавишу < + > 20. Нажать клавишу < I > 21. Нажать клавишу < = > 22. Нажать клавишу < C >
Комментарий
Очистка окна и памяти калькулятора, если там не 0 Ввод на цифровой клавиатуре Действие умножения Ввод на цифровой клавиатуре Результат первого умножения Запоминание в памяти Очистка окна калькулятора Ввод на цифровой клавиатуре Очередное действие умножения См. п. 2 Результат * п. 9 становится значением 1 Запомненный итог п. 5 становится значением 2 Результат сложения п. 5 и 11 См. п. 6 См. п. 7 Со знаком!! (см. п. 2) См. п. 3 См. п. 2 Cм. п. 11 См. п. 12 В третьей строке окна калькулятора будет результат, число 0,5 См. п. 1
Для завершения сеанса работы с калькулятором нажать клавишу < ESC >. Замечание. Калькулятор сохранит состояние предыдущего сеанса, если не произвести его очистку.
68
Лабораторная работа № 3 КОРРЕКТИРУЮЩИЕ КОДЫ ХЕММИНГА Цель работы: изучение принципов помехоустойчивого кодирования, ознакомление с классификацией корректирующих кодов и основными их характеристиками, с методами кодирования и декодирования на примере кода Хемминга и циклического кода (9, 5). 1. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ПОДГОТОВКЕ К ЛАБОРАТОРНОЙ РАБОТЕ Для выполнения лабораторной работы студенты должны предварительно изучить разд. 1 и получить у преподавателя допуск к работе. 1.1. Принципы помехоустойчивого кодирования В реальных условиях прием двоичных символов всегда происходит с ошибками, когда вместо символа "1" принимается символ "0" и наоборот. Ошибки могут возникать из-за помех, действующих в канале связи (особенно помех импульсного характера), изменения за время передачи характеристик канала (например, замирания), снижения уровня передачи, нестабильности амплитудно- и фазочастотных характеристик канала и т. п. Общепринятым критерием оценки качества передачи в дискретных каналах является нормированная на знак или символ допустимая вероятность ошибки для данного вида сообщений. Так, допустимая вероятность ошибки при телеграфной связи может составлять 10–3 (на знак), а при передаче данных – не более 10–6 (на символ). Для обеспечения таких значений вероятностей одного улучшения только качественных показателей канала связи может оказаться недостаточным. Поэтому основной мерой является применение специальных методов повышения качества приема передаваемой информации. Эти методы можно разбить на две группы. К первой группе относятся методы увеличения помехоустойчивости приема единичных элементов (символов) дискретной информации, связанные с выбором уровня сигнала, отношения сигнал – помеха (энергетические характеристики), ширины полосы канала, методов приема и т. д. Ко второй группе относятся методы обнаружения и исправления ошибок, основанные на искусственном введении избыточности в пере69
даваемое сообщение. Увеличить избыточность передаваемого сигнала можно различными способами. Так как объем сигнала V = P ∆F T, (3.1) где P – мощность сигнала, Вт; ∆F – ширина спектра сигнала, Гц; T – время передачи сигнала, с, то его увеличение возможно за счет увеличения P, ∆F и T. Практические возможности увеличения избыточности за счет мощности и ширины спектра сигнала в системах передачи дискретной информации по стандартным каналам резко ограничены. Поэтому для повышения качества приема, как правило, идут по пути увеличения времени передачи и используют следующие основные способы: 1) многократную передачу кодовых комбинаций (метод повторения); 2) одновременную передачу кодовой комбинации по нескольким параллельно работающим каналам; 3) помехоустойчивое (корректирующее) кодирование, т. е. использование кодов, исправляющих ошибки. Иногда применяют комбинации этих способов. Многократное повторение (l раз) кодовой комбинации является самым простым способом повышения достоверности приема и легко реализуется, особенно в низкоскоростных системах передачи для каналов с быстро меняющимися параметрами. Метод многократного повторения исследовался в ЛР № 1 на примере кода МТК-2 с мажоритарным декодированием [1]. Способу многократного повторения аналогичен способ передачи одной и той же информации по нескольким параллельным каналам связи. В этом случае необходимо иметь не менее трех каналов связи (например, с частотным разнесением), несущие частоты которых нужно выбирать таким образом, чтобы ошибки в каналах были независимы. Достоинством таких систем являются надежность и малое время задержки в получении информации. Основным недостатком многоканальных систем так же, как и систем с повторением, является нерациональное использование избыточности. Наиболее целесообразно избыточность используется при применении помехоустойчивых (корректирующих) кодов. При помехоустойчивом кодировании чаще всего считают, что избыточность источника сообщений на входе кодера равна χ = 0. Это обусловлено тем, что очень многие дискретные источники (например, цифровая информация на выходе ЭВМ) обладают малой избыточностью. 70
Если избыточность первичных источников сообщений существенна, то в этих случаях по возможности стремятся ее уменьшить путем эффективного кодирования, применяя, например коды Шеннона– Фано или Хафмена. Эти вопросы исследовались в ЛР № 2 на примере кода Хафмена [2]. Затем методами помехоустойчивого кодирования можно внести такую избыточность в сигнал, которая позволит достаточно простыми средствами улучшить качество приема. Таким образом, эффективное кодирование вполне может сочетаться с помехоустойчивым. В обычном равномерном непомехоустойчивом коде число разрядов n в кодовых комбинациях определяется числом сообщений и основанием кода. Коды, у которых все кодовые комбинации разрешены к передаче, называются простыми или равнодоступными и являются полностью безызбыточными. Безызбыточные первичные коды обладают большой "чувствительностью" к помехам. Внесение избыточности при использовании помехоустойчивых кодов обязательно связано с увеличением n – числа разрядов (длины) кодовой комбинации. Таким образом, все множество N = 2n комбинаций можно разбить на два подмножества: подмножество разрешенных комбинаций, т. е. обладающих определенными признаками, и подмножество запрещенных комбинаций, этими признаками не обладающих. Помехоустойчивый код отличается от обычного тем, что в канал передаются не все кодовые комбинации N, которые можно сформировать из имеющегося числа разрядов n, а только их часть Nk, которая составляет подмножество разрешенных комбинаций. Если при приеме выясняется, что кодовая комбинация принадлежит к запрещенным, то это свидетельствует о наличии ошибок в комбинации, т. е. таким образом решается задача обнаружения ошибок. При этом принятая комбинация не декодируется (не принимается решение о переданном сообщении). В связи с этим помехоустойчивые коды называют корректирующими кодами. Корректирующие свойства избыточных кодов зависят от правила их построения, определяющего структуру кода, и параметров кода (длительности символов, числа разрядов, избыточности и т. п.). Первые работы по корректирующим кодам принадлежат Хеммингу, который ввел понятие минимального кодового расстояния dmin и предложил код, позволяющий однозначно указать ту позицию в кодовой ком71
бинации, где произошла ошибка. К информационным элементам k в коде Хемминга добавляется r проверочных элементов для автоматического определения местоположения ошибочного символа. Коды Хемминга будут рассмотрены подробнее далее. 1.2. Классификация помехоустойчивых корректирующих кодов На рис. 3.1 приведена упрощенная классификация помехоустойчивых кодов. Остановимся кратко на основных особенностях различных классов кодов. Помехоустойчивые (корректирующие) коды делятся на блочные и непрерывные. Блочными называются коды, в которых информационный поток символов разбивается на отрезки и каждый из них преобразуется в определенную последовательность (блок) кодовых символов. В блочных кодах кодирование при передаче (формирование проверочных элементов) и декодирование при приеме (обнаружение и исправление ошибок) выполняются в пределах каждой кодовой комбинации (блока) в отдельности по соответствующим алгоритмам. Непрерывные или рекуррентные коды образуют последовательность символов, не разделяемую на отдельные кодовые комбинации. Кодирование и декодирование непрерывно совершаются над последовательностью элементов без деления их на блоки. Формирование проверочных символов ведется по рекуррентным (возвратным) правилам, поэтому непрерывные коды часто называют рекуррентными или цепными. В простейшем цепном коде каждый проверочный элемент формируется путем сложения по модулю 2 соседних или отстоящих друг от друга на определенное число позиций информационных элементов. В канал связи передается последовательность импульсов, в которой за каждым информационным следует проверочный. Подобную чередующуюся последовательность разрядов имеет, например корреляционный манчестерский код [ 3]. К непрерывным кодам относятся и сверточные коды, в которых каждый информационный символ, поступающий на вход кодирующего устройства, вызывает появление на его выходе ряда проверочных элементов, образованных суммированием по модулю 2 данного символа и k–1 предыдущих информационных символов. Рекуррентные коды позволяют исправлять групповые ошибки ("пачки") в каналах связи. Блочные коды делятся на равномерные и неравномерные. В равномерных кодах, в отличие от неравномерных, все кодовые комбинации 72
содержат одинаковое число n-символов (разрядов) с постоянной длительностью τ0 импульсов символов кода. Равномерные коды в основном и применяются в системах связи, так как это упрощает технику передачи и приема. Помехоустойчивые (корректирующие коды) Блочные коды
Непрерывные (рекурентные коды)
Равномерные коды
Неравномерные коды
Разделимые коды
Неразделимые коды
Равновесные коды
Систематические (групповые) коды, линейные
Несистематические коды, нелинейные
Итеративные коды
Коды с поэлементным формированием проверочной группы
Коды с формированием проверочной группы "в целом" Циклические коды
Код с проверкой на четность (dmin = 2)
Коды Хемминга (dmin = 3)
Сверточные коды
Код Морзе
Комбинационные коды Антифединговые коды БЧХ-коды Расширенные коды Хемминга (dmin = 4)
Рис. 3.1
Классическими примерами неравномерного кода являются код Морзе, широко применяемый в телеграфии, и код Хафмена, применяемый для компрессии информации (факсимильная связь, ЭВМ). Никаких специальных мер по исправлению и обнаружению ошибок в коде Морзе не предусматривается в связи с большой избыточностью самого передаваемого текста. В этом смысле код Морзе не относится к классу корректирующих кодов. Почти все блочные корректирующие коды принадлежат к разделимым кодам, в которых кодовые комбинации состоят из двух частей: информационной и проверочной. Их символы всегда занимают одни и те же позиции, т. е. располагаются на определенных местах. Как правило, в таких кодах, все кодовые комбинации которых содержат n символов, первые k символов являются информационными, а за ними располага73
ются (n–k)-проверочных символов. В соответствии с этим разделимые коды получили условное обозначение – (n, k)-коды. В неразделимых кодах деление на информационные и проверочные символы отсутствует. К таким кодам относятся, в частности, коды с постоянным весом, так называемые равновесные коды. Например, Международным консультативным комитетом по телеграфии и телефонии (МККТТ) рекомендован для использования телеграфный код № 3 – семиразрядный код с постоянным весом, т. е. с числом единиц в каждой кодовой комбинации, равным 3 (W = 3). Систематические коды образуют наиболее обширную группу (n, k)-разделимых кодов. Особенностью этих кодов является то, что проверочные (корректирующие) символы образуются с помощью линейных операций над информационными. Кроме того, любая разрешенная кодовая комбинация может быть получена в результате линейной операции над набором k линейно независимых кодовых комбинаций. В частности, суммирование по модулю 2 двух и более разрешенных комбинаций также дает разрешенную кодовую комбинацию. Поскольку теоретической основой получения таких комбинаций является математический аппарат линейной алгебры, то коды и называют линейными, а учитывая, что проверочные символы формируются по определенной системе (правилам), блочные равномерные разделимые линейные коды получили название систематических. Использование аппарата линейной алгебры, в которой важное значение имеет понятие "группа", породило и другое название этих кодов – групповые. Эти коды получили наибольшее применение в системах передачи дискретной информации. Несистематические (нелинейные) коды указанными выше свойствами не обладают и применяются значительно реже в специальных случаях. Примером нелинейного кода является уже упоминавшийся неразделимый, равновесный код. Эти коды обычно используются в несимметричных каналах связи, в которых вероятность перехода 1 → 0 значительно больше вероятности перехода 0 → 1, или наоборот. В таких каналах очень маловероятно, чтобы в одном блоке были переходы обоих видов, и поэтому почти все ошибки приводят к изменению веса блока, и, следовательно, обнаруживаются. Другим примером несистематического кода является код с контрольным суммированием – итеративный код. В этом коде проверочные 74
разряды формируются в результате суммирования значений разрядов как в данной кодовой комбинации, так и одноименных разрядов в ряде соседних с ней комбинаций, образующих совместный блок. Итеративные коды позволяют получить так называемые мощные коды, т. е. коды с длинными блоками и большим кодовым расстоянием при сравнительно простой процедуре декодирования. Итеративные коды могут строиться как комбинационные посредством произведения двух или более систематических кодов. К комбинационным кодам можно отнести также антифединговые коды, предназначенные для обнаружения и исправления ошибок в каналах с замираниями (федингом) сигналов. Для таких каналов с группированием ошибок применяют метод перемежения символов или декорреляции ошибок. Он заключается в том, что символы, входящие в одну кодовую комбинацию, передаются не непосредственно друг за другом, а перемежаются символами других кодовых комбинаций исходного систематического или любого другого кода. Если интервал между символами, входящими в одну кодовую комбинацию, сделать длиннее "памяти" (интервала корреляции) канала с замираниями, то в пределах длительности одной исходной кодовой комбинации группирования ошибок не будет. На приеме после обратной "расфасовки" в кодовых комбинациях можно производить декодирование с обнаружением и исправлением ошибок. В систематических кодах различают два метода формирования проверочной группы символов: поэлементный и в целом. Наиболее известны среди систематических кодов коды Хемминга, которые исторически были найдены раньше многих других кодов и сыграли большую роль в развитии теории корректирующих кодов. В этих кодах используется принцип проверки на четность определенного ряда информационных символов. Проверочная группа из r символов формируется поэлементно по соответствующему алгоритму. Коды Хемминга, имеющие dmin = 3, позволяют исправить одну ошибку. Расширенные коды Хемминга строятся в результате дополнения кодов с dmin = 3 общей проверкой каждой из кодовых комбинаций на четность, т. е. еще одним проверочным символом. Это позволяет увеличить минимальное кодовое расстояние до dmin = 4. Циклические коды также относятся к классу линейных систематических кодов и обладают всеми их свойствами. Коды названы циклическими потому, что циклический сдвиг любой разрешенной кодовой ком75
бинации также является разрешенной комбинацией. Теория построения циклических кодов базируется на разделах высшей алгебры, изучающей свойства двоичных многочленов. Особую роль в этой теории играют так называемые неприводимые многочлены, т. е. полиномы, которые не могут быть представлены в виде произведения многочленов низших степеней. В связи с этим циклические коды относят к разновидности полиномиальных кодов. Среди циклических кодов особое место занимает класс кодов, предложенных Боузом и Рой–Чоудхури и независимо от них Хоквингемом [2]. Коды Боуза–Чоудхури–Хоквингема получили сокращенное наименование БЧХ-коды и отличаются специальным выбором порождающего (образующего) циклический код полинома, что приводит к простой процедуре декодирования. В циклических кодах r проверочных символов, добавляемых к исходным k информационным, могут быть получены сразу, т. е. в целом, в результате умножения исходной подлежащей передаче кодовой комбинации Q(x) простого кода на одночлен xr и добавлением к этому произведению остатка R(x), полученного в результате деления произведения на порождающий полином P(x). Отметим, что коды Хемминга также можно получить по алгоритмам формирования циклических кодов [2]. Проблема помехоустойчивого кодирования представляет собой обширную область теоретических и прикладных исследований. Основными задачами при этом являются следующие: отыскание кодов, эффективно исправляющих ошибки требуемого вида; нахождение методов кодирования и декодирования и простых способов их реализации. Наиболее разработаны эти задачи применительно к систематическим кодам. Такие коды успешно применяются в вычислительной технике, различных автоматизированных цифровых устройствах и цифровых системах передачи информации. 1.3. Основные характеристики корректирующих кодов В настоящее время наибольшее внимание с точки зрения технических приложений уделяется двоичным блочным корректирующим кодам. При использовании блочных кодов цифровая информация передается в виде отдельных кодовых комбинаций (блоков) равной длины. Кодирование и декодирование каждого блока осуществляется независимо друг от друга. 76
Почти все блочные коды относятся к разделимым кодам, кодовые комбинации которых состоят из двух частей: информационной и проверочной. При общем числе n символов в блоке число информационных символов равно k, а число проверочных символов r = n – k. (3.2) К основным характеристикам корректирующих кодов относятся: число разрешенных и запрещенных кодовых комбинаций; избыточность кода; минимальное кодовое расстояние; число обнаруживаемых или исправляемых ошибок; корректирующие возможности кодов. Число разрешенных и запрещенных кодовых комбинаций
Для блочных двоичных кодов, с числом символов в блоках, равным n, общее число возможных кодовых комбинаций определяется значением N0 = 2n. (3.3) Число разрешенных кодовых комбинаций при наличии k информационных разрядов в первичном коде: (3.4) Nk = 2 k. Очевидно, что число запрещенных комбинаций: (3.5) NЗ = N0 – Nk = 2n –2 k , а с учетом (3.2) отношение будет (3.6) N0 / Nk = 2n / 2k = 2n– k = 2r, где r – число избыточных (проверочных) разрядов в блочном коде. Избыточность корректирующего кода
Избыточностью корректирующего кода называют величину
χ =
r n−k k = = 1− , n n n
(3.7)
откуда следует
k = 1 − χ. (3.8) n Эта величина показывает, какую часть общего числа символов кодовой комбинации составляют информационные символы. В теории кодирования величину Bk называют относительной скоростью кода. Если Bk =
77
производительность источника информации равна H символов в секунду, то скорость передачи после кодирования этой информации будет
k B = H , n
(3.9)
поскольку в закодированной последовательности из каждых n символов только k символов являются информационными. Если число ошибок, которые нужно обнаружить или исправить, значительно, то необходимо иметь код с большим числом проверочных символов. Чтобы при этом скорость передачи оставалась достаточно высокой, необходимо в каждом кодовом блоке одновременно увеличивать как общее число символов, так и число информационных символов. При этом длительность кодовых блоков будет существенно возрастать, что приведет к задержке информации при передаче и приеме. Чем сложнее кодирование, тем длительнее временная задержка информации. Минимальное кодовое расстояние – dmin
Для того чтобы можно было обнаружить и исправлять ошибки, разрешенная комбинация должна как можно больше отличаться от запрещенной. Если ошибки в канале связи действуют независимо, то вероятность преобразования одной кодовой комбинации в другую будет тем меньше, чем большим числом символов они различаются. Если интерпретировать кодовые комбинации как точки в пространстве, то отличие выражается в близости этих точек, т. е. в расстоянии между ними. Количество разрядов (символов), которыми отличаются две кодовые комбинации, можно принять за кодовое расстояние между ними. Для определения этого расстояния нужно сложить две кодовые комбинации по модулю 2 и подсчитать число единиц в полученной сумме. Например, две кодовые комбинации xi = 01011 и xj = 10010 имеют расстояние d(xi, xj), равное 3, так как xi = 01011 → W = 3, ⊕ xi = 10010 → W = 2 . (3.10) xi ⊕ x j = 11001 → d ( xi x j ) = 3 Здесь под операцией "⊕" понимается сложение по mod 2. 78
Заметим, что кодовое расстояние d (xi, x0) между комбинацией xi и нулевой x0 = 00...0 называют весом W комбинации xi, т. е. вес xi равен числу "1" в ней. Расстояние между различными комбинациями некоторого конкретного кода могут существенно отличаться. Так, в частности, в безызбыточном первичном натуральном коде (n = k) это расстояние для различных комбинаций может изменяться от единицы до величины n, равной значности кода. Особую важность для характеристики корректирующих свойств кода имеет минимальное кодовое расстояние dmin, определяемое при попарном сравнении всех кодовых комбинаций, которое называют расстоянием Хемминга. В безызбыточном коде все комбинации являются разрешенными, и, следовательно, его минимальное кодовое расстояние равно единице – dmin = 1. Поэтому достаточно исказиться одному символу, чтобы вместо переданной комбинации была принята другая разрешенная комбинация. Чтобы код обладал корректирующими свойствами, необходимо ввести в него некоторую избыточность, которая обеспечивала бы минимальное расстояние между любыми двумя разрешенными комбинациями не менее двух – dmin ≥ 2. Минимальное кодовое расстояние является важнейшей характеристикой помехоустойчивых кодов, указывающей на гарантируемое число обнаруживаемых или исправляемых заданным кодом ошибок. Число обнаруживаемых или исправляемых ошибок
При применении двоичных кодов учитывают только дискретные искажения, при которых единица переходит в нуль (1 → 0) или нуль переходит в единицу (0 → 1). Переход 1 → 0 или 0 → 1 только в одном элементе кодовой комбинации называют единичной ошибкой (единичным искажением). В общем случае под кратностью ошибки подразумевают число позиций кодовой комбинации, на которых под действием помехи одни символы оказались замененными на другие. Возможны двукратные (g = 2) и многократные (g > 2) искажения элементов в кодовой комбинации в пределах 0 ≤ g ≤ n. Минимальное кодовое расстояние является основным параметром, характеризующим корректирующие способности данного кода. Если код используется только для обнаружения ошибок кратностью g0, то необходимо и достаточно, чтобы минимальное кодовое расстояние было равно (3.11) dmin ≥ g0 + 1. 79
В этом случае никакая комбинация из g0 ошибок не может перевести одну разрешенную кодовую комбинацию в другую разрешенную. Таким образом, условие обнаружения всех ошибок кратностью g0 можно записать (3.12) g0 ≤ dmin – 1 . Чтобы можно было исправить все ошибки кратностью gи и менее, необходимо иметь минимальное расстояние, удовлетворяющее условию (3.13) dmin ≥ 2 gи + 1 . В этом случае любая кодовая комбинация с числом ошибок gи отличается от каждой разрешенной комбинации не менее чем в gи + 1 позициях. Если условие (3.13) не выполнено, возможен случай, когда ошибки кратности g исказят переданную комбинацию так, что она станет ближе к одной из разрешенных комбинаций, чем к переданной или даже перейдет в другую разрешенную комбинацию. В соответствии с этим, условие исправления всех ошибок кратностью не более gи можно записать gи ≤ (dmin – 1) / 2 . (3.14) Из (3.11) и (3.13) следует, что если код исправляет все ошибки кратностью gи, то число ошибок, которые он может обнаружить, равно g0 = 2gи. Следует отметить, что соотношения (3.11) и (3.13) устанавливают лишь гарантированное минимальное число обнаруживаемых или исправляемых ошибок при заданном dmin и не ограничивают возможность обнаружения ошибок большей кратности. Например, простейший код с проверкой на четность с dmin = 2 позволяет обнаруживать не только одиночные ошибки, но и любое нечетное число ошибок в пределах g0 < n. Корректирующие возможности кодов
Вопрос о минимально необходимой избыточности, при которой код обладает нужными корректирующими свойствами, является одним из важнейших в теории кодирования. Этот вопрос до сих пор не получил полного решения. В настоящее время получен лишь ряд верхних и нижних оценок (границ), которые устанавливают связь между максимально возможным минимальным расстоянием корректирующего кода и его избыточностью [2]. Так, граница Плоткина дает верхнюю границу кодового расстояния dmin при заданном числе разрядов n в кодовой комбинации и числе информационных разрядов k, и для двоичных кодов: 80
n 2k −1 2k − 1 r ≥ 2 (dmin – 1) – log2 dmin d min ≤
или
(3.15) (3.16)
при n ≥ 2ndmin – 1 . Верхняя граница Хемминга устанавливает максимально возможное число разрешенных кодовых комбинаций (2k) любого помехоустойчивого кода при заданных значениях n и dmin:
2k ≤ 2n /
d min − 1 2
∑
i=0
Cni ,
(3.17)
где Cin – число сочетаний из n элементов по i элементам. Отсюда можно получить выражение для оценки числа проверочных символов r ≥ log 2 (
d min − 1 2
∑
i=0
Cni ).
(3.18)
Для значений (dmin / n) ≤ 0,3 разница между границей Хемминга и границей Плоткина сравнительно невелика. Граница Варшамова–Гильберта для больших значений n определяет нижнюю границу для числа проверочных разрядов, необходимого для обеспечения заданного кодового расстояния: d −2
r ≥ log 2 ( ∑ Cni −1). i=0
(3.19)
Отметим, что для некоторых частных случаев Хемминг получил простые соотношения, позволяющие определить необходимое число проверочных символов [5, 6] : dmin = 3, r ≥ log2 (n + 1) для для d min = 4. r ≥ log2 (2n) Блочные коды с dmin = 3 и 4 в литературе обычно называют кодами Хемминга. Все приведенные выше оценки дают представление о верхней границе числа dmin при фиксированных значениях n и k или оценку снизу числа проверочных символов r при заданных k и dmin. 81
Существующие методы построения избыточных кодов решают в основном задачу нахождения такого алгоритма кодирования и декодирования, который позволял бы наиболее просто построить и реализовать код с заданным значением dmin. Поэтому различные корректирующие коды при одинаковых dmin сравниваются по сложности кодирующего и декодирующего устройств. Этот критерий является в ряде случаев определяющим при выборе того или иного кода. 1.4. Корректирующие коды Хемминга Построение кодов Хемминга базируется на принципе проверки на четность веса W (числа единичных символов) в информационной группе кодового блока. Поясним идею проверки на четность на примере простейшего корректирующего кода, который так и называется кодом с проверкой на четность или кодом с проверкой по паритету (равенству). В таком коде к кодовым комбинациям безызбыточного первичного двоичного k-разрядного кода добавляется один дополнительный разряд (символ проверки на четность, называемый проверочным, или контрольным). Если число символов 1 исходной кодовой комбинации четное, то в дополнительном разряде формируют контрольный символ 0, а если число символов 1 нечетное, то в дополнительном разряде формируют символ 1. В результате общее число символов 1 в любой передаваемой кодовой комбинации всегда будет четным. Таким образом, правило формирования проверочного символа сводится к следующему: r1 = i1 ⊕ i2 ⊕ ... ⊕ ik , где i – соответствующий информационный символ (0 или 1); k – общее их число а под операцией "⊕" здесь и далее понимается сложение по mod 2. Очевидно, что добавление дополнительного разряда увеличивает общее число возможных комбинаций вдвое по сравнению с числом комбинаций исходного первичного кода, а условие четности разделяет все комбинации на разрешенные и неразрешенные. Код с проверкой на четность позволяет обнаруживать одиночную ошибку при приеме кодовой комбинации, так как такая ошибка нарушает условие четности, переводя разрешенную комбинацию в запрещенную. Критерием правильности принятой комбинации является равенство нулю результата S суммирования по mod 2 всех n символов кода, вклю82
чая проверочный символ r1. При наличии одиночной ошибки S принимает значение 1: S = r1 ⊕ i1 ⊕ i2 ⊕ ... ⊕ ik = 0 – ошибки нет, = 1 – однократная ошибка. n Этот код является (k +1, k)-кодом, или (n, n–1)-кодом. Минимальное расстояние кода равно двум (dmin = 2), и, следовательно, никакие ошибки не могут быть исправлены. Простой код с проверкой на четность может использоваться только для обнаружения (но не исправления) однократных ошибок. Увеличивая число дополнительных проверочных разрядов и формируя по определенным правилам проверочные символы r, равные 0 или 1, можно усилить корректирующие свойства кода так, чтобы он позволял не только обнаруживать, но и исправлять ошибки. На этом и основано построение кодов Хемминга. Коды Хемминга позволяют исправлять одиночную ошибку, с помощью непосредственного описания. Для каждого числа проверочных символов r = 3, 4, 5… существует классический код Хемминга с маркировкой (3.20) (n, k) = (2r–1, 2r–1 – r) , т. е. (7,4), (15,11), (31,26) … При других значениях числа информационных символов k получаются так называемые усеченные (укороченные) коды Хемминга. Так, для Международного телеграфного кода МТК-2 , имеющего 5 информационных символов, потребуется использование корректирующего кода (9,5), являющегося усеченным от классического кода Хемминга (15,11), так как число символов в этом коде уменьшается (укорачивается) на 6. Для примера рассмотрим классический код Хемминга (7,4), который можно сформировать и описать с помощью кодера, представленного на рис. 3.2. В простейшем варианте при заданных четырех (k = 4) информационных символах (i1, i2, i3, i4) будем полагать, что они сгруппированы в начале кодового слова, хотя это и не обязательно. Дополним эти информационные символы тремя проверочными символами (r = 3), задавая их следующими равенствами проверки на четность, которые определяются соответствующими алгоритмами [3,5]: 83
r1 = i1 ⊕ i2 ⊕ i3; i2 = i2 ⊕ i3 ⊕ i4; r3 = i1 ⊕ i2 ⊕ i4, где знак ⊕ означает сложение по модулю 2. В соответствии с этим алгоритмом определения значений проверочных символов ri ниже выписаны все возможные 16 кодовых слов (7,4) – кода Хемминга (табл. 3.1). На рис. 3.3 приведена схема Таблица 3.1 декодера для (7,4) – кода ХемКодовые слова (7 ,4) – кода Хемминга минга, на вход которого постук=4 r=3 пает кодовое слово i1
i2
i3
i4
r1
r2
r3
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1
0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1
0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1
V = (i1′, i2′ , i3′ , i4′ , r1′, r2′ , r3′ ). Апостроф означает, что любой символ слова может быть искажен помехой в канале передачи. В декодере в режиме исправления ошибок строится последовательность:
s1 = r1′ ⊕ i1′ ⊕ i2′ ⊕ i3′ ; s2 = r2′ ⊕ i2′ ⊕ i3′ ⊕ i4′ ; s3 = r3′ ⊕ i1′ ⊕ i2′ ⊕ i4′ .
Трехсимвольная последовательность (s1, s2, s3) называется синдромом. Термин "синдром" используется и в медицине, где он обозначает сочетание признаков, характерных для определенного заболевания. В данном случае синдром S = (s1, s2, s3) представляет собой сочетание результатов проверки на четность соответствующих символов кодовой группы и характеризует определенную конфигурацию ошибок (шумовой вектор). Число возможных синдромов определяется выражением S = 2r. 84
(3.21)
4-символьное информационное слово
От ИС
7-символьное кодовое слово
i1
i1
i2
i2
i3
i3
i4
i4 r1
Сумматор по модулю 2
i1 + i2, + i3
К модулятору
r2 r3
Сумматор по модулю 2
i2 + i3, + i4
Сумматор по модулю 2
i1 + i2, + i4
Рис. 3.2 4-символьное информационное слово
7-символьное кодовое слово i1
+
i2 От демодулятора
i3
+
i4 r1 r2
Сумматор Сумматор по помодулю модулю22
r3
Ошибка в i1, i2, i3, или r1
+
+
i1 i2
К ПС
i3 i4
Цифровой корректор ошибок
Сумматор по модулю 2
Ошибка в i2, i3, i4, r2
Сумматор по модулю 2
Ошибка в i1, i2, i4, или r3
Рис. 3.3
85
При числе проверочных символов r = 3 имеется восемь возможных синдромов (2 3 = 8). Нулевой синдром (000) указывает на то, что ошибки при приеме отсутствуют или не обнаружены. Всякому ненулевому синдрому соответствует определенная конфигурация ошибок, которая и исправляется. Классические коды Хемминга (3.20) имеют число синдромов, точно равное их необходимому числу (что позволяет исправить все однократные ошибки в любом информативном и проверочном символах) и включают один нулевой синдром. Такие коды называются плотноупакованными. Усеченные коды являются неплотноупакованными, так как число синдромов у них превышает необходимое. Так, в коде (9,5) при четырех проверочных символах число синдромов будет равно 24 =16, в то время как необходимо всего 10. Лишние 6 синдромов свидетельствуют о неполной упаковке кода (9,5). Для рассматриваемого кода (7,4) в табл. 3.2 представлены ненулевые синдромы и соответствующие конфигурации ошибок. Таблица 3.2 Синдром
001
010
011
100
101
110
111
Конфигурация ошибок 0000001 0000010 0001000 0000100 1000000 0010000 0100000 Ошибка r2 i4 r1 i1 i3 i2 в символе r3
Таким образом, код (7,4) позволяет исправить все одиночные ошибки. Простая проверка показывает, что каждая из ошибок имеет свой единственный синдром. При этом возможно создание такого цифрового корректора ошибок (дешифратора синдрома), который по соответствующему синдрому исправляет соответствующий символ в принятой кодовой группе. После внесения исправления проверочные символы ri можно на выход декодера (рис. 3.3) не выводить. Две или более ошибок превышают возможности корректирующего кода Хемминга, и декодер будет ошибаться. Это означает, что он будет вносить неправильные исправления и выдавать искаженные информационные символы. Идея построения подобного корректирующего кода, естественно, не меняется при перестановке позиций символов в кодовых словах. Все такие варианты также называются (7,4)-кодами Хемминга. 86
2. ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ В лабораторной работе исследуется усеченный код Хемминга (9,5). Длина кодового слова n = 9 разрядов, информационная часть содержит k = 5 разрядов, количество проверочных разрядов r = 4. Соответствующие алгоритмы проверки на четность рассматриваемого кода имеют вид r1 = i2 ⊕ i,3 r2 = i1 ⊕ i3 ⊕ ,i4 r3 = i2 ⊕ i4 ⊕ i5 r4 = i1 ⊕i i,2 ⊕
(3.22)
5
а алгоритм вычисления символов синдрома: s1 = i2 ⊕ i3 ⊕, r1 s2 = i1 ⊕ i3 ⊕ i4 ⊕, r2 s3 = i2 ⊕ i4 ⊕ i5 ⊕ r3
(3.23)
s4 = i1 ⊕ i2 ⊕ i5 ⊕. r4
Данный код имеет минимальное кодовое расстояние dmin= 3, следовательно, теоретически он исправляет все однократные ошибки. Все одно- и двухкратные ошибки обнаруживаются. Для выполнения лабораторной работы необходимо выбрать соответствующую позицию в основном меню и нажать клавишу < ENTER >, которую в дальнейшем необходимо нажимать при переходе от пункта к пункту. 1. Начинать выполнение лабораторной работы следует при появлении в нижней строке экрана указания: < Введите кодируемые символы > 2. В ответ на это указание необходимо ввести от одного до пяти алфавитно – цифровых символов, допустимых для кода МТК-2. Число введенных символов должно быть равно числу членов бригады. Они автоматически закодируются безызбыточным кодом МТК-2, кодовые слова которого печатаются на экране. Нажатие клавиши < ESC > означает отказ от выполнения работы. 3. Кодовые слова безызбыточного кода МТК-2 необходимо закодировать корректирующим кодом (9,5), руководствуясь алгоритмом (3.22). 87
Информационный вектор i, очевидно, представляет собой кодовое слово кода МТК-2. Полученные векторы x кода (9,5) (кодовые слова) необходимо ввести, набрав их на клавиатуре. 4. В кодовые слова x кода (9,5) автоматически вносятся однократные ошибки, в результате чего формируются некоторые векторы y, не совпадающие с соответствующими векторами x. Необходимо, пользуясь алгоритмом (3.23), определить синдром S и ввести его символы с клавиатуры. В соответствии с вычисленным вектором S в таблице декодирования автоматически отыскиваются шумовые векторы z и отображаются на экране. Необходимо проанализировать их и убедиться в том, что ненулевая позиция в этих векторах соответствует искаженным разрядам в векторах y, т. е. соотношение x = z ⊕ y справедливо. 5. Далее, в кодовые слова x кода (9,5) автоматически вносятся двухкратные ошибки, т. е. вновь формируются векторы y, не равные соответствующим векторам x. Необходимо повторить действия предыдущего пункта. При анализе шумовых векторов z необходимо учитывать, что таблица декодирования исследуемого в лабораторной работе кода содержит только синдромы, соответствующие однократным ошибкам zi. Поэтому возможны две ситуации: вычисленному синдрому Si в таблице не соответствует никакой шумовой вектор zi. В этом случае на экране будут напечатаны символы (*******). вычисленному синдрому Si в таблице соответствует некоторый вектор zi. В этом случае необходимо убедиться в том, что он неправильно отображает реальную конфигурацию ошибок. Рассмотрим пример, поясняющий ход выполняемых операций. Пусть выбран и введен Ф, ему соответствует кодовое слово кода МТК2: i = 10110. Таким образом, на экране отобразится следующая информация: Символ Ф
Код МТК-2 10110
В результате применения алгоритмов (3.22) получим вектор x корректирующего кода (9,5), который и необходимо ввести. Таким образом, получим вектор x = (101101111), и изображение на экране примет вид 88
Символ Ф
Код МТК-2 10110
Код (9,5) 01101111
Далее, в вектор x вносится однократная ошибка, т. е. получается вектор y, не совпадающий с x, например: y = (101001111), и на экране будет следующее изображение: Символ Код МТК-2 Ф 10110
Код (9,5) Искажения 101101111 101001111
Декодируем вектор y, пользуясь алгоритмом (3.23), т. е. определяем синдром S, который необходимо ввести. Вычисленный синдром S = 0110. Полученный синдром вводится в приведенную выше таблицу, которая примет вид Символ Код МТК-2 Код (9,5) Искажения Синдром Ф 10110 101101111 101001111
Вычисленному синдрому соответствует шумовой вектор Z = (000100000), т. е. ошибка произошла в шестом разряде (при счете разрядов справа – налево) исходного вектора x. На экране появится следующее изображение:
Символ Код МТК-2 Код (9,5) Искажение Синдром Ф
10110
101101111 101001111
0110
Шумовой вектор
000100000
Далее, в вектор x вносится двухкратная ошибка, т. е. опять получается вектор y, не совпадающий с x, например: y = (100001111). На экране будет предъявлена следующая таблица: Символ Код МТК-2 Ф 10110
Код (9,5) 101101111
Искажение 10001111
Вновь декодируем вектор y, пользуясь алгоритмом (3.23), т. е. определяем синдром S, который необходимо ввести. Полученный синдром: 89
Символ Код МТК-2 Код (9,5) Ф
10110
Искажение Синдром
101101111 100001111
1010
Таким образом, в результате декодирования получен ненулевой синдром. Однако в таблице декодирования ему может не соответствовать никакой шумовой вектор, поэтому изображение на экране примет вид
Символ Код МТК-2 Код (9,5) Ф
10110
Искажение Синдром
101101111 100001111
1010
Шумовой вектор
********
Код (9,5) с dmin = 3 не справляется с исправлением двукратной ошибки. На этом выполнение лабораторной работы заканчивается. Представление отчета не требуется. Факт выполнения бригадой лабораторной работы, включая количество попыток по пунктам фиксируется в специальном файле на диске. 3. КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАЧИ 1. Перечислить и пояснить методы повышения качества приема передаваемой информации. 2. Какие способы повышения избыточности находят применение в настоящее время? 3. Рассмотрите преимущества и недостатки метода многократного повторения. 4. Какие коды называются равнодоступными? 5. В чем заключается сущность помехоустойчивого кодирования? 6. Какие задачи решают помехоустойчивые коды? 7. Какой код называется кодом с проверкой по паритету? 8. В чем заключается сложность выбора корректирующего кода для реальных каналов связи? 9. Какие коды называются блочными? 10. Какие коды называются непрерывными? 11. Приведите примеры равномерных и неравномерных кодов. 12. Какова особенность неразделимых кодов? Приведите пример неразделимого кода. 13. Какие коды называются систематическими? Каковы их основные свойства? 90
14. Перечислите основные классы систематических кодов. 15. Перечислите основные характеристики корректирующих кодов. 16. Что такое минимальное кодовое расстояние? 17. Укажите количественную связь между минимальным кодовым расстоянием и корректирующей способностью кода. 18. Что определяет верхние границы для кодового расстояния? 19. Что определяет нижние границы для кодового расстояния? 20. Определите границы Плоткина и Хемминга для кодов (6,3) и (7,4), имеющих dmin = 3. 21. Определите границу Варшамова–Гильберта для этих же кодов. 22. Дайте определение синдрома ошибок. 23. Закодируйте целые числа от 5 до 8 кодом Хемминга (7,4), пользуясь уравнениями для проверок. 24. Дайте определение шумового вектора. 25. Определите шумовой вектор для конфигурации из одной ошибки в пятой позиции кода (9,5). 26. Определите шумовой вектор для конфигурации из двух ошибок в пятой и седьмой позициях кода (9,5). 27. Чему равны скорость и избыточность кода (9,5)? 28. Сколько всего синдромов ошибок может содержать таблица декодирования кода (9,5)? Рекомендуемая литература
1. А. К. Журавлев, Г. И. Никитин. Радиотехнические системы передачи информации: Учеб.пособие / ЛИАП. Л., 1984. 86 с. 2. Питерсон У., Уэлдон Э. Коды, исправляющие ошибки: Пер. с англ. М.: Мир, 1976. 600 c. 3. Кларк Д., Кейн Д. Кодирование с исправлением ошибок в системах цифровой связи: Пер. с англ. М.: Радио и связь,1987. 300 с. 4. Пенин П. Е.,Филиппов Л. Н. Радиотехнические системы передачи информации. М: Радио и связь, 1984. 256 с. 5. Блейхут Р. Теория и практика кодов, контролирующих ошибки: Пер. с англ. М.: Мир, 1986. 576 с.
91
Лабораторная работа № 4
ЦИКЛИЧЕСКИЕ КОДЫ Цель работы: изучение принципов помехоустойчивого кодирования, ознакомление с циклическими и БЧХ- кодами, с методами кодирования и декодирования с использованием линейных переключательных схем на примере циклического БЧХ-кода (15,7). 1. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ПОДГОТОВКЕ К ЛАБОРАТОРНОЙ РАБОТЕ В настоящее время, в связи с многократно возросшими объемами передаваемой и сохраняемой информации, ужесточились требования к ее достоверности. Одним из самых перспективных методов решения этой проблемы является помехоустойчивое кодирование на основе корректирующих кодов. В последнее время коды, исправляющие ошибки, нашли применение во многих системах передачи и хранения информации. Наиболее известные из них – это сотовые системы связи, спутниковая спасательная система КОСПАС–САРСАТ, система глобальной морской связи ИНМАРСАТ, различные системы спутниковой телефонной связи, накопители информации на магнитных дисках, система звукозаписи на компакт-дисках и др. Во всех вышеприведенных примерах систем с помехозащищенной обработкой информации используются наиболее простые и эффективные циклические корректирующие коды, которые, наряду с простотой кодирования и декодирования, отличаются достаточно большой корректирующей способностью. Изучению этих кодов посвящена лабораторная работа. Для выполнения лабораторной работы студенты должны предварительно изучить разд. 1 настоящих методических указаний и получить у преподавателя допуск к работе. 1.1. Классификация корректирующих кодов С классификацией корректирующих кодов студенты уже знакомы по материалам, приведенным в ЛР № 3. В связи с этим напомним только основные положения, касающиеся циклических кодов. Все корректирующие коды можно разделить на два класса: блочные и непрерывные. 92
Блочные коды – коды, в которых каждому сообщению (или элементу) сопоставляется блок из n символов (кодовый вектор длиной n). Операции кодирования и декодирования в каждом блоке производятся отдельно. Непрерывные коды представляют собой непрерывную последовательность символов, не подразделяемую на блоки. Такие коды называются также рекуррентными, цепными, сверточными, конволюционными. Процессы кодирования и декодирования осуществляются непрерывно. Передаваемая последовательность образуется путем размещения в определенном порядке проверочных символов между информационными символами исходной последовательности. Как блочные, так и непрерывные коды делятся на разделимые и неразделимые. Разделимые коды предусматривают возможность четкого разграничения информационных и проверочных символов. Неразделимые коды не предусматривают такой возможности и к ним относятся, например коды с постоянным весом (КПВ). Разделимые коды делятся, в свою очередь, на систематические (линейные или групповые) и несистематические (нелинейные). Систематические коды характеризуются тем, что сумма по модулю 2 двух разрешенных кодовых комбинаций кодов этого класса снова дает разрешенную кодовую комбинацию. Кроме того, в систематических кодах информационные символы, как правило, не изменяются при кодировании и занимают определенные заранее заданные места. Проверочные символы вычисляются как линейная комбинация информационных, откуда и возникло другое наименование этих кодов – линейные. Для систематических кодов принимается обозначение [n, k]-код, где k – число информационных символов в кодовой комбинации, n – общее число символов в коде. Несистематические коды не обладают отмеченными выше свойствами и применяются значительно реже, чем систематические, в частности, в несимметричных каналах связи. К этому классу кодов относятся такие коды как КПВ, итеративные, комбинационные и антифединговые. Циклические коды составляют большую группу наиболее широко используемых на практике линейных, систематических кодов. Их основное свойство, давшее им название, состоит в том, что каждый вектор, получаемый из исходного кодового вектора путем циклической перестановки его символов, также является разрешенным кодовым вектором. Принято описывать циклические коды (ЦК) при помощи порожда93
ющих полиномов G(Х) степени r = n – k, где r – число проверочных символов в кодовом слове. В связи с этим ЦК относятся к разновидности полиномиальных кодов. Операции кодирования и декодирования ЦК сводятся к известным процедурам умножения и деления полиномов. Для двоичных кодов эти операции легко реализуются технически с помощью линейных переключательных схем (ЛПС), при этом получаются относительно простые схемы кодеков, в чем состоит одно из практических достоинств ЦК. Среди циклических кодов особое место занимает класс кодов, предложенных Боузом и Чоудхури и независимо от них Хоквингемом. Коды Боуза–Чоудхури–Хоквингема получили сокращенное наименование БЧХ-коды. БЧХ-коды являются обобщением кодов Хемминга на случай исправления нескольких независимых ошибок (gи > 1). Частными случаями БЧХ-кодов являются коды Файра, предназначенные для обнаружения и исправления серийных ошибок ("пачек" ошибок), код Голея – код, исправляющий одиночные, двойные и тройные ошибки (dmin= 7), коды Рида–Соломона (РС-коды), у которых символами кода являются многоразрядные двоичные числа. 1.2. Полиномиальное определение циклических кодов и операции с ними Циклические коды являются частным случаем систематических, линейных [n, k]-кодов. Название ЦК получили из-за своего основного свойства: циклическая перестановка символов разрешенной кодовой комбинации дает также разрешенную кодовую комбинацию. При циклической перестановке символы кодового слова перемещаются слева направо на одну позицию, причем крайний справа символ переносится на место крайнего левого. Если, например А1–101100, то разрешенной кодовой комбинацией будет и А2– 010110, полученная циклической перестановкой. Отметим, что перестановка производится вместе с проверочными символами, и по правилам линейных кодов сумма по модулю 2 двух разрешенных кодовых комбинаций дает также очередную разрешенную кодовую комбинацию. Описание ЦК связано с представлением кодовых комбинаций в виде полиномов (многочленов) фиктивной переменной X. Для примера переведем кодовое слово А1 = 101100 в полиномиальный вид 94
i
6
5
4
3
2
1
Код
1
0
1
1
0
0
При этом А1(X) = 1 X 5 + 0 X 4 + 1 X 3 + 1 X 2 + 0 X 1 + 0 X0 = X 5 + X3 + X2. Действия с кодовыми векторами, представленными в виде полиномов, производятся по правилам арифметики по модулю 2, в которой вычитание равносильно сложению. Так, из равенства Хn – 1 = 0 получаем Хn = 1. Прибавив к левой и правой частям по единице, имеем Хn + 1 = = 1 ⊕ 1= 0. Таким образом, вместо двучлена Хn – 1 можно ввести бином Хn +1 или 1 + Хn, из чего следует, что Хk ⊕ Хk = Хk (1 ⊕ 1) = 0 и при последующих операциях с полиномами необходимо вычеркивать пары фиктивных переменных X с одинаковыми степенями. Приведем далее порядок суммирования (вычитания), умножения и деления полиномов с учетом того, что операция суммирования осуществляется по модулю 2. В примерах используем вышеприведенные кодовые комбинации А1(X) = X 5 + X 3 + X 2 и А2(X) = X 4 + X 2+ X. Суммирование (вычитание): А1 + А2 = А1 – А2 = X 5 + X 4 + X 3 + X 2 + X 2 + X = X 5 + X 4 + X 3+ X 101100 или А1 ⊕ 010110 А2 111010 = X 5 + X 4 + X 3+ X. Умножение: А1 × А2 = (X 5 + X 3 + X 2) × (X 4 + X 2+ X) = X 9 + X 7 + X 6+ X 7 + X 5 + + X 4 + X 6 + X 4 + X 3 = X9 + X 5 + X 3 = 1000101000. Деление: A1 A X 5 + X 3 + X 2 X 4 + X 2+ X – X X5 + X 3 + X 2 —————— 0 0 0 – остаток при делении R(X) = 0. Из последнего примера следует, что при циклическом сдвиге вправо на один разряд необходимо исходную кодовую комбинацию поделить на X, а умножение на X эквивалентно сдвигу влево на один символ. 95
На основании того, что будет сказано далее о ЦК, нельзя установить теоретически те или иные свойства этих кодов, ряд приводимых ниже результатов придется принять без соответствующих доказательств на веру. Однако рассмотрев приведенные далее примеры, можно понять и освоить специфику и идеологию формирования и обработки ЦК. 1.3. Порождающие полиномы циклических кодов Формирование разрешенных кодовых комбинаций ЦК Bi (X) основано на предварительном выборе так называемого порождающего (образующего) полинома G (X), который обладает важным отличительным признаком: все комбинации Bi (X) делятся на порождающий полином G (X) без остатка, т. е. Bi ( X ) = Ai ( X ) G (X )
(при остатке
R ( X ) = 0),
(4.1)
где Аi(Х) — информативный полином (кодовая комбинация первичного кода, преобразуемого в корректирующий ЦК). Поскольку, как отмечалось выше, ЦК относятся к классу блочных разделимых кодов, у которых при общем числе символов n число информационных символов в Аi(Х) равно k, то степень порождающего полинома определяет число проверочных символов r = n – k. Из этого свойства следует сравнительно простой способ формирования разрешенных кодовых комбинаций ЦК – умножение комбинаций информационного кода Аi(Х) на порождающий полином G (X): Bi (X) = Ai (X) G (X).
(4.2)
В теории циклических кодов доказывается, что порождающими могут быть только такие полиномы, которые являются делителями двучлена (бинома) Xn + 1: X n +1 = H ( X ) (при остатке R ( X ) = 0). G (X )
(4.3)
Возможные порождающие полиномы, найденные с помощью ЭВМ, сведены в обширные таблицы. Так, в [3] приведены таблицы G (X) с записью полиномов в восьмеричной системе счисления (mod 8). В этом случае весовые коэффициенты ki представляют три двоичных знака в соответствии со следующим кодом: 96
0 – 000 2 – 010 4 – 100 6 – 110 1 – 001 3 – 011 5 – 101 7 – 111
(4.4)
Двоичные символы являются весовыми коэффициентами порождающих полиномов, коэффициенты восьмеричной системы счисления расположены слева от них с учетом того, что 0 ≤ ki ≤ 7 (при mod 8). Например, 3425 обозначает многочлен 10-й степени, В двоичной записи числу 3425 (mod 8) эквивалентно число 011100010101 и соответствующий многочлен равен X10 + X9 + X8 + X4 + X2 + 1. Как видно из этого примера, восьмеричная система счисления для записи многочленов выбрана, в частности, из соображений экономии длины записи (бумаги) в три раза при больших объемах табулированных значений, что подчеркивает известный недостаток двоичной системы счисления. Некоторые из порождающих полиномов приведены в табл. 4.1. Следует отметить, что с увеличением максимальной степени порождающих полиномов r резко увеличивается их количество. Так, при r = 3 имеется всего два полинома, а при r = 10 их уже несколько десятков. Первый порождающий полином минимальной степени r = 1, удовлетворяющий условию (4.3), формирует код с проверкой на четность при двух информативных символах и одном проверочном, обеспечивающем обнаружение однократной ошибки, поскольку минимальное кодовое расстояние dmin= 2. В общем случае коэффициент избыточности КПЧ минимален:
r = 1 , n n а относительная скорость кода – максимальна и будет k =
Bk =
k n −1 = , n n
(4.5)
(4.6)
В связи с этим КПЧ иногда называют быстрым кодом. Второй порождающий полином степени r = 2, являющийся "партнером" первого G (X) = X + 1 при разложении бинома с n = 3, определяет код с повторением единственного информативного символа k = 1 ("0" или "1"). 97
Таблица 4.1 r-степень Порождающий Запись Запись полинома полином G (X) полинома полинома G (X) по mod 2 по mod 8
1
X+1
2 3
111 X 2+ X + 1 3 2 1101 X +X +1 X 3+ X + 1 11001 X 4+ X 3+ 1 X4+X+1 10011 X 4 + X 2 + X + 1 10111 X 4 + X 3 + X 2 + 1 11101 100101 X 5+ X 2+ 1 101001 X 5+ X 3+ 1 ... ... X 6 + X 5 + X 4 + 1111111 + X 3 + X 2 +X1+1 ... ...
4
5
6
11
n
k
3
3
7 13 15 31 23 27 35 45 51
3 7 7 15 15 7 7 31 31
2 Код с проверкой на четность (КПЧ) 1 Код с повторением 4 Классический код 4 Хемминга 11 Классический код 11 Хемминга 3 Коды 3 Файра–Абрамсона 26 Классический код 26 Хемминга
177
7
1 Код с повторением
Примечание
Отметим, что ЦК принадлежат к классу линейных кодов, у которых кодовые комбинации "000 ... 00" и "111 ... 11" являются разрешенными. У кода с повторением возможности обнаружения и исправления ошибок безграничны, поскольку число повторений l определяет минимальное кодовое расстояние: (4.7) dmin = l. В общем случае коэффициент избыточности кодов с повторением кодовых комбинаций является максимально возможным:
nl − n l −1 1 = = 1− , nl l l и при увеличении l приближается к 1, а скорость (4.6) – минимальна k =
1 . (4.8) l Таким образом, коды с проверкой на четность и коды с повторением – до некоторой степени антиподы. Первый код очень быстр (всего один Bk = 1 − k =
98
дополнительный символ), но зачастую "легкомыслен". Возможности второго кода с повторением по исправлению ошибок теоретически безграничны, но он крайне "медлителен" [4]. Следующие порождающие полиномы в табл. 4.1 со степенью r = 3 позволяют сформировать набор классических корректирующих кодов Хемминга (7, 4), которые исследовались студентами ранее при выполнении ЛР № 3 "Корректирующие коды". Коды Хемминга также принадлежат к классу ЦК, однако при этом гpyппa проверочных символов кода получается сразу "в целом" при делении информативной кодовой группы на порождающий полином, а не "поэлементно", как это показано в ЛР № 3, когда последовательное суммирование по модулю 2 соответствующих информативных символов давало очередной символ проверочной группы. Отметим, что два варианта порождающих полиномов кода Хемминга (7,4), с записью по модулю 2 в виде 1101 и 1011, представляют собой так называемые двойственные многочлены (полиномы). Двойственные многочлены определяются следующим образом: если задан полином в виде h(X) = h0 + h1X + h2X 2 + … + hr X r, то двойственным к нему полиномом является (4.9) h ( X ) = h0 X r + h1 X r −1 + ... + hr , т. е. весовые коэффициенты исходного полинома, зачитываемые слева направо, становятся весовыми коэффициентами двойственного полинома при считывании их справа налево. Говоря образно, набор весовых коэффициентов "вывертывается наизнанку". Обратим внимание на то, что в полных таблицах порождающих ЦК полиномов двойственные полиномы, как правило, не приводятся [3]. Наряду с тем, что порождающие полиномы кода Хемминга (7,4) являются двойственными друг другу, они также являются неприводимыми. Неприводимые полиномы не делятся ни на какой другой полином степени меньше r, поэтому их называют еще неразложимыми, простыми и примитивными. Далее в табл. 4.1 при значениях r = 4 и 5 попадают следующие классические коды Хемминга (15, 11) и (31, 26). Порождающие их полиномы также являются двойственными друг к другу и неприводимыми. Напомним, что к классическим кодам Хемминга относятся коды, у которых n = 2r – 1, a k = 2r – 1 – r, с минимальным кодовым расстояни99
ем dmin= 3, позволяющим исправлять однократные ошибки и обнаруживать двойные. При значениях r = 4 в табл. 4.1 попадают двойственные порождающие многочлены кода Абрамсона (7, 3), являющиеся частным случаем кодов Файра, порождающие полиномы для которых имеют вид G (X) = p (X) (Xc + 1),
(4.10)
где р (Х) – неприводимый полином. Коды Абрамсона совпадают с кодами Файра, если положить с = 1. Число проверочных символов r = 4 определяет общее число символов в коде (значность кода), поскольку для этих кодов n = 2r–1 – 1. Эти коды исправляют все одиночные и смежные двойные ошибки ( т. е. серии длиной 2). Помещенные в табл. 4.1 коды Абрамсона (7,3) являются первыми циклическими кодами, исправляющими серийные ошибки (пакеты ошибок). В этом применении ЦК оказываются особенно эффективными. Обратим внимание на то, что при с = 1 в (4.10) порождающими полиномами р (X) являются двойственные полиномы X 3 + X 2 + 1 и X 3 + X + 1, образующие код Хемминга (7, 4) при r = 3. Серийные ошибки возникают в результате воздействия в канале передачи сообщений помех импульсного характера, длительность которых больше длительности одного символа. При этих условиях ошибки уже не независимы, а возникают пачками, общая длительность которых соответствует длительности помехи. В заключение на основании данных табл. 4.1 приведем все возможные порождающие полиномы для кодовых комбинаций с числом символов n = 7. В соответствии со свойством (4.3) порождающих полиномов G (X) бином X 7 +1 раскладывается на три неприводимых полинома X 7 + 1 = (X + 1) (X 3 + X 2 + 1) (X 3 + X + 1) = G1 (X) × G2 (X) × G3 (X),
(4.11)
каждый из которых является порождающим для следующих кодов: – код с проверкой на четность, КПЧ (7, 6); G1 (X) = Х + 1 3 2 – первый вариант кода Хемминга (7,4); G2 (X) = X + X + 1 3 G3 (X) = X + X + 1 – двойственный G 2 ( X ) , второй вариант кода Хемминга. Кроме того, различные вариации произведений G1, 2, 3(X) дают возможность получить остальные порождающие полиномы: 100
G4 (X) = G1 (X) G2 (X) = (X + 1) (X 3 + X 2 + 1) = X4 + X 2 + X + 1 – код Абрамсона (7,3); G5 (X) = G1 (X) G3 (X) = (X + 1) (X 3 + X + 1) = X4 + X 3 + X 2 + 1 – двойственный G4 (X); G6 (X) = G2 (X) G3 (X) = (X 3 + X 2 + 1) (X 3 + X + 1) = = X 6 + X 5 + X 4 + X 3 + X 2 + X +1 – код с повторением (7,1). Таким образом, для постоянного заданного значения n все возможные порождающие полиномы ЦК размещаются между кодами с проверкой на четность (n, n – 1) (r = 1) и кодами с повторением (n, 1) (r = n – 1), которые правомерно и называют "кодами антиподами". При выборе применяемых в системах связи корректирующих кодов необходимо позаботиться о том, чтобы, во-первых, избыточность кода была минимальной, т. е. относительная скорость кода или эффективность кода была максимальной, а, во-вторых, техника кодирования и декодирования была по возможности проста. 1.4. Принципы формирования и обработки разрешенных кодовых комбинаций циклических кодов На основании материалов предыдущего раздела можно дать следующее определение циклических кодов. Циклические коды (ЦК) составляют множество многочленов Вi(Х) степени n – 1 и менее (до r = n – k, где r – число проверочных символов), кратных порождающему (образующему) полиному G (Х) степени r, который, в свою очередь, должен быть делителем бинома X n + 1, т. е. остаток после деления бинома на G (X) должен равняться нулю. Учитывая,что ЦК принадлежат к классу линейных, групповых кодов, сформулируем ряд основных свойств, им присущих. 1. Сумма разрешенных кодовых комбинаций ЦК образует разрешенную кодовую комбинацию Bi(X) ⊕ Bj(X) = Bk(X).
(4.12)
2. Поскольку к числу разрешенных кодовых комбинаций ЦК относится нулевая комбинация 000 ... 00, то минимальное кодовое расстояние dmin для ЦК определяется минимальным весом разрешенной кодовой комбинации: (4.13) dmin = Wmin. 101
3. Циклический код не обнаруживает только такие искаженные помехами кодовые комбинации, которые приводят к появлению на стороне приема других разрешенных комбинаций этого кода из набора N0. 4. Значения проверочных элементов r = n – k для ЦК могут определяться путем суммирования по модулю 2 ряда определенных информационных символов кодовой комбинации Аi (Х). Например, для кода Хемминга (7,4) с порождающим полиномом G (X) = X 3 + Х + 1 алгоритм получения проверочных символов будет следующим: r1 = i1 ⊕ i2 ⊕ i3 ; r2 = i2 ⊕ i3 ⊕ i4 ; r3 = i1 ⊕ i2 ⊕ i4 .
(4.14)
Эта процедура свидетельствует о возможности "поэлементного" получения проверочной группы для каждой кодовой комбинации Аi(Х). В соответствии с (4.14) могут строиться кодирующие устройства для ЦК. 5. Как было показано на примере в подразд. 1.2, умножение полинома на X приводит к сдвигу членов полинома на один разряд влево, а при умножении на Xr, соответственно, на r разрядов влево, с заменой r младших разрядов полинома "нулями". Умножение полинома на X свидетельствует о том, что при этой процедуре X является "оператором сдвига". Деление полинома на X приводит к соответствующему сдвигу членов полинома вправо с уменьшением показателей членов на 1. Процедура сдвига позволяет к исходной кодовой комбинации Аi(Х) после умножения ее на X r, дописать справа r проверочных символов. 6. Поскольку разрешенные кодовые слова ЦК Bi(X) без остатка делятся на порождающий полином G(X) с получением итога в виде информационной комбинации Аi(Х) (4.1), то имеется возможность формировать Bi(X) на стороне передачи (кодирующее устройство) простым методом умножения (4.2). Два последних свойства ЦК позволяют осуществить построение кодеров ЦК двумя методами: методом умножения и методом деления полиномов. Рассмотрим достоинства и недостатки этих методов с учетом вариантов построения декодеров ЦК, соответствующих этим методам. Метод умножения позволяет при формировании разрешенных кодовых комбинаций по алгоритму (4.2) использовать любой порождающий полином, лишь бы его максимальная степень была равна числу необходимых проверочных символов r. 102
Однако этот метод обладает двумя существенными недостатками. Во-первых, при формировании ЦК методом умножения в полученной комбинации Bi(X) в явном виде не содержатся информационные символы. Код получается неразделимым с "перетасованными" информативными и проверочными символами, что затрудняет его декодирование, так как это приводит к необходимости применять метод максимального правдоподобия в декодирующем устройстве (ДУ). Метод максимального правдоподобия (ММП) предполагает при исправлении ошибок принимаемую кодовую комбинацию отождествлять с той разрешенной, к которой принятая находится ближе всего. При таком непосредственном способе декодирования в памяти запоминающего устройства (ЗУ) декодера необходимо хранить все разрешенные кодовые комбинации N0, что требует на стороне приема больших объемов ЗУ и большого времени обработки при декодировании. Эти обстоятельства являются вторым недостатком метода умножения при кодировании ЦК. Исследования показывают [2–5], что хороший циклический корректирующий код с кратностью исправляемых ошибок gи ≥ 5 при относительной скорости кода Вк ≥ 0,5, т. е. коэффициенте избыточности x ≤ 0,5, должен иметь число информационных символов k ≥ 40. Это значение и приводит к техническим трудностям при процедуре декодирования по ММП, сводящейся к сравнению принятой кодовой комбинации со всеми N0 разрешенными. Для примера определим время декодирования Тдк принятой кодовой комбинации, если число информационных символов в ней k = 40 и для сравнения используется ЭВМ со скоростью 107 операций в секунду. Будем полагать, что для сравнения принятой кодовой комбинации с одной из разрешенных достаточно одной операции на ЭВМ. Тогда для проведения N0 = 2k = 240 сравнений потребуется время декодирования
5
1,1 ⋅10 1,1 ⋅ 1012 = 1,1 ⋅ 105 c = = 30 ч. VЭВМ 107 107 3600 c Как видно из примера, задача декодирования простым перебором и сравнением непосильна даже для современных ЭВМ. В соответствии с этим, основным направлением в теории кодирования является поиск таких кодов и алгоритмов их формирования и обработки, для которых не требуется хранение в ЗУ разрешенных кодовых комбинаций. Эти задачи решаются, в частности, при построении кодеTдк =
N0
=
240
=
103
ров на основе деления полиномов, а при декодировании – на основе синдромного метода декодирования (СМД). Метод деления полиномов позволяет представить разрешенные к передаче кодовые комбинации в виде разделенных информационных Ai(X) и проверочных Ri(X) символов, т. е. получить блочный код. Поскольку число проверочных символов равно r, то для компактной их записи в последние младшие разряды кодового слова надо предварительно к Ai(X) справа приписать r "нулей", что эквивалентно умножению Ai(X) на оператор сдвига X r (см. свойство 5 ЦК). На практике предпочитают использование метода деления полиномов при построении кодеков, поскольку при этом имеется возможность представить кодовую комбинацию в виде разделенных информационных и проверочных символов: Bi (X) = Ai (X) X r + Ri (X),
(4.15)
где Ri (X) – остаток от деления Ai (X) X r /G(X). В алгоритме (4.15) можно выделить три этапа формирования разрешенных кодовых комбинаций в кодирующем устройстве: 1) к комбинации первичного кода Ai(X) дописывается справа r нулей, что эквивалентно умножению Ai (X) на X r; 2) произведение Ai(X) X r делится на соответствующий порождающий полином G(X) и определяется остаток Ri(X), степень которого не превышает r – 1, этот остаток и дает группу проверочных символов; 3) вычисленный остаток присоединяется справа к Ai (X) X r. Пример Рассмотрим процедуру кодирования по алгоритму (4.15): для кодовой комбинации А = 1001 сформировать кодовую комбинацию циклического кода (7,4). В заданном ЦК n = 7, k = 4, r = 3, и из табл. 4.1 выберем порождающий полином G(X) = X 3 + X + 1 (код Хемминга). Выполним три необходимые операции для получения кодовой комбинации ЦК согласно алгоритму (4.15): Ai (X) = 1001 ~ X 3 + 1, (знак "~" – тильда – означает соответствие). 1. Ai (X) X r = (X 3 + 1 ) X 3 = X 6 + X 3 ~ 1001000, (n = 7).
104
2. Ai (X) X r /G(X) = X 6 + X 3 X3 + X + 1 + —————— X6 + X 4 + X 3 X3 + X —————— X4 + X 4 + X2 + X —————— X2 + X – остаток Ri (X) = X 2 + X ~ 110. 3. Bi (X) = Ai (X) X r + Ri (X) = 1001110 – итоговая комбинация ЦК. Синдромный метод декодирования (СМД) предполагает в ДУ принятую кодовую комбинацию поделить на порождающий полином. Если принятая комбинация является разрешенной, т. е. не искажена помехами в канале связи, то остаток от деления будет нулевым. Ненулевой остаток свидетельствует о наличии в принятой кодовой комбинации ошибок, остаток от деления и называется синдромом. Термин "синдром" заимствован из медицинской практики (от греч. вместе бегущий) и означает сочетание (комплекс) симптомов болезни, характерное для определенного заболевания. В теории кодирования синдром, который также называют опознавателем ошибки, обозначает совокупность признаков, характерных для определенной ошибки. Для исправления ошибки на стороне приема необходимо знать не только факт ее существования, но и ее местонахождение, которое определяется по установленному виду вектора ошибки z (X). После передачи по каналу с помехами принимается кодовое слово Bi′ (X) = Bi(X) + z (X), (4.16) где Bi(X) – передаваемая кодовая комбинация; z (X) – полином (вектор) ошибки, имеющий степень от 1 до n – 1. При декодировании принятое кодовое слово делится на G(X) Bi′ ( X ) = U i ( X ) + Si ( X ), (4.17) G (X ) где остаток от деления Si (X) и является синдромом. Если при делении получается нулевой остаток Si (X) = 0, то выносится решение об отсутствии ошибки z (X) = 0. Если остаток (синдром) ненулевой Si (X) ≠ 0, то выносится решение о наличии ошибки и определяется шумовой вектор (полином) z (X), а затем – передаваемое кодовое слово, поскольку из (4.16) следует 105
Bi ( X ) = Bi′ ( X ) + z ( X ) ,
(4.18)
Всякому ненулевому синдрому соответствует определенное расположение (конфигурация) ошибок. Взаимосвязь между видом синдрома и местоположением ошибочного символа находится довольно просто. Достаточно в любую разрешенную кодовую комбинацию ввести ошибку и выполнить деление на G(X). Полученный остаток (4.17) – синдром и будет указывать на ошибку в этом символе. В качестве примера для ЦК Хемминга (7,4), позволяющего исправлять однократную ошибку при dmin = 3 (см. табл. 4.1), взаимосвязь между синдромом и ошибочным символом для двух возможных порождающих полиномов кода (7,4) приведена в табл. 4.2. Пользуясь этой таблицей, можно найти местоположение ошибки и исправить ее. Для параметров рассмотренного ранее примера, где была показана процедура кодирования кодовой комбинации Ai = 1001 при использовании порождающего полинома G (X) = X 3 + X +1 для кода Хемминга (7,4), исправляющего однократную ошибку, приведем в следующем примере процедуру декодирования принятой с помехой кодовой комбинации. Пример Принятая кодовая комбинация ЦК (7,4) имеет вид Bi′(X) = 1011110. Определить и исправить ошибку в Bi′(X), если она имеется. Выполним три необходимые операции, проводимые при декодировании: 1) в соответствии с алгоритмом (4.17) производим деление Bi′(X) / G(X) = X 6 + X 4 + X 3 + X 2 + X X6 + X4 + X3 ————————— X2 + X
X 3 + X +1 —————— X3 – остаток R (X) = X 2 + X ~ 110,
отметим, что совпадение остатков в примерах 1 и 2 – чисто случайное, в примере (с. 104) остаток являлся проверочной группой кода, а в примере (с. 106) – синдромом; 2) по полученному синдрому 110 в соответствующем опознавателе синдрома (дешифраторе синдрома, локаторе ошибки) определяем вид шумового вектора z (X) 0010000 (см. табл. 4.2); 3) воспользовавшись алгоритмом (4.18), исправляем принятую кодовую комбинацию Bi′(X) и получаем переданную комбинацию Bi(X): 106
Таблица 4.2 № символа Ошибочный Синдром для порож- Синдром для порож- Шумовой дающего полинома вектор комбинации символ дающего полинома G (X) = X 3 + X 2 + 1 z (X) со старшего полинома G (X) = X 3 + X + 1 разряда комбинации
7
X6
6
X
5
X
4
X
3
X
2
5 4 3 2 1
1
X X0
110 011
0100000
110 011 = H к (7,4) 100
111
0010000
101 = H к (7,4)
0001000
100
0000100
010 001
010
0000010 0000001
001
см. (4.29) Нет ошибки
1000000
101 111
000
см. (4.29) 000
0000000
Bi (X) = Bi′(X) + z (X) = 1011110 ⊕ 0010000 ———— 1001110 – исправленная комбинация на выходе ДУ с инвертированием неверно принятого символа. Число проверочных символов r = n – k определяет число исправляемых ошибок. Значение r должно быть достаточным для получения необходимого числа синдромов S∑ (опознавателей ошибок). Для исправления всех одиночных (однократных) ошибок необходимо S∑ = n + 1 синдромов, так как шумовой вектор может принимать следующие n значений: 000...01, 000...10, ..., 001...00, 010...00, 100...00, кроме того, необходим один синдром для определения факта безошибочного приема кодовой комбинации S0 = 000...00. Таким образом, для двоичных кодов при необходимости исправления всех однократных ошибок требуется выполнение соотношения S∑ = 2n – k = 2r = n + 1. (4.19) Плотноупакованные коды – такое название получили коды, у которых соблюдается точное равенство В (4.19) числа необходимых синдромов для исправления ошибок заданной кратности. Вследствие уникаль107
ности таких кодов, плотноупакованные коды называют также "совершенными" или "оптимальными". К таким кодам относятся коды Хемминга, которые при минимальном кодовом расстоянии dmin = 3 обеспечивают исправление всех однократных ошибок, поскольку у классических кодов Хемминга число символов n = 2r – 1 удовлетворяет условию (4.19). В общем случае при необходимости исправления всех независимых ошибок кратности до gи включительно, требуемое число синдромов определяется выражением SΣ = 1 + Cn1 + Cn2 + Cn3 + ... + Cngи =
gи
∑ Cni
,
i=0
(4.20)
n! – число сочетаний из n по i, причем Cn0 = 1 , так (n − i )!⋅ i ! как 0! = 1. С учетом (4.19) и (4.20) можно получить выражение для оценки числа проверочных символов r при необходимости исправления gи – кратных ошибок в принятых кодовых комбинациях gи r ≥ log 2 ∑ Cni . (4.21) i = 0 Занимаясь поиском плотноупакованных кодов ("кодов без потерь"), М. Голей заметил (опубликовано в 1949 г.), что где Cni =
0 1 2 3 C23 + C23 + C23 + C23 = 1 + 23 + 253 + 1771 = 211,
а это означало, что существует плотноупакованный двоичный (23,12) код, удовлетворяющий условию (4.20), исправляющий все кодовые комбинации с тремя или менее ошибками. Этот код получил его имя. Код Голея относится к классу ЦК с порождающими двойственными (дуальными) полиномами (4.9): G ( X ) = X 11 + X 10 + X 6 + X 5 + X 4 + X 2 + 1; G ( X ) = X 11 + X 9 + X 7 + X 6 + X 5 + X + 1.
Простым вычислением проверяется, что X 23 + 1 = ( X + 1) G ( X ) G ( X ),
108
(4.22)
в связи с чем в качестве порождающего полинома ЦК Голея (23, 12) можно использовать как G (X), так и G ( X ) . Код Голея, гарантированно исправляющий ошибки с кратностью не менее трех включительно, обладает минимальным кодовым расстоянием, dmin = 2gи + 1 = 7, что, как правило, указывается в маркировке кода (23, 12, 7). Добавление к этому коду общей проверки на четность по всем позициям увеличивает на единицу как общую длину кода, так и минимальное кодовое расстояние dmin = 8. Расширенный код Голея, имеющий маркировку (24, 12, 8), состоит из 12 информационных символов и 12 проверочных, т. е. представляет собой код, обладающий скоростью 1/2 и избыточностью, также равной 1/2. Обратим внимание на то, что плотноупакованные коды Хемминга и Голея – циклические, которые принадлежат классу двоичных линейных кодов. Общим для линейных двоичных кодов является наличие, в качестве разрешенного, нулевого кодового слова 000...00, что приводит к тому, что минимальный вес Wmin ненулевого разрешенного кодового слова равен минимальному кодовому расстоянию dmin (4.13). В общем случае вес кодовых комбинаций может принимать различные значения, и совокупность чисел кодовых комбинаций с постоянным весом NW определяют как распределение весов кода или как спектр весов кода. Распределение весов в коде Голея (23, 12, 7) следующее: N0 = N23 = 1; N7 = N16 = 253; N8 = N15 = 506; N11 = N12 = 1288, а в расширенном коде Голея – N0 = N24 = 1;
N8 = N16 = 759;
N12 = 2576.
(4.23)
Кодовые слова с весом 12, 8 и 16, выделенные из кода (24,12,8), образуют КПВ максимальной мощности. К сожалению, кроме кодов Хемминга (dmin = 3, gи =1) и кода Голея (23, 12, 7) пока не найдено других совершенных, плотноупакованных кодов, число синдромов у которых точно соответствует требуемому значению для гарантированного исправления ошибок заданной кратности. 1.5. Построение порождающих и проверочных матриц циклических кодов Наряду с полиномиальным способом задания кода, структуру построения кода можно определить с помощью матричного представления. 109
При этом в ряде случаев проще реализуется построение кодирующих и декодирующих устройств ЦК. Рассмотрим варианты формирования и обработки ЦК, заданных в виде порождающих и проверочных матриц, на конкретном примере ЦК Хемминга (7, 4), воспользовавшись выражением (4.11), в котором определены двойственные (дуальные) порождающие полиномы кода: X 7 + 1 = (X + 1) (X 3 + X + 1) (X 3 + X2 + 1), что соответствует кодам (7, 6); (7, 4); (7, 4). Пример Задан ЦК (7,4) дуальными порождающими полиномами G (7,4) = X3 + X + 1 и G (7,4) = X 3 + X 2 + 1. Составить порождающие матрицы для формирования разрешенных кодовых комбинаций и проверочные матрицы для получения синдромов. Первой строкой в матрице записывается порождающий полином (в двоичном представлении) с домножением его на оператор сдвига X r для резервирования места под запись r = 3 проверочных символов. Следующие k – 1 строк матриц получаются путем последовательного цик на одну полического сдвига базового кодового слова матрицы G и G зицию вправо, поскольку при этом по определению ЦК также получаются разрешенные к передаче кодовые комбинации:
1011000 0101100 G (7,4 ) = 0010110 0001011
1 2 3 4
1101000 (7,4 ) = 0110100 G 0011010 0001101
1 2 . 3 4
(4.24)
Однако в таком виде эти порождающие матрицы размерностью k × n-(n столбцов, k строк) могут образовать только неразделимый ЦК, т. е. код, у которого не определены жестко места информационных и проверочных элементов. Для построения порождающей матрицы, формирующей разделимый блочный код, необходимо матрицу преобразовать к каноническому виду путем простых линейных операций над строками, промаркированными № 1–4. С учетом свойства ЦК (4.12), каноническую форму матрицы можно получить путем сложения ряда разрешенных кодовых комбинаций. Ка110
ноническая матрица должна в левой части порождающей ЦК матрицы содержать единичную диагональную квадратную подматрицу E порядка k для получения в итоге блочного ЦК. С этой целью для получения первой строки канонической матрицы Gk (7, 4) необходимо сложить по модулю 2 строки с номерами 1, 3 и 4 матрицы G (7, 4), а для матрицы (7, 4). В этом случае в – строки с номерами 1, 2 и 3 матрицы G G k k
матрицах (4.24) в первых строках остаются "1" только на первых позициях, а остальные "k – 1" символов заменяются "0", что и соответствует первым строкам единичных подматриц порядка "k". Нормирование последующих трех строк канонических матриц производится путем соответствующего суммирования строк матриц (4.24). В итоге имеем следующий вид дуальных канонических матриц:
1000 0100 G k (7,4 ) = 0010 0001 E
101 111 110 011
1=1⊕ 3⊕ 4 2 = 2⊕4 3=3 4=4 № строк Gk
1000 0100 0010 G k (7,4 ) = 0001 E
110 011 111 101
1 = 1⊕ 2 ⊕ 3 2 = 2 ⊕ 3⊕ 4 3 = 3⊕ 4 . 4=4 (7,4) № строк G k
(4.25)
Процесс кодирования первичных кодов на стороне источника сообщений сводится к умножению информационных посылок, представленных в виде векторов Ai ( X ) , на соответствующую порождающую каноническую матрицу: Bi ( X ) = Ai ( X ) Gk .
(4.26)
Эта процедура позволяет получить блочные коды Хемминга "в целом", т. е. получить проверочную группу символов r1, r2, r3 сразу после выполнения операции (4.26). Наряду с этим имеется возможность фор111
мировать символы проверочной группы поэлементно, как это предусматривалось при выполнении студентами ЛР № 3 "Корректирующие коды", где 3 проверочных символа задавались следующими равенствами проверки на четность: r1 = i1 ⊕ i2 ⊕ i3;
r1 = i1 ⊕ i3 ⊕ i4 ;
r2 = i2 ⊕ i3 ⊕ i4 ;
r2 = i1 ⊕ i2 ⊕ i3;
r3 = i1 ⊕ i2 ⊕ i4 ;
r3 = i2 ⊕ i3 ⊕ i4 .
(4.27)
Обратим внимание на то, что алгоритм (4.27) просто получается из рассмотрения порождающих коды Хемминга матриц (4.25), в которых проверочные подматрицы, содержащие 3 столбца (r1, r2, r3), имеют символы "1" в тех строках, номера которых совпадают с маркировкой информационных символов i в равенствах (4.27) [см. (4.14)]. При матричном варианте обработки принятых кодов на стороне получателя сообщений для получения синдрома необходимо принятую, возможно искаженную в канале, кодовую комбинацию Bi′( X ) умножить на проверочную матрицу Н (Х): (4.28) S = Bi′( X )H( X ). Заметим, что матрица Н с размерностью n х r может быть получена из порождающей матрицы канонического вида (4.25) путем дополнения проверочной подматрицы единичной матрицей размерности r × r, что дает следующий вид дуальных проверочных матриц: 101
110
111
011
110
111 H k (7,4 ) = 101 100
H k (7,4 ) = 011 100 010 001
E
010
4.29 E
001
По определенному с помощью полученного синдрома (4.28) соответствующему шумовому вектору исправляются ошибки (4.18). 112
4
1
Интересно отметить, что в табл. 4.2, в которой рассмотрена связь между синдромом и шумовым вектором для кода (7,4), колонки с синдромами дуальных порождающих полиномов полностью совпадают с (4.29). В ЦК Хемминга (n , k) все проверочные r = n – k разряды размещаются в конце кодовой комбинации и, как отмечалось, формируются "в целом". При поэлементном получении проверочных символов (4.27) целесообразно, чтобы каждый синдром представлял собой двоичное число, указывающее на номер разряда, в котором произошла ошибка. Коды, в которых синдромы (опознаватели) соответствуют указанному принципу, и предложил впервые Хемминг. В этом случае для кода (7, 4) проверочные символы r1, r2, r3, (табл. 4.2) размещаются на первой, второй и четвертой позициях кодовой комбинации, отсчитываемых справа налево. Такое построение кодов упрощает декодирующее устройство на стороне получателя сообщений. 1.6. Укороченные циклические коды Поскольку ЦК порождаются делителями бинома Х n +1 (4.3), то для большей части значений n и k имеется относительно мало кодов, удовлетворяющих всем свойствам, присущим ЦК (подразд. 1.4). Поэтому естественно попытаться найти среди линейных кодов такие, которые хотя и не являются в действительности циклическими, обладают похожей математической структурой и столь же легко реализуются. При разработке систем передачи информации, работающих с дискретными сигналами в предположении необходимости исправления (обнаружения) ошибок, число информативных символов k∑ выбирают, как правило, таким, чтобы оно было кратным длине первичного кода k1: k∑ = а k1, где а = 1, 2, 3, 4, …, а значение n∑ = k∑ + r, где число проверочных символов должно удовлетворять заданному значению кратности обнаруживаемых и исправляемых ошибок. В частности, ЭВМ обычно обмениваются машинными словами в виде байтов, состоящих из восьми символов (k1 = 8). При этом n∑ и k∑ часто не совпадают с табулированными [3] ЦК. В этом случае по таблицам [3] находят ЦК, который соответствует обоснованному значению r = n – k для классического, табулированного ЦК, а затем уменьшают n и k∑ до n –l и k – l, получая укороченный ЦК. 113
2
5
Укороченные циклические коды (УЦК) получают из полных ЦК, используя для передачи информации только кодовые комбинации полного кода, содержащие слева l нулей. Это дает возможность построить УЦК (n – l, k – l) путем исключения первых l столбцов и l строк из порождающей матрицы (4.24). Полученный код не будет строго циклическим, так как циклический сдвиг не всегда будет приводить к получению очередной разрешенной кодовой комбинации. Поэтому укороченные (усеченные) ЦК часто называют псевдоциклическими или квазициклическими. Укороченные ЦК сохраняют основные свойства классических ЦК (подразд. 1.4), к числу которых относятся следующие: 1) УЦК образуются делителями бинома Хn + 1-порождающими полиномами G(X), такими же, как у полных ЦК; 2) УЦК относятся к классу линейных (групповых) кодов, для которых сумма разрешенных кодовых комбинаций УЦК также является разрешенной кодовой комбинацией (4.12); 3) УЦК обладает таким же минимальным (конструктивным) кодовым расстоянием как у исходного ЦК, и таким же числом проверочных символов (4.21), но не может быть плотноупакованным; 4) УЦК исправляет такое же число ошибок, что и ЦК, т. е. имеет такую же кратность обнаруживаемых и исправляемых ошибок; 5) при построении кодеков УЦК используются те же схемы, что и для классических ЦК, при условии, что каждому усеченному коду спереди приписывается l нулей. Специфику построения УЦК рассмотрим на следующем примере. Пример Передаче подлежит сообщение, закодированное стандартным кодом МТК-2 с числом информационных символов k = 5. Обеспечить у получателя сообщений исправление однократной ошибки в кодовом слове. Однократная ошибка исправляется при минимальном кодовом расстоянии dmin = 3. Этому значению удовлетворяют коды Хемминга (7,4), (15, 11), (31, 26) ... (см. табл. 4.1). Код (7,4) с числом информационных символов k = 4 не удовлетворяет условию примера при необходимости передачи k = 5. Этому условию удовлетворяет следующий по порядку код Хемминга (15, 11), если из общего числа символов n = 15 и числа информативных символов k = 11 вычесть одно и то же число l = 6 (исключение первых l столбцов и l строк порождающей код матрицы с 114
x4 +x +1
G (15,11) =
10011 0000000000 01001 1000000000 00100 1100000000 00010 0110000000 l = 6 00001 0011000000 00000 1001100000 00000 0100110000 00000 0010011000 00000 0001001100 00000 0000100110 00000 0000010011
1 2 3 4 5 6 7 8 9 10 11
Усеченная матрица (9,5) 100110000 010011000 G (9,5) = 001001100 000100110 000010011
1 2 3 4 5 (4.30)
l=6
размерностью k × n). Получаем УЦК (9, 5), удовлетворяющий условию примера k = 5, dmin = 3, с числом проверочных символов r = 4. Для опорного ЦК (15,11) бином Xn + 1 раскладывается на следующие неприводимые полиномы: X 15 + 1 = (X + 1) (X 2 + X + 1) (X 4 + X + 1) (X 4 + X 3 + 1) (X 4 + X 3 + X 2 + X + 1), из которых для построения кода r = 4 можно выбрать любой из трех последних. Выберем в качестве порождающего полинома G (X) = X 4 + + X + 1 и на основе матрицы этого ЦК (15,11) покажем, как осуществляется отсечка: Приведем усеченную матрицу G (9,5) к каноническому виду путем соответствующего суммирования строк по аналогии с проводимыми преобразованиями с матрицами (4.24) и (4.25) и получим соответствующие равенства проверки на четность при поэлементном формировании усеченного кода (9,5) (см. (4.27) в качестве аналога): Обратим внимание на то, что порождающая матрица УЦК Gk (9,5) и соответствующие ей алгоритмы проверки на четность (4.31) полностью совпадают с выражениями (3.22) методических указаний, по которым 115
10000 01000 00100 G k (9,5) = 00010 00001
0101 1 = 1 ⊕ 4 ⊕ 5 1011 2 = 2 ⊕ 5 1100 3 = 3 0110 4 = 4 0011 5 = 5
r1 = i2 ⊕ i3; r2 = i1 ⊕ i3 ⊕ i4 ; r3 = i2 ⊕ i4 ⊕ i5 ; r4 = i1 ⊕ i2 ⊕ i5.
(4.31)
E
студентами выполнялась ЛР № 3. Таким образом, УЦК (9,5) полностью удовлетворяет условиям примера (с. 114). 1.7. Циклические коды Боуза –Чоудхури –Хоквингема Коды Боуза–Чоудхури–Хоквингема (БЧХ) представляют собой обширный класс кодов, способных исправлять несколько ошибок и занимающих заметное место в теории и практике кодирования. Интерес к кодам БЧХ определяется по меньшей мере тремя следующими обстоятельствами: 1) среди кодов БЧХ при небольших длинах существуют хорошие (но, как правило, не лучшие из известных) коды; 2) известны относительно простые и конструктивные методы их кодирования и декодирования; 3) полное понимание построения кодов БЧХ является наилучшей отправной точкой для изучения многих других классов кодов. Коды БЧХ независимо открыли Хоквингем (1959) и Боуз и Рой–Чоудхури (1960 г.), которые доказали ряд теорем, устанавливающих существование таких ЦК, у которых минимизируется число проверочных символов, а также указывающих пути нахождения порождающих полиномов для этих кодов. Корректирующие свойства ЦК могут быть определены на основании следующей теоремы: для любых значений m и gи существует ЦК длиной n = 2m – 1, исправляющий все ошибки кратности gи и менее (gи < m) и содержащий не более n – k ≤ mgи проверочных символов. Так, например, при n = 15, m = 4 и различных gи число проверочных символов будет равно: gи = 1, n – k = mgи = 4·1= 4; gи = 2, mgи = 4·2 = 8; gи = 3, mgи = 4·3 = 12. Соответствующие коды (n, k) будут (15,11), (15,7), (15,3). Напомним, что минимальное кодовое расстояние dmin = = 2 gи +1 и применительно к ЦК оно чаще называется конструктивным расстоянием. Если величины gи или dmin выбрать слишком большими, 116
то получившийся в результате код будет тривиальным – в нем будет лишь один либо (при r > n) ни одного информационного символа. В табл. 4.3 даны параметры и порождающие полиномы некоторых кодов БЧХ. Полиномы приведены в восьмеричной форме записи, старшая степень расположена слева. Например, коду (15,7) соответствуют двоичное представление 111010001 и многочлен G (X) = X 8 + Х 7 + Х 6 + X 4 +1. Подробные таблицы порождающих полиномов циклических кодов БЧХ приведены в [3]. Коды БЧХ с длиной 2m – 1 называют примитивными кодами БЧХ. К ним, в частности, относятся классические коды Хемминга, исправляющие однократные ошибки. К кодам БЧХ относятся также коды, длина n которых является делителем 2m – 1. Например код Голея (23, 12, 7) (см. подразд. 1.4) также принадлежит классу кодов БЧХ, поскольку при m = 11 примитивный код БЧХ имеет длину n = 211 – 1 = 2047, причем это значение без остатка делится на длину кода Голея n = 23 (2047 : 23 = 89), который относится к непримитивным БЧХ-кодам [2, 3]. Таблица 4.3 m
3 4 5
6
n
k
7 4 15 11 7 31 26 21 16 11 63 57 51 45 39 36
r
3 4 8 5 10 15 20 6 12 18 24 27
gи G (X) – mod 8
1 1 2 1 2 3 5 1 2 3 4 5
13 23 721 45 3551 107657 5423325 103 12471 1701317 166623567 1033500423
m
7
8
n
k
127 120 113 106 99 92 255 247 239 231 223 215
r
gи
G (X) – mod 8
7 14 21 28 35 8 16 24 32 40
1 2 3 4 5 1 2 3 4 5
211 41567 11554743 3447023271 624730022327 435 267543 156720665 75626641375 2157564726421
На основании данных табл. 4.3 можно построить графики зависимости скорости передачи Вk = k / n от значения скорости исправления ошибок v = gи / n, которые приведены в [3]. Если отношение gи / n остается постоянным, то скорость передачи Вк стремится к нулю, когда n неограниченно возрастает. 117
Как отмечалось выше, все примитивные коды БЧХ обладают конструктивным расстоянием dmin ≥ 2gи + 1. Расстояние можно увеличить до 2gи + 2. Для этого нужно основной порождающий полином БЧХ-кода домножить на бином X + 1, т. е. G1(X) = (Х + 1) × GБЧХ(X), что повлечет за собой прибавление к коду одного проверочного символа, обеспечивающего проверку на четность всех символов БЧХ-кода. Таким образом получается расширенный БЧХ-код. Адекватно можно получить укороченный (усеченный) БЧХ-код, следуя алгоритму, изложенному в подразделе 1.6. Коды Рида–Соломона (PC) являются важным и широко используемым подмножеством кодов БЧХ. Двоичный код Рида–Соломона получится, если взять основание кода q = 2s. Это означает, что каждый символ кода заменяется s-значной двоичной последовательностью. Если исходный код с основанием q исправляет ошибки кратности ≤ gи, то полученный из него двоичный код имеет 2gиs проверочных символов (по 2gи на каждый блок из s символов) из общего числа n = s (2s – 1). Код может исправлять серийные ошибки (пакеты ошибок) длиной ≤ b = = s(gи – 1) + 1. Коды PC, наряду с кодами Файра (4.10), являются наиболее подходящими для исправления серийных ошибок, а также в каскадных системах кодирования в качестве внешних кодов. Построение кодеров и декодеров ЦК основывается на применении ЛПС, содержащих сдвигающие регистры. Как отмечает Р. Блейхут [2], ЛПС "были сразу использованы большинством исследователей и вошли в литературу без всяких фанфар." 1.8. Структурный состав линейных переключательных схем Цикличность перестановок при формировании разрешенных кодовых комбинаций ЦК лежит в основе техники построения кодирующих устройств (КУ) и декодирующих устройств (ДУ) циклических кодов. Эта техника применяет сдвигающие регистры (СР) в виде триггерных цепочек с теми или иными обратными связями. Такие СР называют также многотактными линейными переключательными схемами (ЛПС) и линейными кодовыми фильтрами Хафмена, который первым начал изучение ЛПС с точки зрения линейных фильтров. Кстати, Д. Хафмен является и автором принципа, состоящего в том, что "две точки зрения лучше, чем одна", получившего широкое применение в настоящее компромиссное время. 118
При построении ЛПС используется три вида элементарных устройств: 1) сумматор, имеющий, как правило, два входа и один выход, причем для двоичных кодов суммирование осуществляется по модулю 2; 2) ЗУ, имеющее один вход и один выход и представляющее собой одну триггерную ячейку (один разряд) СР; 3) устройство умножения на постоянgi + ную величину, имеющее один вход и один выход. Эти устройства изображаются на Рис. 4.1 схемах так, как показано на рис. 4.1. Линейными переключательными схемами с конечным числом состояний называются любые схемы, содержащие конечное число сумматоров, устройств памяти и устройств умножения на константу, соединенных любым допустимым способом. В бинарном случае сумматор (равно как и вычитатель) представляет собой логический элемент "исключающее ИЛИ", а устройство памяти является устройством задержки (D-триггером). Устройства задержки, включенные последовательно, составляют СР, в ячейках которого выходной символ совпадает с входным символом в предшествующий момент времени. К СР подводится шина сдвига, с помощью которой тактовыми импульсами (ТИ) осуществляется продвижение по разрядам СР записанной кодовой информации. Как правило, шина сдвига не показывается на схемах с изображениями ЛПС. При формировании и обработке двоичных ЦК введение в схему ЛПС умножителя на константу, равную 1, эквивалентно введению дополнительного соединения, а умножитель на константу, равную 0, соответствует отсутствию такого соединения. Предполагается, что на вход СР, входящего в состав ЛПС, кодовая комбинация подается последовательно, с периодичностью, равной периоду следования ТИ в шине сдвига. Аналогично, последовательно во времени, появляются кодовые символы на выходе СР. Когда входом или выходом является многочлен, представляющий при двоичной обработке набор "1" и "0", то на входном или выходном конце СР появляются только коэффициенты ("1" или "0"), начиная с коэффициентов высших порядков. Это обусловливается тем, что при делении у делителя сначала должны быть обработаны коэффициенты высших порядков. В последующих разделах описываются схемы, используемые для умножения и деления любых многочленов на некоторый фиксированный, в частности, порождающий полином. 119
1.9. Умножение полиномов на базе ЛПС Схема, изображенная на рис. 4.2, используется для умножения любого полинома на входе A (X) = a0 + a1 X + a2 X2 + … + ak X k на фиксированный полином, в частности, порождающий: G(X) = g0 + g1 X + g2 X 2 + … + gr X r . Предполагается, что первоначально все разряды СР содержат нули, а на вход коэффициенты полинома А (Х) поступают, начиная с коэффициентов высших порядков (со старших разрядов), после чего следует r нулей.
gr
+
+
+
gr–1
gr–2
gr–3
...
+
+
g1
g0
Выход
...
Вход
Рис. 4.2
Произведение полиномов A(X) G(X) = a0 g0 + (ao g1 + a1 g0)X + ... + ak gr X k+r.
(4.32)
Когда на входе ЛПС появляется первый (старший) коэффициент полинома А(Х), то он умножится в первом устройстве умножения на gr и появится на выходе уже как результат перемножения ak gr , проследовав "транзитом" через все схемы суммирования по модулю 2. Кроме того, ak запишется в первом разряде СР, а все остальные разряды СР будут содержать нули. Спустя единицу времени, с появлением в шине сдвига 2-го ТИ, на входе появится ak –1, который перемножится с gr и сложится в первой схеме суммирования по модулю 2 с ak gr – 1, сформировав на выходе сумму ak – 1 gr + ak gr – 1, т. е. второй коэффициент произведения A(X) G(X). Дальнейшие операции производятся аналогичным образом. После r + k сдвигов СР полностью обнуляется и на выходе появляется значение a0 g0, равное первому коэффициенту произведения (4.32), так что произведение на выходе ЛПС последовательно получается в полном составе. Второй вариант ЛПС для умножения полиномов показан на рис. 4.3. 120
Вход
g0
g1
g2
+
+
gr – 2
gr – 1
+
+
...
gr
+
Выход
Рис. 4.3
Коэффициенты произведения формируются непосредственно в СР. После того, как первый символ подается на вход, на выходе появляется последний коэффициент (4.32) ak gr, а разряды СР содержат только нули. После одного сдвига ячейки СР содержат элементы ak g0, ak g1, ..., ak gr – 1, a вход равен a k –1 . При этом выход СР равен a k g r –1 + a k –1 g r , т. е. равен второму коэффициенту (4.32). После появления очередного ТИ в шине сдвига (не показана на рис. 4.2 и 4.3) на выходе появляется третий коэффициент (4.32). Дальнейшие операции производятся аналогичным образом. Схемы умножения могут иметь более чем один вход, если добавить к ЛПС, изображенной на рис. 4.3, вторую шину с цепочкой устройств умножения, связанных с соответствующими схемами суммирования по модулю 2. Тогда схема будет реализовывать процедуру суммирования произведений двух пар полиномов (4.33) C (X) = A1(X) G1(X) + A2(X) G2(X) , причем ЗУ в виде СР будет только одно. Выход
+ g3 = 1
g2 = 0
Вход
+ g1 = 1
g1 = 1
g0 = 1
g1 = 1
+
Вход
g2 = 0
g3 = 1
+
Выход
Рис. 4.4
Пример Составить 2 схемы кодирующих устройств ЦК Хемминга (7, 4) на базе двух рассмотренных вариантов ЛПС для умножения полиномов 121
(рис. 4.4). В качестве порождающего полинома использовать полином G (7,4) = Х 3 + X +1. Напомним (см. подразд. 1.4), что применение в кодерах метода умножения приводит, к сожалению, к формированию неразделимых ЦК. 1.10. Деление полиномов на базе ЛПС Схема для деления полинома A(X) = a0 + a1 X + a2 X 2 + … + ak X k на полином G(X) = g0 + g1 X + g2 X 2 + … + gr X r показана на рис. 4.5. Динамическое ЗУ в виде СР вначале должно содержать все нули. Для деления полиномов СР охвачен обратной связью, т. е. выход СР соединяется со входом. Для подчеркивания противоположного направления шины обратной связи коэффициент умножителя обозначается как gr–1. Однако для двоичных кодов результат умножения и деления на единицу одинаков, поэтому указанное обозначение в дальнейшем использоваться не будет. Первый вариант ЛПС для деления полиномов (рис. 4.5). Выход
–g0
–g1
–g2
+
+
+
Вход
...
–gr – 2
–gr – 1
+
+
–gr–1
Рис. 4.5
Для первых r-сдвигов, т. е. до тех пор, пока первый входной символ не достигнет конца PC, выход принимает значения, равные "0". После этого на выходе появляется первый ненулевой выход, который равен ak gr–1 – первому коэффициенту частного. Для каждого коэффициента частного gj необходимо вычесть из делимого полином G (X). Это вычитание производится с помощью обратной связи. После k сдвигов на выходе появится частное от деления, а остаток от деления будет находиться в PC. Работу схемы легче всего понять с помощью примеров построения КУ и ДКУ на базе ЛПС, рассматриваемых далее в разд. 1.11. Второй вариант ЛПС с делением на генераторный полином (рис. 4.6).
122
...
+
+
+
hk – 1
hk – 2
hk – 3
+ h1
h0 Bi (X)
... a0
a1
a2
Выход ak – 2
ak – 1
Рис. 4.6
При построении КУ ЦК, а также генераторов различных кодовых последовательностей, в частности, последовательностей максимальной длины (М-последовательностей), применяется в ряде случаев так называемый генераторный полином Н(Х). Этот полином называют также проверочным, если он получается при делении бинома 1 + Х n на порождающий полином G (X): 1+ X n . (4.34) G( X ) При использовании этой схемы в качестве КУ ЦК исходную кодовую комбинацию А(Х) параллельно, одновременно записывают в k разрядов СР. С первым тактом на выход будет выдан коэффициент bn – 1 = ak – 1, произойдет сдвиг вправо в СР, и в освободившуюся ячейку памяти будет записано вычисленное значение проверочного бита rn – k – 1 = h0 ak – 1 + + h1 ak – 2 + ... + hk – 1 a0. Со вторым тактом на выход будет считан коэффициент bn – 2 = ak – 2, произойдет сдвиг, и в освободившуюся первую ячейку СР запишется второй проверочный бит rn – k – 2 = h0 ak – 2 + h1 ak – 3 + + ... + hk – 1 rn –k – 1. Чеpез n – k тактов будут вычислены все n – k проверочных символов r0, r1, …, rn – k – 1 и записаны в СР. После k тактов, т. е. после вывода на выход всех информационных символов, станут выводиться проверочные символы в том же порядке, в каком они вычислялись. На выходе получается блочный код. После k тактов процесс кодирования одной комбинации Аi(Х) заканчивается, и СР принимает исходное состояние. Для кодирования следующей комбинации необходимо стереть Аi(Х), ввести в СР новую Аj(Х) и повторить цикл из n тактов. H(X ) =
123
Рассмотрим более конкретно работу этой схемы на примере использования ее в качестве КУ с привязкой начальных условий к данным предыдущих примеров. Пример Построить схему КУ, обеспечивающего кодирование ЦК Хемминга (7,4) с порождающим полиномом G(X) = 1 + X + Х 2 путем вычисления блока проверочных символов "в целом", используя проверочный полином Н(Х). Проследить по тактам процесс кодирования и состояние элементов схемы при кодировании исходной комбинации 1001 ~ 1 + X 3 = A(X). Построение схемы КУ определяется проверочным полиномом (4.34)
1+ X 7 = 1 + X + X 2 + X 4. 1+ X + X 3 Так как k = 4, то число разрядов СР равно четырем. По виду проверочного полинома определяем, что h0 = h1 = h2 = h4 = 1, h3 = 0. Схема КУ для условий примера показана на рис. 4.7. Состояние ячеек СР и выхода схемы по тактам – в табл. 4.4. В исходном положении в триггерные ячейки СР записываются информационные символы Ai (X) = 1 + X 3 ~ 1001. Учитывая наличие обратной связи в СР с выхода на вход, суммирование по модулю 2 выходов ячеек Х 1, Х 2 и X 3 даст символ записи в ячейку Х0. После первого сдвига в Х0 будет записан символ проверочной группы r1, который при последующих сдвигах продефилирует на выход СР. Из табл. 4.4 видно, что после n = 7 тактов на выходе образуется комбинация 0111001 (старшим разрядом вперед). Таблица 4.4 H(X ) =
+
+
h 4 = 1 h3 = 0 h 2 = 1 X0 a0 = 1
X1 a1 = 0
h1 = 1
h0 = 1
X2
X3
a2 = 0 Ai (X)
Рис. 4.7
124
Состояние ячеек Выход X0 X1 X2 X3 A (X) 1 0 0 1 – 1 1 1 0 0 1 0 2 1 1 1 0
Номер т ак т а
a3 = 1
Выход Bi (X)
3 4 5 6 7
1 1 1 0 1 0 1 0 0 0 1 1 0 0 0
1 1 1
0
0
1 1 1
1
0
При этом триггерные ячейки СР принимают исходное значение 1001, и при необходимости возможно повторение процедуры кодирования этой же кодовой комбинации Ai (X) путем подачи очередных следующих n = 7 тактов. Таким образом, этот способ кодирования так же, как и первый вариант схемы для деления полиномов, обеспечивает получение кодовых комбинаций разделимого, блочного ЦК. Кроме того, подобная ЛПС может быть использована для генерации определенной кодовой комбинации, в частности, М-последовательности. Рассмотрение вариантов построения ЛПС, выполняющих операции умножения и деления полиномов, с целью использования в кодеках ЦК, позволяет сделать следующие выводы: 1) В КУ ЦК процедура умножения полиномов приводит к получению неразделимых кодов, что усложняет их последующее декодирование. Поэтому операция умножения редко используется в устройствах формирования и обработки ЦК. 2) При делении на порождающий полином G(X) код на выходе КУ получается разделимым и СР содержит r разрядов. Так как в большинстве случаев используются ЦК, у которых число проверочных символов r существенно меньше числа информационных (r < k), то СР в этом случае будет иметь меньшее число разрядов, чем при делении на генераторный полином. 3) При делении в КУ исходной кодовой комбинации на генераторный многочлен ЦК также получается разделимым, но в СР требуется использовать не r, а k разрядов, которых, как правило, больше. Применение этого способа более целесообразно в тех случаях, когда одна и та же кодовая комбинация передается по каналу связи многократно, например при передаче формата сообщения с аварийных буев в системах поиска и спасения терпящих бедствие объектов. Линейные переключательные схемы широко применяются как при формировании и обработке ЦК, так и при генерировании кодированных последовательностей, в частности, М-последовательностей. Рассмотрим ряд характерных примеров применения ЛПС в технике связи. 1.11. Кодирующее и декодирующее устройства для кода Хемминга (7,4) Студенты уже знакомы с построением кодера и декодера для кода Хемминга (7,4) по ЛР № 3. Однако эти схемы строились с учетом "поэлементного" получения символов проверочной группы и синдрома в 125
соответствии с алгоритмом (4.14). Покажем, как реализуются эти же схемы с учетом того, что коды Хемминга относятся и к классу ЦК. Кодер для кода Хемминга (7,4). Для построения КУ по классической схеме деления (см. рис. 4.5), так как кодирование путем вычисления остатка "в целом" требует предварительного выполнения операции умножения на оператор сдвига Xr и сложения полинома – остатка с полиномом – произведением Ai (X) X r (4.15), требуется предварительно видоизменить структуру схемы. Для выполнения операции умножения следует разместить сумматор, на который подключен вход, в конце СР, перед обратной связью gr–1. Такое подключение входа эквивалентно умножению на X r, так как исключается задержка на r ТИ. Для выполнения операции сложения остатка Ri (X) с полиномом Ai (X) X r (4.15) необходимо выход КУ подключить к одному из входов схемы логического сложения (ИЛИ), ко второму входу которой подключается вход схемы для выдачи на выход без задержки информационной кодовой комбинации Ai (X) (старшим разрядом вперед). Подробнее рассмотрим работу схемы на конкретном примере. Пример Построить схему КУ, обеспечивающего кодирование ЦК (7,4) с порождающим полиномом G (X) = 1 + X + X 3 путем определения проверочной группы методом деления полиномов и определения остатка R (X). Проследить по тактам процесс кодирования и состояние элементов схемы при кодировании исходного полинома Ai (X) = 1 + X 3 ~ 1001. КЛ1
g0 = 1
И1
Выход 1
X2
X1 КЛ2
+
И2 (5–7) ТИ
Bi (X)
Вход Ai (X)
Рис. 4.8
126
g3 = 1
g2 = 0
g1 = 1
+
X0
(1–4) ТИ
Схема кодера для условий примера изображена на рис. 4.8, состояние ячеек СР и выхода схемы по тактам — в табл. 4.5. Наряду с особенностями построения схемы, КУ дополнено двумя ключевыми схемами, роль которых выполняют схемы логического умножения И 1 и И 2 соответственно. В течение первых k = 4 тактов на второй вход схемы И 1 поступают ТИ, обеспечивая прохождение символов от выходного сумматора в шину обратной связи СР. Начиная с 5-го по 7-й такт, ТИ на второй вход схемы И 1 не поступают, и обратная связь разрывается. В это время поступают ТИ на второй вход схемы И2, благодаря чему выход СР подключается к выходу всего КУ, обеспечивая выдачу остатка от деления кодовой комбинации Ai (X) на порождающий полином G (X) на выход, для подстыковки проверочных символов к Ai (X). Из табл. 4.5 видно, что после 4-го такта в СР образуется остаток 011, т. е. R (X) = X + X 2, а в течение n тактов на выход поступает кодовая комбинация 0111001 ~ X + Х 2 + Х 3 + X 6 (старшим разрядом вперед). Таблица 4.5 Номер Вход т ак т а
0 1 2 3 4 5 6 7
– 1 0 0 1 – – –
Состояние ячеек ключей 0 1 2 КЛ1 X X X Выход
0 1 0 1 0 0 0 0
0 1 1 1 1 0 0 0
0 0 1 1 1 1 0 0
– 1 0 0 1 1 1 0
КЛ2
Замкнут
Разомкнут
Разомкнут
Замкнут
Декодер для кода Хемминга (7, 4). При аппаратурной реализации декодеров ЦК для определения синдрома используют схему, осуществляющую процедуру деления полинома на полином (см. рис. 4.5). При построении ДУ следует дополнительно включать ЗУ на k элементов и схему опроса остатка при делении. Эта схема состоит из схемы логического сложения (ИЛИ) на r входов и схемы логического умножения (И) на два входа; СР и обратные связи должны соответствовать структуре порождающего полинома G (X), 127
т. е. число ячеек СР должно быть равным r, а замкнутая обратная связь должна соответствовать ненулевым коэффициентам полинома G (X). Пример Построить схему ДУ для ЦК Состояние ячеек Выход Хемминга (7, 4) с порождающим Вход Номер B (X) т ак т а СР X1 X2 X0 полиномом G (X) = 1 + X + X 3 и Исходное по тактам сдвигающих импуль– 0 0 0 – состояние сов проследить за его работой. 1 1 1 0 0 0 Схема ДУ должна решать зада0 2 0 1 0 0 чу обнаружения ошибок. 0 3 0 0 1 0 На рис. 4.9 приведена схема 1 4 0 1 0 1 ДУ, в табл.4.6 представлены со1 5 1 0 1 0 стояния ячеек СР при декоди1 6 0 0 0 1 ровании входной кодовой ком0 7 0 0 0 0 бинации Bi (X) = X + X 2 + Х 3 + + Х 6 ~ 0111001, принимаемой Таблица 4.6
КЛ1
(1–4) ТИ
Выход
И1
Вход
1 2
3 4
Bi (X) g0 = 1
+
X0
g1 = 1
+
g3 = 1
g2 = 0 X1
X2 КЛ2 1
И2
ТИ/7
Рис. 4.9
без ошибок. Декодирующее устройство работает следующим образом. Кодовая комбинация Bi (X) старшим разрядом вперед поступает на СР для определения остатка при делении и в ЗУ на k элементов через открытую схему И1, которая через k тактов закрывается, так как прекращается подача из синхронизатора ТИ на один из входов схемы И 1. 128
При этом в ЗУ запоминаются k информационных символов принимаемой кодовой комбинации Bi (X). В СР поступают все n элементов Bi (X), и после n тактов происходит опрос состояния ячеек СР путем подачи циклового импульса с синхронизатора на схему И 2. Если R ( X ) ≠ 0 , то на выходе схемы И 2 импульс не появится и считывания с ЗУ принятых информационных символов не произойдет. Если R (X) = 0, то появившийся на выходе И 2 импульс считывает Ai (X) на выход и выдает четыре информационные бита получателю сообщений. 1.12. Принципы построения декодирующих устройств для циклических кодов с исправлением ошибок Декодирование принятых комбинаций ЦК можно производить различными методами. Наряду с синдромным методом декодирования, основанным на вычислении остатка от деления принятой комбинации на порождающий код полином, существует целый ряд других методов, упрощающих процедуру декодирования и не требующих хранения в памяти ДУ большого числа синдромов при обработке длинных кодов. Для длинных ЦК разработаны специальные итеративные процедуры декодирования с исправлением нескольких ошибок, например, метод Берлекэмпа или более совершенный итеративный алгоритм Тренча–Берлекэмпа–Месси (ТБМ-метод), оперирующий с полиномами над полями Галуа. Различные методы декодирования так же, как и коды, получают авторские наименования. Известны алгоритмы декодирования Хемминга, Питерсона, Ченя, Мэггита, Витерби и других [2–7]. В лабораторной работе "Циклические коды" используется синдромный метод декодирования ввиду малой длины исследуемого БЧХ-кода. Декодирующие устройства для кодов, предназначенных только для обнаружения ошибок, по существу, не отличаются от схем КУ (см. подразд. 1.11). В них добавляется лишь буферный регистр для хранения принятого сообщения на время проведения операции деления. Если остаток–синдром при делении оказывается нулевым, что свидетельствует об отсутствии ошибки, то информация с буферного регистра считывается в дешифратор сообщения ПС. Если остаток обнаружен, что свидетельствует о наличии ошибки, то информация в буферном регистре уничтожается и на передающую сторону к ИС посылается сигнал запроса повторной передачи по обратному каналу связи. 129
В случае исправления ошибок схема ДУ, естественно, усложняется. Информацию о разрядах, в которых произошла ошибка, т. е. о виде шумового вектора Z (X) (4.16), содержит, как и ранее, синдром, получаемый в результате деления полиномов. Структурная схема ДУ, решающего задачу исправления ошибок, показана на рис. 4.10. Вход Буферный регистр
+
Выход
Определитель синдрома (схема деления)
... Анализатор синдрома
... Локатор ошибки
Рис. 4.10
Символы подлежащей декодированию кодовой комбинации, возможно, содержащей ошибку, последовательно, начиная со старшего разряда, вводятся в n-разрядный буферный регистр сдвига и одновременно в схему определителя синдрома, где за n тактов деления определяется остаток, который в случае синхронной, непрерывной передачи кодовых комбинаций сразу же переписывается в аналогичный СР схемы анализатора синдрома. В состав схемы анализатора синдрома может входить ПЗУ, в котором записаны все возможные конфигурации синдромов с соответствующими им шумовыми векторами. Кодовые комбинации шумовых векторов (4.16) содержат "единичные" символы на тех позициях, которые в процессе передачи сообщения по каналу связи оказались искаженными помехами. Локатор ошибок (определитель места ошибок) представляет собой комбинаторно-логическую схему, выдающую на выход единичные символы в те моменты времени, когда каждый из ошибочных символов принятой кодовой комбинации занимает в буферном регистре крайнюю 130
правую ячейку. При последующем тактовом сдвиге локатор ошибки (детектор ошибки) формирует символ "1", который поступает на сумматор коррекции, представляющий собой схему суммирования по модулю 2, где исправляется искаженный символ. Одновременно по цепи обратной связи с выхода локатора ошибки подается единичный символ на анализатор синдрома, что в ряде конкретных схемных решений построения анализатора упрощает его построение на базе ЛПС без использования ПЗУ [2]. Сложность анализатора синдрома и локатора ошибки зависит от гарантированного числа исправляемых и обнаруживаемых ошибок. Естественно, простейшие схемные решения получаются при обработке кодов, рассчитанных на исправление единичных ошибок. Как видно из рассмотрения логики работы структурной схемы декодера (см. рис. 4.10), наиболее сложной частью его является необходимость запоминания заранее вычисленных синдромных полиномов и соответствующих им векторов ошибок. Достоинством ЦК как раз и является то, что анализатор синдрома можно значительно упростить, воспользовавшись алгебраической структурой кода для отыскания связей между синдромами при числе исправляемых ошибок gи > 1. Опираясь на эти связи, можно запомнить в ПЗУ только полиномы ошибок, соответствующие некоторым типичным синдромным полиномам, а вычисление остальных осуществить затем с помощью простых вычислительных алгоритмов. Именно на таких принципах работают различные варианты декодеров Мэггита [2,6]. 2. ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ Перед началом выполнения лабораторной работы "Циклические коды" студент должен получить у преподавателя номер порождающего полинома G(X) ЦК, задаваемого в восьмеричной системе счисления (табл. 4.7), и информационное слово в виде десятичного числа от 1 до 127. Работа "Циклические коды" выполняется на персональных ЭВМ, в среде операционной системы MS-DOS. Для выполнения лабораторной работы (ЛР № 4) необходимо выбрать соответствующую позицию меню и нажать клавишу < ENTER >. После небольшой паузы на экране дисплея появится заголовок "Часть1" и приглашение ввести порождающий полином. В случае ввода ошибочных символов выдается сообщение 131
Таблица 4.7 № п/ п
G (X)
№ п/ п
G (X)
№ п/ п
G (X)
№ п/ п
G (X)
1 2 3 4 5 6
23 31 37 41 53 65
7 8 9 10 11 12
117 135 171 213 321 347
13 14 15 16 17 18
427 673 721 1163 1315 1471
19 20 21 22 23 24
2041 2467 3545 4657 6143 7531
"Ошибка ввода, повторите", после чего необходимо заново ввести строку, в которой была допущена ошибка. Для прекращения выполнения лабораторной работы достаточно в любой момент нажать клавишу < ESС >. Программа выполнения работы включает четыре части. 1. Заданный порождающий полином необходимо преобразовать в двоичную и в полиномиальную формы, а затем ввести с клавиатуры. Ввод полинома по степеням заключается в следующем: вводятся через запятую только степени полинома, а затем нажимается клавиша < ENTER >. Например, полином Х 10 + Х 4 + Х 3 + Х + 1 вводится как 10, 4, 3, 1, 0 < ENTER >. Программа допускает при двоичном вводе отбрасывание начальных нулей. Так, слово 00101101 можно вводить как 101101. Если введенные формы полинома не соответствуют исходной восьмеричной, то выводится сообщение об ошибке и повторяется ввод информации до rex пор, пока она не будет введена правильно. Таким образом, довести до конца работу можно, только правильно выполнив каждый ее пункт. Зная длину кодового слова (n = 15) и порождающий полином, надо рассчитать и ввести значения избыточности и скорости порождаемого этим полиномом циклического кода. 2. Этот раздел лабораторной работы посвящен процедурам умножения и деления полиномов на исходный порождающий полином G(X) при помощи ЛПС (см. подразд. 1.9 и 1.10). На экране последовательно изображаются три "заготовки" ЛПС: две ЛПС умножения и одна деления, с пронумерованными местами для перемычек. Задача состоит в правильном размещении перемычек соглас132
но порождающему полиному G (X). Перемычки расставляются путем ввода через запятую их номеров. 3. В третьей части работы осуществляется синтез порождающей матрицы циклического БЧХ-кода (15, 7) по его порождающему полиному с G(X) =Х 8 + X 7 + Х 6 + Х 4 + 1 (см. подразд. 1.5 и 1.6). 3.1. На экран выводятся основные данные БЧХ-кода (15, 7): порождающий полином и минимальное кодовое расстояние d = 5. Эти данные следует выписать, так как они понадобятся в дальнейшем при работе. 3.2. Рассчитать и построчно ввести в двоичной форме порождающую каноническую матрицу данного БЧХ-кода. Под канонической подразумевается матрица, состоящая из двух подматриц – единичной и кодирующей. Такое построение порождающей матрицы дает разделимый БЧХ-код. 3.3. По порождающему полиному и минимальному кодовому расстоянию требуется рассчитать и ввести проверочный полином данного БЧХ-кода, а также количество гарантированно исправляемых и обнаруживаемых им ошибок. 3.4. Из канонической порождающей матрицы БЧХ-кода (15, 7) получить порождающую матрицу укороченного БЧХ-кода (13, 5) и построчно ввести ее. 4. Кодирование и декодирование циклическим БЧХ-кодом (15, 7). 4.1. Полученное в начале работы информационное слово (десятичное число в пределах от 1 до 127) ввести с клавиатуры. 4.2. Преобразовать информационное слово из десятичной формы в двоичную, а затем в полиномиальную и последовательно ввести. 4.3. По информационному слову рассчитать кодовое слово разделимого БЧХ-кода (15, 7) и ввести его двоичный эквивалент. Кодовое слово можно вычислить, умножив вектор информационного слова на порождающую матрицу или выделив остаток от деления на порождающий полином информационного полинома, предварительно умноженного на Х 8, в случае применения кода (15, 7). 4.4. ЭВМ троекратно рассчитывает случайный вектор ошибок, содержащий одну, две и три ошибки, и выводит на экран исходное кодовое и искаженное слово, отметив в нем ошибочные символы. Необходимо вычислить и ввести двоичную форму синдрома, соответствующего искаженному кодовому слову; ЭВМ проверяет правильность ввода и формирует, исходя из полученного синдрома, шумовой вектор, который поразрядно суммируется по модулю 2 с искаженным 133
кодовым словом. Таким образом вычисляется выводимое на экран исправленное кодовое слово. Затем ЭВМ рассчитывает и отображает синдром исправленного кодового слова. Некоторые комбинации трехкратных ошибок данный БЧХ-код не в состоянии исправить, так как его минимальное кодовое расстояние равно 5. Синдромы кодовых слов можно рассчитывать двумя способами: умножая двоичное кодовое слово на транспонированную проверочную матрицу или деля полином кодового слова на порождающий полином, определяя остаток (см. подразд. 1.4). В конце лабораторной работы выводится информация о количестве допущенных ошибок, а затем приглашение к вводу номера группы и фамилии студента, выполнившего работу. Эта информация автоматически дополняется датой и временем выполнения работы, введенным полиномом и информационным словом, распределением ошибок исполнителя по разделам работы. Все эти данные требуются для последующего просмотра преподавателем. Студентам, выполнившим работу, необходимо сообщить об этом преподавателю для отметки в лабораторном журнале, предъявив данные о числе допущенных ошибок по разделам работы, подписанные оператором ЭВМ. 3. КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАНИЯ 1. Пояснить принципы помехоустойчивого кодирования. 2. Циклические коды и их особенности. 3. Порождающий и проверочный полиномы ЦК и их основные особенности. 4. Укороченные ЦК. Порождающие и проверочные матрицы укороченных кодов и их порождающие полиномы. 5. Принципы кодирования и декодирования ЦК при помощи ЛПС. 6. Построение канонической и порождающей матрицы по порождающему или проверочному полиномам. Покажите на примере. 7. Определите верхнюю границу минимального кодового расстояния заданного (n, k) ЦК. 8. Закодируйте БЧХ-кодом (15, 7) произвольное кодовое слово при помощи порождающей матрицы и полинома. 9. Охарактеризуйте различие между разделимыми и неразделимыми кодами. Приведите примеры. 10. Объясните суть синдромного метода декодирования и его отличие от декодирования по методу максимального правдоподобия. 134
11. Почему синдром исправленного кодового слова всегда равен нулю, даже если кратность ошибки превосходит корректирующую способность кода и поэтому исправленное кодовое слово неверно? 12. Как связаны между собой минимальное кодовое расстояние и кратности исправляемых и обнаруживаемых ошибок? 13. В чем заключается трудность декодирования с исправлением ошибок? 14. При обнаружении ошибки в кодовой комбинации на стороне приема каковы пути ее исправления? 15. В чем состоят особенности кодов Абрамсона и Файра, в каких случаях их целесообразно применять? 16. Какое главное отличие кодов Рида–Соломона от БЧХ-кодов, в каких случаях находят применение коды Рида–Соломона? 17. Охарактеризуйте достоинства и особенности кода Голея. 18. Дайте определение оператора сдвига, с какой целью он применяется при циклическом кодировании? Рекомендуемая литература
1. Журавлев А. К., Никитин Г. И. Радиотехнические системы передачи информации: Учеб. пособие / ЛИАП. Л., 1984. 86 с. 2. Блейхут Р. Теория и практика кодов, контролирующих ошибки: Пер. с англ. М.: Мир, 1986. 576 с. 3. Питерсон У., Уэлдон Э. Коды, исправляющие ошибки: Пер. с англ. М.: Мир, 1976. 600 с. 4. Аршинов М. Н., Садовский Л. Е. Коды и математика (рассказы о кодировании). М.: Наука, 1983. 144 с. 5. Харкевич А. А. Борьба с помехами. М.: Физматиздат, 1963. 276 с. 6. Колесников В. Д., Мирончиков Е. Т. Декодирование циклических кодов. М.: Связь, 1968. 7. Замрий А. С. Помехоустойчивые коды: Учеб. пособие / ЛВВИУС. Л., 1990. 58 с. 8. Варакин Л. Е. Системы связи с шумоподобными сигналами. М.: Радио и связь, 1985. 384 с. 9. Никитин Г. И., Поддубный С. С. Помехоустойчивые циклические коды: Учеб.пособие / СПбГУАП. СПб., 1998. 72 с.
135
СОДЕРЖАНИЕ
ПРЕДИСЛОВИЕ .................................................................................. Список сокращений ............................................................................. Лабораторная работа № 1. Первичные коды ..................................... Лабораторная работа № 2. Эффективные коды ................................ Лабораторная работа № 3. Корректирующие коды Хемминга........ Лабораторная работа № 4. Циклические коды .................................
136
1 3 4 32 69 92