Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги / Теория электрической связи. Помехоустойчивая передача данных в информационно-управляющих и телекоммуникационных системах модели, алгоритмы, структуры.pdf
Скачиваний:
12
Добавлен:
13.11.2023
Размер:
24.95 Mб
Скачать

6.2.1.2. Кодирующие устройства БЧХ-кодов, построенные при помощи порождающего полинома g(x)

Кодирующее устройство (кодер) предназначено для выполнения сле­ дующих функций.

1.Прием и промежуточное хранение информационной части и(х).

2.Вычисление избыточных символов.

3.Формирование полинома V(x) и передача его в канал связи. Основным элементом кодирующего устройства является регистр

сдвига с линейной логической обратной связью (РСЛЛОС). Способ по­ строения РСЛЛОС зависит от вида полинома, при помощи которого стро­ ится кодер.

Структурная схема регистра сдвига в рассматриваемом случае опре­ деляется порождающим полином g(x) и выглядит следующим образом (рис. 6.2).

Рис. 6.2. Структурная схема устройства деления на полином g(x*)

На рис. 6.2 gi - коэффициенты порождающего полинома g(x) для конкретного кода. Если коэффициент gj=0 1 не входит в порождающий полином g(x)), то /-й элемент обратной связи и соответствующий ему сум­ матор отсутствуют. Количество элементов памяти (ЭП) равно к - степени порождающего полинома g(x). Элемент памяти Д соответствует х\

Схема работает синхронно под действием тактовых импульсов. Со­ стояние элемента памяти в текущий момент времени определяется состоя­ нием связанных с ним выходов элементов памяти в предыдущий момент времени (фронт предыдущего синхроимпульса), а также входом схемы

втекущий момент времени. Для простоты изложения подсистема синхро­ низации регистра по циклам и тактам считается идеальной и не отражается

врассматриваемых ниже структурах.

Функции возбуждения для элементов памяти могут быть представ­ лены в следующем виде:

D; = z r ; e * ( .я ; : ; ,, = 0 4

Представленная схема осуществляет деление информационного по­ линома W(JC) на порождающий полином g(*). Полином и(х) подается на вход схемы последовательно, начиная со старшего разряда, при этом про­

исходит его предварительное умножение на хк К окончанию деления, т.е. к л-му такту работы схемы, в регистре Д)-.-Дм формируется остаток, ко­ торый и является избыточной частью для заданного информационного вектора.

Пример 6.10. Построить схему РСЛЛОС для циклического кода (7,4,3) и порождающего полинома g(x) = 1 Ф х2 0 хъ Промоделировать ра­ боту схемы для информационного полинома м(х)=1.

С учетом параметров кода и вида порождающего полинома g(x) схе­ ма будет выглядеть следующим образом (рис. 6.3).

8 ъ

и(х)

Рис. 6.3. Структурная схема устройства деления на полином g(x) = 1 Ф х2Ф л:3

Функции возбуждения для элементов памяти:

D'0 =u‘ ® D 'f1, о; = D'0-', D2' = D[-' 0 D'{

Промоделируем работу кодера и занесем результаты в таблицу пере­ ходов и выходов (табл. 6.3).

 

 

 

Таблица 6.3

№ такта

и

Do

А

А

 

 

0

0

0

1

0

0

0

0

2

0

0

0

0

3

0

0

0

0

4

1

1

0

0

5

0

0

1

0

6

0

0

0

1

7

0

1

0

1

