Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций по ТК.doc
Скачиваний:
323
Добавлен:
13.02.2016
Размер:
4.08 Mб
Скачать

Декодирование информации циклическими кодами

Идея обнаружения ошибокв принятом ЦК заключается в том, что при отсутствии ошибок закодированная кодовая комбинация делится без остатка на образующий полином, при этом контрольные символы отбрасываются. Принятая кодовая последовательность может быть представлена какF(x)=F(x)+E(x), где Е(х) – полином ошибок.

Пример: код (7,4); F(x)=1101001; P(x)=1011.

Пусть придет F(x)=1101011. ПоделимF(x)/Р(х).

1101011 | 1011

10111111

1100

1011

1111

1011

1001

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

10111111

1101

1011

1101

1011

1100

1011

111=R(x)

  1.  Вес 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

0111010

 Осуществляем 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

10111011

1100

1011

1110

1011

101=R0(х)

2) Определим остаток от деления R1(х)=F(x)/Р(х)

1011111 | 1011

10111000

0001

0000

0011

0000

0111

0000

111=R1(x)

Т.к. R1≠R0сдвигаемF(x) влево на одну позицию, получаемF(x)=0111111

3) Определим остаток от деления R2(х)=F(x)/Р(х)

0111111 | 1011

1011110

1001

1011

0101

0000

101=R2(x)

R2=R0F(x)=F(x)Е(х)=0111111

1000000

1111111