Пример.
Генерация.
Пусть исходное слово 0101.
Макет ОКЧ - 0101К,
где К – контрольный бит, равно сумме по модулю 2 информационных бит исходника.
К = 0
1 0 1 = 0ОКЧ (n; nи )
ОКЧ (5; 4) = 01010
Проверим:
S = 0
1 0 1 0 = 0 - ошибки , то есть ошибки не существуетКоличество ошибок | Передано | Принято | Наличие ошибки |
Нет ошибок | 01010 | 01010 | S = 0, ошибки |
1 ошибка | 01010 | 11010 | S = 1, ошибка |
2 ошибки | 01010 | 11011 | S = 0, ошибки |
3 ошибки | 01010 | 10011 | S = 1, ошибка |
4 ошибки | 01010 | 10111 | S = 0, ошибки |
Недостаток: ОКЧ позволяет определять наличие ошибки при нечетном их количестве и не определяет ошибку при их четном количестве.
Эффективность.
1. Минимальное количество контрольных бит.
2. Просто и удобный алгоритм генерации кода и диагностики (обнаружения ошибок).
7.1.2 Обнаруживающий код удвоения (ОКУ)
Генерация ОКУ.
Пусть исходное сообщение будет 0101.
Макет ОКУ: 0101 К1 К2 К3 К4,
где nи = 0101 и nк = К1 К2 К3 К4, то есть nи = nк.
Контрольные биты равны соответствующим информационным битам.
ОКУ (8; 4) = 01010101
Диагностика.
При диагностике суммируются по модулю 2 информационная и контрольная части ОКУ.
Во всех остальных случаях ошибка существует.
Передано 01010101.
Принято 00010101.
Эффективность ОКУ.
1. Обнаруживает любое число ошибок и приблизительно указывает адрес ошибки;
2. Простота алгоритма генерации и диагностики;
3. Недостаток – избыточность, длина контрольной части 100%.
7.1.3 Обнаруживающий код инверсии (ОКИ)
Генерация ОКИ.
Пусть исходное сообщение будет 0101.
Макет ОКИ: 0101 К1 К2 К3 К4,
где nи = 0101 и nк = К1 К2 К3 К4, то есть nи = nк.
Контрольные биты ОКИ равны инверсии соответствующих бит
информационной части исходника.
ОКУ (8; 4) = 01011010
Диагностика.
При диагностике суммируются по модулю 2 информационная и
контрольная части ОКУ.
Если S = 1 – ошибка не существует. S=0 -
ошибкаПередано 01011010.
Принято 10011011.
Эффективность ОКИ.
1. Обнаруживает любое число ошибок и приблизительно указывает адрес ошибки.
2. Простота алгоритма генерации и диагностики.
3. Недостатком является избыточность, длина контрольной части 100%.
7.1.4 Обнаруживающий код Стандартный телеграфный код (ОК СТК №3) №3
Количество единиц в двоичном коде называется весом кода.
Для всех символов, букв, цифр, спецзнаков разработаны двоичные коды весом, равным 3 ( т. е. содержат 3 единицы).
Диагностика.
Если в принятом двоичном слове количество единиц равно 3, то ошибки нет. Во всех остальных случаях ошибка есть.
Символ с ошибкой не корректируется, а удаляется.
Генерация КСКХ.
Определим количество контрольных бит и их позиции по формуле:
Пi=2j-1 => kj —> Пi
Отсюда получаем:
для K1,j=1, Пi =21-1=20=1 , K1→П1;
для K2, j =2, Пi =22-1=21=2 , K2 →П2 ;
для K3, j =3, Пi =23-1=22=4 , K3 →П4 ;
для K4, j =4, Пi =24-1=23=8 , K4 →П8 ;
Макет КСКХ
nи = 7 бит, nk = 4 бит, n = 7+4 = 11 бит.
Позиции | П1 | П2 | П3 | П4 | П5 | П6 | П7 | П8 | П9 | П10 | П11 |
Макет | к1 | к2 | 1 | к3 | 0 | 0 | 1 | к4 | 1 | 0 | 0 |
Определим правила четности Хемминга.
Вычислим значения контрольных бит. Макет КСКХ обработаем правилами четности, получим уравнения с одной переменной, решив которые, найдем значения к.
ПЧ1 => к1
1 0 1 1 0 = 0. к1 1= 0 → k1 = 1ПЧ2 => к2
1 0 1 0 0 = 0. к2 0= 0 → k2 = 0ПЧ3 => к3
0 0 1 = 0. к3 1= 0 → k3 = 1ПЧ4 => к4
0 0 = 0. к4 1= 0→ k4 = 1Позиции | П1 | П2 | П3 | П4 | П5 | П6 | П7 | П8 | П9 | П10 | П11 |
Макет | к1 | к2 | 1 | к3 | 0 | 0 | 1 | к4 | 1 | 0 | 0 |
КСКХ | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
КСКХ(11;7) = 10110011100
Диагностика.
Передан КСКХ: 10110011100
Принят: 10111011100
Обрабатываем КСКХ правилами четности:
ПЧ1 => 1
1 0 1 1 0 = 1 → АО=1ПЧ2 => 0
1 0 1 0 0 = 0 → АО=0ПЧ3 => 1
1 0 1 = 1 → АО=1ПЧ4 => 1
1 0 0 = 0 → АО=0АО=01012=510
АО =П5
Коррекция.
Заключается в инверсии ошибочной позиции П5:1→0
КСКХ(11;7) = 10110011100
Декодирование.
Заключается в удалении контрольных бит: 1001100
Эффективность.Контрольные биты размещаются между битами исходника. Код содержит минимальное количество контрольных бит и является плотноупакованным.
Корректирующий циклический код (КЦК) определяет и корректирует одну ошибку. Широко употребляется в станках с числовым программным управлением (ЧПУ).