Моделирование показало, что к такту с номером л = 7 в элементах памяти регистра сформировалась избыточная часть /*(*) = 1 Ф х2

Кодирующее устройство, кроме задачи расчета избыточной части, должно еще сформировать полином У(х) и передать его в канал связи. Из­ быточная часть формируется к w-му такту вследствие того, что для деле­ ния информационный полином и(х) должен быть умножен на величину л;* Поэтому необходимо сформировать задержку передачи в канал связи ин­ формационного вектора на к тактов, тогда к к + т = л-му такту информа­ ционный вектор будет выдан в канал связи, а избыточная часть - рассчи­

тана и размещена в регистре. После этого необходимо организовать выда­ чу избыточной части в канал связи, прекратив процедуру деления. Струк­ турная схема кодирующего устройства, работающего по описанному алго­ ритму, приведена на рис. 6.4.

ЭЗ - элемент задержки, К|, к2 - ключи, У - управление

Элемент задержки предназначен для организации временной за­ держки выдачи информационного вектора в канал связи на к тактов. Ключ К| открыт в течение первых п тактов для активизации обратной связи, за­ крыт в течение последующих к тактов для разрыва обратной связи. Ключ к2 закрыт в течение первых п тактов для отключения регистра от выхода, открыт в течение последующих к тактов для выдачи избыточной части в канал связи. Ключи переключаются по сигналу управления У: 1 - К| от­ крыт, к2 закрыт, 0 —К| закрыт, к2 открыт.

Пример 6.11. Построить схему кодирующего устройства для цикли­ ческого кода (7,4,3) и порождающего полинома g(jc) = 1 0 x 20 x 3 Промо­ делировать работу схемы для информационного полинома и(х) = 1.

С учетом параметров кода и вида порождающего полинома g(*) схе­ ма кодера будет выглядеть следующим образом (рис. 6.5).

Рис. 6.6. Структурная схема кодирующего устройства БЧХ-кода (7,4,3)

Функции возбуждения для элементов памяти:

D0' = и' Ф D '-', D[ = , D2' = D[~' ® D'{'

Промоделируем работу кодера и занесем результаты в таблицу пере­ ходов и выходов (табл. 6.4).

 

 

 

 

 

Таблица 6.4

№ такта

U

Do

А

D 2

V

 

 

 

0

0

0

 

 

1

0

0

0

0

 

 

2

0

0

0

0

 

 

3

0

0

0

0

 

У = 1:

4

1

1

0

0

0

К| открыт,

5

0

0

1

0

0

к2 закрыт

6

0

0

0

1

0

 

7

0

1

0

1

1

 

8

0

0

1

0

1

У = 0:

9

0

0

0

1

0

к, закрыт,

10

0

0

0

0

1

к2 открыт

Моделирование показало, что к такту с номером и = 7 в элементах памя­ ти регистра сформировалась избыточная часть r{x) = 1 ® х2, а к такту с номером п + к= 7 + 3 = 10 в канал связи передан полином V(x) = 1 Фх20 х 3

Недостатком рассмотренной схемы кодирующего устройства явля­ ется наличие временной задержки на к тактов и, соответственно, наличие дополнительного элемента задержки. Задержка объясняется тем, что, как уже говорилось выше, в течение первых к тактов происходит умножение информационного полинома и(х) на величину хк. Данную проблему уда­ лось бы решить, подавая в схему информационный полином м(.т), предва­ рительно умноженный на величину хк Это можно сделать, подавая поли­ ном и{х) не на вход первого элемента памяти, соответствующего младшей (нулевой) степени, а на выход последнего, соответствующего к-и степени. Схема такого устройства приведена на рис. 6.6.

Функции возбуждения для элементов памяти могут быть представ­ лены в следующем виде:

D \ = ф g , • (£>;-' 0 « ' у = Т Х й ,

Ключ Ki открыт в течение первых т тактов для активизации обрат­ ной связи, закрыт в течение последующих к тактов для разрыва обратной связи. Ключ к2 закрыт в течение первых т тактов для отключения регистра от выхода, открыт в течение последующих к тактов для выдачи избыточ­ ной части в канал связи. Ключи переключаются по сигналу управления У: 1 - Kj открыт, к2 закрыт, 0 - К| закрыт, к2 открыт. Расчет избыточной части по предварительно умноженному на хк информационному полиному и(х) осуществляется за первые т тактов работы схемы.

Пример 6.12. Построить схему кодирующего устройства с пред­ варительным умножением на хк для циклического кода (7,4,3) и порож­ дающего полинома g(*) = 1 0 х2 0 х3 Промоделировать работу схемы для информационного полинома и(х) = 1.

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

Рис. 6.7. Структурная схема кодирующего устройства БЧХ-кода (7,4,3) с предварительным умножением на дг3

Функции возбуждения для элементов памяти:

£>' = и' Ф D '{', D ; = DQ ', D' = D[-' Ф D'{' Ф M'

Промоделируем работу кодера и занесем результаты в таблицу пере­ ходов и выходов (табл. 6.5).

jvfo такта

и

 

 

 

Таблица 6.5

Do

Dl

D 2

V

 

 

0

0

0

0

 

 

1

0

0

0

0

У = 1:

2

0

0

0

0

0

к, открыт,

3

0

0

0

0

0

к2 закрыт

4

1

1

0

1

1

 

5

0

0

1

0

1

У = 0:

6

0

0

0

1

0

Ki закрыт,

7

0

0

0

0

1

к2 открыт

Моделирование показало, что к такту с номером т = 4 в элементах памяти регистра сформировалась избыточная часть фс) = 1 0 х2, а к такту с номером п = 7 в канал связи передан полином У(х) = 1 Ф х2Ф х3

Достоинством рассмотренной схемы кодирующего устройства явля­ ется отсутствие временной задержки и, соответственно, отсутствие допол­ нительного элемента задержки.

Способы построения кодирующих устройств для кодов с четным минимальным кодовым расстоянием не имеют принципиальных отличий от рассмотренных, за тем исключением, что для построения РСЛЛОС применяется порождающий полином g(x) (l ® JC).

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

6.2.2. Кодирование при помощи проверочного полинома /г(JC )

6.2.2.1. Общие принципы кодирования

Проверочный полином h(x) рассчитывается путем деления полинома (*'-1) на порождающий полином g(x) и может быть представлен в сле­ дующем виде:

т

 

А(*) = 1 Л * '

(6-23)

/=0

 

Для кодирования при помощи проверочного полинома h(x) необхо­ димо построить проверочную матрицу Я, которая образуется за счет цик­ лического сдвига коэффициентов проверочного полинома h(x)\

(6.24)

где hi - коэффициенты проверочного полинома h(x).

По известному соотношению УНТ=0 можно построить к уравнений, которые образуются путем умножения вектора V на столбцы транспониро­ ванной матрицы Нт(строки матрицы Н). Но нумерация элементов вектора начинается с младших разрядов, а строк матрицы Н - со старших. Поэтому для удобства произведем перенумерацию элементов вектора К, выразив при этом все элементы полинома через коэффициенты а,:

(6.25)

Таким образом, после перенумерации коэффициент ап-}соответству­ ет младшему разряду вектора, а коэффициент а0- старшему. С учетом вы­ полненных действий выпишем уравнения:

(6.26)

hn-(k+i) ® ••• ® а\ ' hn-(k-i) ® ао *К-(к-\) ” 0-

Проверочный полином И(х) имеет максимальную степень /и, поэтому коэффициенты А, для i>m равны 0. С учетом этого уравнения можно пред­ ставить в следующем виде:

г

© ...Ф а,

А, Ф а0

Л0 =0,

 

’К © аот

АтЧ Ф ...Ф а2

А, Фа,

Л0 =0,

 

 

 

(6.27)

«„♦*-1 - К Ф в « м

- К - \ ® - ® « *

Л фа*-1 А = 0 -

Уравнения можно представить в следующем виде:

m

(6.28)

1=0

где j = 0,А -1.

Согласно проведенной перенумерации символы с а0 по ат.\ - ин­ формационные, а с ат по = ап^ - избыточные. Поэтому в первом уравнении имеется только одно неизвестное (aw), во втором - два (ат и а„,+1) и т. д. При этом, определив в первом уравнении неизвестное ат и подставив его во второе, получим во втором уравнении тоже одно неиз­ вестное. Последовательно вычисляя избыточные символы в каждом урав­ нении, определим все элементы избыточной части. Можно записать ре­ куррентную формулу вычисления избыточных символов:

т—9

/ — ai+jhi

(6.29)

Для обычного представления вектора циклического систематическо­ го кода после вычисления избыточных символов можно провести обрат­ ную перенумерацию.

Пример 6.13. Для циклического кода (7,4,3), информационного по­ линома и(х) = 1 и проверочного полинома h(x) =1 0 х2 0 хъ0 хАрассчитать избыточные символы.

Выполним перенумерацию символов кода, в результате младший разряд будет иметь индекс 6, а старший разряд - 0. Вычисления произве­ дем по рекуррентной формуле:

4-1

а4-7 = 1>,чЛ ’

1=0

a4=ayh$@arh2®a] h\(&ao-ho=a3(Ba2®ao=\ 0 00 0=1, as=ayh}®ayh2®arh\(Ba]-h0=a4(Ba}(Bai:=\ 0 10 0= 0, a6=ayh2&ayh2®ayh](Barho=as(Ba4<Ba2=:0 0 10 0= 1.

Уравнения можно упростить, потому что коэффициенты провероч­

ного полинома Л(х)

= Л2 = h0 = 1, a h\ - 0.

Рассчитанную избыточную часть можно представить в виде поли­

нома /*(*) = 1 0 х2

Очевидно, что результаты расчетов избыточной части

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

Кодирование при помощи проверочного полинома h(x) для кодов с четным минимальным кодовым расстоянием проводится по указанному алгоритму, за исключением одного нюанса. Он связан с видом провероч­ ного полинома, который, как известно, вычисляется по порождающему

полиному £(*)•( 1 0 х). Все остальные вычисления с применением полу­ ченного проверочного полинома проводятся аналогично.

Кодирование при помощи порождающего полинома h(x) для укоро­ ченных циклических кодов имеет определенные отличия. Это объясняется тем, что количество информационных символов для неукороченного и полученного от него укороченного циклического кодов, как известно, не совпадает. Укорочению подвергается информационная часть, что влияет на перенумерацию, поскольку при укорочении считается, что старшие i разряды равны 0 (/ - степень укорочения), что влияет на смещение нуме­ рации. С учетом сказанного рекуррентная формула может быть записана в следующем виде:

т-]+г

(6.30)

Ш+Jj ~ ^ai+j-t^i

 

где t - степень укорочения.

Пример 6.14. Для укороченного БЧХ-кода (5,2,3), информационного полинома и{х) = 1 и проверочного полинома h(x) = 1 0 х10 хъ0 хЛрассчи­ тать избыточные символы.

Выполним перенумерацию символов кода, в результате младший разряд будет иметь индекс 4, а старший разряд - 0. Вычисления произве­ дем по рекуррентной формуле

2- 1+2

й 2 +/ = Х Л1+У-2^/’

/=0

где т = 2; / = 2. Коэффициенты я, с отрицательными значениями индексов считаются равными 0.

Уравнения будут выглядеть следующим образом:

а2=а)-/1з®ао /12=а\®ао=\ 0 0= 1, ay=ayh^a\'h2®aQ'h\=a2®a\=\ 0 1=0, a4=ayh3(Barh2®a]-h\(BaQ ho=a3(Ba2®ao=0 0 10 0= 1.

Уравнения можно упростить, потому что коэффициенты провероч­ ного полинома h(x) Л3 = h2 = /а0 = 1, а Л, = 0.

Рассчитанную избыточную часть представим в виде полинома фс) = 1 Ф х2 Очевидно, что результаты расчетов избыточной части для не­ укороченного и укороченного кодов для одинаковых значений информа­ ционного вектора совпадают.

6.2.2.2.Кодирующие устройства БЧХ-кодов, построенные при помощи проверочного полинома h(x)

Структурная схема регистра сдвига в рассматриваемом случае опре­ деляется проверочным полином А(х), а также способом вычисления прове­ рочных символов по рекуррентной формуле (рис. 6.8).

^/п-1 &т-2 @0

Рис. 6.8. Структурная схема кодирующего устройства БЧХ-кода при помощи проверочного полинома h(x)

На рис. 6.8 hi - коэффициенты проверочного полинома h(x) для кон­ кретного кода. Если коэффициент А/=0 (У не входит в проверочный полином h(x)\ то /-Й элемент обратной связи отсутствует. Количество элементов памяти равно т - степени проверочного полинома g(x). Элемент памяти Д соответст­ вует У"1(с учетом перенумерации). Начальная установка регистра производит­ ся символами информационного полинома и(х) 9 причем старший разряд зано­ сится в элемент Д>, а младший - в Д н .

Схема работает синхронно, под действием тактовых импульсов. Со­ стояние элемента памяти в текущий момент времени определяется состоя­ нием связанных с ним элементов памяти в предыдущий момент времени (фронт предыдущего синхроимпульса). Для простоты изложения связи подсистемы синхронизации подразумеваются, но не указаны. Функции возбуждения для элементов памяти могут быть представлены в следую­

щем виде:

 

 

 

 

А

= Д ;1',/ = 0..ет-2,

 

 

D'

. = Лп • D'r' 0

h ■D[~' 0 ... ФА

• D'"1.

m — I 0 0

I I

Я1-1

m - 1

На элементе Д,_, организуется вычисление по рекуррентной форму­ ле символов избыточной части a^j. Выходом схемы является выход эле­ мента Д).

Пример 6.16. Построить схему кодирующего устройства при помощи проверочного полинома h(x) для циклического кода (7,4,3)

и проверочного полинома h(x) = 1 0 х2 0 дг3 0 JC4. Промоделировать работу схемы для информационного полинома и(х) = 1.

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

#4+j

V(x)

аз

Дг

а\

QQ

Рис. 6.9. Структурная схема кодирующего устройства БЧХ-кода (7,4,3) при помощи проверочного полинома h(x) = 1 0 лг2 0 jt3 0х4

Функции возбуждения для элементов памяти:

D0' = D [-\D\ = D‘{ \D [ = D 'i\D [ = D f 0 D '4 Ф D ' 1

Промоделируем работу кодера и занесем результаты в таблицу пере­ ходов и выходов (табл. 6.6).

 

D3

 

D,

Таблица 6.6

№ такта

D 2

Do

V

1

0

0

0

 

 

1

1

1

0

0

0

2

0

1

1

0

0

3

1

0

1

1

0

4

0

1

0

1

1

5

0

0

1

0

1

6

0

0

0

1

0

7

0

0

0

0

1

Моделирование показало, что на такте с номером 1 в элементе памя­ ти Оъ регистра сформировался избыточный символ д4, на такте 2 - а5, на такте 3 - а6, а к такту с номером п = 7 в канал связи передан вектор V (0001101) (полином V(x) = 1 Ф*2Ф*3).

Способы построения кодирующих устройств для кодов с четным минимальным кодовым расстоянием не имеют принципиальных отличий от рассмотренных, за исключением того, что для расчета проверочного полинома h(x) применяется порождающий полином g(x) (10x).

Способы построения кодирующих устройств для укороченных кодов имеют определенные особенности. Они связаны с тем, что для укорочен­ ных кодов уменьшается длина информационной части т, а проверочный полином h(x), соответственно и схема кодирующего устройства, при этом не изменяются. Информационный полином и(х) заполняет регистр, начи­ ная с младших разрядов, а оставшиеся элементы заполняются нулями. Вы­ ходом схемы является уже не элемент Д>, а выход элемента, на который подается символ я0*

Пример 6.16. Для укороченного БЧХ-кода (5,2,3), информационного полинома и(х) = 1 и проверочного полинома h(x) = 1 Ф х2 0 х3 Ф х4 постро­ ить кодер.

Выполним перенумерацию символов кода, в результате младший разряд будет иметь индекс 4, а старший разряд - 0. Вычисления произве­ дем по рекуррентной формуле

2- 1+2

'2+7, = Х > 1+,х Л .

1=0

где т = 2; t = 2. Коэффициенты af с отрицательными значениями индексов считаются равными 0.

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

Рис. 6.10. Структурная схема кодирующего устройства БЧХ-кода (5,2,3) при помощи проверочного полинома Л(дг)= 1 0 х2Ф дг3 Фх4

Функции возбуждения для элементов памяти:

D '0 = D 'f',D\ = D'{',D2‘ = ,£>' =

Ф D'{' Ф Z)'4

Промоделируем работу кодера и занесем результаты в таблицу пере­ ходов и выходов (табл. 6.7).

 

 

 

Таблица 6.7

№ такта

D 2

D,

D0

г/

1

0

0

0

V

1

 

1

1

0

0

0

2

0

i

1

0

1

3

1

0

1

1

1

4

0

1

0

1

0

5

0

0

1

0

1

Моделирование показало, что на такте с номером 1 в элементе памя­ ти £>з регистра сформировался избыточный символ Дг> на такте 2 - я3, на такте 3 - а4, а к такту с номером п = 5 в канал связи передан вектор

К(01101) (полином У(х) = 1 Ф х2 Ф х3).

6.3.Декодирование циклических кодов (БЧХ-кодов)

6.3.1.Принцип синдромного декодирования БЧХ-кодов

Воснову рассматриваемой в данном разделе процедуры деко­ дирования циклических кодов положен алгоритм синдромного деко­ дирования. Это означает, что при приеме кодовой комбинации циклического кода рассчитывается синдром - вектор, который показывает величину (вид) и место ошибки.

Согласно рассматриваемой модели двоичного дискретного канала связи, в котором возможны только ошибки перехода, искажение приводит

кинверсии символа кодовой комбинации. Поэтому возникновение ошибок при передаче кодовой комбинации циклического кода можно представить следующей аддитивной моделью:

Г(х) = И(х)©е(х),

(6.31)

где е(х) - полином ошибки; V(x) - передаваемый полином; V \x ) - приня­

тый полином.

Разделим обе части представленного уравнения на порождающий полином g(jt):

У \х)

У (х)Ф е(х)_ У (х)ф е(х)

g(x)

g(x)

g(x) g(x)

Из представления полинома У(х) известно, что он делится на порож­ дающий полином g(x) без остатка. Назовем синдромом остаток (вычет),

который образуется в результате деления полинома V’(x) на порождающий полином g(x). Согласно правилам операций над вычетами можно оставить только их в обеих частях уравнения. Поэтому выражение можно предста­ вить в следующем виде:

S(x) = e(»mod(g(x)) = re(jc),

(6.32)

где rc{x) - остаток от деления полинома ошибки е(х) на полином g{x).

Из приведенного выражения очевидно, что синдром, рассчитывае­ мый по принятому полиному V'(x)(кодовому вектору V% однозначно оп­ ределяет полином ошибки е{х) {вектор ошибки в), который воздействовал на полином V(x) во время передачи по каналу связи. Поэтому, заранее оп­ ределив возможные значения синдрома для разных вариантов ошибок и сравнив их с рассчитанным по конкретному полиному К'(х) (кодовому вектору V) значением синдрома, можно определить полином ошибки е{х) {вектор ошибки е). Зная полином (вектор) ошибки, можно реализовать корректирующие свойства кода, направив их на исправление и/или обна­ ружение ошибки (стирание сообщения). Очевидно, что при безошибочной передаче (е(я:)=0) синдром тоже равен 0.

Определим, какое количество вариантов полинома ошибки необхо­ димо рассчитать для наиболее сложной корректирующей операции - ис­ правления ошибок. Указанное значение N определяется как

s Гп'

(6.33)

/=1 W

где s - кратность исправляемых ошибок; п - общая длина кодовой комби­ нации циклического кода.

Как известно из верхней границы Хэмминга, количество разных ва­ риантов синдромов (2*) достаточно для однозначного соответствия каж­ дому виду ^-кратной ошибки,

N < 2*.

(6.34)

Оценим сложность устройства, которое реализует сравнение рассчи­ танного значения синдрома и заранее определенных значений rt{x). Количе­ ство элементов должно быть равно N. Поскольку указанное устройство осуществляет функции сравнения и выбора, оно получило название деком­ бинатор синдрома (ДКМС). Поэтому число N в ДКМС определяет количе­ ство ^-входовых конъюнкторов. Таким образом, можно сделать вывод, что декомбинатор синдрома настраивается на полином ошибки.

Пример 6Л7. Рассчитать значения настройки декомбинатора син­ дрома для БЧХ-кода (7,4,3) и порождающего полинома g(x) = 1 0 х2 0 х3

Для указанного кода количество различных синдромов для однократной ошибки определяется как

1. Для полинома ошибки е(х) = 1 (ошибка в самом младшем разряде д0) синдром r0(x) = е(х) mod g(x) = 1 mod (1 Ф х20 х3) = 1 (синдром в век­ торном виде 001).

2. Для полинома ошибки е(х) = х (ошибка в разряде а{) синдром Г\(х) s х mod (1 Ф х2Ф х3) = х (синдром в векторном виде 010).

3. Для полинома ошибки е(х) = х2 (ошибка в разряде а2) синдром r2(x) s х2 mod (1 Ф х2 Ф х3) =х2 (синдром в векторном виде 100).

4. Для полинома ошибки е(х) = х3 (ошибка в разряде а3) синдром r3(x) s х3 mod (1 Ф х2 Ф х3) = 1 Ф х2 (синдром в векторном виде 101).

6. Для полинома ошибки е(х) = х4 (ошибка в разряде а4) синдром г4 (х) =х4 mod (1 Ф х2 Ф х3) = 1 Ф хФ х2 (синдром в векторном виде 111).

6. Для полинома ошибки е(х) = х5 (ошибка в разряде а5) синдром r5(x) s х5 mod (1 Ф х2 Фх3) = 1 Ф х (синдром в векторном виде 011).

7. Для полинома ошибки е(х) = х6 (ошибка в старшем разряде а6) синдром г6 (х) = х6 mod (1 Ф х2 Ф х3) = х Ф х2 (синдром в векторном виде

П О ).

Рассчитаем синдром для полинома V(x) = 1 Ф х2 Ф х3 (информацион­ ный полином и(х) = 1) и полинома ошибки е(х) = х4. В результате воздей­ ствия полинома ошибки принят полином К'(х) = У(х) Ф е(х) = 1 Ф х 2Ф х 3 Фх4. Рассчитаем синдром 5(х):

ф х4 Фх 3Ф х 2 Ф1

X3 ФX2 Ф 1

х4 Фх3 Фх

X

X2 Ф X Ф 1

Как видно из расчета, синдром совпадает с заранее рассчитанным полином г4(х). Это означает, что полином ошибки однозначно определен, и можно исправить ошибочный разряд а4 с помощью элемента (конъюнктора), настроенного на соответствующий вектор синдрома (111).

Принцип синдромного декодирования применим и к обнаружению ошибок. В данном случае необходимо установить только факт возникно­ вения ошибки. Очевидно следующее условие наличия ошибок: S (x)* 0. Поэтому ДКМС в данном случае состоит из одного логического дизъюнктора, который проверяет на равенство 0 полином S(x).

Для синдромного декодирования кода, исправляющего и обнаружи­ вающего ошибки, можно выделить два способа декодирования: общий и частный. Частный способ может быть применен для декодирования ко­ дов Хэмминга с dmin= 4.

В общем случае обнаружение ошибок, приводящее к стиранию ко­ довой комбинации, должно произойти в случае, когда синдром S(x) * 0, и ни один из элементов (конъюнкторов) ДКМС, настроенных для исправления соответствующей ошибки, не сработал.

В рассматриваемом частном случае для построения циклического кода с четным dmin используется переход от ближайшего кода с нечетным dmin. При этом порождающий полином определяется путем домножения полинома g(x) на полином (10х). В данном конкретном случае при деко­ дировании применяется способ раздельного деления. Это означает, что от­ дельно рассчитывается синдром S(x) от деления полинома У'(х) на поро­ ждающий полином g(х) 9 а отдельно - на полином (10дг). Остаток от деле­ ния полинома У'(х) на полином (10х) имеет нулевую степень, то есть он может быть равен либо 0, либо 1. Это означает, что он указывает четность веса полинома У'(х). Синдром S(x) рассчитывается для обнаружения мес­ та ошибки. Рассмотрим варианты соотношения векторов синдрома на примере БЧХ-кода с dm,п = 4 (табл. 6.8).

 

 

Таблица 6.8

V (x) modg(x)

K'W mod(10x)

е(х)

0

0

Ошибок нет

* 0

i

1 -кратная ошибка

* 0

0

2-кратная ошибка

Примечание. Ситуация «*0» означает, что хотя бы один из разрядов полинома синдрома S(x) отличен от 0.

При безошибочной передаче все координаты полинома синдрома равны 0. При однократной ошибке нарушается четность кодового полино­ ма, поэтому такую ошибку можно обнаружить и исправить. При двукрат­ ной ошибке четность кодового полинома не нарушается, поэтому такую ошибку можно обнаружить, а все сообщение - стереть.

В общем случае синдромного декодирования для исправления и/или обнаружения ошибок произвольной кратности в зависимости от реализа­ ции корректирующей способности применяется один из следующих алго­ ритмов:

1. Для кодов, исправляющих ошибки кратности не более s, рассч тываются настройки ДКМС для каждого вида полинома ошибки кратности

не более s. Если после вычисления синдрома по принятому полиному

V'(x) его значение совпадает с одной из настроек ДКМС, то происходит

исправление ошибок путем инвертирования соответствующих разрядов.

2. Для кодов, обнаруживающих ошибки кратности не более г, ДКМС представляет собой устройство проверки равенства 0 значения син­ дрома. Если после вычисления синдрома по принятому полиному У'(х)

ДКМС не обнулился, то происходит ситуация обнаружения ошибок, поэтому все сообщение стирается.

3. Для кодов, исправляющих ошибки кратности не более s и обнару­ живающих ошибки кратности не более г, рассчитываются настройки ДКМС для каждого вида полинома ошибки кратности не более s. Если по­ сле вычисления синдрома по принятому полиному V \x ) его значение

совпадает с одной из настроек ДКМС, то происходит исправление ошибок путем инвертирования соответствующих разрядов. Если значение синдрома не совпало ни с одной настройкой, то происходит ситуация обнаружения ошибок, поэтому все сообщение стирается.

Корректирующая способность кода реализуется на такте, следую­ щем после расчета синдрома, т. е. на такте с номером (п + 1).

6.3.2. Проектирование декодирующих устройств БЧХ-кодов, реализующих принцип синдромного декодирования

6.З.2.1. Общие принципы проектирования декодирующих устройств

Декодирующее устройство (декодер) предназначен для выполнения следующих функций:

1)прием и промежуточное хранение кодового полинома У'(х),

2)вычисление полинома синдрома S(x) 9

3)реализация корректирующих свойств кода (исправление и/или обнаружение ошибок).

Основными элементами декодирующего устройства (рис. 6.11) яв­ ляются: буферный регистр, генератор синдрома, декомбинатор ошибок.

У'(х)

Рис. 6.11. Структурная схема декодирующего устройства БЧХ-кода

Буферный регистр (БР) предназначен для промежуточного хранения кодового вектора. Генератор синдрома (ГС) предназначен для вычисления синдрома S(x) и представляет собой устройство деления на порождающий полином g(x) (регистр сдвига с линейной логической обратной связью). Способ построения ГС зависит от вида порождающего полинома g(x). Де­ комбинатор синдрома (ДКМС) предназначен для анализа вычисленного полинома синдрома S(x), а также выдачи команд на исправление ошибок и/или стирание сообщения. Исправление ошибки в разряде а, осуществля­ ется при формировании «1» на выходе ef и сложении ее по модулю 2 с со­ держимым /-й ячейки буферного регистра. Стирание сообщения происхо­ дит при формировании «1» на выходе Erase.

Рассмотрим структуру декомбинатора синдрома. В зависимости от корректирующих свойств кода он включает следующие элементы:

1. Для кодов, исправляющих ошибки, ДКМС содержит Е логическ конъюнкторов:

где s - кратность исправляемых ошибок; п - длина кодовой комбинации. Каждый конъюнктор имеет к входов (к - разрядность вектора син­

дрома) и настроен на определенную комбинацию синдрома. Каждая ком­ бинация синдрома соответствует определенному полиному ошибки крат­ ности, не превышающей корректирующие способности кода. Поэтому со­ блюдается правило:

2* -1 >Е,

где слагаемое (- 1) присутствует из-за того, что одна комбинация соответ­ ствует нулевому вектору ошибки (это нулевая комбинация синдрома £(*)).

2.Для кодов, обнаруживающих ошибки, ДКМС содержит один ло­ гический дизъюнктор, который формирует сигнал стирания (Erase) в слу­ чае ненулевого значения синдрома £(х).

3.Для кодов, исправляющих и обнаруживающих ошибки, ДКМС содержит Е логических конъюнкторов для исправления ошибок, один конъюнктор и два дизъюнктора - для формирования сигнала стирания.

На выходе каждого элемента, формирующего сигналы исправления или стирания, располагается ключ, который открывается на (л + 1)-м такте

ипозволяет реализовать процедуры исправления или стирания после окон­ чания операции вычисления синдрома.

Основное достоинство рассматриваемого варианта синдромного де­ кодирования: отсутствие задержки, поскольку реализация корректирую­

щих свойств кода происходит на (п + 1)-м такте. Основной недостаток - сложность реализации ДКМС. Подобная структура декодера ЦСК не ис­ пользует рассмотренных ранее алгебраических свойств замкнутости век­ торного пространства циклических кодов. К тому же по сложности она мало чем отличается от декодеров ГСК. Поэтому данный способ реализа­ ции не получил широкого распространения. Область возможного приме­ нения таких декодеров - коды, обнаруживающие ошибки, а также цикли­ ческие коды Хэмминга.

Тем не менее рассмотрим особенности построения декодирующих устройств для разных вариантов БЧХ-кодов.

6.3.2.2. Проектирование декодирующих устройств БЧХ-кодов, исправляющих ошибки

Варианты построения декодирующих устройств для БЧХ-кодов, ис­ правляющих ошибки, проиллюстрируем на примере.

Пример 6.18. Для циклического кода (7,4,3), заданного порождаю­ щим полиномом g(x) = 1 0 х10 х3, построить декодирующее устройство.

Структурная схема декодера для кода (7,4,3) приведена на рис. 6.12.

БР

Рис. 6.12. Структурная схема декодирующего устройства БЧХ-кода (7,4,3)

Настройка декомбинатора синдрома осуществляется по значениям полинома синдрома для разных полиномов ошибки: et{x) = х‘mod g[x). Рас­ четы приведены при рассмотрении принципов декодирования БЧХ-кодов и могут быть сведены в таблицу декодирования синдрома (табл. 6.9).

So

5.

$2

е

Примечание

0

0

0

0

нет ошибок

1

0

0

д ’о

 

0

1

0

а'\

 

0

0

1

а'2

однократная

1

0

1

Д’з

ошибка

1

1

1

 

 

 

1

1

0

a's

 

0

1

1

Д’б

 

На элементы таблицы декодирования синдрома и настраиваются 3-входовые конъюнкторы декомбинатора синдрома.

Вычисление синдрома заканчивается к л-му такту. По полученным значениям принимается решение, и на (л + 1)-м такте, если имеет место однократная ошибка, происходит исправление (инвертирование ошибоч­ ного символа).

Запишем функции возбуждения для элементов памяти в составе РССЛОС:

Z>£ = V " ® D ' { \ D [ =

£>2 = А М ® Я Г 1

Промоделируем работу декодирующего устройства для полинома V(х) = 1 0 х 2Ф х3 при безошибочной передаче и однократной ошибке в старшем разряде (полином ошибки е(х) = дг6). В первом случае полином V'(x) будет равен полиному V(x\ во втором случае - V'(x) = V(x) ф е(х) =

= 1 Ф ДС2 0 JC3 Ф JC6

 

 

 

 

 

 

 

Таблица 6.10

 

О ?1!

 

 

 

е(х)=х>

 

 

 

 

 

 

 

 

D\

 

№ такта

V

Do

Dx

Dr

№ такта

V

Do

Dz

 

 

0

0

0

 

 

0

0

0

1

0

0

0

0

1

1

1

0

0

2

0

0

0

0

2

0

0

1

0

3

0

0

0

0

3

0

0

0

1

4

1

1

0

0

4

1

0

0

1

5

1

1

1

0

5

1

0

0

1

6

0

0

1

1

6

0

1

0

1

7

1

0

0

0

7

1

0

1

1

В первом случае после л-го (7-го) такта регистр генератора синдрома обнулился, что является показателем отсутствия ошибок при передаче. Во втором случае после л-го (7-го) такта регистр генератора синдрома принял значение, соответствующее настройке для ошибки в разряде а6, поэтому на (л + 1)-м (8-м) такте сигнал «1» на выходе е6 исправит ошибоч­ ный символ.

Для упрощения моделирования можно использовать тот факт, что подача на вход полинома V'(x) эквивалентна подаче полинома е(х).

 

 

Таблица 6.11

 

 

II к

 

 

№ такта

е(х)

Do

D t

1

D 2

1

 

0

0

0

1

1

0

0

2

0

0

1

0

3

0

0

0

1

4

0

1

0

1

5

0

1

1

1

6

0

1

1

0

7

0

0

1

1

Как видно из таблицы переходов и выходов, результаты моделиро­ вания для полиномов У'(х) и е(х) полностью идентичны.

6.3.2.3. Проектирование декодирующих устройств БЧХ-кодов, обнаруживающих ошибки

Варианты построения декодирующих устройств для БЧХ-кодов, об­ наруживающих ошибки, проиллюстрируем на примере.

Пример 6.19. Для циклического кода (3,2,2) и проверочного поли­ нома g(x) = 1 построить декодирующее устройство. Данный код обнару­

живает однократную ошибку.

 

 

Можно считать, что код с dm\n = 2 построен от ближайшего кода

с

=1 (3,3,1).

Таблица 6.12

 

 

 

^min 1

^min 2

 

и=3

n=3

 

3

m= 2

 

k= 0

A=1

 

(3,3,1)

(3,2,2)

 

g « = l

^ И 1 Ф * Н 1 © * )

Структурная схема декодера приведена на рис. 6.12.

БР

Рис. 6.12. Структурная схема декодирующего устройства БЧХ-кода (3,2,2)

Таблица декодирования синдрома представлена ниже (табл. 6.13).

 

Таблица 6.13

So

Примечание

0

нет ошибок

1

однократная ошибка

Код, обнаруживающий однократную ошибку, реализует свои кор­ ректирующие свойства за счет контроля изменения четности кодового вектора. Формирование проверочного символа осуществляется путем де­ ления полинома хи(х) на порождающий полином g(x) = 1 Ф х. Поэтому в декодере проверяется четность принятого полинома путем деления на по­ рождающий полином g(jc). Если четность в результате однократной ошиб­ ки нарушается, то значение синдрома S0= 1, что позволяет на (п + 1)-м (4- м) такте выполнить стирание кодовой комбинации в буферном регистре.

В общем случае для кода, обнаруживающего ошибки, генератор син­ дрома строится для соответствующего порождающего полинома g(x\ и расчет синдрома производится аналогично. Декомбинатор синдрома со­ стоит из одного ^-входового дизъюнктора. На входы заводятся соответст­ вующие выходы элементов памяти регистра генератора синдрома (£/), а на выход - ключ, который открывается на (л+1)-м такте.

Таблица декодирования синдрома для рассматриваемого случая вы­ глядит следующим образом (табл. 6.14):

So

..«

Sk.1

Примечание

0

0

0

нет ошибок

 

*0

 

ошибка кратности < г

При безошибочной передаче после л-го такте генератор синдрома обнуляется. При ошибках кратности, не превышающей корректирующие свойства кода, хотя бы один из элементов вектора синдрома будет равен «1». Сработает дизъюнктор, и на (л + 1)-м такте произойдет стирание ко­ довой комбинации в буферном регистре.

63.2.4. Проектирование декодирующих устройств БЧХ-кодов, исправляющих и обнаруживающих ошибки

Варианты построения декодирующих устройств для БЧХ-кодов, об­ наруживающих ошибки, проиллюстрируем на примере кода Хэмминга.

Пример 6.20. Для циклического кода (7,3,4) и проверочного поли­ нома g(x) = 1 Ф х2 0 х3 построить декодирующее устройство. Данный код исправляет однократную и обнаруживает двукратную ошибки.

Рассмотрим частный способ декодирования, в котором используется раздельное деление на полином g(x) и (1 0 х). Обобщая рассмотренные ранее подходы к проектированию декодирующих устройств, структурная схема декодера для БЧХ-кода (7,3,4) так, как показано на рис. 6.13.

Рис. 6.13. Структурная схема декодирующего устройства БЧХ-кода (7,3,4)

Генератор синдрома осуществляет раздельное деление на полином g(х) и на полином (1 Ф х). При этом элементы синдрома 50, S2 опреде­ ляют место возникновения однократной ошибки, а элемент £3 - кратность ошибки, выбирая вариант реализации корректирующих свойств - исправ­ ление ошибки или стирание кодовой комбинации.

Рассмотрим таблицу декодирования синдрома (табл. 6.15):

 

 

 

 

 

Таблица 6.15

So

S,

S2

Si

е

Примечание

0

0

0

0

0

нет ошибок

1

0

0

1

а'о

 

0

1

0

1

а\

 

0

0

1

1

а \

однократная

1

0

1

1

а'з

ошибка

1

1

1

1

 

 

 

1

1

0

1

a's

 

0

1

1

1

а \

двукратная

 

* 0

 

0

 

 

 

 

ошибка

 

 

 

 

 

На строки таблицы декодирования синдрома и настраивается деком­ бинатор синдрома.

Вычисление синдрома заканчивается к л-му такту. По полученным значениям принимается решение на (л+1)-м такте. Если имеет место одно­ кратная ошибка, то происходит исправление (инвертирование ошибочного символа). Если имеет место двукратная ошибка, то происходит стирание кодовой комбинации в буферном регистре.

Запишем функции возбуждения для элементов памяти:

D0' = V" 0 Z>2_1, D{ = D'0~l, D2' = D[~10 D 'ix, D3' = V" 0 D3 X

Промоделируем работу декодирующего устройства для полинома У(х) = 1 0 х Ф х2 0 х4 при однократной ошибке в старшем разряде (поли­ ном ошибки е(х)=х6) и двукратной ошибке (полином ошибки е(х) = 1 Ф х6). В первом случае принятый полином V'(x) определяется как

У'(х) = У(х) Ф Ф е(х) = 1 Ф х Ф х2 Ф х4Ф х6, а во втором случае - как У \х)

= У(х) Ф е(х) = х Ф Ф х2 Ф х4 Ф х6. Результаты моделирования занесем в табл. 6.16.

 

3

II

 

 

 

 

е(х) = 1 0дг6

 

 

 

 

 

 

 

 

 

 

 

№ такта

Г

А

А

А

А

№ такта

V

А

А

А

А

1

1

0

0

0

0

 

 

0

0

0

0

1

0

0

1

1

1

1

0

0

1

2

0

0

1

0

1

2

0

0

1

0

1

3

1

1

0

1

0

3

1

1

0

1

0

4

0

1

1

1

0

4

0

1

1

1

0

5

1

0

1

0

1

5

1

0

1

0

1

6

1

1

0

1

0

6

1

1

0

1

0

7

1

0

1

1

1

7

0

1

1

1

0

В первом случае после л-ro (7-го) такта регистр генератора синдрома принял значение, соответствующее настройке для ошибки в разряде а6, поэтому на (п + 1)-м (8-м) такте сигнал «1» на выходе е6 исправит ошибоч­ ный символ. Во втором случае после л-го (7-го) такта регистр генератора синдрома принял значение, соответствующее настройке для двукратной ошибки, поэтому на (л + 1)-м (8-м) такте будет сформирован сигнал «Erase», и кодовая комбинация в буферном регистре будет стерта.

В общем случае нужно было бы рассчитать новый порождающий полином g(x)*( 1®х), затем по нему определить настройки на все полиномы ошибки е,{х) s х1 mod (g(x)*(l®x)). Тогда декомбинатор синдрома будет со­ стоять из следующих компонентов:

л(7) Л(4)-входовых конъюнкторов, каждый из которых настроен на исправление однократной ошибки в конкретном разряде;

один А(4)-входовой дизъюнктор, который объединяет выходы ге­ нератора синдрома, позволяя определить ненулевое значение синдрома;

один л(7)-входовой дизъюнктор с инверсией выхода, который объединяет выходы конънкторов, отвечающих за исправление ошибок, и позволяет определить наличие кратности большей, чем исправляющая способность кода;

один 2-входовой конъюнктор, объединяющий два вышеуказанных дизъюнктора, который формирует сигнал стирания.

Выход каждого конъюнктора коммутируется ключом, который от­ крывается на (л + 1)-м (8-м) такте. Таким образом, схема позволяет реали­ зовать корректирующую способность кода в зависимости от кратности

ошибки.

6.3.3. Принципы декодирования БЧХ-кодов по алгоритму Меггита (декодер Меггита)

Синдромное декодирование для БЧХ-кодов наиболее эффективно реализуется при помощи алгоритма, предложенного американским уче­ ным Меггитом. Поясним декодирование по алгоритму Меггита на самом простом примере - исправлении однократной ошибки (s = 1), а затем рас­ пространим приведенные соображения на произвольное значение s.

Предположим, что однократная ошибка исказила разряд а\ (поли­ ном ошибки е(х) = У). При циклическом сдвиге вектора V в сторону стар­ ших разрядов, что эквивалентно умножению полинома V'(x) на х, оши­ бочный разряд а- будет также смещаться. При этом за счет замкнутости векторного пространства БЧХ-кодов относительно операции циклического сдвига (Г) старший разряд всегда будет присутствовать у слагаемого У 1 До позиции старшего разряда a'n_t ошибочный разряд а\ дойдет в резуль­ тате умножения полинома на величину хп~]~' При попадании ошибочного разряда в старший разряд полином ошибки может быть представлен как е(х) = = У'”1 На этот единственный вариант полинома ошибки и настраи­ вается декомбинатор синдрома. Для декодера Меггита декомбинатор син­ дрома принято называть селектор. Количество элементов в селекторе, на­ строенном на исправление однократной ошибки, равно 1. Настройка се­ лектора определяется как

г,,_,(*) =У -У 1' = У' 1modg(x).

(6.35)

Декодирование происходит следующим образом. После приема из канала связи полинома V'(x), т. е. начиная с (н+1)-го такта, последова­ тельно производится его домножение на х. После каждой операции домножения, что эквивалентно циклическому сдвигу вектора V\ соответст­ венно и вектора ошибки на один разряд, производится определение син­ дрома S(x). Оно осуществляется путем вычисления остатка от деления по­ линома У-1- У'(х) на порождающий полином g(jt), где j - номер этапа домножения (/ = 1,2,...). После вычисления значение S(x) сравнивается с на­ стройкой декомбинатора синдрома гя_|(х). Совпадение полиномов S(x) и г„_\(х) означает, что ошибочный разряд находится в старшем разряде. Зна­ чит, на следующем такте он должен быть исправлен. Номер этапа, на ко­ тором произойдет исправление ошибки, определяется следующим обра­ зом: 2л-/, где / - номер ошибочного разряда.

В случае двукратной ошибки полином е(х) содержит два ненулевых компонента: е(х) = У 0 У. В результате циклического сдвига через какоето количество тактов полином ошибки будет выглядеть следующим обра­

зом: е(х) = х/ Ф хл~\ т. е. одна из ошибок располагается в старшем разряде, а вторая - где-то в остальной части полинома. Очевидно, что количество вариантов расположения второй ошибки равно (п - 1). После исправления ошибки в старшем разряде полином ошибки становится равным е(х) = х\ и далее происходит исправление однократной ошибки. Количество вари­ антов значений синдрома, как уже рассматривалось ранее, равно 1. Следо­ вательно, для исправления двукратной ошибки количество элементов в се­ лекторе должно быть N = п - 1 + 1 = п.

Для общего случая сложность (количество i -входовых конъюнкторов) селектора можно оценить следующим образом:

S ' п - 1

(6.36)

N = Z

1=1 J - y

 

В качестве примера сравним сложность селектора в составе декодера Меггита (NM) и со сложностью декомбинатора синдрома (Мдс) в составе декодера, реализующего общий (традиционный) подход к синдромному

декодированию (табл. 6.17).

Таблица 6.17

 

 

S

Код

Мед

NM

1

(15,11,3)

15

1

2

(15,7,5)

120

15

3

(15,3,7)

575

106

. . .

На основании анализа таблицы можно сделать вывод, что алгоритм Меггита дает значительное упрощение декомбинатора синдрома, и с уве­ личением длины кода п выигрыш увеличивается. Это является существен­ ным достоинством алгоритма Меггита, что повлекло за собой его широкое практическое применение.

Исправление ошибки происходит с (л+1)-го по (2л)-й такты работу декодирующего устройства. Поэтому недостатком алгоритма Меггита является то, что появляется задержка на п тактов, необходимая для сдвига вектора ошибки в сторону старшего разряда. В то же время следует отметить, что сложность декодера Меггита, определяемая сложностью селек­ тора ошибок, все еще велика (хотя и существенно ниже декодера, реали~ зующего традиционный подход к синдромному декодированию). Это обу­ словило поиск иных алгоритмов декодирования циклических кодов. В частности, получили развитие алгебраические алгоритмы декодировав ния БЧХ-кодов (алгоритм Берлекэмна с процедурой Чена, алгоритм Пи^ терсона и др.).

Пример 6.21. Рассчитать значения настройки селектора и синдрома для циклического кода (7,4,3) и порождающего полинома g(x) = 1 Фдс2Фх3.

Насгройка селектора производится на полином ошибки е(х) = х6 (ошибка в старшем разряде а6): г6 (х) = дг6 mod (1 Ф х2 ® х3) = х Ф х2

Рассчитаем синдром для полинома V(x) = 1 Ф х2 Ф хъ(информацион­ ный полином и(х) = 1) и полинома ошибки е(х) = х4. В результате воздейст­ вия полинома ошибки принят полином У'(х) = У(х) Ф е(х) = 1 Ф х2 Ф х3 Ф х4. Рассчитаем синдромы S(x).

1. Для S(x) = х°- V(x) mod (1 Ф х2 Ф дг3) = х. С настройкой селектора не совпадает, поэтому можно сделать вывод о том, что в старшем разряде я6 ошибки нет.

2. Для S(x)

s дг1- V\x) mod (1 Ф дг2 Ф д:3) = 1 Ф х. С настройкой селекто­

ра не совпадает,

поэтому можно сделать вывод о том, что в старшем раз­

ряде а5 ошибки нет.

 

3. Для S(x) = xz-V(x) mod (1 Ф х2 Ф д:3) = х Ф х2 С

настройкой

селектора совпадает, поэтому можно сделать вывод о том,

что ошибка

в разряде а4.

 

Номер этапа, на котором ошибочный разряд попадает в старший раз­

ряд, определяется как: п - \ - j

= 7 - 1 - 3 = 3.

 

Номер

этапа,

на котором исправляется ошибка, определяется как

/ 2 - 1 - ( / - 1 )

= 7 - 1 - 3 + 1 = 4

. Напоминаем, что речь идет об этапах цик­

лического сдвига

полинома

У(х), при этом 1-й

этап соответствует

л-му такту

работы

декодера.

Для ошибок большей

кратности расчеты

и моделирование осуществляются аналогично.

Рассмотренный принцип декодирования Меггита обладает также следующим недостатком. Он заключается в однозначной зависимости на­ стройки селектора от длины кода л. Это означает, что для укороченных циклических кодов необходимо производить перерасчет настройки селек­ тора для разных значений л. Для нивелирования указанного недостатка применяется метод, в котором при расчете синдрома полином У’(х) пред­ варительно умножается на величину хк При этом настройка селектора, оп­ ределяемая из соображений, что ошибочный разряд в результате цикличе­ ского сдвига находится в старшем разряде, осуществляется следующим образом:

■хк=х‘~"-'~пк =х ‘ -хк~' =**■' modg(jf).

(6.37)

Очевидно, что такая настройка селектора не зависит от длины век­ тора л, а определяется только длиной избыточной части к, которая для укороченных кодов не изменяется, т. е. является универсальной для всех укороченных кодов. Такой способ декодирования получил название «де­

кодирование с предварительным умножением на хк». Поскольку степень порождающего полинома g(jt) равна к, то настройка селектора просто рав­

на хк~ 1

В общем случае (для укороченных и неукороченных кодов) для по­ строения декодера Меггита с универсальной настройкой селектора необ­ ходимо внести дополнения в структуру генератора синдрома. Указанные изменения вносятся с учетом вида дополнительного полинома d(x)y кото­ рый определяется следующим образом:

d(x)=x‘"k mod g(jc),

(6.38)

где i - количество символов, на которые был укорочен код. Как вид до­ полнительного полинома d(x) влияет на структуру декодера, укажем при рассмотрении вопросов построения декодирующих устройств. Как будет показано ниже, для неукороченных кодов дополнительный полином d(x) не влияет на структуру декодера.

6.3.4. Проектирование декодеров Меггита

Структурная схема декодера Меггита в режиме исправления ошибок приведена на рис. 6.14.

Рис. 6.14. Структурная схема декодирующего устройства Меггита

Селектор настраивается на полином ошибки. Рассмотрим варианты построения селектора для исправления однократной и двукратных оши­ бок.

Для исправления однократной ошибки селектор состоит из одного ^-входового конъюнктора, который настраивается на выделение ошибки в старшем разряде, т. е. на следующий вектор ошибки (табл. 6.18):

Таблица 6.18

V

о'о

а'\

Я л-1

е

0

0

1

Для исправления двукратной ошибки селектор состоит из л Л-входовых конъюнкторов. Один элемент настраивается на выделение однократной ошибки в старшем разряде, а (л-1) элементов - на следую­ щие векторы, соответствующие двукратной ошибке (табл. 6.19):

V

 

 

Таблица 6.19

а'о

а\

-2 а'„-1

е

а'п

1

1

0

0

е

0

1

0

1

е

0

0

1

1

Для расчета настроек элементов селектора используются соотноше­ ния следующего вида:

хп~]mod g(х) - для исправления однократной ошибки,

(дс"“! 0 У) mod g(x) - для исправления двукратной ошибки (/ - номер символа с ошибкой в одном из разрядов: /=0,_, л-2).

После исправления всех ошибок, предусмотренных корректирую­ щей способностью кода, элементы памяти генератора синдрома обнуляются.

Поскольку достаточно широкое применение в системах передачи информации нашли коды Хэмминга (rfmjn = 3,4), то рассмотрим пример структуры и функционирования декодеров Меггита именно для них.

Пример 6.22. Для циклического кода (7,4,3) и проверочного поли­ нома g(x) = 1 0 х2 0 а'3 построить декодер Меггита. Структурная схема декодера Меггита будет выглядеть следующим образом (рис. 6.15).

Рассчитаем настройку селектора в схеме без предварительного ум­ ножения на хк: r6(x) = хп~] mod g(x) =х Ф х 2.

Первые 7 тактов происходит заполнение буферного регистра поли­ номом У\х). Одновременно осуществляется вычисление синдрома 5(д:). Если после 7-го такта элементы памяти генератора синдрома обнулились, значит, ошибок в принятом векторе нет, или кратность ошибки превышает корректирующую способность кода. Если в элементах памяти генератора синдрома находится ненулевой остаток, то деление продолжается дальше. При этом открывается ключ, давая возможность селектору исправить ошибку. На том такте, когда ошибочный разряд попадает в старший (п - 1) разряд буферного регистра, комбинация вектора синдрома Sk.i сов­ падает с настройкой селектора. Это означает, что выход селектора уста­ навливается равным 1. Тогда на следующем такте ошибочный разряд, вы­ двигаясь из старшего разряда БР, складывается по модулю 2 с выходом се­ лектора, что эквивалентно инверсии ошибочного символа (исправлению ошибки). После этого элементы памяти генератора синдрома обнуляются сигналом Reset.

Номер такта, на котором сработает селектор, определяется следую­

щим образом:

 

2 п —/ —1,

(6.39)

где i - номер ошибочного разряда.

Соответственно, номер такта, на котором произойдет исправление

ошибки,

 

2п - L

(6.40)

Запишем функции возбуждения для элементов памяти ГС РССЛОС:

DQ = V" Ф D'{', D[ = Do"1, D 2’ = D[~' 0 D'{[

Промоделируем работу декодирующего устройства для полинома У(х) = 1 0 х2 Ф х3 при однократной ошибке в разряде аъ (полином ошибки е(х) = JC3). В этом случае полином У'(х) будет выглядеть так: У(х) = У(х) 0 0 е(х) =1 0 х2 0 х3 0 х3 = 1 0 х2 Согласно предварительным расчетам се­ лектор сработает (ошибочный разряд попадает в старший разряд буфер­ ного регистра) на такте с номером: 2 - 7 - 3 - 1 = 10. Исправление произой­ дет на следующем такте, т. е. на такте с номером: 2-7 - 3 = 11. На этом так­ те произойдет обнуление элементов памяти генератора синдрома.

Промоделируем работу декодера, подав на вход вектор У и вектор ошибки е (табл. 6.20).

 

 

 

 

 

 

 

Таблица 6.20

№ такта

V

Do

А

D 2

№ такта

е

Do

А

■А

 

 

0

0

0

 

 

0

0

0

1

0

0

0

0

1

0

0

0

0

2

0

0

0

0

2

0

0

0

0

3

0

0

0

0

3

0

0

0

0

4

0

0

0

0

4

1

1

0

0

5

1

1

0

0

5

0

0

1

0

6

0

0

1

0

6

0

0

0

1

7

1

1

0

1

7

0

1

0

1

8

0

1

1

1

8

0

1

1

1

9

0

1

1

0

9

0

1

1

0

10

0

0

1

1

10

0

0

1

1

11

0

0

0

0

и

0

0

0

0

Пример 6.23. Для циклического кода (7,3,4) и проверочного полинома g(x) = (1 Ф х2 0 х3) построить декодер Меггита. Структурная схема декодера Меггита приведена на рис. 6.16.

Для кода Хемминга с dmin= 4 генератор синдрома строится по схеме раздельного деления полинома V'(x) H a g ( x ) и на (1 0 х ) (см. п. 6.3.2.4). По­ этому все расчеты селектора для исправления однократной ошибки прово­ дятся аналогично предыдущему примеру.

Рассчитаем настройку селектора в схеме без предварительного ум­ ножения на**: r6(x)=x"_l modg(*)=jt0x2

Первые 7 тактов происходит заполнение буферного регистра поли­ номом V'(x). Одновременно осуществляется вычисление синдрома S(x). Если после 7-го такта элементы памяти генератора синдрома обнулились, значит, ошибок в принятом векторе нет, или кратность ошибки превышает корректирующую способность кода. Синдром S3 контролирует кратность ошибки (S3 = 1 - однократная ошибка, S3 = 0 - двукратная ошибка (или ошибок нет)). При однократной ошибке деление продолжается дальше. При этом открывается ключ К|, давая возможность селектору исправить

ошибку.

На том такте, когда ошибочный разряд попадает в старший

(я-1)-й

разряд буферного регистра, комбинация вектора синдрома

50,..., Sk- 1 совпадает с настройкой селектора. Это означает, что выход се­ лектора устанавливается равным «1». Тогда на следующем такте ошибоч­ ный разряд, выдвигаясь из старшего разряда БР, складывается по модулю 2 с выходом селектора, что эквивалентно инверсии ошибочного символа (исправлению ошибки). После этого элементы памяти генератора синдро­ ма обнуляются сигналом Reset.

В случае возникновения двукратной ошибки после я-го такта син­ дром S3 будет равен «О». При этом выполнятся все необходимые условия для формирования сигнала стирания (Erase), поскольку хотя бы один из синдромов {S0, Si, S2} будет равен «1». Поэтому через открывшийся на (я+1)-м такте ключ к2 на вход буферного регистра будет подан сигнал сти­ рания, который его обнулит.

Номер такта, на котором сработает селектор в режиме исправления ошибки, определяется по формуле (6.39). Соответственно, номер такта, на котором произойдет исправление ошибки, определяется по формуле (6.40).

Запишем функции возбуждения для элементов памяти ГС РССЛОС:

D'0 = V" © £ > 2 ~ = £>£"'.£>2 = А '"1® 0'2 ~ ',0 '3 = V" Ф D 'i x

Промоделируем работу декодирующего устройства для полинома V(x) = 1 0 х2 0 х3 при однократной ошибке в разряде а3 (полином ошибки е(х) = х3) и двукратной ошибке в разрядах а3 и а0 (полином ошибки е(х) = = х3 0 1). Результаты моделирования сведем в табл. 6.22.

 

 

 

 

 

 

 

 

Таблица. 6.22

№ такта

е

Do

А

D 2

А

№ так­

е

Do

D\

А

D3

 

 

 

 

 

 

та

 

 

 

 

 

 

 

0

0

0

0

1

 

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

2

0

0

0

0

0

2

0

0

0

0

0

3

0

0

0

0

0

3

0

0

0

0

0

4

1

1

0

0

1

4

1

0

0

0

1

5

0

0

1

0

1

5

0

0

1

0

1

6

0

0

0

1 1

б

0

0

0

1 1

7

0

1

0

1

1

7

1

0

0

1

0

8

0

1

1

1

1

8

0

0

0

0

0

9

0

1

1

0

1

 

 

 

 

 

 

10

0

0

1

1

1

 

 

 

 

 

 

11

0

0

0

0

0

 

 

 

 

 

 

Моделирование показало правильность предварительных расчетов

и построения декодера.

 

 

 

 

 

 

 

 

 

6.3.5.

Декодер Меггита для укороченных БЧХ-кодов

 

Для декодирования укороченных БЧХ-кодов при построении деко­ дера Меггита с предварительным умножением на хкнеобходимо построить дополнительный полином d(x), который рассчитывается следующим обра­

зом:

 

d(x) = х*кmodg(x),

(6.41)

где / - количество символов, на которые был укорочен код.

Изменения в структуре декодера Меггита можно рассмотреть на сле­ дующей схеме (рис. 6.17).

 

◄-----

 

 

ch

dg

Dk-1

*

0

 

 

—;;—

V'(x)- хк

 

 

Рис. 6.17. Пояснения к дополнению структуры декодера Меггита

На рис. 6.17 Dk- 1 - последний элемент памяти генератора синдрома. Обозначение «dg» означает, что обратная связь с выхода сумматора заво­

дится на элементы памяти с номерами, совпадающими с показателями сте­ пеней слагаемых, которые входят и в порождающий полином g(*), и в до­ полнительный полином ci(x). Обозначение «dg» означает, что обратная связь с выхода элемента памяти £)*_| заводится на элементы памяти с но­ мерами, совпадающими с показателями степеней слагаемых, которые вхо­ дят в порождающий полином g(*) и при этом не входят в дополнительный полином d(x). Обозначение « d g » означает, что прямая связь с входа заво­ дится на элементы памяти с номерами, совпадающими с показателями сте­ пеней слагаемых, которые входят в дополнительный полином d(x) и при этом не входят в порождающий полином g(*).

Из анализа вида дополнительного полинома d(x) можно сделать вы­ вод о том, что для неукороченного кода дополнительные связи в декодере отсутствуют. Действительно, полином d(x) определяется следующим образом:

d(x) =*'+* mod g(*) = | /= о = xk mod g(*).

Значит, полином d(x) содержит все слагаемые полинома g(*), за ис­ ключением слагаемого ** Поэтому связь «dg» с выхода последнего сумма­ тора заводится по полиному g(jc), связь «dg» содержит один компонент**

и является вырожденной (отсутствует), связь « d g » не содержит ни одного компонента и также является вырожденной (отсутствует).

Пример 6.24. Для укороченного циклического кода (5,2,3) и прове­ рочного полинома g(*) = 1 Ф х2 0 *3 построить декодер Меггита с предва­ рительным умножением на**

Код (5,2,3) построен от табличного кода (7,3,4) путем укорочения информационной части на / = 2. Построим дополнительный полином d(x):

</(*)=*'+* mod g(*)= *2+3 mod (1 © *2 0 *3) = 1 0 *.

Определим сочетания для введенных обозначений. dg (слагаемые есть и в g(*), и в */(*)): 1;

