11.2.
Контроль по четности / нечетности, контроль Хэмминга.
Контроль на чётность (нечётность) заключается в следующем: к передаваемым байтам данных
(8 бит) добавляется 1 контрольный бит. Контрольный бит вычисляется по
следующему правилу: если в информационном байте число единиц четное, то
контрольный бит равен 1. При этом общее число единиц
передаваемой информации должно быть нечетным. Данный способ контроля не позволяет обнаружить ошибки
четной кратности (т.е. ошибки одновременно в двух, четырех и т.д. битах)
и поэтому используется при невысоких требованиях к достоверности принимаемых
данных (или при малой вероятности ошибок в линии передачи).
Хэммингом предложен
способ добавления контрольных разрядов, при котором путем определенных
проверок на четность достаточно просто находится в принятом слове ошибочный
разряд. Рассмотрим этот способ.
Первый,
второй, четвертый, восьмой и т. д. разряды (т. е. разряды с номерами,
выражаемыми числами вида 2k) используются
в качестве контрольных.
Последующее изложение будем вести на примере так называемого 7/4 кода Хэмминга (общее
число разрядов в словах равно 7, из них 4 разряда — информационные, 3 разряда
— контрольные). Пусть а4, а3,
а2, a1 — цифры информационных разрядов слова; k3, k2, k1 — цифры
контрольных разрядов:
номера разрядов 7
6 5 4
3 2 1
цифры разрядов а4 а3 а2 k3 a1 k2 k1
Запишем представления номеров разрядов:
десятичное представление 7
6 5 4
3 2 1
двоичное представление 111
110 101 100
011 010 001
Значения цифр k3, k2, k1 контрольных разрядов находятся по следующему правилу.
Цифра контрольного
разряда k1 должна
обеспечивать четность числа единиц в разрядах, номера которых в двоичном представлении
содержат единицу в первом разряде (это условие выполняется для первого,
третьего, пятого и седьмого разрядов слова). Учитывая, какая информация
хранится в указанных разрядах, получим условие k1(+)a1(+)а2 (+)a4 =
0.
Цифра контрольного
разряда k2 должна обеспечивать четность числа единиц в разрядах,
двоичные номера которых имеют единицы во втором разряде (это условие
выполняется для второго, третьего, шестого и седьмого разрядов слова).
Следовательно, k2(+)al(+)a3(+)a4 =
0.
Цифра контрольного
разряда k3 обеспечивает
четность единиц в разрядах, двоичные номера которых имеют единицу в третьем
разряде (это условие выполняется, для четвертого, пятого, шестого и седьмого
разрядов слова). Отсюда k3(+)а2(+)а3(+)a4 =
0.
Прибавляя к обеим
частям приведенных равенств соответственно k1, k2, k3 и учитывая, что k1(+)k1 =
0; k2(+)k 2= 0; k3(+)k3 =
0, условиям для цифр контрольных
разрядов можно придать следующую форму:
k1 = a1(+)a2(+)a4; k2 = a1(+)a3(+)a4; k3 = а2(+)а3(+)а4.
Пусть информационная часть слова равна
1
0 1 0
а4 а3 а2 а1
Пользуясь приведенными
выше выражениями, находим значения
контрольных разрядов:
k1 = 0(+)1(+)1 = 0; k2 = 0(+)0(+)1 = 1; k3 = 1(+)0(+)1 = 0.
Следовательно, в данном примере слово
имеет вид 1010010.
Принятое слово
проверяется на выполнение условий,
которым подчиняются контрольные разряды. Результат проверки каждого из условий
определяет соответствующий разряд двоичного числа, называемого синдромом.
Пусть, например,
вместо правильного значения слова 1010010 принято слово с ошибкой в пятом
разряде, т. е. 1000010.
Результат проверки первого условия для
принятого слова
k1(+)a1(+)а2
(+)a4 = 0(+)0(+)0 (+)1 = 1.
Нарушена четность, в первый разряд
синдрома записывается 1. Результат проверки второго условия
k2(+)al(+)a3(+)a4 =
1(+)0(+)0 (+)1 = 0.
Четность не нарушена, во второй разряд
синдрома записывается 0. Результат проверки третьего условия
k3(+)а2(+)а3(+)a4 =
0(+)0(+)0 (+)1 = 1.
Четность нарушена, в
третий разряд синдрома записывается 1. Итак, получен синдром 1012 =
510, который указывает номер разряда, содержащего ошибку (ошибка в
пятом разряде принятого слова).
Нетрудно убедиться в
том, что синдром действительно должен указывать номер искаженного разряда. В
рассмотренном примере получение единицы в результате первой проверки
свидетельствует о том, что ошибка находится в одном из разрядов, двоичный номер
которого должен содержать 1 в первом разряде. Последующие две проверки
показали, что двоичный номер искаженного разряда содержит во втором разряде 0
и в третьем разряде 1. Следовательно, образуется двоичный номер искаженного
разряда.
Определим необходимое число контрольных
разрядов k.
Число проверок на
четность равно числу контрольных разрядов, а так как в результате каждой
проверки формируется цифра одного из разрядов синдрома, то число разрядов
синдрома оказывается равным числу контрольных разрядов k. Такой k -разрядный
синдром должен иметь п
(n=m+k —
общее число разрядов в слове) возможных комбинаций для указания номера каждого
из п пораженных ошибкой разрядов и
нулевую комбинацию, указывающую на отсутствие ошибок. Таким образом, должно
выполняться условие 2k≥n+1 или 2k≥m+n+1, из которого число контрольных разрядов равно
минимальному k, удовлетворяющему неравенству.