Разработка лабораторного макета кодека, использующего алгоритмы Хэмминга и Адамара

История кодирования. Передача информации: принципы, определения, особенности. Методы цифрового физического кодирования. Обнаружение и исправление ошибок в канале с шумом. Алгоритмы Хэмминга и Адамара. Кодирование и декодирование линейных блочных кодов.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 29.08.2012
Размер файла 3,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Рис. 1. 8. Кодирование AMI

HDB3 - High Density Bipolar 3 (биполярное кодирование с высокой плотностью)

Представление битов в методе HDB3 лишь незначительно отличается от представления, используемого алгоритмом AMI.

При наличии в потоке данных 4 последовательных битов 0 последовательность изменяется на 000V, где полярность бита V такая же, как для предшествующего ненулевого импульса (в отличие от кодирования битов 1, для которых знак сигнала V изменяется поочередно для каждой единицы в потоке данных).

Рис. 1. 9. Кодирование HDB3

Этот алгоритм снимает ограничения на плотность 0, присущие кодированию AMI, но порождает взамен новую проблему - в линии появляется отличный от нуля уровень постоянного напряжения за счет того, что полярность отличных от нуля импульсов совпадает. Для решения этой проблемы полярность бита V изменяется по сравнению с полярностью предшествующего бита V. Когда это происходит, битовый поток изменяется на B00V, где полярность бита B совпадает с полярностью бита V. Когда приемник получает бит B, он думает, что этот сигнал соответствует значению 1, но после получения бита V (с такой же полярностью) приемник может корректно трактовать биты B и V как 0.

Метод HDB3 удовлетворяет всем требованиям, предъявляемым к алгоритмам цифрового кодирования, но при использовании этого метода могут возникать некоторые проблемы.

PE - Phase Encode (Manchester, фазовое кодирование, манчестерское кодирование)

При фазовом кодировании используется следующее представление битов: биты 0 представляются напряжением +V в первой половине бита и напряжением -V - во второй половине; биты 1 представляются напряжением -V в первой половине бита и напряжением +V - во второй половине.

Этот алгоритм удовлетворяет всем предъявляемым требованиям, но передаваемый в линию сигнал имеет широкую полосу и является поляризованным.

Рис. 1. 10. Кодирование РЕ

CDP - Conditional Diphase

Этот метод является комбинацией алгоритмов NRZI и PE и использует следующие представления битов цифрового потока: биты 0 представляются переходом напряжения в том же направлении, что и для предшествующего бита (от +V к -V или от -V к +V); биты 1 представляются переходом напряжения в направлении, противоположном предшествующему биту (от +V к -V или от -V к +V).

Этот алгоритм обеспечивает неполярный сигнал, который занимает достаточно широкую полосу.

Рис. 1. 11. Кодирование CDP

1.5 Обзор существующих принципов построения кодеков и систем логического кодирования

Кодек (англ. codec, от coder/decoder -- кодировщик/декодировщик) - это устройство или программа, способная выполнять преобразование данных или сигнала. Кодеки могут как кодировать поток/сигнал (часто для передачи, хранения или шифрования), так и раскодировать -- для просмотра или изменения в формате, более подходящем для этих операций. Кодеки часто используются при цифровой обработке видео и звука Сергиенко А.Б. Цифровая обработка сигналов. Учебник для ВУЗов. СПб.: Питер, 2002. - С. 145..

Большинство кодеков для звуковых и визуальных данных используют сжатие с потерями, чтобы получать приемлемый размер готового (сжатого) файла. Существуют также кодеки, сжимающие без потерь (англ. lossless codecs). Но для большинства применений выгоднее кодеки с потерями информации, так как малозаметное ухудшение качества оправдывается значительным уменьшением объема данных. Почти единственное исключение - ситуация, когда данные будут подвергаться дальнейшей обработке: в этом случае повторяющиеся потери на кодировании/декодировании окажут серьезное влияние на качество.

Логическое кодирование подразумевает замену бит исходной информации новой последовательностью бит, несущей ту же информацию, но обладающей, кроме этого, дополнительными свойствами, например возможностью для приемной стороны обнаруживать ошибки в принятых данных Хемминг Р.В. Теория информации и теория кодирования. - М.: Радио и связь, 1983. - С. 69 - 91..

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

Разделяют два метода логического кодирования:

- избыточные коды

- скрэмблирование.

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

Избыточные коды

Избыточные коды основаны на разбиении исходной последовательности бит на порции, которые часто называют символами. Затем каждый исходный символ заменяется на новый, который имеет большее количество бит, чем исходный.

Явный пример избыточного кода - логический код 4В/5В.

Логический код 4В/5В заменяет исходные символы длиной в 4 бита на символы длиной в 5 бит.

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

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

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

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

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

Для служебных сигналов отведены девять символов, семь символов - исключены. Исключены комбинации, имеющие более трех нулей (01 - 00001, 02 - 00010, 03 - 00011, 08 - 01000, 16 - 10000). Такие сигналы интерпретируются символом V и командой приемника VIOLATION - сбой. Команда означает наличие ошибки из-за высокого уровня помех или сбоя передатчика. Единственная комбинация из пяти нулей (00 - 00000) относится к служебным сигналам, означает символ Q и имеет статус QUIET - отсутствие сигнала в линии.

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