dg (слагаемые есть в g(*), но нет в </(*)): *2, *3; d g (слагаемые есть в */(*), но нет в g(*)): *. Настройка селектора определяется как **",= *3

С учетом дополнительных связей построим декодер Меггита для укороченного кода с предварительным умножением на** (с универсальной настройкой селектора) (рис. 6.18).

Рис. 6.18. Декодер Меггита для укороченного кода (5,2,3)

Запишем функции возбуждения для элементов памяти:

D0' = Г ' 0 Я'"1,0; = 0 D ^ ,D[ = D\~x0 D'"1

Промоделируем работу декодирующего устройства для полинома У(х) = 1 0 х2 0 л3 при однократной ошибке в разряде д3 (полином ошибки е(х) = дс3). Результаты моделирования сведем в табл. 6.23.

 

 

 

Таблица 6.23

 

 

II

 

 

№ такта

е

А>

D,

D 2

0

0

0

 

 

1

0

0

0

0

2

1

1

1

0

3

0

0

1

1

4

0

1

0

0

5

0

0

1

0

6

0

0

0

1

7

0

0

0

0

В рассматриваемом случае полином F(x)

будет выглядеть так:

V(x) = V(x) Ф е(х) = 1 ® ^ ® .т 3Фл3=

1 ф * 2.

 

 

