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

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

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

40

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

Для выполнения отчета и защиты необходимо воспользоваться тре-

бованиями пункта «Содержание отчета и защита лабораторных работ».

41

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

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

3.1.Общие сведения из теории

3.1.1. Кодирование БЧХ-кодов с использованием порождающего полинома g(x)

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

Полином циклического кода можно представить в виде

k 1

k +m1

 

V (x) = c j x j +

ui xi ,

(3.1)

j=0

i=k

 

 

k 1

где cj – коэффициенты полинома избыточной части r(x) = c j x j ; ui – ко-

j=0

эффициенты исходного полинома информационной части u(x) = m1ui xi .

i=0

Полином информационной части u(x) сдвинут в сторону старших разрядов на k символов, что эквивалентно умножению информационного полинома на xk. Представим полином циклического кода в виде

V (x) = r(x) u(x) x k .

(3.2)

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

u(x) xk = q(x) g(x) r(x),

(3.3)

где g(x) – порождающий полином; q(x) – частное от деления полинома u(x) xk на порождающий полином g(x); r(x) – остаток от деления полинома u(x) xk на порождающий полином g(x).

Таким образом, для определения избыточной части r(x) полинома циклического систематического кода V(x) необходимо определить остаток от деления полинома u(x) xk на порождающий полином g(x). Указанный

42

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

Пример 3.1. Для циклического кода (7, 4, 3), заданного порождающим полиномом g(x) = 1 x2 x3, и информационного полинома u(x) = 1 рассчитать избыточные символы.

Определим остаток от деления полинома u(x) xk = 1 x3 = x3 на порождающий полином g(x) = 1 x2 x3.

x3

 

 

x3 x2 1

 

x3 x2 1

 

 

 

 

1

x2 1

 

 

 

Рассчитанную избыточную часть представим в виде полинома r(x) = 1 x2. Полином V(x) может быть представлен в виде V(x) = 1 x2 x3. Вектор V может быть представлен в виде V = (1011000).

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

Пример 3.2. Для циклического кода (7, 3, 4), заданного порождающим полиномом g(x) = 1 x2 x3, и информационного полинома u(x) = 1 рассчитать избыточные символы.

Построим порождающий полином для заданного кода

g(x) = (1 x2 x3)·(1 x) = 1 x2 x3 x x3 x4 = 1 x x2 x4.

Определим остаток от деления полинома u(x) xk = 1 x4 = x4 на порождающий полином g(x) = 1 x x2 x4:

x4

 

 

x4 x2 x 1

 

x4 x2 x 1

 

 

 

 

1

x2 x 1

 

 

 

Рассчитанную избыточную часть представим в виде полинома r(x) = = 1 x x2. Полином V(x) может быть представлен как V(x) = 1 x x2x4. Вектор V может быть представлен в виде V = (1110100).

43

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

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

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

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

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

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

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

строения РСЛЛОС зависит от вида полинома, при помощи которого строится кодер.

Рассмотрим структурную схему кодирующего устройства с предварительным умножением на xk. Предварительное умножение позволяет избежать временной задержки и аппаратной избыточности за счет подачи в схему информационного полинома u(x), предварительно умноженного на величину xk. Это можно сделать, подавая полином u(x) не на вход первого элемента памяти, соответствующего младшей (нулевой) степени, а на выход последнего, соответствующего k-й степени. Схема такого устройства приведена на рис. 3.1.

 

 

 

 

 

 

 

 

 

 

 

 

У

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

к1

 

 

 

 

к2

 

 

 

 

g0

 

g1

gk–1

 

 

 

gk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V(x)

 

D0

 

 

 

 

 

Dk–1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u(x) xk

Рис. 3.1. Структурная схема кодера БЧХ-кода с предварительным умножением на xk

44

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

Dt

= Dt 1

g

(Dt 1

ut ),i =

 

 

1..k 1,

i

i 1

 

 

i

 

k

 

 

 

Dt

=ut g

0

Dt 1

=ut Dt 1.

0

 

 

 

k 1

 

k 1

Ключ к1 открыт в течение первых m тактов для активизации обратной связи, закрыт в течение последующих k тактов для разрыва обратной связи. Ключ к2 закрыт в течение первых m тактов для отключения регистра от выхода, открыт в течение последующих k тактов для выдачи избыточной части в канал связи. Ключи переключаются по сигналу управления У: 1 – к1 открыт, к2 закрыт, 0 – к1 закрыт, к2 открыт. Расчет избыточной части по предварительно умноженному на xk информационному полиному u(x) осуществляется за первые m тактов работы схемы.

Пример 3.3. Построить схему кодирующего устройства с предварительным умножением на xk для циклического кода (7, 4, 3) и порождающего полинома g(x) = 1 x2 x3. Промоделировать работу схемы для

информационного полинома u(x) = 1.

 

 

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

С учетом

параметров кода, вида

и способа кодирования

схема будет

выглядеть

следующим образом

(рис. 3.2).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

У

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

к1

 

 

 

 

 

к2

 

 

 

 

 

 

g0

 

 

 

g2

 

 

 

 

g3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V(x)

 

 

D0

 

D1

 

 

 

 

D2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u(x) x3

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

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

D0t = ut D2t1 , D1t = D0t1 , D2t = D1t1 D2t1 ut .

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

45

 

 

 

 

 

 

 

Таблица 3.1

 

 

 

 

 

 

 

 

 

№ такта

u

D0

D1

D2

V

 

 

 

 

 

0

0

0

 

У = 1:

1

0

0

0

0

0

2

0

0

0

0

0

к1 открыт,

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

к1

закрыт,

7

0

0

0

0