Цена за эти достоинства при таком способе кодирования данных - снижение скорости передачи полезной информации. К примеру, В результате добавления одного избыточного бита на четыре информационных, эффективность использования полосы частот в протоколах с кодом MLT-3 и кодированием данных 4B5B уменьшается соответственно на 25%.

Схема кодирования 4В/5В представлена ниже.

Двоичный код 4В Результирующий код 5В

0000 11110

0001 01001

0010 10100

0011 10101

0100 01010

0101 01011

0110 01110

0111 01111

1000 10010

1001 10011

1010 10110

1011 10111

1100 11010

1101 11011

1110 11100

1111 11101

Итак, соответственно этой таблице формируется код 4В/5В, затем передается по линии с помощью физического кодирования по одному из методов потенциального кодирования, чувствительному только к длинным последовательностям нулей - например, в помощью цифрового кода NRZI.

Символы кода 4В/5В длиной 5 бит гарантируют, что при любом их сочетании на линии не могут встретиться более трех нулей подряд.

Буква В в названии кода означает, что элементарный сигнал имеет 2 состояния - от английского binary - двоичный. Имеются также коды и с тремя состояниями сигнала, например, в коде 8В/6Т для кодирования 8 бит исходной информации используется код из 6 сигналов, каждый из которых имеет три состояния. Избыточность кода 8В/6Т выше, чем кода 4В/5В, так как на 256 исходных кодов приходится 36=729 результирующих символов.

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

Единственное требование - для обеспечения заданной пропускной способности линии передатчик, использующий избыточный код, должен работать с повышенной тактовой частотой. Так, для передачи кодов 4В/5В со скоростью 100 Мб/с передатчик должен работать с тактовой частотой 125 МГц. При этом спектр сигнала на линии расширяется по сравнению со случаем, когда по линии передается чистый, не избыточный код. Тем не менее, спектр избыточного потенциального кода оказывается уже спектра манчестерского кода, что оправдывает дополнительный этап логического кодирования, а также работу приемника и передатчика на повышенной тактовой частоте.

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

Например, для передачи данных по линии с пропускной способностью 100М бит/с и полосой пропускания 100 МГц, кодом NRZI необходимы частоты 25 - 50 МГц, это без кодирования 4В/5В. А если применить для NRZI еще и кодирование 4В/5В, то теперь полоса частот расширится от 31,25 до 62,5 МГц. Но тем не менее, этот диапазон еще "влазит" в полосу пропускания линии. А для манчестерского кода без применения всякого дополнительного кодирования необходимы частоты от 50 до 100 МГц, и это частоты основного сигнала, но они уже не будут пропускаться линией на 100 МГц Васин В.А. и др. Радиосистемы передачи информации. Учебное пособие для ВУЗов. - Горячая линия - Телеком, 2005. - С. 212 - 214..

Скрэмблирование

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

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

Суть скремблирования заключается просто в побитном изменении проходящего через систему потока данных. Практически единственной операцией, используемой в скремблерах является XOR - "побитное исключающее ИЛИ", или еще говорят - сложение по модулю 2. При сложении двух единиц исключающим ИЛИ отбрасывается старшая единица и результат записывается - 0.

Метод скрэмблирования очень прост. Сначала придумывают скрэмблер. Другими словами, придумывают, по какому соотношению перемешивать биты в исходной последовательности с помощью "исключающего ИЛИ".

Затем согласно этому соотношению из текущей последовательности бит выбираются значения определенных разрядов и складываются по XOR между собой. При этом все разряды сдвигаются на 1 бит, а только что полученное значение ("0" или "1") помещается в освободившийся самый младший разряд.

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

Рассмотрим один из примеров скрэмблирования. Например, скрэмблер может реализовывать следующее соотношение:

где Bi - двоичная цифра результирующего кода, полученная на i-м такте работы скрэмблера, Ai - двоичная цифра исходного кода, поступающая на i-м такте на вход скрэмблера, Bi-з и Bi-5 - двоичные цифры результирующего кода, полученные на предыдущих тактах работы скрэмблера, соответственно на 3 и на 5 тактов ранее текущего такта.

Члены выражения объединены знаком - операция исключающего ИЛИ (сложение по модулю 2). Теперь определим закодированную последовательность, например, для такой исходной последовательности 110110000001. Скрэмблер, определенный выше, даст следующий результирующий код:

B1 = А1 = 1 (первые три цифры результирующего кода будут совпадать с исходным, так как еще нет нужных предыдущих цифр);

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

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

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

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

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

На практике для этих целей обычно применяется комбинация двух методов:

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

б) использование высокоточных генераторов временных импульсов, что позволяет в моменты потери синхронизации производить декодирование принимаемых битов информации "по памяти" без синхронизации Теория электрической связи: Учебник для ВУЗов /Зюко А.Г., Кловский Д.Д. и др. - М.: Радио и связь, 1999. - С. 287..

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