Согласно

предварительным

расчетам

селектор

сработает

(ошибочный разряд я3 попадает в старший разряд буферного регистра) на

такте с номером: 2-5 -

3 - 1 = 6 . Исправление произойдет на следующем

такте, т. е. на такте с

номером 2-5 - 3 = 7. На этом такте

произойдет

обнуление элементов памяти генератора синдрома.

 

Алгоритмы синдромного декодирования укороченных

БЧХ-кодов

в каналах с независимыми ошибками при исправлении и обнаружении ошибок произвольной кратности аналогичны рассмотренным в предыду­ щих разделах.

Действительно, для обнаружения ошибок необходимо только вы­ числить синдром и проверить его на неравенство нулю. В этом случае нет необходимости в вычислении дополнительного полинома d(x), поскольку обнаружение ошибки (стирание сообщения) происходит на (п + 1)-м такте работы декодирующего устройства. Напомним, что дополнительный по­ лином d(x) строится для обеспечения свойства замкнутости укороченного (псевдоциклического) БЧХ-кода относительно операции циклического сдвига, а это необходимо только для исправления ошибок.

Для исправления и обнаружения ошибок укороченными БЧХкодами используется либо частный (для кодов Хэмминга), либо общий подход к построению декодирующих устройств. Вне зависимости от при­ меняемого подхода, в подсистеме, реализующей исправление ошибок, не­ обходимо учитывать настройки дополнительного полинома d(x). Все ос­ тальное (элементы, настройки, алгоритмы работы) соответствуют декоди­ рующим устройствам неукороченных кодов, подробно рассмотренных ра­

