Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Теория электрической связи. Помехоустойчивое кодирование в телекоммуникационных системах

.pdf
Скачиваний:
3
Добавлен:
12.11.2023
Размер:
2.38 Mб
Скачать

60

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

rn–1(x) xi xn–1–i = xn–1 mod g(x).

(4.5)

Декодирование происходит следующим образом. После приема из канала связи полинома V (x) , т.е. начиная с (n+1)-го такта, последователь-

но производится его домножение на x. После каждой операции домножения, что эквивалентно циклическому сдвигу вектора V' и, соответственно, вектора ошибки на один разряд, производится определение синдрома S(x). Оно осуществляется путем вычисления остатка от деления полинома xj– 1 V (x) на порождающий полином g(x), где j – номер этапа домножения (j =

1, 2, …). После вычисления значение S(x) сравнивается с настройкой декомбинатора синдрома rn–1(x). Совпадение полиномов S(x) и rn–1(x) означает, что ошибочный разряд находится в старшем разряде. Значит, на следующем такте он должен быть исправлен. Номер этапа, на котором произойдет исправление ошибки, определяется следующим образом: 2n i, где i – номер ошибочного разряда.

В случае двукратной ошибки полином e(x) содержит два ненулевых компонента: e(x) = xi xj. В результате циклического сдвига через какое-то количество тактов полином ошибки будет выглядеть следующим образом: e(x) = xl xn–1, т.е. одна из ошибок располагается в старшем разряде, а вторая – где-то в остальной части полинома. Очевидно, что количество вариантов расположения второй ошибки равно (n – 1). После исправления ошибки в старшем разряде полином ошибки становится равным e(x) = xl, и далее происходит исправление однократной ошибки. Количество вариантов значений синдрома, как уже рассматривалось ранее, равно 1. Следовательно, для исправления двукратной ошибки количество элементов в селекторе должно быть N = n – 1 + 1 = n.

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

S

n 1

(4.6)

N =

.

i=1

i 1

 

 

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

61

 

 

 

Таблица 4.2

 

 

 

 

NМ

S

Код

NСД

 

1

(15,11,3)

15

 

1

2

(15,7,5)

120

 

15

3

(15,3,7)

575

 

106

 

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

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

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

Настройка селектора производится на полином ошибки e(x) = x6 (ошибка в старшем разряде a6): r6(x) x6 mod (1 x2 x3) = x x2.

Рассчитаем синдром для полинома V(x) = 1 x2 x3 (информационный полином u(x) = 1) и полинома ошибки e(x) = x4. В результате воздействияполиномаошибкипринятполиномV'(x) = V(x) e(x) = 1 x2 x3 x4. Рассчитаем синдромы S(x).

1.Для S(x) x0 V'(x) mod (1 x2 x3) = x. С настройкой селектора не

совпадает, поэтому можно сделать вывод о том, что в старшем разряде a6 ошибки нет.

2.Для S(x) x1 V'(x) mod (1 x2 x3) = 1 x. С настройкой селектора не совпадает, поэтому можно сделать вывод о том, что в старшем разряде a5 ошибки нет.

3.Для S(x) x2 V'(x) mod (1 x2 x3) = x x2. С настройкой

селектора совпадает, поэтому можно сделать вывод о том, что ошибка в разрядеa4.

62

Номер этапа, на котором ошибочный разряд попадает в старший разряд, определяется как n – 1 – j = 7 – 1 – 3 = 3.

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

n – 1 – (j – 1) = 7 – 1 – 3 + 1 =

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

лического сдвига полинома

V'(x), при этом 1-й

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

n-му такту работы декодера. Для ошибок большей

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

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

 

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

rn–1(x) xi xn–1–i xk = xi–n–1–i+k = xn xk–1 = xk–1 mod g(x).

(4.7)

Очевидно, что такая настройка селектора не зависит от длины вектора n, а определяется только длиной избыточной части k, которая для укороченных кодов не изменяется, т.е. является универсальной для всех укороченных кодов. Такой способ декодирования получил название «декодирование с предварительным умножением на xk». Поскольку степень порождающего полинома g(x) равна k, настройка селектора просто равна xk–1.

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

d(x) = xi+k mod g(x),

(4.8)

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

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

63

Структурная схема декодера Меггита в режиме исправления ошибок приведена на рис. 4.1. Селектор настраивается на полином ошибки. Рассмотрим варианты построения селектора для исправления однократной ошибки. Для исправления однократной ошибки селектор состоит из одного k-входового конъюнктора, который настраивается на выделение ошибки в старшем разряде, т.е. на следующий вектор ошибки (табл. 4.3):

V'(x)

 

 

 

 

 

 

 

V(x)

 

a'0

a'1

a'n–1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ГС

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S0

