Материал: 1740

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

111

му h(x) (1 xn ) / g(x). Остальные (r–1) строк получают в ре-

зультате циклического сдвига предыдущей. Для выполнения необходимого для линейных блочных кодов условия ортогональности матриц G и Н строки матрицы Н следует записать в обратном порядке (справа налево). Предлагается самостоятельно убедиться в том, что схема кодера на рис. 7.3 выполнена в соответствии с этой системой уравнений;

3) при представлении циклических кодов матрицами G и Н не получают выигрыша по сравнению с другими кодами. Существенный выигрыш в упрощении схем кодера и декодера имеет место при представлении циклических кодов, базирующемся на их основном свойстве: полином V(x) разрешенной кодовой комбинации делится на производящий полином g(x) без остатка.

При заданном g(x) получение полиномов, соответствующих КК, а, следовательно, и самих КК практически выполняется по следующему алгоритму:

-полином информационной комбинации a(х) умножают на хr. Это эквивалентно приписыванию r нулей слева;

-полученный полином хra(х) делят на производящий полином g(х) и получают частное (какое, не имеет значения) и остаток R(x). Этот остаток R(x) и есть полином, определяющий значения проверочных разрядов;

-(n–k) символьную комбинацию остатка R(x) приписывают

вкачестве избыточной части к кодируемой информационной последовательности a(х) (ставят полученную комбинацию остатка R(x) на место нулей) и в результате получается n- символьная КК циклического кода

V (x) xr a(x) R(x).

(7.13)

Очевидно, что V(x) делится на полином g(x) без остатка. Необходимо иметь в виду, что применительно к цикличе-

ским кодам принято, хотя это вовсе не обязательно, считать информационными символами последние k символов (соответствующих высшим степеням х), а проверочными – первые r символов. При обработке КК начинают с информационных символов, т.е. считывание КК идет справа налево.

Технически операцию деления полиномов, т.е. вычисление остатка R(x), можно выполнить в схеме, содержащей регистры

112

сдвига с обратными связями и встроенными сумматорами по mod 2.

В данной работе изучается циклический (7,4)-код с кодовым расстоянием dкод =3. В качестве производящего выбран по-

лином g(x) 1 x x3 Другим производящим полиномом для

(7,4)-кода является полином g(x)

1 x2 x3

[1]. Проверочный

полином h(x), соответствующий

полиному

g(x) 1 x x3 ,

предлагается найти самостоятельно.

Схема кодера представлена на рис.7.3 и состоит из регистра сдвига RG и сумматоров по mod 2. Процесс кодирования выполняется за п тактов. При подаче первых четырех тактовых импульсов (ТИ) в четыре ячейки регистра сдвига записываются информационные символы a1,...,a4. В течение следующих трех тактов с выхода кодера выводятся символы a1,a2,а3 и одновременно вычисляются и вводятся в регистр проверочные символы b5 ,b6 ,b7 Вывод символов а4,b5,b6,b7 осуществляется в следующие четыре такта.

ТИ

a4,a3,a2,a1oПВых.

o

М2М2

Рис. 7.3. Схема кодера циклического кода (7,4)

2.4. Декодирование циклических кодов

В основе операции декодирования лежит основное свойство КК: полином разрешенной комбинации V(x) делится на производящий полином g(x) без остатка. При декодировании производят деление полинома V(x), соответствующего принятой КК, на производящий полином в течение n тактов. Если остаток от деления R(x)=0, то считают, что ошибки нет; в противном случае R(x) 0 имеет место ошибка, которая не только обнаруживается, но и может быть исправлена.

113

Технически вычисление остатка R(x) производится с помощью регистра с обратными связями и сумматорами по mod2, выполняющего деление полиномов.

В соответствии с выбранным производящим полиномом g(x) регистры с обратными связями строят по следующим правилам [4 :

1)число каскадов регистра выбирают равным степени производящего полинома r;

2)количество сумматоров по mod2 берется на единицу меньше числа ненулевых членов образующего полинома;

3)входы ячеек регистра обозначают хi, i=0,1,…,r, вход первой – это х0, выход последней ячейки обозначается как хr;

4)сумматоры по mod2 устанавливаются на входах тех ячеек, для которых в формуле g(x) коэффициент при хi имеет ненулевое значение;