нее.

 

 

В

приложении 2 приведен пример реализации кодера БХЧ-кода

в аппаратно-программном элементом базисе.

 

 

Контрольные вопросы к главе 6

 

1.

Привести примеры операций умножения, сложения, деления по­

линомов q\(x) = 1 0 х2 0 х4 и q2 (x) = х20 хъ

 

2.

Используя теоремы БЧХ-кодов, построить коды со следующими

параметрами: s= \ ym = 4;s = 1, г = 2, т = 4; s = 2, т = 5.

 

3.

Построить БЧХ-код для т = 6, рош= 10"3, Рпр= 0,99999.

 

4.

Для БЧХ-кода (7,4,3), заданного полиномом g(x) = 1 0 х2 0

JC3,

и информационного полинома и(х) = х рассчитать избыточные символы.

 

5.

Для БЧХ-кода (7,3,4), заданного полиномом g(x) = 1 0 х2 0

л*3,

и информационного полинома и(х) = х рассчитать избыточные символы.

 

6.Построить кодер без предварительного умножения для БЧХ-кода (7,3,4), заданного полиномом g(jt) = 1 0 х2 0 х3, и промоделировать работу для информационного полинома и(х) = х.

7.Построить кодер без предварительного умножения для БЧХ-кода (7,4,3), заданного полиномом g(jt) = 1 Ф х2 Ф JC\ и промоделировать работу для информационного полинома и(х) = „х.

