Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

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

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

Что делать? Оформлять эти биты и байты так, чтобы повысить гарантию качества их доставки. О помехоустойчивых способах кодирования пишут много, сложно, с обилием формул, диаграмм и терминов. Мы же рассмотрим суть максимально доходчиво.

Суть вкратце

Цифровой приёмник видит импульсы с определёнными параметрами и считает их теми самыми нулями и единицами, которые являются битами. Из-за помехи параметры стали неправильными — и сигналы уже не идентифицируются как биты, попросту выпадают из поля зрения.

Значит, приёмнику нужно каким-нибудь образом указать, мол, вот тут должны были быть нолики, а тут — единички, но они пропали из-за несовершенства окружающего мира. То есть, вдобавок к информационным данным (музыка, видео, тексты, любые файлы) необходимо отправлять и служебные (корректирующие, контрольные).

В общем, помехоустойчивое кодирование называется избыточным именно из-за этих дополнительных сведений.

Свёрточное кодирование

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

Для этого кратковременно держит в памяти крошечный кусочек только что поступившего и сравнивает его с тем, который прибывает в текущий момент.

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

При небольшом количестве потерь восстанавливать недостающее не так уж трудно, потому что корректирующих символов предостаточно. Ну а если помехи повлияли на качество передачи очень сильно, то поможет разве что ясновидение, всеведение и прочая телепатия.

Отличительной особенностью такого метода является передача нулей и единиц непрерывной цифровой рекой, без какого-либо разделения на условные сегменты.

Блочное кодирование

А вот тут разделение присутствует. Данные разбиваются на блоки, к которым добавляется актуальная для них (и только для них) служебная информация. Приёмник проверяет целостность не пары мгновений непрерывного потока, а чётко обозначенных частей, более менее значительных по своему объёму (уж точно не крошечных).

Для описания метода также существуют термины «разделение на кадры» и «контрольная сумма» (подразумевается, говоря упрощённо, сумма значений бит в «кадре».)

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

Поэтому в начале сегмента вставляется так называемый флаг-байт. К примеру, каждый блок начинается с «01111110» и никак иначе.

Во-вторых, что-то надо делать с теми блоками, которые прибыли в испорченном виде (контрольные суммы не совпали), иначе какая же это защита от помех.

Варианты действий:

  1. Попытаться применить интерполяцию — с помощью избыточных сведений вычислить те биты, которые должны были прийти, но потерялись из-за помех.
  2. Запросить блок заново. В смысле, использовать обратную связь с передающей стороной, сообщить, мол, вот этот сегмент является некачественным, будьте любезны отправить мне его заново.

Если в непрерывном потоке (при свёрточном кодировании) вычисление пропущенного методом интерполяции не очень сложное, ведь избыточность там довольно высокая, то сегменты могут быть разными, большими и маленькими. Не пришла аж половина громадного блока — тут уж интерполяция бессильна. Особенно если помехи исказили не только информационную часть, но ещё и контрольную сумму.

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

Комбинированные способы

Почему бы не объединить достоинства разных методов, подумали инженеры. И объединили. К примеру, в цифровом телевещании.

Телепередатчик отправляет в эфир данные в формате MPEG2. Формально они разделяются на пакеты (в смысле, на сегменты) по 204 байта в каждом. То есть, кодирование блочное.

Однако в каждом таком блоке присутствует 16 проверочных байт, вставленных туда точно так же, как это делается при свёрточном кодировании. Потому что проверку целостности и интерполяционную коррекцию надо осуществлять силами самого приёмника, ведь повторно запрашивать у телепередатчика сломанные пакеты невозможно, обратной связи нет.

В итоге изображение на экране не распадается на квадратики, не «замерзает», а звук в динамиках не прерывается даже при наличии изрядных потерь.

Подводим итоги

Итак, помехоустойчивое кодирование по определению подразумевает наличие в сигнале избыточных сведений, помогающих:

  1. обнаружить ошибки;
  2. осуществить коррекцию таковых.

Поведение принимающей стороны сводится либо к «исправлю всё сам!», либо «поменяйте бракованный пакет на годный!», в зависимости от особенностей системы.

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

Автор: vanilinkin, специально для xBB.uz, 02.01.2013


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2013-01-02 22:37:33

Метки материала: кодирование, помехоустойчивое кодирование, информационные технологии, ит, it, связь, икт, информационно-коммуникационные технологии, цифровые технологии, коммуникационные технологии, передача данных, помехи, помехоустойчивость, электронные технологии

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.