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