8. Для БЧХ-кода (7,4,3), заданного полиномом Л(х) = 1 0 х2 ® JC3 Ф х л ,

иинформационного полинома W(JC) = х рассчитать избыточные символы.

9.Для БЧХ-кода (7,3,4), заданного полиномом Л(х) = 1 0 X1 0 х3 ® х4,

иинформационного полинома и(х) = х рассчитать избыточные символы.

10.Построить кодер для БЧХ-кода (7,4,3), заданного полиномом Н(х)

=1 0 0 / 0 л 30 / , и промоделировать работу для информационного по­ линома и(х) = X.

11.Построить кодер для БЧХ-кода (7,3,4), заданного полиномом h(x)

=1 ® 0 х2 Ф л3 ® х4, и промоделировать работу для информационного по­ линома и(х) = X.

12.Построить декодер Меггита для БЧХ-кода (5,2,3), заданного по­

линомом

g(х) =

1

Ф х Ф л*3,

и

промоделировать

работу

в

режимах:

а) безошибочного

 

приема, б)

 

обнаружения однократной

ошибки,

в) обнаружения двукратной ошибки.

 

 

 

13.

Построить декодер Меггита для БЧХ-кода (5,2,3), заданного по­

линомом

g(x) =

1

Ф л ® х3,

и

