...И мир загадочный за занавесом цифр. Цифровая связь — страница 49 из 50

 при четном числе единиц появится 0  Вряд ли стоит пояснять, что наличие на выходной ножке микросхемы единичного импульса является признаком ошибочного решения, принятого регенератором. Остается только подсчитать (с помощью другой микросхемы - двоичного счетчика), сколько раз появлялась единица за все время передачи, - и вероятность ошибки определена!

Разумеется, введение в информацию столь малой избыточности не позволяет обнаружить все ошибки, например замену нулями одновременно двух единиц и т. п., при которых свойство четности не нарушается. Для этих целей нужны коды с большей избыточностью. Мы не станем задерживаться на их описании, а перейдем сразу к еще более удивительному коду, который "умеет" исправлять ошибки.

Речь пойдет о так называемом коде Хэмминга, в котором после каждых четырех информационных битов в линию посылается три контрольных бита. Такая сильная избыточность делает код поистине чудодейственным. Но обо всем по порядку...

Во-первых, как получаются контрольные биты? Пронумеруем подряд от 1 до 7 все разряды (как информационные, так и контрольные) образовавшегося кодового слова. Информационные биты будут иметь при этом номера с 1-го по 4-й, а контрольные - с 5-го по 7-й. Правило получения контрольных битов дано в таблице:



Каждый из них образуется путем сложения "по модулю 2" строго определенных информационных битов.

Пусть нам надлежит передать двоичную последовательность 10110010. Попробуем защитить ее от действия помех, используя код Хэмминга. После первой четверки информационных битов 1011 необходимо вставить контрольные. Пятый, передаваемый в линию бит получаем, суммируя в соответствии с таблицей второй, третий и четвертый информационные биты: 

Таким образом, это будет 0. Шестой бит складывается из суммы первого, третьего и четвертого: . Аналогичным путем найдем значение седьмого бита: . Итак, после символов 1011 передаются символы 010. Точно так же после второй четверки информационных битов 0010 следуют контрольные биты 110. Теперь запишем передаваемые последовательности все вместе: 10110100010110.

Возникают следующие вопросы: как теперь узнать, произошла при передаче кодовой комбинации по линии ошибка или нет? Если произошла, то в каком разряде? Как эту ошибку исправить?

Предположим, что регенератором приемной станции была зафиксирована такая последовательность: 10010100011110. Очевидно, что в первой комбинации ошибочно принят третий бит, а во второй комбинации - четвертый бит. Но это ясно для нас с вами. На приеме подобный вывод должен быть сделан автоматически, по заранее известному правилу:



В соответствии с ним нужно для каждой принятой 7-разрядной кодовой комбинации подсчитывать контрольное число. Это 3-разрядное двоичное число и укажет сразу на номер бита, который был принят ошибочно. Проверим предлагаемое правило на наших "искаженных" комбинациях. Для первой из них сумма "по модулю 2" четвертого - седьмого битов равна 0, сумма второго, третьего, шестого и седьмого битов даст в результате 1, а сумма первого, третьего, пятого и седьмого битов - тоже 1. Итак, контрольное число имеет вид 011. Но ведь это двоичное представление числа 3! Значит, ошибочно принят третий бит. Его значение нужно заменить на противоположное, т. е. 0 заменить на 1. Если мы подсчитаем контрольное число для второй 7-разрядной комбинации, оно будет равно (проверьте самостоятельно!) 100. Это двоичный код числа 4, и, следовательно, ошибка произошла в четвертом символе. Исправить ее легко, заменив символ на противоположный.

А если ошибочно принят не информационный, а один из контрольных битов? Нетрудно убедиться, что будет обнаружена и эта ошибка. В самом деле, для принятой комбинации 1011000 (ошибка в шестом разряде) двоичное число составит 110, что соответствует десятичному числу 6. Надо ли говорить о том, что в системах передачи цифровой информации все операции - образования контрольных битов на передающей станции, вычисления контрольных чисел и исправления соответствующих битов на приемной станции - выполняются устройствами, собранными из микросхем, таких как сумматоры "по модулю 2", счетчики, дешифраторы и т. п.

До сих пор речь шла о двоичном кодировании, т. е. о представлении цифровой информации числами двоичной системы счисления. Но можно применять системы счисления и с другими основаниями. Например, в ИКМ-аппаратуре успешно "работает" троичная система счисления, в которой используются три цифры: -1, 0 и +1. Цифре +1 соответствует импульс положительной полярности, цифре 0, как и ранее, - отсутствие импульса и, наконец, цифра -1 представляется импульсом отрицательной полярности. Поскольку цифровой поток первоначально состоял из чередования двоичных символов 0 и 1, то осуществляют переход от двоичной системы счисления к троичной. В зависимости от правила перехода получают различные коды.