Для улучшения кода Bipolar AMI используются два метода, основанные на искусственном искажении последовательности нулей запрещенными символами.

Рис. 1. 12. Использование метода B8ZS (Bipolar with 8-Zeros Substitution) и метода HDB3 (High-Density Bipolar 3-Zeros) для корректировки кода AMI

Исходный код состоит из двух длинных последовательностей нулей: в первом случае - из 8, а во втором - из 5.

Код B8ZS исправляет только последовательности, состоящие из 8 нулей. Для этого он после первых трех нулей вместо оставшихся пяти нулей вставляет пять цифр: V-1*-0-V-1*.

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

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

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

Код HDB3 исправляет любые четыре подряд идущих нуля в исходной последовательности.

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

Кроме того, для замены используются два образца четырехтактовых кодов. Если перед заменой исходный код содержал нечетное число единиц, то используется последовательность 000V, а если число единиц было четным - последовательность 1*00V.

Улучшенные потенциальные коды обладают достаточно узкой полосой пропускания для любых последовательностей единиц и нулей, которые встречаются в передаваемых данных. В результате коды, полученные из потенциального путем логического кодирования, обладают более узким спектром, чем манчестерский, даже при повышенной тактовой частоте. Этим объясняется применение потенциальных избыточных и скрэмблированных кодов в современных технологиях вместо манчестерского и биполярного импульсного кодирования Зюко А.Г. и др. Теория передачи сигналов. - М.: Радио и связь, 1986. - С. 212 - 215..

2. Обнаружение и исправление ошибок в канале с шумом. Коды Хэмминга. Коды Адамара

2.1 Математические основы обнаружения и исправления ошибок

Обнаружение ошибок в технике связи - действие, направленное на контроль целостности данных при записи/воспроизведении информации или при её передаче по линиям связи. Исправление ошибок (коррекция ошибок) - процедура восстановления информации после чтения её из устройства хранения или канала связи.

Для обнаружения ошибок используют коды обнаружения ошибок, для исправления - корректирующие коды (коды, исправляющие ошибки, или помехоустойчивые коды) Питерсон У., Уэлдон Э. Коды, исправляющие ошибки. - М.: Мир, 1976..

Способы борьбы с ошибками

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

В системах связи возможны несколько стратегий борьбы с ошибками:

- обнаружение ошибок в блоках данных и автоматический запрос повторной передачи повреждённых блоков -- этот подход применяется в основном на канальном и транспортном уровнях;

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

- исправление ошибок (forward error correction) применяется на физическом уровне.

Коды обнаружения и исправления ошибок

Корректирующие коды -- коды, служащие для обнаружения или исправления ошибок, возникающих при передаче информации под влиянием помех, а также при её хранении.

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

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

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

По способу работы с данными коды, исправляющие ошибки делятся на блоковые, делящие информацию на фрагменты постоянной длины и обрабатывающие каждый из них в отдельности, и свёрточные, работающие с данными как с непрерывным потоком Мак-Вильямс Ф., Слоэн Н. Дж. Теория кодов, исправляющих ошибки. - М.: Связь, 1979. - С. 8 - 43..

Блоковые коды

Пусть кодируемая информация делится на фрагменты длиной k бит, которые преобразуются в кодовые слова длиной n бит. Тогда соответствующий блоковый код обычно обозначают (n, k). При этом число R = k/n называется скоростью кода. Если исходные k бит код оставляет неизменными, и добавляет n ? k проверочных, такой код называется систематическим, иначе несистематическим.

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

- способность исправлять как можно большее число ошибок,

- как можно меньшая избыточность,

- простота кодирования и декодирования.

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

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

Линейные коды общего вида

Линейный блоковый код -- такой код, что множество его кодовых слов образует k-мерное линейное подпространство (назовём его C) в n-мерном линейном пространстве, изоморфное пространству k-битных векторов. Это значит, что операция кодирования соответствует умножению исходного k-битного вектора на невырожденную матрицу G, называемую порождающей матрицей.

Пусть -- ортогональное подпространство по отношению к C, а H -- матрица, задающая базис этого подпространства. Тогда для любого вектора справедливо:

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

Минимальное расстояние Хемминга является важной характеристикой линейного блокового кода. Она показывает насколько «далеко» расположены коды друг от друга. Она определяет другую, не менее важную характеристику -- корректирующую способность:

,

округляем «вниз», так чтобы 2t < dmin.

Корректирующая способность определяет, сколько ошибок передачи кода (типа ) можно гарантированно исправить. То есть вокруг каждого кода A имеем t-окрестность At, которая состоит из всех возможных вариантов передачи кода A с числом ошибок () не более t. Никакие две окрестности двух любых кодов не пересекаются друг с другом, так как расстояние между кодами (то есть центрами этих окрестностей) всегда больше двух их радиусов .

Таким образом, получив искажённый код из At, декодер принимает решение, что был исходный код A, исправляя тем самым не более t ошибок.

Поясним на примере. Предположим, что есть два кодовых слова A и B, расстояние Хемминга между ними равно 3. Если было передано слово A, и канал внёс ошибку в одном бите, она может быть исправлена, так как даже в этом случае принятое слово ближе к кодовому слову A, чем к любому другому, и в частности к B. Но если каналом были внесены ошибки в двух битах (в которых A отличалось от B) то результат ошибочной передачи A окажется ближе к B, чем A, и декодер примет решение что передавалось слово B.

Коды Хемминга

Коды Хемминга -- простейшие линейные коды с минимальным расстоянием 3, то есть способные исправить одну ошибку. Код Хемминга может быть представлен в таком виде, что синдром , где -- принятый вектор, будет равен номеру позиции, в которой произошла ошибка. Это свойство позволяет сделать декодирование очень простым.

Общий метод декодирования линейных кодов

Любой код (в том числе нелинейный) можно декодировать с помощью обычной таблицы, где каждому значению принятого слова соответствует наиболее вероятное переданное слово . Однако, данный метод требует применения огромных таблиц уже для кодовых слов сравнительно небольшой длины Новик Д.А. Эффективное кодирование. - М. Л.: Энергия, 1965. - С. 52..

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

Линейные циклические коды

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

Циклическим кодом является линейный код, обладающий следующим свойством: если является кодовым словом, то его циклическая перестановка также является кодовым словом Колесник В.Д., Мирончиков Е.Т. Декодирование циклических кодов. - М.: Связь, 1968. - С. 8 - 10..

Слова циклического кода удобно представлять в виде многочленов. Например, кодовое слово представляется в виде полинома . При этом циклический сдвиг кодового слова эквивалентен умножению многочлена на x по модулю xn ? 1.

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

Можно показать, что все кодовые слова конкретного циклического кода кратны определённому порождающему полиному g(x). Порождающий полином является делителем xn ? 1. С помощью порождающего полинома осуществляется кодирование циклическим кодом. В частности:

- несистематическое кодирование осуществляется путём умножения кодируемого вектора на g(x): v(x) = u(x)g(x);

- систематическое кодирование осуществляется путём «дописывания» к кодируемому слову остатка от деления xn ? ku(x) на g(x), то есть .

Коды CRC

Коды CRC (cyclic redundancy check -- циклическая избыточная проверка) являются систематическими кодами, предназначенными не для исправления ошибок, а для их обнаружения. Они используют способ систематического кодирования, изложенный выше: «контрольная сумма» вычисляется путем деления xn ? ku(x) на g(x). Ввиду того, что исправление ошибок не требуется, проверка правильности передачи может производиться точно так же. Таким образом, вид полинома g(x) задаёт конкретный код CRC.

Коды БЧХ

Коды Боуза -- Чоудхури -- Хоквингема (БЧХ) являются подклассом циклических кодов. Их отличительное свойство -- возможность построения кода БЧХ с минимальным расстоянием не меньше заданного. Это важно, потому что, вообще говоря, определение минимального расстояния кода есть очень сложная задача.

Коды коррекции ошибок Рида -- Соломона

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

Математически коды Рида -- Соломона являются кодами БЧХ.

Преимущества и недостатки блоковых кодов

Хотя блоковые коды, как правило, хорошо справляются с редкими, но большими пачками ошибок, их эффективность при частых, но небольших ошибках (например, в канале с АБГШ), менее высока.

Свёрточные коды

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

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

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

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

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

Свёрточные коды эффективно работают в канале с белым шумом, но плохо справляются с пакетами ошибок. Более того, если декодер ошибается, на его выходе всегда возникает пакет ошибок.

Каскадное кодирование. Итеративное декодирование

Преимущества разных способов кодирования можно объединить, применив каскадное кодирование. При этом информация сначала кодируется одним кодом, а затем другим, в результате получается код-произведение Блох Э.Л., Зяблое В.В. Обобщенные каскадные коды. - М.: Связь, 1976. - С. 35 - 43..

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

Некоторые коды-произведения специально сконструированы для итеративного декодирования, при котором декодирование осуществляется в несколько проходов, каждый из которых использует информацию от предыдущего. Это позволяет добиться большой эффективности, однако, декодирование требует больших ресурсов. К таким кодам относят турбо-коды и LDPC-коды (коды Галлагера).

Оценка эффективности кодов

Эффективность кодов определяется количеством ошибок, которые тот может исправить, количеством избыточной информации, добавление которой требуется, а также сложностью реализации кодирования и декодирования (как аппаратной, так и в виде программы для ЭВМ) Яблонский С.В. Введение в дискретную математику. - М.: Наука, 1979. - С. 326..

2.2 Коды Хэмминга

Пусть количество сообщений, которые требуется передавать абоненту, равно 16. Для их безызбыточного кодирования можно использовать двоичные слова длины 4, но тогда код не будет корректировать ошибки. При использовании слов длины 5 можно обнаружить, но не исправить любую одиночную ошибку. Если добавить 5 проверочных символов, то код сможет не только исправлять одиночные, но и обнаруживать двойные ошибки. Возникает вопрос: нельзя ли для этой цели обойтись меньшим количеством проверочных символов?

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

Попробуем обойтись тремя проверочными символами, т. е. будем использовать для кодирования сообщений двоичные слова длины 7. Наша задача -- определить, произошла ли ошибка, и если произошла, то в каком месте. Но это то же самое, что указать одно из восьми чисел от 0 до 7 (0 соответствует отсутствию ошибки).

Пусть требуется передать сообщение, кодируемое словом а1а2а3а4. Добавим к этому слову три символа а5, а6, а7, определяемые равенствами (по модулю 2):

а5=а2+а3+а4,

а6 = а1+а3+а4,

а7 = а1+а2+а4.

Если теперь нужно выяснить, допущена ли при передаче слова а1а2а3а4а5а6а7 одиночная ошибка в одном из символов а4, а5, а6, а7, то для этого достаточно вычислить сумму:

s1 = а4+а5+а6+а7.

Ее значение, равное 1, соответствует ответу «да», значение 0 -- ответу «нет». В случае «да» проверим, нет ли ошибки в символах а6, а7, в случае «нет» -- не содержится ли ошибка в символах а2, а3. В каждом из этих случаев ответ дает значение суммы:

s2 = а2+а3+а6+а7.

Если, например, значения обеих сумм равны 1, то ошибка содержится либо в a6, либо в а7. Всего имеется четыре комбинации значений сумм s1, s2. Наконец, в каждом из четырех случаев нужно выбрать одну из двух возможностей. Это позволит сделать значение суммы

s3=a1+a3+a5+a7.

Отметим особо, что если произошла одиночная ошибка, то ее положение указывается числом с двоичной записью s1s2s3. Пусть, например, s1=l, s2=0, s3=l. Тогда ошибка допущена в пятом разряде; но 101 как раз и есть двоичная запись числа 5.

Рассмотренный здесь код -- это код Хемминга длины 7 с четырьмя информационными символами Блейхут Р. Теория и практика кодов контролирующих ошибки. - М.: Мир, 1986. - С. 111 - 148.. В общем случае кодовые слова двоичного кода Хемминга, позволяющего исправить одиночную ошибку, имеют длину 2m--1 (m -- натуральное). Для определения положения ошибки тогда уже нужно m проверочных символов. Оставшиеся 2m--1--m символов являются информационными. Проверки строятся по аналогии с рассмотренным случаем. Значения m проверок, как и выше, образуют номер положения ошибки. Вернемся к вопросу, поставленному в начале данного подраздела. Добавим к кодовым словам кода Хемминга длины 7 еще один проверочный символ а0, а к проверочным соотношениям еще одно (общую проверку на четность). Для исправления одиночных и обнаружения двойных ошибок к четырем информационным символам достаточно добавить четыре проверочных символа. Можно показать, что обойтись меньшим числом проверочных символов невозможно.

Построенное множество кодовых слов а0а1а2а3а4а5а6а7 -- пример расширенного кода Хемминга (длины 8 с четырьмя информационными символами) Кларк Дж., Кейн Дж. Кодирование с исправлением ошибок в системах цифровой связи. - М.: Радио и связь, 1987. - С. 58 - 64..

С точки зрения строгой математики для построения линейного кода Хэмминга с m проверками на четность, исправляющего одну ошибку, код определяется посредством проверочной матрицы, столбцами которой являются все ненулевые векторы длины m. Очевидно, что любые два столбца этой матрицы линейно независимы и найдутся три линейно зависимых столбца, следовательно, кодовое слово равно 3, и значит, код исправляет одну ошибку. Этот код - код Хэмминга, далее обозначаем .

По построению его мощность равна

где m = log(n + 1). Следовательно, он достигает границы Хэмминга и потому является совершенным Соловьева Ф.И. Введение в теорию кодирования. Учебное пособие НГУ. - Новосибирск: Изд-во НГУ, 2006. - С. 14 - 15. .

Параметры кодов Хэмминга длины 7.

Рассмотрим три различных представления кода Хэмминга длины 7.

1.Код Хэмминга длины 7 задан проверочной матрицей в каноническом виде, т.е. проверочная матрица имеет вид

2. Код Хэмминга длины 7 в циклическом виде. Линейный вид С длины n называется циклическим, если для любого кодового слова слово принадлежит коду С.

Проверочная матрица кода Хэмминга длины 7 в циклическом представлении имеет вид:

3. Во многих случаях полезно определять код Хэмминга через проверочную матрицу, заданную в лексикографическом виде:

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

2.3 Декодирование кода Хэмминга

Линейный систематический блочный код может быть определен также с использованием так называемой проверочной матрицы H, обладающей следующим свойством: если некоторая последовательность U является кодовым словом, то

U H = 0.

Другими словами, проверочная матрица H ортогональна любой кодовой последовательности данного кода.

Покажем, что код Хэмминга допускает самое простое декодирование. Подробнее к этому вопросу мы вернемся позже, когда будем рассматривать декодер кода Хэмминга. Рассмотрим Соловьева Ф.И. Введение в теорию кодирования. Учебное пособие НГУ. - Новосибирск: Изд-во НГУ, 2006. - С. 15 - 16. представление кода Хэмминга посредством проверочной матрицы, столбцы которой записаны в лексикографическом порядке:

Здесь - проверочная матрица кода , m = log(n + 1), В(i) - двоичное представление числа i. Используя эту проверочную матрицу , можно определить код Хэмминга следующим образом:

Вектор =, где Н - проверочная матрица линейного кода, называется синдромом вектора у.

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

Синдром равен столбцу, номер которого I является номером ошибочного координаты вектора y. Здесь - двоичный вектор длины n с единицей только в i- й координате. С понятием синдрома мы сталкивались в предыдущем подразделе, когда говорили о том, как именно код Хэмминга исправляет ошибки. Здесь мы привели обобщенное математическое выражение для этого понятия.

2.4 Коды Адамара

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

Квадратная матрица Н порядка n с элементами ±1 называется матрицей Адамара, если выполняется условие

HHT= nЕn.

Различные строки матрицы Адамара попарно ортогональны. Далее, число слагаемых, равных + 1, должно совпадать с числом слагаемых, равных --1. Следовательно, n четно и любые две строки совпадают ровно в n/2 позициях и различаются в остальных Кузьмин И.В. Основы теории информации и кодирования. - Минск: Вышейш. школа, 1986. - С. 224 - 231..

Пусть - нормализированная матрица Адамара. Заменим всюду 1 на 0, а -1 на 1, тогда превращается в двоичную матрицу Адамара .

Из матрицы можно построить три кода Адамара Соловьева Ф.И. Введение в теорию кодирования. Учебное пособие НГУ. - Новосибирск: Изд-во НГУ, 2006. - С. 93 - 100., однако мы ограничимся простейшим случаем: кодом с параметрами , состоящий из строки матрицы с выколотой первой координатой.

Код Адамара с параметрами (7,8,4), полученный из матрицы Адамара типа Пэйли. Кодовые слова - это все циклические сдвиги вектора (1001011) и нулевой вектор длины 7. Иначе говоря,

2.5 Связь кодов Адамара с кодом Хэмминга

кодирование хэмминг адамар ошибка

Рассмотрим связь кодов Адамара с кодом Хэмминга. Для этого применим определение ортогонального кода.

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

Скалярное произведение каждой строки матрицы G на каждую строку матрицы H равно нулю, то есть

H G = 0 и G H T = 0 .

Следовательно, можно "поменять ролями" эти две матрицы и использовать Н как порождающую матрицу, а G как проверочную матрицу некоторого другого кода.

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

Например, если (7,4)-код Хемминга имеет избыточность 7/4 и при этом позволяет исправлять одну ошибку в кодовом слове из 7 символов, то дуальный ему код (7,3) также исправляет одну ошибку на 7 символов, но уже имеет избыточность 7/3, то есть на 3 информационных символа содержит 4 проверочных.

Код, дуальный к коду Хэмминга, является кодом Адамара , построенным из матрицы Сильвестра. Справедливо и обратное. Доказательство данной теоремы приведено в работе Соловьева Ф.И. Введение в теорию кодирования. Учебное пособие НГУ. - Новосибирск: Изд-во НГУ, 2006. - С. 100 - 102..

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

3. Кодеки Хэмминга и Адамара. Обоснование и расчет структурных и принципиальных схем

3.1 Принципы кодирования и декодирования линейных блочных кодов

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

Кодер для блочных кодов делит непрерывную информационную последовательность X на блоки-сообщения длиной k символов Банкет В.Л., Дорофеев В.П. Цифровые методы в спутниковой связи. - М.: Радио и связь, 1988. - С. 251..

Кодер канала преобразует блоки-сообщения X в более длинные двоичные последовательности Y, состоящие из n символов и называемые кодовыми словами. Символы (n-k), добавляемые к каждому блоку-сообщению кодером, называются избыточными. Они не несут никакой дополнительной информации, и их функция состоит в обеспечении возможности обнаруживать (или исправлять) ошибки, возникающие в процессе передачи (рис. 3. 1).

Как мы указывали ранее, k-разрядным двоичным словом можно представить 2k возможных значений из алфавита источника, им соответствует 2k кодовых слов на выходе кодера. Такое множество 2k кодовых слов называется блочным кодом. Термин "без памяти" означает, что каждый блок из n символов зависит только от соответствующего информационного блока из k символов и не зависит от других блоков.

Рис. 3. 1. Линейный блочный систематический код с информационной k и проверочной n-k частями

Блочное кодирование удобно использовать в тех случаях, когда исходные данные по своей природе уже сгруппированы в какие-либо блоки или массивы. Для блочного кода с 2k кодовыми словами длиной в n символов, если он только не обладает специальной структурой, аппарат кодирования и декодирования является очень сложным. Одним из условий реализуемости блочных кодов при больших k является условие их линейности.

Блочный код длиной n символов, состоящий из 2k кодовых слов, называется линейным (n, k)-кодом при условии, что все его 2k кодовых слов образуют k-мерное подпространство векторного пространства n- последовательностей двоичного поля GF(2). Если сказать проще, то двоичный код является линейным, если сумма по модулю 2 ( mod2 ) двух кодовых слов также является кодовым словом этого кода.

Самым простым линейным блочным кодом является (n,n-1)-код, построенный с помощью одной общей проверки на четность. Например, кодовое слово (4,3)-кода можно записать в виде вектора-столбца:

где mi - символы информационной последовательности, принимающие значения 0 и 1, а суммирование производится по модулю 2 ( mod2 ).

Пусть информационная последовательность источника имеет вид

m = (1 0 1).

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

U = (U0, U1, U2, U3) = (1 0 1 0),

где проверочный символ U3 формируется путем суммирования по mod2 символов информационной последовательности m.

Нетрудно заметить, что если число единиц в последовательности m четно, то результатом суммирования будет 0, если нечетно -- 1, то есть проверочный символ дополняет кодовую последовательность таким образом, чтобы количество единиц в ней было четным.

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

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

P1 = n Pош (1- Pош) n-1

(то есть в одном бите ошибка есть, а во всех остальных n - 1 битах ошибки нет).

Вероятность того, что произойдет две ошибки, определяется уже числом возможных сочетаний ошибок по две (в двух произвольных битах ошибка есть, а во всех остальных n - 2 битах ошибки нет):

P2 = Cn2 Pош (1- Pош) n-2

и аналогично для ошибок более высокой кратности Кловский Д.Д., Шилкин В.А. Теория электрической связи. Сб. задач и упражнений. Учебное пособие для ВУЗов. - М.: Радио и связь, 1990 - С. 167 - 169..

Если считать, что вероятность ошибки на символ принятой последовательности Pош достаточно мала (Pош<<1), а в противном случае передача информации не имеет смысла, то вероятность выпадения ровно l ошибок составит Pl ~ Pошl .

Отсюда видно, что наиболее вероятными являются одиночные ошибки, менее вероятными -- двойные, еще меньшую вероятность будут иметь трехкратные ошибки и т. д. Если при передаче рассматриваемого (4,3)-кода произошла одна ошибка, причем неважно, в какой его позиции, то общее число единиц в принятой последовательности r уже не будет четным Справочник по радиорелейной связи/ Под ред. С.В. Бородича. - М.: Радио и связь, 1981. - С. 316..

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

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

На основании общей идеи проверки на четность и проверочного уравнения легко организовать схему кодирования - декодирования для произвольного кода с простой проверкой на четность Парамонов Ю.В. Введение в теорию и методы защиты информации. Учебное пособие МТУСИ. - М.: 1999. - С. 97 - 115..

Схема кодирования может выглядеть следующим образом (рис. 3.2):

Рис. 3. 2. Структурная схема кодера для кода с проверкой на четность

Декодирующее устройство для кода с проверкой на четность изображено на рис. 3.3.

Рис. 3. 3. Структурная схема декодера для кода с проверкой на четность

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

Несмотря на свою простоту и не очень высокую эффективность, коды с проверкой на четность широко используются в системах передачи и хранения информации. Они ценятся за невысокую избыточность: достаточно добавить к передаваемой последовательности всего один избыточный символ и можно узнать, есть ли в принятой последовательности ошибка. Правда, определить место этой ошибки и, следовательно, исправить ее, пока нельзя. Можно лишь повторить передачу слова, в котором была допущена ошибка, и тем самым ее исправить Пенин П.И. Системы передачи цифровой информации. - М.: Сов. радио, 1976. - С. 155..

3.2 Кодер и декодер (7, 4)-кода Хэмминга

Рассмотрим (7,4)-код Хемминга, являющийся классической иллюстрацией простейших кодов с исправлением ошибок. Пусть m = (m0, m1, m2, m3) будет тем сообщением, или информационной последовательностью, которую нужно закодировать. Порождающая матрица G для (7, 4)-кода Хемминга имеет вид

Тогда символы соответствующего кодового слова определяются следующим образом :

Например, пусть m = ( 1 0 1 1 ) , тогда соответствующее кодовое слово будет иметь вид U = ( 1 0 1 1 1 0 0 ). Или другой пример: пусть m = ( 1 0 0 0 ), тогда U = ( 1 0 0 0 1 1 0 ).

На основании порождающей матрицы G(7,4) легко реализовать схему кодирования для рассматриваемого (7,4)-кода Хемминга (рис. 3.4).

Рис. 3. 4. Структурная схема кодера для (7, 4)-кода Хэмминга

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

