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,a1
o
П









Вых.
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 .