2. КОДИРОВАНИЕ СИГНАЛОВ
2.1. Основные понятия и определения. Цель кодирования
Код – совокупность знаков (символов) и система определенных правил, при помощи которых информация может быть представлена (закодирована) в виде набора таких символов для передачи, обработки и хранения. Конечная последовательность знаков в этом наборе называется словом.
Кодирование – представление сообщения (информации) в виде совокупности символов, составленной в соответствии с выбранным кодом; преобразование символов или групп символов одного кода в символы или группы символов другого кода. Кодированию может быть подвергнута только информация, представленная в виде дискретных сигналов (буквы, цифры и т.п.). В тех случаях, когда первичные сигналы информационных систем являются непрерывными, происходит предварительное преобразование их в дискретные сигналы.
Декодирование – процесс, обратный кодированию, т.е. восстановление сообщения к исходному виду.
Кодирование обеспечивает представление сообщений в форме, удобной для передачи по конкретному каналу связи (в общем случае хранение информации можно рассматривать как ее передачу во времени, а запоминающее устройство как канал связи), и преследует несколько целей. Первая из них заключается в том, чтобы представить сообщения в такой системе символов, которая обеспечивала бы простоту и надежность аппаратной реализации информационных устройств и их необходимую эффективность. Вторая цель кодирования состоит в том, чтобы обеспечить наилучшее согласование свойств источника сообщений со свойствами канала связи. Путем такого согласования добиваются, например, обеспечения максимальной скорости передачи, требуемой помехозащищенности и достоверности передачи информации в условиях воздействия помех.
Необходимо иметь в виду, что кодирование, обеспечивающее изменение структуры сигналов, не должно изменять количество информации, заключенной в первоначальном сообщении.
На рис. 2.1 приведена обобщенная схема передачи сообщений. Множество М1 описывает множество потенциально возможных сообщений, которые может передать источник информации. Из этого множества выбирается некоторое сообщение m1. Но прежде чем его направить в канал связи, оно кодируется и преобразуется в некоторое сообщение m2 из множества М2, характеризующего множество закодированных сообщений. Поскольку способов кодирования может быть много, то m2 отличается от m1 и установление соответствия между элементами этих множеств требует специальной договоренности.

Рис.2.1
Закодированное сообщение m2 поступает в канал связи и под воздействием возможных помех этого канала, имеющих случайный характер, превращается в искаженное сообщение т3 из множества М3.
На приемной стороне канала связи необходимо провести декодирование искаженного сообщения:
1) сообщение т3 необходимо освободить от помех и восстановить сообщение m2;
2) пользуясь информацией о способе кодирования, использованном на передающей стороне, преобразовать сообщение m2 в исходное сообщение m1.
Но переход от т3 к сообщению т2 из множества М2 при сильных искажениях неоднозначен. Если, например, передавалось слово «рука», а на приемной стороне канала было получено «щука», то в множестве М2 этому может соответствовать масса допустимых слов: мука, бука, рука и т. п. Поэтому искаженные сообщения декодировать нелегко.
В связи с этим одна из важных задач, решаемых в теории кодирования, – это разработка специальных корректирующих кодов, которые позволяют находить и исправлять ошибки, возникающие при передаче сообщений. Один из простейших кодов такого типа мог бы быть таким. Вместо четырех букв, входящих в слово «рука», источник сообщения мог бы передавать их в удвоенном виде. Тогда сообщение, поступившее в канал связи, выглядело бы как «ррууккаа». Если искажению подверглась одна буква передаваемого слова, то на приемном конце канала появилось бы, например, сообщение «рщууккаа». Восстановление исходного сообщения в данном случае облегчается, т.к. очевидно, что ошибка имеется только в первой позиции. Для исправления обнаруженной ошибки достаточно проверить две гипотезы: в m2 есть либо «щука», либо «рука». Этот пример показывает, что поиск и исправление ошибок требуют дополнительных данных, т.е. избыточности в передаваемом сообщении и, естественно, хотелось бы, чтобы эта избыточность была минимальной.
Итак, будем полагать, что источник информации выдает некоторое дискретное сообщение А, которое можно рассматривать как последовательность элементарных сообщений ai (i= 1, 2, ..., n). Эти элементарные сообщения будем называть символами сообщений, а их совокупность {аi} — алфавитом источника. Кодирование заключается в том, что последовательность символов источника аi заменяется последовательностью кодовых символов – кодовой комбинацией (кодовым словом).
Общее число символов, составляющих кодовую комбинацию, называется значностью или длиной кода п. Количество значений кодовых признаков, используемых в кодовых комбинациях, называется основанием кода т.
По условиям построения кодовых комбинаций коды делятся на равномерные и неравномерные. В равномерных кодах все сообщения передаются кодовыми группами с одинаковым числом элементов п = const. Так, например, телеграфный код Бодо является равномерным кодом с п = 5.
При использовании неравномерных кодов разные сообщения могут передаваться кодовыми группами, содержащими неодинаковое число элементов (п = var). Типичным представителем этой группы является код Морзе. Равномерный код обладает большими возможностями с точки зрения обеспечения помехозащищенности передачи, так как потеря элементов или возникновение новых элементов в кодовых комбинациях с п = const могут быть легко обнаружены. Неравномерные коды могут обеспечить наибольшую экономичность построения и наибольшее быстродействие передачи сообщений, но они более подвержены воздействию помех. Потеря или возникновение новых элементов в комбинации в результате действия помех могут привести к созданию новой ложной комбинации, воспринимаемой на приемной стороне как истинная. Неравномерные коды требуют при передаче либо специальных разделительных символов, указывающих конец одной и начало другой кодовой комбинации (код Морзе требует наличия разделительного символа), либо же должны строиться так, чтобы никакая кодовая комбинация не явилась началом другой.
По числу различных символов (т) в кодовых комбинациях различают коды: единичные, т = 1; двоичные, т = 2; многопозиционные, т > 2.
В единичном коде используются одинаковые символы. Кодовые комбинации отличаются друг от друга лишь количеством символов. Такие коды называют еще числоимпульсными. Единичный код отличается своей простотой. Однако вследствие того, что он неравномерен, помехозащищенность его низкая. Кроме того, при передаче большого количества сообщений происходит изменение в широких пределах длины кода, что вызывает определенные неудобства.
Наибольшее распространение получили двоичные коды. Это обусловлено тем обстоятельством, что формирование кодовых сигналов и их дешифрация производятся с помощью переключающих устройств, способных занимать ряд устойчивых состояний. Количество таких состояний определяется основанием кода. Очевидно, что простейшими переключающими устройствами являются устройства с двумя состояниями. К такого типа устройствам принадлежит большинство электромагнитных, электронных, магнитных, оптических и других типов бесконтактных реле. Кроме того, следует также учитывать простоту хранения информации и выполнения арифметических и логических операций при двоичном кодировании.
Многопозиционные коды пока не нашли широкого применения в информационных системах.
По возможности обнаружения и исправления ошибок различают коды простые (примитивные) и корректирующие. В простых кодах ошибка в приеме хотя бы одного элемента кодовой комбинации приводит к неправильной регистрации передаваемого сообщения. Корректирующие коды позволяют обнаруживать и устранять ошибки в кодовых комбинациях.