Самосинхронизирующиеся коды




 

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

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

Большинство технологий локальных сетей используют именно самосинхронизирующие коды: в Ethernet применяется манчестерский код, в Token Ring – вариант дифференциального манчестерского кода


КОНТРОЛЬ ПЕРЕДАЧИ ИНФОРМАЦИИ И СЖАТИЕ ДАННЫХ

 

Самовосстанавливающиеся коды

 

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

Пусть используется n-разрядный двоичный код. Ошибка при приеме кодовой комбинации состоит в том, что (под влиянием помехи) либо переданный нуль был принят, как единица, либо единица была принята, как нуль. Если в кодовой комбинации ошибка присутствует только в одном разряде, то такую ошибку будем называть одиночной, если в двух разрядах – двойной и т.д.

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

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

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

 

Систематические коды

 

Другой подход к построению кодов – разделение разрядов кода на информационные и контрольные. Такие коды называются систематическими. Пусть всего в коде n разрядов, из них k – информационных и r – контрольных разрядов (n=k+r). Такой код может передавать N = 2k различных сообщений. Из r контрольных разрядов можно организовать 2r различных комбинаций. Для обнаружения и исправления одиночной ошибки нужно, во-первых, указать наличие/отсутствие ошибки и, во-вторых, указать номер разряда, в котором произошла ошибка.

Таким образом, чтобы в контрольных разрядах можно было передавать информацию для исправления одиночных ошибок, их количество должно удовлетворять неравенству 2r≥n+1 или 2n/(n+1) ≥N. Если достигается равенство: 2n/(n+1) = N, то количество контрольных разрядов, приходящихся на один информационный, будет наименьшим. Например, для N=4 различных сообщений (k=2) наименьшее значение n равно пяти (24/(4+1) = 3,2 < 4, а 25/6 ≈ 5,3 > 4). Значит, количество контрольных разрядов, необходимое для обнаружения и исправления одиночных ошибок r = n-k = 5-2 = 3.

 

Алгоритмы сжатия данных

 

В общем смысле под сжатием данных понимают такое их преобразование, что его результат занимает меньший объем памяти. При этом (по сравнению с исходным представлением) экономится память для их хранения и сокращается время передачи сжатых данных по каналам связи. Синонимы термина “сжатие” – упаковка, компрессия, архивация. Обратный процесс (получение исходных данных по сжатым) называется распаковкой, декомпрессией, восстановлением.

Качество сжатия характеризуется коэффициентом сжатия, равным отношению объема сжатых данных к объему исходных данных.

В зависимости от возможной точности восстановления исходных данных, различаю сжатие без потерь (данные восстанавливаются точно в исходном виде) и сжатие с потерями (восстановленные данные не идентичны исходным, но их различиями в том контексте, в котором эти данные используются, можно пренебречь). Сжатие с потерями применяется, например, для упаковки многоцветных фотографических изображений (алгоритм JPEG), звука (алгоритм MP3), видео (группа алгоритмов MPEG). При этом используются особенности человеческого восприятия: например, глаз человека не может различить два близких оттенка цвета, закодированных 24 битами, поэтому можно без видимых искажений уменьшить разрядность представления цвета.

Для многих разновидностей данных – текстов, исполняемых файлов и т.д. – допустимо применение только алгоритмов сжатия без потерь.

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

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

 

Алгоритм RLE

 

Самый простой из словарных методов – RLE (Run Length Encoding, кодирование переменной длины) умеет сжимать данные, в которых есть последовательности повторяющихся байтов. Упакованные RLE данные состоят из управляющих байтов, за которыми следуют байты данных. Если старший бит управляющего байта равен 0, то следующие байты (в количестве, записанном в семи младших битах управляющего байта) при упаковке не изменялись. Если старший бит равен 1, то следующий байт нужно повторить столько раз, какое число записано в остальных разрядах управляющего байта.

Например, исходная последовательность

00000000 00000000 00000000 00000000 11001100 10111111 10111011

будет закодирована в следующем виде (выделены управляющие байты):

10000100 00000000 00000011 11001100 10111111 10111011.

А, например, данные, состоящие из сорока нулевых байтов, будут закодированы всего двумя байтами: 1010 1000 00000000.

 

Алгоритм Лемпела-Зива

 

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

Словом в этом алгоритме называется последовательность символов (не обязательно совпадающая со словом естественного языка). Слова хранятся в словаре, а их вхождения в исходные данные заменяются адресами (номерами) слов в словаре. Некоторые разновидности алгоритма хранят отдельно словарь и отдельно упакованные данные в виде последовательности номеров слов. Другие считают словарем весь уже накопленный результат сжатия. Например, сжатый файл может состоять из записей вида [a,l,t], где a – адрес (номер позиции), с которой начинается такая же строка длины l, что и текущая строка. Если a>0, то запись считается ссылкой на словарь и поле t (текст) в ней – пустое. Если a = 0, то в поле t записаны l символов, которые до сих пор в такой последовательности не встречались.

Алгоритм сжатия заключается в постоянном поиске в уже упакованной части данных максимальной последовательности символов, совпадающей с последовательностью, начинающейся с текущей позиции. Если такая последовательность (длины > 3) найдена, в результат записывается ее адрес и длина. Иначе в результат записывается 0, длина последовательности и сама (несжатая) последовательность.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: