Лабораторная работа  7

Исследование процесса кодирования

Цель и содержание:

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

Код Бергера

Теоретическое обоснование

Коды Бергера относятся к разряду несистематических кодов. Существует несколько вариантов построения кодов Бергера. В наиболее простом варианте кодирование происходит следующим образом: в информационной части кода подсчитывается число единиц, после чего формируются проверочные разряды, представляющие инвертированную запись этого числа в двоичной форме. Таким образом, число проверочных разрядов R равно наименьшему целому числу, превышающему log2(k), то есть R >= log2(k).

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

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

Кодирование

Кодовая комбинация, которую необходимо закодировать:

НЕ нашли? Не то? Что вы ищете?

111011111110100111110111.

Количество единиц в слове – 19, в двоичном представлении – 10011. Инвертируем это число – 01100 – и добавляем его к исходному слову. Получаем закодированную кодовую комбинацию:

111011111110100111110111 01100.

Поскольку количество избыточных символов – 5, а длина закодированной кодовой комбинации – 29, то избыточность будет равняться (см. формулу (1)):

.

Декодирование

Декодируем полученную кодовую комбинацию:

111011111110100111110111 01100.

Зная, что количество информационных символов – 24, подсчитываем количество единиц в информационном блоке – их 19. Берем 5 избыточных символов – 01100 – и инвертируем избыточный блок – 10011. Переводим полученное число в десятичный вид – 19. Оно совпадает с количеством единиц в информационном блоке. Это означает, что ошибок, которые мы можем обнаружить, нет. Значит, отбрасываем проверочные символы и получаем декодированное сообщение:

111011111110100111110111.

Коды Бергера относятся к разряду несистематических кодов. Существует несколько вариантов построения кодов Бергера. В наиболее простом варианте кодирование происходит следующим образом: в информационной части кода подсчитывается число единиц, после чего формируются проверочные разряды, представляющие инвертированную запись этого числа в двоичной форме. Таким образом, число проверочных разрядов R равно наименьшему целому числу, превышающему log2(k), то есть R >= log2(k).

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

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


Кодирование методом "четности - нечетности"

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

Tаблица 1


Комбинация


Контрольный бит


Вычисленный бит контроля

10101011

1

1

11001010

0

0

10010001

1

1

11001011

0

1 – несоответствие


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


Tаблица 2


a1


a2


a3


a4


a5


k1


a6


a7


a8


a9


a10


k2


a11


a12


a13


a14


a15


k3


a16


a17


a18


a19


a20


k4


a21


a22


a23


a24


a25


k5


k6


k7


k8


k9


k10

Увеличение избыточности информации позволяет не только обнаружить ошибку, но и корректировать ее.



Например:

10011 1 1

11111 0 1

01010 0 0

10100 0 0

10010 0 0

01000

00000

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


Код с проверкой на чётность

Краткие теоретические сведения

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

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

Минимальное кодовое расстояние этого кода dmin = 1, поэтому код с проверкой на четность обнаруживает все одиночные ошибки, а кроме того, все случаи нечетного числа ошибок (3, 5 и т. д.). При одновременном возникновении двух или любого другого четного числа ошибок код с проверкой четности не обнаруживает ошибок.

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

Кодирование

Кодовая комбинация, которую необходимо закодировать:

111011111110100111110111.

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

Закодированная кодовая комбинация:

111011111110100111110111 1.

Поскольку количество избыточных символов – 1, а длина закодированной кодовой комбинации – 25, то избыточность будет равняться (см. формулу (1)):

.

Декодирование

Декодируем полученную кодовую комбинацию:

111011111110100111110111 1.

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

111011111110100111110111.


Код с проверкой на нечетность

Краткие теоретические сведения

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

При контроле по нечетности контролируется полное пропадание информации, поскольку кодовое слово, состоящее из 0, относится к запрещенным.

Кодирование

Кодовая комбинация, которую необходимо закодировать:

111011111110100111110111.

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

Закодированная кодовая комбинация:

111011111110100111110111 0.

Аналогично коду с проверкой на четность избыточность составляет:

.

Декодирование

Декодируем полученную кодовую комбинацию:

111011111110100111110111 0.

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

111011111110100111110111.


Инверсный код

Краткие теоретические сведения

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

Для обнаружения ошибок в кодовом слове, состоящем из n = k + r символов производится две операции:

суммируются единицы, содержащиеся в первых k символах кодового слова. если число единиц четное, r последующих символов сравниваются попарно с первыми k символами; если число единиц в первых символах нечетное, последующие символы перед сравниванием инвертируются.

Несовпадение хотя бы одной из пар сравниваемых кодовых символов указывает на наличие ошибки в кодовом слове.

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

Кодирование

Кодовая комбинация, которую необходимо закодировать:

111011111110100111110111.

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

Закодированная кодовая комбинация:

111011111110100111110111 000100000001011000001000.

Поскольку количество избыточных символов – 24, а длина закодированной кодовой комбинации – 48, то избыточность будет равняться (см. формулу (1)):

.

Декодирование

Декодируем полученную кодовую комбинацию:

111011111110100111110111 000100000001011000001000.

Количество единиц, содержащихся в первых 24 символах кодового слова – 19, то есть нечетное число. Значит, 24 последующих символов сравниваем попарно с инвертированным первыми 24 символами. Все символы попарно совпадают. Поскольку данный код не позволяет обнаружить ошибку, если одновременно искажается четное число символов в исходном слове и соответствующие им кодовые символы в последовательности повторяемых r символов, то, считая, что таких ошибок нет, просто отбрасываем повторяемые символы и получаем декодированное сообщение:

111011111110100111110111.



Контролирующий код с простым повторением

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



Корреляционный код

Краткие теоретические сведения

Кодирование корреляционным кодом производится по схеме превращения: 0 → 01, 1 → 10. Декодирование происходит обратным образом: 01 → 0, 10 → 1.

Если при передаче сообщения произошли ошибки, то декодер, обнаружив за один такт две единицы 11, либо два нуля 00, обнаружит ошибку.

Кодирование

Кодовая комбинация, которую необходимо закодировать:

111011111110100111110111.

По схеме превращения 0 → 01, 1 → 10 получаем следующую закодированную кодовую комбинацию:

101010011010101010101001100101101010101001101010.

Поскольку количество избыточных символов – 24, а длина закодированной кодовой комбинации – 48, то избыточность будет равняться (см. формулу (1)):

Декодирование

Декодируем полученную кодовую комбинацию:

101010011010101010101001100101101010101001101010.

Поскольку в принятом сообщении ни в одном такте нет одинаковых символов, а других ошибок мы обнаружить не можем, то, считая, что их нет, декодируем полученное сообщение по схеме 01 → 0, 10 → 1, и получаем декодированное сообщение:

111011111110100111110111.