
- •3. Помехоустойчивые коды
- •Оку (Обнаруживающий код удвоения).
- •Исходник: 1001101 1000001 1010001 1010011 1000001
- •Принято:10011011000001101000110100111000001 10011011000001 101000110100110111110
- •Оки (Обнаруживающий код инверсный)
- •Исходник: 1001101 1000001 1010001 1010011 1000001
- •Корректирующий циклический код кцк генерируется порождающим полиномом
- •Корректирующий мажоритарный код кмк: генерация, диагностика, коррекция, декодирование и эффективность
-
Корректирующий циклический код кцк генерируется порождающим полиномом
Обнаруживает и корректирует одну ошибку. Контрольные биты размещаются в конце кода после информационных бит. Количество контрольных бит: nк=nи+2.
Контрольные биты вычисляются в помощью порождающего полинома степени nк. Порождающие полиномы создаются на алгебраических полях Гаусса.
Генерация.
-
Исходник: 1001101 =М
Макет:(16;7)1001101К1К2К3К4К5К6К7К8К9
Для расчета значений контрольных бит подбираем порождающий полином 9й степени. g(x)= x9+x8+x+1
Запишем порождающий полином в бинарной форме, записывая только все коэффициенты полинома: g(x)=1100000011
Вычислим значения контрольных бит делением макета на порождающий полином (деление по модулю 2).
1001101000000000
1100000011
1100000011
1011010110
1100000011
1110101010
1100000011
1010100100
1100000011
1101001110
1100000011
010011010
= м(х)=9 бит = nк
К1К2К3К4К5К6К7К8К9 = 010011010
Вместо резервных нулей макета подставили вычисленные значения контрольных бит.
КЦК(16;7)=1001101010011010
Диагностика.
Принятый КЦК делится по mod2 на порождающий полином g(x). По форме остатка m(x) определяется наличие и адрес ошибки:
-
Если
содержит обрамление и одну единицу внутри обрамления, то ошибка в информационной части кода (АО
) и единица указывает адрес ошибки;
-
Если
содержит одну единицу и все остальные биты равны нулю, то ошибка находится в контрольной части и единица указывает адрес контрольного бита с ошибкой;
-
Если остаток m(x) = 000000000, то ошибки нет;
-
Если остаток m(x) отличается от этих трех вариантов, то КЦК содержит более одной ошибки, что КЦК не выполняет.
Ошибка в информационной части КЦК:
Принято: 1101101010011010
1101101010011010
1100000011
1100000011
1101001011
1100000011
1001000010
1100000011
101000001=> m(x)=9 бит
Наличие
обрамления указывает на то, что ошибка
находится в информационной части кода,
а 1 внутри обрамления указывает адрес
ошибки АО =(отбрасываем
обрамление).
Коррекция.
Инверсия ошибочной
позиции
– стояла 1, ставим 0 (1→0).
Декодирование
Удаление всех контрольных бит. Сообщение – 1001101
Ошибка в контрольной части КЦК.
Принято: 1001101010011011
1001101010011011
1100000011
1100000011
1011010010
1100000011
1110100011
1100000011
1010000010
1100000011
1100000011
1100000011
000000001 =>
m(x)=9
бит
Наличие лишь одной единицы среди всех нулей указывает на ошибку в контрольной части, и 1 указывает, что ошибка в последнем контрольном бите.
Коррекция.
Инверсия ошибочной
позиции
– стояла 1, ставим 0 (1→0).
Декодирование
Удаление всех контрольных бит. Сообщение – 1001101
Эффективность.
-
Обнаруживает и корректирует одну ошибку;
-
Удобный типовой алгоритм генерации и диагностики;
-
Контрольные биты размещены в конце КЦК.