Прежде чем говорить об обнаружении и исправлении ошибок корректирующими кодами, напомним само понятие ошибки и методы их описания. Пусть U = ( U0 , U1 ,… Un ) является кодовым словом, переданным по каналу с помехами, а r = ( r0 , r1 , ... rn ) - принятой последовательностью, возможно, отличающейся от переданного кодового слова U. Отличие r от U состоит в том, что некоторые символы ri принятой последовательности могут отличаться от соответствующих символов Ui переданного кодового слова. Например, U = ( 0 0 0 1 0 0 0 ) , а r = ( 0 0 0 0 0 0 0) , то есть произошла ошибка в четвертом символе кодового слова, 1 перешла в 0 . Или другой пример: передано кодовое слово U = ( 0 0 1 1 1 1 ), а принятая последовательность имеет вид r = ( 1 0 1 1 1 1 1), то есть ошибка возникла в первом бите кодового слова, при этом 0 перешел в единицу.

Для описания возникающих в канале ошибок Коржик В.И. и др. Расчет помехоустойчивости систем передачи дискретных сообщений. - М.: Радио и связь, 1981. - С. 87 - 99. используют вектор ошибки, обычно обозначаемый как e и представляющий собой двоичную последовательность длиной n с единицами в тех позициях, в которых произошли ошибки. Так, вектор ошибки e = ( 0 0 0 1 0 0 0 ) означает однократную ошибку в четвертой позиции (четвертом бите), вектор ошибки e = ( 1 1 0 0 0 0 0 ) - двойную ошибку в первом и втором битах и т.д.

Тогда при передаче кодового слова U по каналу с ошибками принятая последовательность r будет иметь вид

r = U + e.

Приняв вектор r , декодер сначала должен определить, имеются ли в принятой последовательности ошибки. Если ошибки есть, то он должен выполнить действия по их исправлению.

Чтобы проверить, является ли принятый вектор кодовым словом, декодер вычисляет (n-k)-последовательность, определяемую следующим образом:

Здесь НТ - проверочная матрица. При этом r является кодовым словом тогда, и только тогда, когда S = (00..0), и не является кодовым словом данного кода, если S ненулевой. Следовательно, S используется для обнаружения ошибок, ненулевое значение S служит признаком наличия ошибок в принятой последовательности. Поэтому вектор S называется синдромом принятого вектора r.

Некоторые сочетания ошибок, используя синдром, обнаружить невозможно Тепляков И.П., Рощин Б.В. Радиосистемы передачи информации. - М.: Радио и связь, 1982. - С. 201.. Например, если переданное кодовое слово U под влиянием помех превратилось в другое действительное кодовое слово V этого же кода, то синдром равен 0 . В этом случае декодер ошибки не обнаружит и, естественно, не попытается ее исправить. Сочетания ошибок такого типа называются необнаруживаемыми. При построении кодов необходимо стремиться к тому, чтобы они обнаруживали наиболее вероятные сочетания ошибок.


Подобные документы

  • Методы арифметического кодирования. Основные функции программ, реализующие алгоритмы кодирования по методам Хаффмана, Голомба, Фибоначчи и Элиаса. Разработка программно-аппаратных средств оптимального арифметического кодирования и их экономический расчет.

    дипломная работа [1,1 M], добавлен 26.05.2012

  • Определение понятий кода, кодирования и декодирования, виды, правила и задачи кодирования. Применение теорем Шеннона в теории связи. Классификация, параметры и построение помехоустойчивых кодов. Методы передачи кодов. Пример построения кода Шеннона.

    курсовая работа [212,6 K], добавлен 25.02.2009

  • Методы компрессии информации. Обзор и характеристика существующих методов сжатия информации, основанных на процедуре кодирования Хаффмена. Алгоритмы динамического кодирования методом FGK и Виттера. Программная реализация и руководство пользователя.

    курсовая работа [33,2 K], добавлен 09.03.2009

  • Изучение сущности циклических кодов - семейства помехоустойчивых кодов, включающих в себя одну из разновидностей кодов Хэмминга. Основные понятия и определения. Методы построения порождающей матрицы циклического кода. Понятие открытой системы. Модель OSI.

    контрольная работа [99,5 K], добавлен 25.01.2011

  • Энтропия и количество информации. Комбинаторная, вероятностная и алгоритмическая оценка количества информации. Моделирование и кодирование. Некоторые алгоритмы сжатия данных. Алгоритм арифметического кодирования. Приращаемая передача и получение.

    курсовая работа [325,1 K], добавлен 28.07.2009

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

    курсовая работа [582,8 K], добавлен 24.03.2013

  • Использование принципа формирования кода Хэмминга в процессе отладки ошибки. Сложение двоичного числа по модулю в программе и получение кода ошибки для определения разряда, в котором она содержится. Соответствие ошибки определенному разряду операнда.

    лабораторная работа [8,0 K], добавлен 29.06.2011

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

    курсовая работа [55,8 K], добавлен 23.04.2014

  • Оптимальное статистическое (экономное) кодирование. Основные понятия и определения теории кодирования. Принципы построения оптимальных кодов. Способность системы осуществлять прием информации в условиях наличия помех. Увеличение мощности сигналов.

    реферат [69,3 K], добавлен 09.07.2009

  • Описание системы кодирования, порядка присвоения кодов единицам информации. Изучение этапов создания классификаторов. Штриховое кодирование и особенности его применения. Юридическая сила документа, полученного из автоматизированной информационной системы.

    презентация [409,6 K], добавлен 25.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.