logo
Гольдштейн_учебники / Телекоммуникационные системы и сети - КНИГА

5.4. Помехоустойчивое кодирование

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

Со временем люди стали нуждаться в более совершенных фор-мах обмена информацией. Появилась письменность. Она совершенствовалась в течение многих поколений, и на всем этом долгом пути прослеживалось противоборство двух тенденций. Первая из них отражала стремление к более краткой передаче информации (с помощью небольшого количества знаков) и привела в конечном счете к иероглифическому письму. Каждый иероглиф обладает большой информативностью, запись с их помощью занимает не­большое пространство. Но вместе с тем, небольшая ошибка в на­чертании иероглифа приводит к тому, что информация восприни­мается неверно. Так, увеличение информативности знаков повы­шает вероятность ошибочного их понимания. (За все нужно пла­тить!) Вторая тенденция в развитии письменности заключалась в стремлении к безошибочной передаче содержания текста. Резуль­татом явилось создание буквенного, или алфавитного, письма. Эта система письма позволяет в большинстве случаев правильно по­нять текст, даже если в нем пропущено или искажено несколько букв. Такое свойство алфавитного письма называют «избыточно­стью». Конечно, избыточность удлиняет запись (некоторые буквы можно было бы выкинуть из нее без ущерба для содержания), но зато она уменьшает вероятность ошибочного понимания текста при его искажении.

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

Все, что мы говорили о письменности, относится и к другим ви­дам информации. Чем больше ее избыточность, тем более помехо­устойчивой она является. А нельзя ли искусственно ввести избыточ­ность в цифровую информацию, представленную двоичными циф­рами 0 и 1? Можно, но за это придется «платить». Поясним, в чем тут дело. Например, в коде Бодо каждая буква заменяется 5-разрядным двоичным кодом, т.е. пятью битами 0 и 1. Данный код не является избыточным, так как искажение любого бита приводит к декодированию вместо переданной другой буквы, т.е. к ошибке. Сделать код избыточным можно одним путем: добавить дополни­тельные биты к уже имеющимся. Но это приведет к тому, что каждая буква будет теперь передаваться медленнее. Так, введение в ин­формацию избыточности влечет за собой снижение скорости ее пе­редачи. Вот об этой «плате» и шла речь выше. Тем не менее разра­ботчики цифровых систем передачи часто вполне сознательно идут на такой шаг - делают информацию «избыточной» с тем, чтобы об­наружить ошибки в принятых комбинациях двоичных символов, а если возможно, то и исправить их.

На приемной станции цифровой системы передачи можно подсчи­тать число ошибочных решений, принятых регенератором, не зная даже, какой конкретный бит принят неверно. Покажем на примере ко­да Бодо, как это делается. Предположим, что передаются две комби­нации цифр: 10101 и 01100. В них все биты являются «нужными», избыточности в этой информации нет. Введем ее искусственно: к ин-мационным битам добавим шестой- контрольный, но сделаем это так, чтобы сумма единиц в передаваемой комбинации была чет-ной Для первой комбинации цифр контрольный бит нужно выбрать равным 1, а для второй - 0. Итак, в линию поступают уже не 5-, а 6-разрядные группы битов: 10101,1 и 01100,0 (запятую мы ввели

условно, чтобы чисто зрительно отделить контрольный бит от информационных). Если теперь помеха исказит сигнал и какой-то бит будет принят неверно, т.е. вместо 1 регенератор выдаст 0 или, наоборот, вместо будет зарегистрирована 1, то независимо от разряда кодо-вой комбинации, в котором это произошло, сумма единиц уже будет четной. Таким образом, наличие ошибки будет зафиксировано. Дей-ствительно, легко обнаруживается, что комбинация вида 00101,1 не могла быть передана, поскольку сумма единиц в ней нечетная. Точно так же ошибочными являются комбинации: 10101,0 и 01101,0.

А кто подсчитает сумму единиц в принятой комбинации двоичных цифр? Одно из правил двоичной арифметики - суммирование «по модулю 2». Вот эти действия:

Знак «плюс в кружочке» отличает их от обычного двоичного суммиро­вания. Существует и микросхема, которая выполняет указанные действия.

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

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

Таблица 5.1. Правило формирования контрольных битов

Номер контрольного бита

Номера битов, которые нужно сложить «по модулю 2»

5

2

3

4

6

1

3

4

7

1