промоделировать

работу

в

режимах:

а) безошибочного приема, б) исправления однократной ошибки.

14. Построить декодер Меггита для БЧХ-кода (6,2,4), заданного по­

линомом g(x) = 1

Ф JC Ф

х3, и промоделировать работу в режимах:

а) безошибочного

приема,

б) исправления однократной ошибки, в) об­

наружения двукратной ошибки.

7.ПРИМЕНЕНИЕ ЦИКЛИЧЕСКИХ КОДОВ В КАНАЛАХ

СПАКЕТИРУЮЩИМИСЯ ОШИБКАМИ

Напомним (см. подразд. 1.4), что пакетом ошибок длины b является последовательность из таких Ь ошибочных символов, что первый и по­ следний из них отличны от нуля (для двоичных кодов - равны единице).

Хорошо реализуемые коды, исправляющие пакеты, могут быть по­ строены как аналитическим способом, так и с помощью вычислительных машин. Для всех этих кодов найдены просто реализуемые процедуры де­ кодирования. Таким образом, с практической точки зрения задачу по­ строения кодов, исправляющих пакеты, и декодеров для таких кодов мож­ но считать решенной. Отметим [14], что корректирующая способность для пакетов длиной b произвольного линейного блокового (л,т,*/)-кода опре­ деляется условием

k - 2 b = z>0.

(7.1)

Параметр z является мерой неэффективности блокового кода, ис­ правляющего пакеты. Для некоторых кодов, представленных в табл. 1, z = 0, для многих других кодов z > 0. Заметим, что z - табличный параметр.

Для кодов с известным числом избыточных символов к из (1) легко определить длину Ъ исправляемых пакетов как

7.1. Аналитические методы построения кодов

Построение циклических кодов, исправляющих пакеты ошибок, методом посимвольного перемежения

Одним из эффективных и достаточно простых методов построения кодов с хорошей корректирующей способностью для пакетов ошибок яв­ ляется метод перемежения более коротких кодов, в частности, известных циклических кодов, например БЧХ-кодов.

Следующая теорема это доказывает.

Теорема 7.1. Если многочлен g(*) порождает циклический

(л, /и)-код, способный исправлять все пакеты длиной b или меньше, то многочлен g(.r') порождает циклический («•/, лг/)-код, способный исправ­ лять пакеты длиной b i. Доказательство не приводится.

Параметр i называется степенью перемежения, и приведенный ме­ тод известен как метод символьного перемежения.

Полиномиальное представление (/г/, лг/)-кода, построенного соглас­ но теореме 7.1, имеет следующий вид (табл. 7.1):

Таблица 7.1

х т~1

</,-«+!),-1

х (я-*)/-1

JC,“I

Х"'-2 *<*-»>«

х("-,),+|

 

информационные символы

проверочные символы

Число строк таблицы равно /, число столбцов равно л. Каждая строка этой таблицы является кодовым словом первоначального (л, т)-кода. Па­ кет длиной b i или меньше может иметь не более Ъсимволов в любой стро­ ке приведенной таблицы. Так как каждая строка может исправлять пакеты длиной Ъ или меньше, то весь (л /, nrf)-код может исправить все пакеты длиной b i или меньше.

Полиномиальное представление кодовых векторов (лч‘,лг/) -

циклического кода, порождаемого полиномом g(x‘), имеет вид

 

У(х) = an_]X("-')i+j Ф a„_2 x("-2)i+J ©... © а,*'4 ' Ф a0 x j ,

(7.3)

где 0 < у < / - 1.

 

Все i строк табл. 7.1 могут быть получены из (7.3) переборому. Пример 7.1. Пусть степень перемежения / = 2, перемежаемый цик­

лический (л, /л,)-код - это (7,3)-код с полиномом g(x) = 10 х 0 х 2 0 х 4 Данный код согласно (7.1) и (7.2) исправляет пакеты ошибок длиной b = 2. Тогда согласно теореме 7.1 может быть построен (л /, m i) = (7*2, 3*2)-код, т. е. (14,6)-код, исправляющий пакеты ошибок длиной 4 = (2-2). Порож­

дающий полином кода (14,6) имеет вид # ( а ) = 1 0 х 2 0

х4 0 х 8

Полиномиальное представление

(14,

6)-кода

согласно табл. 7.1

и формуле (7.3) таково:

 

 

 

 

 

л*13*11 а 9

A 7

A 5

A 3

A, j = 1;

Л‘12А'10 А8

А 6

А 4

А 4

А 2,у =

0.

Каждая строка таблицы является кодовым словом первоначального (7, 3)-кода.

Степени лг в полиномиальном представлении (14, 6)-кода показывают порядок передачи символов в линию связи:

л:

]3 12

л:

II

10 9

х

8

7 6 5 4 3 2 1 0

 

 

 

х х

 

х х х х х х х х

 

 

 

 

 

 

 

 

кодовое слово

 

 

 

 

 

 

 

 

> 2-е кодовое слово

Таким образом, структура (формат) кодового слова (14, 6)-кода рас­

крывает

суть посимвольного перемежения слов первоначального

(7, 3)-кода, и любой пакет длиной Ы = 4 и меньше породит в каждом кодо­ вом слове (7, 3)-кода пакет длиной Ъ= 2 и меньше.

В табл. 7.2 приводятся некоторые циклические и укороченные цик­ лические коды, исправляющие пакеты ошибок. Порождающие многочлены g(jc) табличных кодов даются в восьмеричной записи и двоичном пред­

ставлении, например 35 = 011101 = л:4 Ф л*3 0 х2

0 1.

 

 

Скорость

 

Величина

 

 

 

Таблица 7.2

 

 

 

 

 

передачи

 

исправляемого

 

 

ь

Порождаю­

 

(и, т)

пакета

z - n - m

- 2 b

щий

 

п

п

Ь

многочлен

 

 

 

 

 

 

 

 

«м

 

 

 

 

 

 

0,42

(7,3)

2

0

 

0,286

35

0,6

(15,9)

3

0

 

0,200

171

0,63

(27,17)

5

0

 

0,185

2671

0,65

(34, 22)

6

0

 

0,176

15173

0,68

(50, 34)

8

0

 

0,160

224531

0,81

(67, 54)

6

1

 

0,090

36365

0,85

(103,88)

7

1

 

0,068

114361

0,87

(63, 55)

3

2

 

0,048

711

0,88

(85, 75)

4

2

 

0,047

2651

0,92

(169, 155)

6

2

 

0,035

55725

0,96

(290,277)

5

3

 

0,017

24711

Следствие 7.1. Перемежение степени / укороченного циклического (;i, /т/)-кода приводит к укороченному (tvi, ти*/)-коду, корректирующая спо­ собность которого для пакетов в / раз превышает корректирующую спо­ собность для пакетов первоначального кода.

Стоит заметить, что перемежение кода, исправляющего пакеты, для которого z = 0, т. е. Ъ принимает согласно (7.2) максимально возможное

значение, всегда приводит к коду с z = 0. Таким образом, если найдены ко­ роткие коды с z = 0, то с помощью теоремы 7.1 и следствия 7Л можно по­ строить коды практически с любой длиной, способные исправлять пакеты максимально возможной длиной.

7.2. Специальные циклические коды, исправляющие пакеты ошибок

Для передачи данных по каналам с памятью были разработаны цик­ лические коды, обнаруживающие и исправляющие пакеты ошибок, в част­ ности, коды Файра, Бартона, Рида-Соломона и ряд других, а также коды, полученные из этих кодов посимвольным и поблочным перемежением [13,15]. В данном разделе и последующих рассматривается код Файра и построение кодеров и декодеров табличных и укороченных кодов Файра.

Теорема 7.2. Циклический (л, п - - с + 1)-код, порожденный мно­ гочленом

g(x) = (x2b~l -\)р (х)

(7.4)

исправляет пакеты ошибок длиной Ь. Здесь п = е(2b -1), где е - показатель

неприводимого многочлена р(х) степени с (с >

Ъ), так,

что

(р{х),х2 Ь ~ 1 -1) = 1. Коды, построенные в соответствии

с теоремой

7.2,

называются кодами Файра. В кодах Файра требуется не менее (3Ъ- 1) про­ верочных символов для исправления пакетов длиной Ьутак как степень по­ рождающего многочлена g(x) k = 2 b - \ + c y и, с учетом теоремы 7.2: к = ЪЬ -1 . Если известна степень порождающего полинома g(x), то длина

исправляемого пакета ошибок Ъ= — -. Показатель е неприводимого мно­

гочлена р{х) степени с определяется как е = 2 е -1 .

Можно показать, что коды Файра обнаруживают любой пакет ошибок длиной Ь* = к и меньше. Действительно, пакету ошибок Ь* = к со­

ответствует многочлен ошибок

е(х) = х 1

+... +x '~v +... + Х7, где (/ - i) =

= (к - 1). Вынося х‘ за скобки,

получим

е(х) = х, (1 + —+ х к~х) = х' *е,(х).

Для обнаружения такого пакета необходимо, чтобы е(х) не делился на g(x) без остатка. Так как х' на g(x) не делится, а степень многочлена ех(х)

меньше стпени к многочлена g(x), то е(дг) не делится на g(x). Таким обра­ зом, обнаруживаются все пакеты ошибок длиной b* = к и меньше. Рас­

смотрим исправление пакетов ошибок длиной Ь<с

кодом Файра. Пусть

передавался

кодовый

многочлен

У(х),

а

принят

многочлен

Vr(x) = V(x) + e(x). Предположим, что

многочлен

ошибок

имеет вид

JL

где f(x )

- многочлен степени

п - т - \ = к - \

или мень­

е(х) = х f ( x ),

ше. Допустим, что К'(х) вводится в декодер с предварительным умноже­ нием на хк, таким образом корректор (генератор синдрома (ГС)) вычисляет

синдром х ке(х) = /(x)(m odg(x)). Но поскольку степень /(х ) равна к - 1, то синдром равен /(х ) (напомним, что разрядность ГС равна к) и одно­ значно соответствует пакету ошибок.

Для декодирования циклических кодов, исправляющих пакеты оши­ бок, целесообразно привести следующую теорему.