Sk–1

 

 

 

 

 

 

n+1,..,2 n

 

 

 

СЕЛЕКТОР

 

 

К

 

 

 

 

 

 

 

 

 

Корректор

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

Таблица 4.3

V′

a'0

a'1

a'n–1

e

0

0

1

Первые n тактов происходит заполнение буферного регистра полиномом V'(x). Одновременно осуществляется вычисление синдрома S(x). Если после n-го такта элементы памяти генератора синдрома обнулились, значит, ошибок в принятом векторе нет, или кратность ошибки превышает корректирующую способность кода. Если в элементах памяти генератора синдрома находится ненулевой остаток, то деление продолжается дальше. При этом открывается ключ, давая возможность селектору исправить ошибку. На том такте, когда ошибочный разряд попадает в старший (n – 1) разряд буферного регистра, комбинация вектора синдрома S0,…, Sk–1 совпадает с настройкой селектора. Это означает, что выход селектора устанавливается равным 1. Тогда на следующем такте ошибочный разряд, выдвигаясь из старшего разряда БР, складывается по модулю 2 с выходом селектора, что эквивалентно инверсии ошибочного символа (исправлению ошибки). После этого элементы памяти генератора синдрома обнуляются сигналом Reset.

Номер такта, на котором сработает селектор, определяется следующим образом:

64

2n i – 1,

(4.9)

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

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

2n i.

(4.10)

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

Первые n тактов происходит заполнение буферного регистра полиномом V'(x). Одновременно осуществляется вычисление синдрома S(x). Если после n-го такта элементы памяти генератора синдрома обнулились, значит, ошибок в принятом векторе нет или кратность ошибки превышает корректирующую способность кода. Синдром Sk контролирует кратность ошибки (Sk = 1 – однократная ошибка, Sk = 0 – двукратная ошибка (или ошибок нет)). При однократной ошибке деление продолжается дальше. При этом открывается ключ, давая возможность селектору исправить ошибку. На том такте, когда ошибочный разряд попадает в старший (n–1)-й разряд буферного регистра, комбинация вектора синдрома S0,…, Sk–1 совпадает с настройкой селектора. Это означает, что выход селектора устанавливается равным «1». Тогда на следующем такте ошибочный разряд, выдвигаясь из старшего разряда БР, складывается по модулю 2 с выходом селектора, что эквивалентно инверсии ошибочного символа (исправлению ошибки). После этого элементы памяти генератора синдрома обнуляются сигналом Reset.

В случае возникновения двукратной ошибки после n-го такта синдром Sk будет равен «0». При этом выполнятся все необходимые условия для формирования сигнала стирания (Erase), поскольку хотя бы один из синдромов {S0, S1, ..., Sk–1} будет равен «1». Поэтому через открывшийся на (n+1)-м такте ключ на вход буферного регистра будет подан сигнал стирания, который его обнулит.

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

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

65

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

d g dg

Dk–1

d g

V'(x) xk

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

На рис. 4.2 Dk–1 – последний элемент памяти генератора синдрома. Обозначение «dg» означает, что обратная связь с выхода сумматора заводится на элементы памяти с номерами, совпадающими с показателями степеней слагаемых, которые входят и в порождающий полином g(x), и в дополнительный полином d(x). Обозначение « dg » означает, что обратная

связь с выхода элемента памяти Dk–1 заводится на элементы памяти с номерами, совпадающими с показателями степеней слагаемых, которые входят в порождающий полином g(x) и при этом не входят в дополнительный по-

лином d(x). Обозначение « d g » означает, что прямая связь с входа заво-

дится на элементы памяти с номерами, совпадающими с показателями степеней слагаемых, которые входят в дополнительный полином d(x) и при этом не входят в порождающий полином g(x).

Из анализа вида дополнительного полинома d(x) можно сделать вы-

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

d(x) = xi+k mod g(x) = | i = 0 = xk mod g(x).

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

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

компонента и также является вырожденной (отсутствует).

Пример 4.2. Для укороченного циклического кода (5, 2, 3) и проверочного полинома g(x) = 1 x2 x3 построить декодер Меггита с предварительным умножением на xk.

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

d(x) = xi+k mod g(x) = x2+3 mod (1 x2 x3) = 1 x.

 

 

 

 

66

 

 

 

Определим сочетания для введенных обозначений.

 

dg (слагаемые есть и в g(x), и в d(x)): 1;

 

 

dg (слагаемые есть в g(x), но нет в d(x)): x2, x3;

 

 

d g (слагаемые есть в d(x), но нет в g(x)): x.

 

 

Настройка селектора определяется как xk–1 = x3.

 

 

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

укороченного кода с предварительным умножением на xk (с универсальной

настройкой селектора) (рис. 4.3).

 

 

 

 