1

к2

открыт

Моделирование показало, что к такту с номером m = 4 в элементах памяти регистра сформировалась избыточная часть r(x) = 1 x2, а к такту с номером n = 7 в канал связи передан полином V(x) = 1 x2 x3.

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

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

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

3.1.2. Кодирование БЧХ-кодов с использованием проверочного полинома h(x)

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

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

m

 

h(x) = hi xi .

(3.4)

i=0

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

 

 

 

46

 

 

 

 

 

 

 

h

h

h

 

 

 

 

hn1

n2 ...

1

0

 

 

H

k×n

= hn2

hn3 ...

h0

hn1

,

(3.5)

 

 

... ... ...

...

 

 

 

 

...

 

 

 

 

hnk hn(k +1) ...hn(k 2) hn(k 1)

 

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

По известному соотношению V HT=0 можно построить k уравнений, которые образуются путем умножения вектора V на столбцы транспонированной матрицы HT (строки матрицы H). Но нумерация элементов вектора начинается с младших разрядов, а строк матрицы H – со старших. Поэтому для удобства произведем перенумерацию элементов вектора V, выразив при этом все элементы полинома через коэффициенты ai:

V (x) = an1 an2 x an3 x2 ... a0 xn1 = n1 an1i xi .

(3.6)

i=0

 

Таким образом, после перенумерации коэффициент an–1 соответствует младшему разряду вектора, а коэффициент a0 – старшему. С учетом выполненных действий выпишем уравнения:

 

 

an1 hn1 an2 hn2 ... a1 h1 a0 h0

= 0,

 

 

 

an1 hn2 an2 hn3 ... a1 h0

a0 hn1

= 0,

 

 

 

(3.7)

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

n1

h

a

n2

h

... a

h

2)

a

0

h

 

= 0.

 

nk

 

n(k +1)

1

n(k

 

 

n(k 1)

 

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

 

am hm am1 hm1

... a1 h1 a0 h0

= 0,

 

am+1 hm am hm1

... a2 h1 a1 h0

= 0,

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

m+k 1

h a

m+k 2

h

 

... a

k

h

a

k 1

h = 0.

 

m

m1

 

1

 

0

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

m

ai + j hi =0, i =0

где j = 0, k 1.

(3.8)

(3.9)

47

Согласно проведенной перенумерации символы с a0 по am–1 – информационные, а с am по am+k–1 = an–1 – избыточные. Поэтому в первом уравнении имеется только одно неизвестное (am), во втором – два (am и am+1) и т.д. При этом, определив в первом уравнении неизвестное am и подставив его во второе, получим во втором уравнении тоже одно неизвестное. Последовательно вычисляя избыточные символы в каждом уравнении, определим все элементы избыточной части. Можно записать рекуррентную формулу вычисления избыточных символов:

m1

 

am+ j = ai+ j hi .

(3.10)

i=0

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

Пример 3.4. Для циклического кода (7, 4, 3), информационного полинома u(x) = 1 и проверочного полинома h(x) = 1 x2 x3 x4 рассчитать избыточные символы.

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

41

a4+ j = ai+ j hi , i=0

a4 = a3 h3 a2 h2 a1 h1 a0 h0 = a3 a2 a0 = 1 0 0 = 1, a5 = a4 h3 a3 h2 a2 h1 a1 h0 = a4 a3 a1 = 1 1 0 = 0, a6 = a5 h3 a4 h2 a3 h1 a2 h0 = a5 a4 a2 = 0 1 0 = 1.

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

ного полинома h(x) h3 = h2 = h0 = 1, а h1 = 0.

Рассчитанную избыточную часть можно представить в виде полинома r(x) = 1 x2. Очевидно, что результаты расчетов избыточной части для одного кода, выполненных при помощи разных способов, совпадают.

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

48

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

m1+t

 

am+ j = ai+ jt hi ,

(3.11)

i=0

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

Пример 3.5. Для укороченного БЧХ-кода (5,2,3), информационного полинома u(x) = 1 и проверочного полинома h(x) = 1 x2 x3 x4 рассчитать избыточные символы.

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

 

21+2

a2+ j =

ai+ j2 hi ,

 

i=0

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

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

a2 = a1 h3 a0 h2 = a1 a0 = 1 0 = 1,

a3 = a2 h3 a1 h2 a0 h1 = a2 a1 = 1 1 = 0,

a4 = a3 h3 a2 h2 a1 h1 a0 h0 = a3 a2 a0 = 0 1 0 = 1.

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

ного полинома h(x) h3 = h2 = h0 = 1, а h1 = 0.

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

49

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

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

 

 

 

am+j

hm–1

hm–2

h0

 

Dm–1 Dm–2 D0 V(x)

am–1

am–2

a0

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

На рис. 3.3 hi – коэффициенты проверочного полинома h(x) для конкретного кода. Если коэффициент hi = 0 (xi не входит в проверочный полином h(x)), то i-й элемент обратной связи отсутствует. Количество элементов памяти равно m – степени проверочного полинома g(x). Элемент памяти Di соответствует xi–1 (с учетом перенумерации). Начальная установка регистра производится символами информационного полинома u(x), причем старший разряд заноситсявэлементD0, амладший– вDm–1.

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

Dt

= Dt 1

,i =

 

 

 

 

0..m 2,

 

 

i

 

i 1

 

 

 

 

 

 

Dt

 

= h Dt 1

h Dt 1

... h

Dt 1 .

m1

0

0

 

1 1

m1

m1

На элементе Dm–1 организуется вычисление по рекуррентной формуле символов избыточной части am+j. Выходом схемы является выход эле-

мента D0.

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

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