Контрольная работа №2
Произвести кодирование в помехозащищенных кодах, указанных в табл. 2.2., согласно индивидуальному варианту.
Вариант 8: а) Корреляционный код;
б) Код Файра;
в) Код БЧХ.
Исходные данные:
Кодовая комбинация, подлежащая кодированию – последние три цифры шифра студента, записанные в двоичном коде на все сочетания: 108 – 1101100.
Длина пакета исправления и обнаружения искажений для кода Файра соответственно равна 4 и 5.
Общая длина кодовой комбинации для кода БЧХ равна 21, а кратность исправления искажений - 2.
Порядок выполнения:
1. Определить в зависимости от варианта задания число контрольных
символов.
2. Определить состав контрольных символов.
3. Произвести запись исходной кодовой комбинации в соответствующем коде.
4. Ввести в кодовую комбинацию, записанную в коде Фаира, пакет искажений длиной, равной пяти, в кодовую комбинацию – в коде БЧХ четырехкратное искажение, а в остальные кодовые комбинации одиночные искажения.
Произвести декодирование кодовых комбинаций и показать, что введение искажений обнаруживается соответствующим кодом.
А) Корреляционный код.
Переводим число 108 в двоичный код:
G(x) = 1101100
В рассматриваемом коде символы исходного кода кодируются повторно. Правило вторичного кодирования таково: если в исходном кодовом слове на какой-либо позиции стоит 0, в новом помехоустойчивом коде на эту позицию записывается пара символов 01, а если в исходном коде была 1, она записывается как 10.
Кодовое слово 1 1 0 1 1 0 0
Корреляционный код 10 10 01 10 10 01 01
Корреляционный код всегда имеет вдвое больше символом, чем исходный. Поэтому его коэффициент избыточности всегда равен 0,5.
.
На приеме ошибка обнаруживается в том случае, если в парных элементах содержатся одинаковые символы, т.е. 11 или 00 (вместо 10 и 01). При правильном приеме вторые (четные) элементы отбрасываются, и остается первоначальная комбинация.
Пусть из канала связи поступила кодовая комбинация F’(x) = 10110110100101. 1101100, т.е. результат указывает, что в принятой кодовой комбинации имеются искажения, обнаруживаются две подряд стоящие 1.
Пусть кодовая комбинация F(x) была искажена помехами и поступила в виде F(x) = 10010110100101, где искаженные символы подчеркнуты. Тогда, отбросив четные элементы, получим 1001100, т.е. искаженные два рядом стоящие элемента не обнаруживаются как ошибка.
Вывод: Код обладает сравнительно высокой помехоустойчивостью, поскольку ошибка не будет обнаружена только в том случае, если будут искажены два рядом стоящие элемента, соответствующе одному элементу исходного кода, т.е. 0 перейдет в 1, а 1 – в 0. Наибольшая эффективность корреляционного кода проявляется при применении его на каналах, у которых вероятность искажения элементов (единиц и нулей) непрерывно меняется и в отдельные интервалы времени и существенно различна.
Б) Код Файра.
Необходимо найти образующий полином и определить общую длину кодовых комбинаций n, а также число контрольных и информационных символов для кода позволяющего исправлять пакеты ошибок длинной bs=4 и обнаружить пакеты ошибок длинной bm=5.
Решение:
Образующий многочлен код Файра P(X)Ф определяется из выражения:
P(X)ф = P(X)( XC+1), где P(X) – неприводимый многочлен степени:
t ≥ bs,
принадлежащий показателю степени:
Принимаем t = 4.
Показатель степени будет равен 15.
Тогда:
С ≥ bs +bm - 1,
C ≥ 4 + 5 – 1,
C = 8.
Неприводимый многочлен P(x) выбирается согласно значению t – это многочлен четвертой степени P{X}=x4+x+1.
Тогда P(X)ф = (x4+x+1)·(x8+1)=x12+x9+x8+x4+x+1.
Длина слова n равна наименьшему общему кратному чисел E и C, т.к. только в этом случае многочлен xn+1 делится на P(X)ф без остатка. При n* n никакой многочлен xn* + 1 не делится на P(X)Ф. Таким образом n = НОК(Е,С) = 15*8 = 120.
Число контрольных символов r = 4 + 8 = 12.
В итоге получаем циклический код (120, 108).
Избыточность такого кода невелика R = 12/120 = 0,1.
Дальнейшая процедура декодирования такая же, как и для циклического кода с d=3.
P(X)ф=1001100010011.
Исходный код равен G(x)= 1101100.
Умножим G(x) на xr, получим G(x)·x12=1101100*1*1012.
Разделив полученный результат на P(x)ф получаем остаток R(x):
1101100000000000000│1001100010011
1001100010011 │11001
1000000100110
1001100010011
1100110101000
1001100010011
1010101110110
1001100010011
110011001010= R(x)
F(x)=G(x)*xr+R(x)
F(x)= 1101100110011001010.
Проверим, информация передалась без искажения, т.е.
, (R(x)=0)
1101100110011001010│1001100010011
1001100010011 │1001
1000001000000
1001100010011
1101010011010
1001100010011
1001100010011
1001100010011
0
Значит, информация передалась без искажения.
Введем пятикратное искажение и узнаем, определится ли ошибка:
, (R*(x)≠0)
F*(x)= 1101000010000001110│1001100010011
1001100010011 │11000
1001000000110
1001100010011
1000101010111
1001100010011
10010001000=R*(x)
Т.к. R*(x)≠0, значит, ошибка определяется.
Вывод: Коды Файра – это циклические коды, обнаруживающие и исправляющие пакеты ошибок. Непременным условием пакета данной длины b является поражение крайних символов и нахождение между ними b – 2 разрядов. Коды Файра могут исправлять пакет ошибок длиной bs и обнаруживать пакеты ошибок длиной bm.
В) Код БЧХ.
При заданном n=21 должно соблюдаться одно из равенств:
2h -1 = n;
(2h -1)/ q = n,
где h>0 – целое число, q – нечетное положительное число, при делении на которое n получается целым нечетным числом.
Откуда h=6 , а q = 3.
Кодовое расстояние определяют согласно d=2*s+1=5. Из таблицы прил. 2 выписываем два минимальных многочлена, номера которых определяют следующим образом: берут многочлены M1(X) и M3(X) и их индексы умножают на q=c=3 . В результате получаем M3(X) и M9(X). Таким образом:
откуда 9 = r , а 12 = k . Получаем код БЧХ (21 , 12) .
Дальнейшие этапы кодирования аналогичны рассмотренным для циклических кодов с d < 4.
=1110110011.
Исходный код равен G(x)= 1101100.
Умножим G(x) на xr, получим G(x)*x9 =1101100*1*109.
Разделив полученный результат на P(x) получаем остаток R(x):
1101100000000000│1110110011
1110110011 │10101
1101001100
1110110011
1111111100
1110110011
100111100= R(x)
F(x)=G(x)·xr+R(x).
F(x)=1101100100111100
Проверим, информация передалась без искажения, т.е.
, (R(x)=0)
1101100100111100│1110110011
1110110011 │10101
1101011111
1110110011
1110110011
1110110011
0
Значит, информация передалась без искажения.
Введем четырёхкратное искажение и узнаем, определится ли ошибка.
, (R*(x)≠0)
1100000110101100│1110110011
1110110011 │1011111
1011010110
1110110011
1011001011
1110110011
1011110001
1110110011
1010000100
1110110011
1001101110
1110110011
111011101
Т.к. R*(x)≠0, значит, ошибка определяется.
Вывод: Циклический код с d ≥ 5 позволяют обнаруживать и исправлять любое число ошибок. Заданными при кодировании является число исправляемых ошибок s и длина слова n . Число информационных символов k и контрольных символов r , а также состав контрольных символов подлежат определению.