Теорема 7.3. Если в качестве

синдрома для F'(x) = Г (х)0е(х)

выбирается остаток отделения x kV \x)

на g(x) и все ошибки имеют место

в к высших степенях Уг(х)> то ненулевые символы комбинации ошибок появляются в соответствующих разрядах синдрома.

Из доказательства теорем 7.2 и 7.3 вытекает построение декодера кодов Файра на основе декодера Меггита с незначительными изменениями. В частности, в момент появления пакета ошибок на выходе буферного регистра в b старших разрядах ГС, согласно показанному выше, значение синдрома совпадает с пакетом ошибок, а (к - Ь) младших разря­ дов синдрома равен нулю. Поэтому селектор декодера представляет собой схему «И» с (к - b + 1) входами, на которые подаются отрицания - Ь) символов и правильное значение последнего символа (старшего разряда) ГС. Общая структура декодера кода Файра приводится на рис. 7.1.

Пример 7.2. Рассмотрим код Файра, порожденный многочленом:

g(x) = (1 0 х2 0 х5)(1 0 х9) = 10 х2 0

х5 0 х9 0 х110

х 14,

длина

кода

n = e ( 2 b - \ \

е = 25 -1 =31 и

и = 31-9 = 279,

к =

14.

Число

информационных символов кода т = 279 - 14 = 265. Таким образом, код Файра - это (279, 265)- циклический код. Длина исправляемых пакетов Ъ

равна или меньше величины Ь < —^ - = ^— = 5. Длина обнаруживаемых па­

кетов Ь* равна или меньше 14.

В заключение данного раздела следует отметить, что существуют циклические коды, полученные с помощью ЭВМ (направленным перебо­ ром), и аналитические (например коды Бартона), параметры которых луч­ ше, чем соответствующие параметры кодов Файра.

Теорема 7.4. Пусть р(х) - такой - многочлен степени b и показателя

е, что (p(x),xb —1) = 1. Тогда

(л, п - 2Ь) -код, порожденный многочленом

g(x) = (х* -1) • р(х), может

исправлять произвольные пакеты

длиной

Ь или меньше, которые расположены в позициях (xib,x tb+]9...xtb+b~ \

0 <i<

< e - \. Здесь n = e-b. Коды, порожденные согласно теореме 7.4, называ­ ются кодами Бартона, и, поскольку они являются циклическими кодами, то процедура их декодирования аналогична описанной выше для кодов Файра.

Замечание по поводу длин исправляемых пакетов ошибок. Га­ рантированная длина исправляемых пакетов ошибок ограничивается свер-

1с

ху числом — (при z = 0) (см. (7.2)). При этом известно, что существуют не­

поддающиеся исправлению пакеты ошибок длины — +1 или меньше. К их

числу относятся пакеты, расположенные в i старших и - /) младших раз­ рядах кодового слова.

В то же время могут быть исправлены определенные конфигурации пакетов, длины которых существенно выше, чем Ь из (1а).

Для ряда кодов (например кодов Файра) длины гарантированно ис­ правляемых пакетов ошибок меньше, чем определяется в (1а). В приведен­ ном выше (279, 265)-коде исправляются пакеты длиной 5 и меньше, в то время как из (1а) следует, что z = 0, b = 7. В работе Галлагера приведены верхняя и нижняя границы для числа исправляемых пакетов ошибок дли­ ной L, где b < L < К. Если b определяется из (1а), то это хорошие коды. Граница Галлагера работает при больших л и т.

7.3. Кодирование и декодирование циклических кодов, исправляющих пакеты ошибок

7.3.1. Кодирование циклических кодов методом посимвольного перемежения

В данном разделе рассмотрим два подхода к реализации кодеров циклических кодов, исправляющих пакеты ошибок методом посимвольно­ го перемежения:

-независимое кодирование посимвольно перемежаемых (л, /л)-кодов, исправляющих пакеты ошибок длиной 6, с использованием порождающего полинома g(x);

- кодирование в (л /, лг/)-коде, исправляющего пакеты ошибок дли­ ной £ /, с использованием порождающего полинома g(x‘).

7.З.1.1. Независимое кодирование посимвольно перемежаемых (л, т)-кодов

Общая структура кодера представлена на рис. 7.1. Данный способ кодирования моделирует построчно двухмерную таблицу 1 размерности / х л. При этом каждая из z-строк, представляющая (л, т)-код, реализуется независимым кодером циклического кода, табличного либо укороченного, с применением порождающего полинома g(x).

Коммутаторы К\ и К2 синхронно коммутируют входы и выходы ко­ деров, реализуя в итоге (и„ т/)-код, перемежая посимвольно коды строк таблицы.

ВХОД.

К,

Рис. 7.1. Кодер циклического (л /, m i)-кода, исправляющего пакеты ошибок длиной 67 и меньше методом посимвольного перемежения со степенью перемежения /

Пример 7.3. Пусть i = 2, циклический код строки - (7, 3, 4) с порож­ дающим полиномом g(х) = 1 0 х 0 х2 0 х4 исправляет пакеты ошибок дли­ ной Ь = 2 и меньше. Тогда g(x2) =1 0 х2 0 х4 0 х8 порождает код (7*2, 3-2) = = (14, 6), исправляющий пакеты ошибок длиной vb = 4 и меньше. Двух­ мерная таблица (14, 6)-кода имеет вид

X9.7 X5 X3

X

1 0 1

| 1 1 0 0

----- ► 1-е кодовое слово

 

 

 

1

 

X8'6 X4 X2

X0

0 0 1

1 0 1 1 1

— ------►2-е кодовое слово

информаципроверочные ционные символы символы

Кодовый вектор (14, 6)-кода после посимвольного перемежения, по­ рядок символов которого задается показателями степеней приведенной таблицы, приведен ниже:

х13 х 12

х 10 х9

х8 х7 х6 х5 х4 х3

х2 х1 х°

 

 

О

 

1

1

О

 

О

1-

е кодовое слово (7,3)-кода

О

О

 

О

1

1

1

2-

е кодовое слово (7,3)-кода

На рис. 7.2 приводится реализация кодера (14,6)-кода с независимым кодированием посимвольно перемежаемых (7,3)-кодов, исправляющие пакеты ошибок длиной 2 и меньше с использованием в каждом кодера

полинома g(x) = (10 х 2 0 д;3)(10 JC) = 10 х Ф х г ® х 4

Рис. 7.2. Кодер (14,6)-кода, исправляющего пакеты ошибок длиной b = 4 и меньше

Пример 7.4. Пусть / = 3, циклический код строки (7,3) (посимвольно перемежаемый код) задан следующим порождающим полиномом

g(x) = (1Ф х 2 0 х ъ) • (10 х). Тогда g(x3) = 10 х 3 0 х 6 Ф х 12 порождает код (7-3, 3*3) = (21, 9), исправляющий пакеты ошибок длины i Ь = 3-2 = 6 и меньше.

 

 

Двухмерная таблица (21, 9)-кода имеет вид

х20

х17

х14

 

х"

х8 х5 х2

 

10 1

j 1 1 0 0 —►1-е кодовое слово

 

 

 

 

 

 

 

 

_ _

1_____________

 

 

 

 

 

 

 

 

 

 

1

 

х19

х16

х13

 

х'° х7 х4 X1

0 0 1 * 0 1 1 1

—►2-е кодовое слово

 

 

 

 

 

 

 

 

 

 

х18

х15

х12

 

х9

х6 х3 х°

 

 

1 — 3-е кодовое слово

 

 

1 0 0 1 1 0 1

информацион-

 

проверочные

......._г.............

ные символы

 

символы

 

 

 

 

 

 

Вид кодового вектора (21, 9)-кода после перемежения, порядок кото­

рого задается приведенной выше таблицей:

 

1

0

1

1

1

0

0

 

 

 

 

0 0 1 0 1 1 1

— 1 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 1

 

1

0

0

1

0

1 1

 

 

 

На рис. 7.3 приводится структура кодера (21, 9) циклического кода, реализующего способ посимвольного перемежения кода (7, 3, 4) со степе­ нью перемежения / = 3.

Рис. 7.3. Кодер (21, 9)-кода, исправляющего пакеты ошибок длиной b = 6 и меньше

ишагом (степенью) перемежения / = 3

7.3.1.2.Кодирование в (/г/\ /яч)-кода с использованием

порождающего полинома g(x*)

Структура кодера, реализующего данный способ построения

(л-/, /ич)-кода с порождающим полиномом g(jc') и исправляющего пакеты ошибок длиной Ы и меньше, в принципе, не отличается от таковой струк­ туры кодера ЦК, использующего базовый порождающий полином g(x). Поясним изложенное для кодера (14,6)-кода (см. пример 7.3).

Пример 7.5. Построим кодер (14, 6)-кода, исправляющего пакеты ошибок длиной 4 и меньше. Данный код построен методом перемежения

кода (7, 3, 4) с порождающим полиномом g(x) = 1Ф х 0 х 2 0 х 4 Порож­ дающий полином (14, 6)-кода g(x2) = 10 х 2 0 х 4 0 х8 Структура кодера

с предварительным умножением U(x) на х к приведена на рис. 7.4.

Рис. 7.4. Кодер (14, 6)-кода, исправляющего пакеты ошибок длиной Ь= 4 и меньше

Ниже приведена таблица переходов (табл. 7.3), моделирующая рабо­ ту кодера (14, 6)-кода при кодировании информационного вектора

U= 101000, соответствующего информационному полиному U(x) = 10 х2

 

Вх.

Do

D\

 

D3

D,

 

Таблица 7.3

к „ к 2

D 2

£>s

D6

£>7

 

 

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

2

0

0

0

0

0

0

0

0

0

3

0

0

0

0

0

0

0

0

0

4

1

1

0

1

0

1

0

0

0

5

0

0

1

0

1

0

1

0

0

6

1

1

0

0

0

0

0

1

0

Через шесть тактов после начала функционирования в РСЛЛОС об­ разуется остаток от деления U(x)'xB на g (x 2). В течение последующих восьми тактов эти проверочные символы выталкиваются из регистра (ключ К| закрыт, ключ К2 - открыт). В итоге на выход кодера поступает вектор (14,6)-кода вида

 

 

 

V = 1 0 0 0 0 0 1 0 1 0 1 0 0 0

 

 

 

 

 

 

проверочные

информационные

 

 

 

 

 

(избыточные)

символы

 

 

 

 

 

 

символы

 

 

 

 

Аналогично

закодируем

 

информационное

слово

(J -

110011

и (/(*) = 1 0 x 0 л :4 Ф х 5.Соответствующая

таблица

переходов

(табл. 7.4)

имеет вид

 

 

 

 

 

 

 

 

 

Bx.

Do

 

 

D3

 

Ds

Таблица 7.4

K „ K2

D\

£>2

£>4

£>6

£>7

 

1

0

0

0

0

0

0

0

0

1

1

0

1

0

1

0

0

0

2

1

1

1

1

1

1

I

0

0

3

0

0

1

I

1

l

1

1

0

4

0

0

0

1

1

1

1

1

i

5

1

0

0

0

1

1

1

1

1

6

]

0

0

0

0

1

1

1

1

V=

0 0 0 0

1

1 1

1

1 1 0 0 1 1

 

проверочные информационные

 

символы

 

символы

Результаты кодирования

 

обоими

способами, рассмотренными

в 7.3.1.1 и 7.3.1.2, совпадают. Действительно, в векторе V кода (14, 6) мож-

Соседние файлы в папке книги