Анализ методов повышения помехоустойчивости систем передачи информации
2.1. Помехоустойчивое кодирование
Для повышения достоверности и качества работы систем связи применяются групповые методы защиты от ошибок, избыточное кодирование и системы с обратной связью. На практике часто используют комбинированное сочетание этих способов. К групповым методам защиты от ошибок можно отнести давно уже используемый в телеграфии способ, известный как принцип Вердана: вся информация (или отдельные кодовые комбинации) передается несколько раз, обычно не четное число раз (минимум три раза). Принимаемая информация запоминается специальным устройством и сравнивается. Суждение о правильности передачи выносится по совпадению большинства из принятой информации методами "два из трех", "три из пяти" и так далее. Например кодовая комбинация 01101 при трехразовой передаче была частично искажена помехами, поэтому приемник принял следующие комбинации: 10101, 01110, 01001. В результате проверки каждой позиции отдельно правильной считается комбинация 01101. Другой метод, также не требующий перекодирования информации, предполагает передачу информации блоками, состоящими из нескольких кодовых комбинаций. В конце каждого блока посылается информация, содержащая количественные характеристики переданного блока, например число единиц или нулей в блоке. На приемном конце эти характеристики вновь подсчитываются, сравниваются с переданными по каналу связи, и если они совпадают, то блок считается принятым правильно. При несовпадении количественных характеристик на передающую сторону посылается сигнал ошибки.
Среди методов защиты от ошибок наибольшее распространение получило помехоустойчивое кодирование, позволяющее получить более высокие качественные показатели работы систем связи. Его основное назначение - принятие всех возможных мер для того, чтобы вероятность искажений информации была достаточно малой, несмотря на присутствие помех или сбоев в работе сети.
Помехоустойчивое кодирование предполагает разработку корректирующих (помехоустойчивых) кодов, обнаруживающих и исправляющих определенного рода ошибки, а также построение и реализацию кодирующих и декодирующих устройств. Специалистами доказано, что при использовании помехоустойчивого кодирования вероятность неверной передачи во много раз снижается. Так, например, с помощью кода M из N, используемого фирмой IBM в вычислительных сетях, можно обнаружить в блоке, насчитывающем около тридцати двух тысяч символов, все ошибки, кратные трем или меньше, или пачки ошибок длиной до шестнадцати символов.
При передаче информации в зависимости от системы счисления коды могут быть двухпозиционными и многопозиционными. По степени помехозащищенности двухпозиционные коды делятся на обыкновенные и помехоустойчивые.
Двухпозиционные обыкновенные коды используют для передачи данных все возможные элементы кодовых комбинаций и бывают равномерными, когда длина всех кодовых комбинаций одинакова, например пятиэлементный телеграфный код, и неравномерными, когда кодовые комбинации состоят из разного числа элементов, например код Морзе. В этом коде точке соответствует одна единица, тире - три единицы. Для отделения точек и тире друг от друга записывается ноль, а для завершения комбинации - три нуля. Так, буква А, состоящая из точки и тире, представляется как 10111000, а буква Б (тире и три точки) - как 111010101000.
В помехоустойчивых кодах, кроме информационных элементов, всегда содержится один или несколько дополнительных элементов, являющихся проверочными и служащих для достижения более высокого качества передачи данных. Наличие в кодах избыточной информации позволяет обнаруживать и исправлять (или только обнаруживать) ошибки.
Основными среди многочисленных характеристик корректирующих кодов являются значность, корректирующая способность, избыточность и оптимальность кода, коэффициент обнаружения и исправления ошибки, простота технической реализации метода и другие. Так, значность кода, или длина кодовой комбинации, включает как информационные элементы m, так и проверочные (контрольные) k. Как правило, значность кода n равна m+k. Оптимальность кода указывает на полноту использования его корректирующих возможностей.
Выбор корректирующих кодов в определенной степени зависит от требований, предъявляемых к достоверности передачи. Для правильного его выбора необходимо иметь статистические данные о закономерностях возникновения ошибок, их характере, численности и распределении во времени. Так, например, корректирующий код, исправляющий одиночные ошибки, может быть эффективен лишь при условии, что ошибки статистически независимы, а вероятность их появления не превышает некоторой величины. Этот код оказывается совершенно не пригодным, если ошибки появляются группами (пачками). Рекуррентные коды, исправляющие групповые ошибки, также могут оказаться неэффективными, если количество ошибок при передаче будет больше допустимой нормы.
Разработанные различные корректирующие коды подразделяются на непрерывные и блочные. В непрерывных, или рекуррентных, кодах контрольные элементы располагаются между информационными. В блочных кодах информация кодируется, передается и декодируется отдельными группами (блоками) равной длины.
Блочные коды бывают разделимые (все информационные и контрольные элементы размещаются на строго определенных позициях) и неразделимые (элементы кодовой комбинации не имеют четкого деления на избыточные и информационные). К неразделимым относится код с постоянным числом нулей и единиц. Разделимые коды состоят из систематических и несистематических. В систематических кодах проверочные символы образуются с помощью различных линейных комбинаций. Систематические коды - самая обширная и наиболее применяемая группа корректирующих кодов. Они включают такие коды, как код Хэмминга, циклические коды, коды Боуза-Чоудхури и другие.
Часто используемым на практике (и сравнительно простым) методом является контроль на четность. Его суть заключается в том, что каждой кодовой комбинации добавляется один разряд, в который записывается единица, если число единиц в кодовой комбинации нечетное, или ноль, если четное. При декодировании подсчитывается количество единиц в кодовой комбинации. Если оно оказывается четным, то поступившая информация считается правильной, если нет, то ошибочной.
Кроме проверки по горизонтали контроль на четность и нечетность может проводиться и по вертикали.
Преимущества контроля на четность заключается в минимальном значении коэффициента избыточности (для пятиэлементного кода К =0,17) и в простоте его технической реализации, а недостаток - в том, что обнаруживаются ошибки, имеющие только нечетную кратность.
Однако такая методика проверки не может обнаружить ошибки в случае двойного переброса например, две единицы перебросились в ноль), что может привести к высокому уровню ошибок в некоторых передачах. Многоуровневая модуляция (когда проверка проверка сигнала осуществляется по двум или трем битам) требует более сложной техники.
Проверка на четность/нечетность по одному биту также является неприемлемой и для многих аналоговых линий речевого диапазона из-за группирования ошибок, которое обычно происходит в линиях связи такого типа.
Двойная проверка на четность/нечетность является усовершенствованием одинарной проверки. В этой методике вместо бита четности в каждом символе определяется четность или нечетность целого блока символов. Проверка блока позволяет обнаруживать ошибки как внутри символа, так и между символами. Эта проверка называется также двумерным кодом проверки на четность. Она имеет начительное преимущество по сравнению с одинарной. С помощью такой перекрестной проверки может быть существенно улучшена надежность работы обычной телефонной лини, вероятность появления ошибки в которой составляет 10 . Однако как ординарная, так и двойная проверка на четность означают увеличение накладных расходов и относительное уменьшение выхода информации для пользователя.
К систематическим кодам также относится и код Хэмминга, который позволяет не только обнаруживать, но и исправлять ошибки. В этом коде каждая кодовая комбинация состоит из m информационных а k контрольных элементов. Так, например, в семиэлементном коде Хэмминга n=7, m=4, k=3 (для всех остальных элементов существует специальная таблица). Контрольные символы 0 или 1 записываются в первый, второй и четвертый элементы кодовой комбинации, причем в первый элемент - в соответствии с контролем на четность для третьего, пятого и седьмого элементов, во второй - для третьего, шестого и седьмого элементов, и в четвертый - для пятого - седьмого элементов. В соответствии с этим правилом комбинация 1001 будет представляться в коде Хэмминга как 0011001, и в этом виде она будет представляться в канал связи. При декодировании в начале проверяются на четность первый, третий, пятый и седьмой элементы, результат проверки записывается в первый элемент контрольного числа. Далее контролируется четвертый - седьмой элементы - результат проставляется в младшем элементе контрольного числа. При правильно выполненной передаче контрольное число состоит из одних нулей, а при неправильной - из комбинаций нулей и единиц, соответствующей при чтении ее справа налево номеру элемента, содержащего ошибку. Для устранения этой ошибки необходимо изменить находящийся в этом элементе символ на обратный.
Код Хэмминга имеет существенный недостаток: при обнаружении любого числа ошибок он исправляет лишь одиночные ошибки. Избыточность семиэлементного кода Хэмминга равна 0,43. При увеличении значности кодовых комбинаций увеличивается число проверок, но уменьшается избыточность кода. К тому же код Хэмминга не позволяет обнаружить групповые ошибки, концентрированные в пакетах. Длина пакета ошибок представляет собой увеличенную на единицу разность между именами старшего и младшего ошибочных элементов. Распространенным кодом, но не относящимся к группе неразделенных, является код с постоянным числом нулей или единиц или код M из N. Так, семиэлементный код имеет соотношение единиц и нулей, равное 3:4. Кодирование и декодирование выполняются заменой одной кодовой группой другой. Например, комбинация 01110 посылается в канал связи в виде 0101010. На приемном конце она вновь декодируется в 01110.
В вычислительных системах корректирующие коды в основном используются для обнаружения ошибок, исправление которых осуществляется путем повторной передачи искаженной информации. С этой целью почти все сети используют системы передачи с обратной связью. Кроме того, наличие между абонентами двусторонней связи облегчает применение таких систем.