V'(x)

 

 

 

БР

 

 

V(x)

a'0

a'1

a'2

a'3

a'4

 

 

 

 

 

 

 

 

 

 

 

 

Reset

 

 

 

 

 

dg

 

dg

D0

 

 

D1

 

D2

 

 

 

gd

 

 

 

V′ (x) x3

 

ГС

 

 

 

 

 

 

 

 

 

 

 

S1

S2

&

 

 

 

S0

 

 

к

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Селектор

 

 

6,…,10

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

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

D0t =V 't D2t 1, D1t =V 't D0t1, D2t = D1t 1 D2t1.

Промоделируем работу декодирующего устройства для полинома V(x) = 1 x2 x3 при однократной ошибке в разряде a3 (полином ошибки e(x) = x3). Результаты моделирования сведем в табл. 4.4.

В рассматриваемом случае полином V'(x) будет выглядеть так:

V'(x) = V(x) e(x) = 1 x2 x3 x3 = 1 x2.

Таблица 4.4

67 e(x) = x3

№ такта

e

 

D0

D1

D2

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

Согласно предварительным расчетам селектор сработает (ошибочный разряд a3 попадает в старший разряд буферного регистра) на такте с номером: 2 5 – 3 – 1 = 6. Исправление произойдет на следующем такте, т.е. на такте с номером 2 5 – 3 = 7. На этом такте произойдет обнуление элементов памяти генератора синдрома.

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

4.2.Порядок выполнения лабораторной работы

4.2.1.Выполнение расчетной части лабораторной работы

1.Выбрать вариант задания на лабораторную работу (табл. 4.5). Для этого для своего номера в списке группы необходимо определить вид кода, который будет использован в работе, и порождающий полином g(x).

Для всех вариантов задан код Хемминга с dmin = 4 и корректирующими свойствами, направленными на исправление ошибок кратности s = 1

иобнаружение ошибок кратности r = 2. По виду кода необходимо определить табличный код, от которого он построен, и степень укорочения, а затем построить порождающий полином для кода с четным dmin в виде g(x)·(1

x).

 

 

Таблица 4.5

 

 

 

БЧХ-код

Задающий полином

1

(14, 9, 4)

g(x) = 1 x x4

 

 

68

 

 

 

 

2

(13, 8, 4)

g(x) = 1 x x4

3

(12, 7, 4)

g(x) = 1 x x4

4

(11, 6, 4)

g(x) = 1 x x4

5

(10, 5, 4)

g(x) = 1 x x4

6

(9, 4, 4)

g(x) = 1 x x4

7

(14, 9, 4)

g(x) = 1 x3 x4

8

(13, 8, 4)

g(x) = 1 x3 x4

9

(12, 7, 4)

g(x) = 1 x3 x4

10

(11, 6, 4)

g(x) = 1 x3

x4

11

(10, 5, 4)

g(x) = 1 x3

x4

12

(9, 4, 4)

g(x) = 1 x3

x4

2.Любым способом рассчитать кодовый полином V(x) для информационной части u(x) = 1 xm–1, где m – длина информационной части кода. Рассчитать кодовые полиномы V'(x) для e(x) = x2 и e(x) = x x3.

3.Построить структурную схему декодера Меггита для индивидуального варианта задания, выписать функции возбуждения для элементов памяти. Для декодера Меггита использовать схему с универсальной настройкой селектора и с использованием дополнительного полинома d(x).

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

После выполнения расчетной части результаты расчетов и моделирования необходимо показать преподавателю.

4.2.2. Выполнение практической части лабораторной работы

Для выполнения данной части лабораторной работы предлагается использовать программный продукт MatLab Simulink. Это пакет программ, позволяющий выполнить математическое и схемотехническое моделирование процессов преобразования, передачи и обработки информации. Порядок выполнения практической части лабораторной работы приведен ниже.

Этап 1. Открыть проект BCH_decoder.mdl в среде MatLab Simulink. Этап 2. Сохранить проект в рабочем каталоге по другим именем. Этап 3. Спроектировать функциональную схему декодера согласно

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

69

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

Рис. 4.4. Структурная схема лабораторного стенда

Для выполнения схемотехнического проектирования необходимо заменить элементы, выделенные синим цветом (Converter и Buffer Register), для чего воспользоваться подготовленным шаблоном template_BCH_decoder.mdl. Назначение устройств:

Converter – преобразователь вектора из параллельной формы представления в последовательную форму Converter для разных значений длины кода n;

Buffer Register – буферный регистр для промежуточного хранения n символов кода.

Элементы, выделенные зеленым цветом, должны быть изменены для индивидуального варианта задания:

V' – вектор V', задаваемый для моделирования;

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