2

4

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

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

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

Предположим, что регенератором приемной станции была зафик­сирована такая последовательность: 1001, 010, 0011, 110. Очевидно, что в первой комбинации ошибочно принят третий бит, а во второй комбинации - четвертый. Но это ясно для нас с вами. На приеме по­добный вывод должен быть сделан автоматически, по заранее из­вестному правилу. Такое правило приведено в табл. 5.2. В соответст­вии с ним нужно для каждой принятой 7-разрядной кодовой комбина­ции подсчитывать контрольное число. Это 3-разрядное двоичное чис­ло и указывает сразу на номер бита, который был принят ошибочно. Проверим предлагаемое правило на наших «искаженных» комбина­циях. Для первой из них сумма «по модулю 2» 4 - 7-го битов равна О, сумма 2-го, 3-го, 6-го и 7-го битов даст в результате 1, а сумма 1-го, 3-го, 5-го и 7-го битов - тоже 1. Итак, контрольное число имеет вид 011. Но ведь это двоичное представление числа 3! Значит, ошибочно при­нят третий бит. Его значение нужно заменить на противоположное, т.е. О заменить на 1. Если мы подсчитаем контрольное число для вто­рой 7-разрядной комбинации, оно будет равно (проверьте самостоя­тельно) 100. Это двоичный код числа 4, и, следовательно, ошибка произошла в четвертом символе. Исправить ее легко, заменив сим­вол на противоположный.

Таблица 5.2. Правило проверки контрольных битов

i |>|дм контрольного дво­ичного числа

Номера битов, которые нужно сложить «по модулю 2»

1

4

5

6

7

2

2

3

6

7

3

1

3

5

7

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

В самом деле, для принятой комбинации 1011,000 (ошибка в шестом разряде) двоичное число составит 110, что соответствует десятичному числу 6.

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

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

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

Таблица 5.3. Кодирование сигналов троичным кодом

Двоичный код

Троичный код

Двоичный код

Троичный код

0000

0

-1

+1

1000

0

+1

-1

0001

-1

+1

0

1001

+1

-1

0

0010

-1

0

+1

1010

-1

0

-1

0011

+1

-1

+1

1011

+1

0

0

0100

0

+1

+1

1100

+1

0

+1

0101

0

-1

0

1101

-1

-1

0

0110

0

0

+1

1110

+1

+1

-1

0111

-1

+1

+1

1111

-1

-1

-1

Значит, для определения вероятности ошибок на приемной станции следует подсчитать количество нарушений за вре­мя передачи чередования полярностей.

Этот простейший троичный код, изобретенный почти 40 лет назад, и по сей день является наиболее распространенным в ИКМ-системах передачи. В регенераторах таких систем добавляется еще один компа ратор, который принимает решение о наличии или отсутствии отрица­тельного импульса, сравнивая его с отрицательным порогом. Впрочем, можно без «переделки» использовать и регенераторы двоичных сигна­лов, поскольку троичный код очень легко превратить в двоичный с по­мощью обычного выпрямителя. В подобном выпрямителе отрицатель­ные импульсы «переворачиваются» и становятся положительными.

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

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

Контрольные вопросы

1. С какой целью осуществляется мультиплексирование цифровых потоков в системах передачи?

2. В чем заключается принцип чередования битов при объединении цифро­вых потоков?

3. В чем заключается принцип чередования кодовых комбинаций при объе­динении цифровых потоков?

4. Зачем применяются тактовая и цикловая синхронизации в цифровых сис-темax передачи?

5. По какому принципу осуществляется регенерация цифрового сигнала? 6. Зачем используется помехоустойчивое кодирование?

Список литературы

1. Крук Б.И., Попов Г.Н. ... И мир загадочный под занавесом цифр: Цифровая связь. -

2-е изд., испр. - Новосибирск: ЦЭРИС, 2001. - 264 с.

2. Системы электросвязи: Учеб. для вузов / Г.П. Катунин, Б.И. Крук, В.П. Шувалов

и др.; Под ред. В.П. Шувалова. - М.: Радио и связь, 1987. - 512 с.

3. Левин Л.С., Плоткин М.А. Цифровые системы передачи информации. - М.: Радио и Связь, 1982. -216с.

4. Аппаратура ИКМ-30 / Под ред. Ю.П. Иванова, Л.С. Левина. - М.: Радио и связь, 1983 -184с.