Первый троичный код был изобретен в 1952 г. инженерами американской компании "Bell". Преобразование двоичных чисел в троичные происходило в нем по довольно простому алгоритму: 0 оставался без изменения, а 1 заменялась поочередно то на +1,то на -1. Например, цифровая двоичная последовательность 1100111001 приобретала после преобразования вид: +1 -100 +1 -1 +100 -1. Заметьте, данный алгоритм неудовлетворяет правилам перехода из двоичной системы счисления в троичную. Поэтому такой код называют квазитроичным ("квази" означает: как бы, почти). У него есть еще одно название - код с чередованием полярности импульсов (ЧПИ).

Достоинством кода оказалось то, что наличие в нем избыточности, заложенной не в добавочных символах, как это наблюдалось в двоичных кодах, а в большем основании кода, не требует снижения скорости передачи цифрового потока: какой она была, такой и осталась. В то же время структура кода позволяет обнаруживать ошибки и подсчитывать их вероятность. Действительно, допустим, в троичной последовательности, приведенной выше, был неверно принят четвертый символ: вместо 0 восстановлена 1. Таким образом, на выходе регенератора имеется последовательность +1 -10 +1 +1 -1 +100 -1. Вы обратили внимание, что нарушилось правило чередования полярностей импульсов? Ведь в соответствии с принятым алгоритмом формирования кода в нем не могут следовать подряд два импульса одной полярности. Значит, для определения вероятности ошибок на приемной станции следует подсчитать количество нарушений за время передачи чередования полярностей.

Изобретенный почти 50 лет назад этот простейший троичный код и по сей день является наиболее распространенным в ИКМ-системах передачи. В регенераторах таких систем добавляется еще один компаратор, который принимает решение о наличии или отсутствии отрицательного импульса, сравнивая его с отрицательным же порогом. Впрочем, можно без "переделки" использовать и регенераторы двоичных сигналов, поскольку троичный код очень легко превратить в двоичный с помощью обычного выпрямителя (например, точно такого же, какой стоит в наших телевизорах для получения постоянного тока из переменного осветительной сети). В подобном выпрямителе отрицательные импульсы "переворачиваются" и становятся положительными. Троичный код превращается в двоичный!

Добавим, что описанное преобразование двоичных цифр в троичные не является единственным. Ниже в таблице показано, как 4-разрядные слова двоичного алфавита (т. е. алфавита, состоящего всего из двух символов 0 и 1) можно закодировать 3-разрядными словами на основе алфавита с тремя символами -1, 0 и +1. Заметьте, теперь вместо каждых четырех импульсов нужно передавать в линию только три. Появляется возможность на месте каждого четвертого импульса цифрового потока передать дополнительные символы, т. е. увеличить объем передаваемой информации.



Мы ограничились рассмотрением лишь простейших кодов, обнаруживающих и исправляющих ошибки. Существует множество более сложных кодов, которые могут исправлять в принятой комбинации цифр не одну, а сразу несколько ошибок.

Разработкой таких помехоустойчивых кодов занимается математика. Для многих непосвященных людей теория чисел (мы привыкли называть ее арифметикой) ограничивается простейшими действиями над числами: сложением, вычитанием, умножением и делением. И вероятно, мало кто из читателей слышал о таких ее разделах, как "группы", "кольца", "поля", "пространства" и т. д. Поэтому дальнейшее знакомство с кодами требует серьезной математической подготовки. Но и тех примеров, которые мы привели в этой главе, достаточно, чтобы понять, насколько сложна и многогранна проблема повышения помехоустойчивости систем передачи цифровой информации.

"Битва" с помехами не окончена. В ней участвует большая армия ученых - математиков, физиков, электронщиков, химиков и др. Предпринимаются попытки создать электрические кабели из сверхпроводников, в которых полностью отсутствовали бы тепловые шумы и которые практически не ослабляли бы сигнал. Совершенствуется изоляция проводников, ищутся новые виды изоляционных материалов, способных надежно защитить проводники от влияния внешних помех. Синтезируются новые типы оптических волокон, и на их основе создаются новые оптические кабели - линии связи третьего тысячелетия. Возможно, кто-то из вас, молодых читателей, станет участником этого грандиозного, затянувшегося на века "сражения".

 Заключение

Первый тост наш - за науку

И за юношей - второй!

Пусть горит им светоч знанья

Путеводною звездой!

А.Н. Плещеев


Наши рассказы о цифровой связи подошли к концу. Но это вовсе не означает, что мы ознакомились со всеми ее направлениями и говорить больше не о чем. Напротив, за рамками книги осталась масса интереснейших вопросов. Вот только некоторые из них:

• цифровые сети связи;

• электронная коммутация цифровых потоков;

• цифровая голография и объемное цифровое телевидение;

• цифровая магнитная звукозапись;