Декодирование информации циклическими кодами
Идея обнаружения ошибок в принятом ЦК заключается в том, что при отсутствии ошибок закодированная кодовая комбинация делится без остатка на образующий полином, при этом контрольные символы отбрасываются. Принятая кодовая последовательность может быть представлена как F¢(x)=F(x)+E(x), где Е(х) – полином ошибок.
Пример: код (7,4); F(x)=1101001; P(x)=1011.
Пусть придет F¢(x)=1101011. Поделим F¢(x)/Р(х).
1101011 | 1011
1011 1111
1011
1011
1011
010=R(x) – наличие остатка свидетельствует об ошибке.
Идея обнаружения и исправления ошибок осуществляется несколькими вариантами декодирования ЦК:
I. Алгоритм декодирования ЦК с использованием весовой оценки остатка при делении F¢(x)/Р(х).
1) Вычисляем R(x)= F¢(x)/Р(х), если R(x)=0, то F¢(x)= F(x)
если R(x)≠0 Þ произошла ошибка и следует процедура исправления.
2) Определяем вес R(x).
Если WR(x)≤tиспр, то принятая комбинация F¢(x)ÅR(x)=F(x).
Если WR(x)>tиспр, то производится циклический сдвиг на один цикл влево. Полученную комбинацию снова делим на Р(х). Если теперь WR(x)≤tиспр, то циклически сдвинутую кодовую последовательность суммируем по модулю два с R(x) и сдвигаем в обратном направлении на один сдвиг и получаем F(x). А если WR(x)>tиспр, то производим дополнительный сдвиг влево и делим полученную комбинацию на Р(х) и снова проверяем и т.д.
Пример: Q(x)=1001; P(x)=1011; F(x)=1001110; F¢(x)=1101110; tиспр=1 двоичный символ.
1) Вычисляем R(x)= F¢(x)/Р(х)
1101110 | 1011
1011 1111
1011
1011
1011
111=R(x)
2) · Вес R(x) (количество единиц)> tиспр: WR(x)=3, tиспр=1, WR(x)>tиспр (3>1)
Произведем циклический сдвиг F¢(x) на один цикл влево F¢¢(x)=F¢(x)×х=1011101
Вычисляем R(x)= F¢¢(x) /Р(х)=1011101/1011=101
· WR(x)=2>tиспр=1
Произведем циклический сдвиг F¢¢(x) на один цикл влево F¢¢¢(x)=F¢(x)×х2=0111011
Вычисляем R(x)= F¢¢¢(x)/Р(х)= 0111011/1011=001, WR(x)=1=tиспр.
· Циклически сдвинутую кодовую последовательность F¢¢¢(x) суммируем по модулю два с R(x)
F¢¢¢(x)ÅR(x)=0111011
. 001
· Осуществляем 1-ый циклический сдвиг вправо: 0011101
2-ой циклический сдвиг вправо: 1001110= F(x).
II. Алгоритм декодирования на основе цикличности кода.
При сдвиге разрешенной кодовой комбинации на любое число разрядов влево или вправо также получается разрешенная кодовая комбинация. Это свойство является основным свойством циклического кода.
Рассмотрим алгоритм на примере: F¢(x)=1011111, F(x)=1111111, Р(х)=1011
1) Определим остаток от деления соответствующий наличию ошибки в старшем разряде.
Е6(х)=1000000
Е5(х)=0100000
Е4(х)=0010000
Е3(х)=0001000
Е2(х)=0000100
Е1(х)=0000010
Е0(х)=0000001
Если ошибка произошла в k-ом символе, то Еi(х)/Р(х) не зависит от вида переданной информации, а значит от кодовой последовательности и вида передаваемой информации.
R¢(x)=Е6(х)/Р(х)=1000000 | 1011
1011 1011
1011
1011
101=R0(х)
2) Определим остаток от деления R1(х)=F¢(x)/Р(х)
1011111 | 1011
1011 1000
0000
0000
0000
111=R1(x)
Т.к. R1≠R0 Þ сдвигаем F¢(x) влево на одну позицию, получаем F¢¢(x)=0111111
3) Определим остаток от деления R2(х)=F¢¢(x)/Р(х)
0111111 | 1011
1011 110
1011
0000
101=R2(x)
R2=R0 Þ F(x)=F¢¢(x)ÅЕ(х)=0111111
1000000
Дата добавления: 2019-04-03; просмотров: 404;