5)выход последней ячейки соединяется с одним из входов сумматоров;

6)выходы предыдущих ячеек соединяются со входами последующих через сумматоры или без них в зависимости от того, установлены они между ячейками или нет.

Схема

декодера для используемого в работе полинома

g(x) 1 x

x3 показана на рис.7.4. Декодирование осуществ-

ляется в два этапа: обнаружение ошибок; исправление ошибок.

 

К

 

ТИ

s7,…,s1 o

 

 

М2

М2

 

 

o

o

o

А6

o

 

 

&

 

 

 

 

000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А7 o

 

&

 

 

 

 

 

 

 

 

 

 

100

Рис. 7.4. Схема декодера циклического кода (7,4)

2.5. Обнаружение ошибок

114

В исходное (нулевое) состояние регистр сдвига приводится импульсами сброса, а затем в течение семи тактовых импульсов (ТИ) в декодер вводятся семь символов принятой КК.

Если и итоге в ячейках регистра окажется записанной комбинация 000, то есть остаток R(x)=0, считается, что в принятой КК ошибок нет (или ошибка такой кратности, при которой передаваемая КК превратилась в другую разрешенную КК). Это состояние индицируется появлением импульса в точке А6 на выходе схемы совпадения 000.

Если остаток R(x) 0, т.е. содержимое регистра отлично от нуля, что свидетельствует о наличии ошибки, это индицируется отсутствием импульса в точке А6.

2.6. Исправление ошибок

В основе метода исправления ошибок лежит однозначная связь получаемого остатка с номером искаженного символа и его независимость от передаваемой КК. Такая связь существует, если кратность ошибки q (dкод–1)/2.

Значения коэффициентов остатка, соответствующие различным комбинациям однократных ошибок, могут быть получены путем деления произвольной КК, например, нулевой, содержащей один искаженный разряд, на производящий полином g(х) с помощью того же регистра с обратной связью в течение семи тактов. Студенту предлагается вычислить остатки и заполнить таблицу 7.1.

Таблица 7.1

Комбинации остатков

Ошибочный

Вектор

Коэффициенты остатка

символ

ошибок

(состояния триггеров)

 

 

Т1

Т2

Т3

 

 

 

 

 

0 (нет ошибок)

0000000

0

0

0

s1

0000001

1

0

1

s2

0000010

. . .

. . .

. . .

. . .

. . . . .

 

 

 

s7

1000000

1

0

0

115

Как следует из табл. 7.1, между комбинациями остатков и искаженными символами (комбинациями ошибки) существует взаимно-однозначное соответствие. Следовательно, можно выработать сигналы исправления ошибок и произвести исправление.

Когда установлен факт наличия ошибки, то есть R(x) 0, то этот остаток представляет собой одну из трехразрядных двоичных комбинаций, исключая нулевую. Если остаток равен 100, то ошибка в первом символе. В противном случае вход декодера отключают и производят циклический сдвиг коэффициентов остатка в следующие семь тактовых импульсов – это цикл исправления ошибки. Можно убедиться, что номер ошибочного символа равен номеру шага, при котором в регистре формируется комбинация 100. Настроив селектор на эту заранее известную комбинацию, можно выработать сигнал исправления (индикация этого момента производится появлением импульса в точке А7).

В лабораторном макете декодирование на этом этапе заканчивается.

Итак, принятая из канала связи комбинация V поступает одновременно в регистр с обратными связями для деления на g(х) и на вход приемного регистра. В течение первых n=7 тактов КК записывается в приемный регистр, а в регистре с обратными связями образуется остаток R(x) (цикл обнаружения ошибки). В следующие n=7 тактов КК из приемного регистра поступает на сумматор по mod 2 (цикл исправления ошибки). В момент, когда искаженный символ поступает на сумматор по mod 2, с выхода селектора на второй вход этого сумматора поступает сигнал исправления, поэтому искаженный символ изменяется на противоположный, и его правильное значение записывается в соответствующую ячейку приемного регистра. Одновременно сигнал исправления разрывает цепь обратной связи в регистре и его устанавливают в нулевое состояние. Декодер готов к приему очередной КК из канала связи.

Рассмотрим в качестве примера процесс обнаружения и исправления ошибки для циклического кода (7,4), заданного производящим полиномом g(x) 1 x2 x3 .