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




Коды с обнаружением ошибок

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

Простейшим кодом обнаружения ошибок является «контроль четности».

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

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

Всё сообщение разбивается на блоки бит равного размера, например, по 8-мь бит. И вычисляется сумма значений бит каждого из этих блоков. К блоку добавляется еще один бит: если сумма нечетная, то бит 1, иначе — бит 0. Т.е. получается блок длиной на один бит больше исходного — это «бит четности», так называемый, паритетный бит. Этот бит устанавливается во время записи (или отправки) данных, и затем рассчитывается и сравнивается во время чтения (получения) данных. Он равен сумме по модулю 2 всех бит данных в пакете. То есть число единиц в пакете всегда будет четно. Изменение этого бита (например с 0 на 1) сообщает о возникшей ошибке.

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

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

Легко сообразить, что искажение двух, четырех и любого четного количества бит в блоке не будет обнаружено.

Пример:

 

Начальные данные: 1111
Данные после кодирования: 1111 0 (1 + 1 + 1 + 1 = 0 (mod 2))
Принятые данные: 1 0 110 (изменился второй бит)
Как мы видим, количество единиц в принятом пакете нечетно, следовательно, при передаче произошла ошибка.


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

 

К примеру:

 

Начальные данные: 1111
Данные после кодирования: 1111 0 (1 + 1 + 1 + 1 = 0 (mod 2))
Принятые данные: 1 00 10 (изменились 2 и 3 биты)
В принятых данных число единиц четно, и, следовательно, декодер не обнаружит ошибку.

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

 

Решите задачу 1:

Закодируйте слово длины 4 с помощью кода с проверкой четности.

а) α =(0011) б) α =(1011) в) α =(0111) г) α =(0001) д) α =(0010)
е) α =(1010) ж) α =(0110) з) α =(1001) и) α =(1000) к) α =(1100)

 

Образец: Закодируйте слово α =(0101) длины 4 с помощью кода с проверкой четности.

Решение: Найдем сумму по модулю 2 всех двоичных букв этого слова. Имеем:

, поэтому передано будет сообщение в виде слова b =(01010) длины 5.

Решите задачу 2:

Декодируйте слово длины 5 с помощью кода с проверкой четности

а) b =(00110) б) b =(10111) в) b =(01110) г) b =(00011) д) b =(00101)
е) b =(10100) ж) b =(01100) з) b =(10010) и) b =(10001) к) b =(11001)

Образец: Декодируйте слово b =(01110) длины 5 с помощью кода с проверкой четности.

Решение: Отбросив последнюю букву передаваемого слова, имеем слово α =(0101) длины 4, которое передавалось по каналу связи.

Решите задачу 3:

Определите, допущены ли ошибки в сообщении, заданном в задании 2.

Образец: Определите, допущены ли ошибки в сообщениях a 1=(01110) и a 2= (01010).

Решение: Для обнаружения ошибки, проверим с помощью М2 сумму всех букв закодированного слова в полученных сообщениях: a 1= . Т.к. сумма всех букв закодированного слова оказалась равной 1, то при его передаче по каналу связи была допущена ошибка.

Для второго сообщения имеем a 1= . Т.к. сумма всех букв закодированного слова оказалась равной 0, то при его передаче по каналу связи код с проверкой четности не позволяет выявить ошибку.

1.2 Код «циклическая сумма»

Другим примером кодов обнаружения ошибок является «циклическая сумма » (Cyclic Redundancy Checksum или CRC). Этот метод является неблочным, но может быть использован и в блочном варианте. Принцип обнаружения ошибки схож с кодом «контроля четности». Используя особый алгоритм суммируются значения всех битов данных или порции данных, в результате суммирования получается некое число (не один бит, а несколько), которое передается вместе с данными или порцией данных. Принимающая сторона вычисляет CRC повторно и сравнивает с переданным.

«Контроль четности» — частный случай CRC.

1.2. Код с постоянным весом ( блочный неразделимый)

В теории кодирования весом кодовых комбинаций принято называть количество единиц, которое они содержат. Если все комбинации кода имеют одинаковый вес, то такой код называется кодом с постоянным весом. Коды с постоянным весом относятся к классу блочных неразделимых кодов, так как здесь не представляется возможным выделить информационные и контрольные символы. Из кодов этого типа наибольшее распространение получил обнаруживающий семизначный код 3/4, каждая разрешенная комбинация которого имеет три единицы и четыре нуля. Известен также код 2/5. Примером комбинаций кода 3/4 могут служить следующие семизначные последовательности: 1011000, 0101010, 0001110 и т. д.

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

Примером кода с постоянным весом является Международный телеграфный код МТК-3. В этом коде все разрешенные кодовые комбинации имеют вес равный трем, разрядность же комбинаций n=7. Таким образом, из 128 комбинаций (N0 = 27 = 128) разрешенными являются Nа = 35 (именно столько комбинаций из всех имеют W=3). При декодировании кодовых комбинаций осуществляется вычисление веса кодовой комбинации и если W<>3, то выносится решение об ошибке. Например, из принятых комбинаций 0110010, 1010010, 1000111 ошибочной является третья, т. к. W=4.

С37= n! / (n-m)!*m! =35

Рассмотрим код с тремя единицами из семи. Для этого кода возможны смещения трех типов.

Например, код при коэффициент обнаружения составит , избыточность L=27%.

Пример. Коды с двумя единицами из пяти и тремя единицами из семи.

   

Код Грея

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



Поделиться:




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

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


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