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

(по цифровому вещанию) Dvorkovich_V_Cifrovye_videoinformacionnye_sistemy

.pdf
Скачиваний:
258
Добавлен:
15.03.2016
Размер:
23.26 Mб
Скачать

Глава 19. Помехоустойчивое кодирование в системах передачи

Последовательное возведение в степень α позволяет, таким образом, определить все ненулевые элементы расширенного поля GF(pm) в виде линейной комбинации первых m степеней α: α0, α1, . . . , αm−1 с коэффициентами из основного поля GF(p).

Рассмотрим пример построения поля GF(24) на основе примитивного полинома f (α) = α4 + α + 1, при этом на основании (19.37) справедливо выражение

α4 = α + 1.

Тогда последовательное возведение в степень примитивного элемента α дает все ненулевые элементы поля GF(24). Результаты вычислений представлены в табл. 19.5.

Некоторые свойства расширенных конечных полей

Если GF(q) — конечное поле характеристики 2, то для любых элементов α, β GF(q), q = 2m, будет выполняться соотношение (α + β)2 = α2 + β2.

Элементы поля GF(2m) вида α2, α22 , . . . , α2i называются 2-сопряженными по степени двойки с элементом α. Вследствие конечности поля GF(2m) последовательность, составленная из α и сопряженных с ним элементов, имеет ограниченный набор отличающихся друг от друга элементов. Так, если все элементы вида α2, α22 , . . . , α2l−1 различны, а продолжение последовательности приводит к повторению какого-либо уже содержащегося в ней элемента, то α2l = α. Длина l любой последовательности (цикла) сопряженных по степени 2 элементов поля GF(2m) всегда делит степень расширения m.

Степени сопряженных элементов вида αi, α2i, . . . , α2l−1 i образуют непересекающиеся циклические множества — циклотомические классы Ci = {i, 2i, 4i, . . . , 2l−1i}.

Кпримеру, в поле GF(24) можно выделить следующие циклические множества

C1 = {1, 2, 4, 8} : α1, α2, α4, α8, α16 = α1, α17 = α17−15 = α2 и т. д.;

C3 = {3, 6, 12, 9} : α3, α6, α12, α24 = α24−15 = α9, α18 = α18−15 = α3 и т. д.; C5 = {5, 10} : α5, α10, α20 = α20−15 = α5 и т. д.;

C7 = {7, 14, 13, 11} : α7, α14, α28 = α28−15 = α13, α26 = α26−15 = α11 и т. д.

Обозначение Cs выбрано таким образом, что s указывает на наименьшую степень соответствующего элемента поля, при этом в составе каждого множества содержится ls элементов. Индексы {s} называются представителями классов по модулю (q − 1).

Одним из постулатов высшей алгебры является положение, что любой многочлен f (x) степени m с действительными или комплексными коэффициентами всегда имеет ровно m действительных или комплексных корней x1, x2, . . . , xm, что означает возможность его представления в виде

$m

f (x) = (x − xi).

i=1

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

Если αi является корнем многочлена φ(x) над полем GF(2), то и все сопряженные с ним по степени два элементы αi·2j , j = 1, 2, . . . , ls также являются

 

19.3. Циклические коды

 

Таблица 19.5. Пример построения поля GF(24)

 

 

 

 

 

 

Элемент

Элемент поля в векторной форме

Двоичный символ

 

 

поля

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a3

a2

a1

a0

 

 

0

0

0

0

0

0

 

 

α0

1

0

0

0

1

 

 

α1

α

0

0

1

0

 

 

α2

α2

0

1

0

0

 

 

α3

α3

1

0

0

0

 

 

α4

α4 = α + 1

0

0

1

1

 

 

α5

α5 = α · α4 = α(α + 1) = α2 + α

0

1

1

0

 

 

α6

α6 = α · α5 = α(α2 + α) = α3 + α2

1

1

0

0

 

 

α7

α7 = α · α6 = α(α3 + α2) = α4 + α3 = α3 + α + 1

1

0

1

0

 

 

α8

α8 = α·α7 = α(α3 +α+1) = α4 2 +α = α+1+α2 +α = α2 +1

0

1

0

1

 

 

α9

α9 = α · α8 = α(α2 + 1) = α3 + α

1

0

1

0

 

 

α10

α10 = α · α9 = α(α3 + α) = α4 + α2 = α2 + α + 1

0

1

1

1

 

 

α11

α11 = α · α10 = α(α2 + α + 1) = α3 + α2 + α

1

1

1

0

 

 

α12

α12 = α · α11 = α(α3 + α2 + α) = α4 + α3 + α2 = α3 + α2 + α + 1

1

1

1

1

 

 

α13

α13 = α·α12 = α(α3 2 +α+1) = α4 3 2 +α = α3 2 +1

1

1

0

1

 

 

α14

α14 = α · α13 = α(α3 + α2 + 1) = α4 + α3 + α = α3 + 1

1

0

0

1

 

 

α15

α15 = α · α14 = α(α3 + 1) = α4 + α = α + 1 + α = 1 = α0

0

0

0

1

 

 

α16

α16 = α · α15 = α = α1

0

0

1

0

 

 

. . .

. . .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

корнями полинома φ(x). Если αi является некоторым ненулевым элементом поля GF(2m), тогда неприводимый полином φ(x) наименьшей степени над GF(2), для которого φ(αi) = 0, называется минимальным многочленом αi над GF(2). В [7.7] поясняется, что минимальные многочлены для элементов αi и αp·i равны

φi(x) = φp·i(x).

(19.40)

Для минимального многочлена φ(x) элемента αi также справедливо следующее выражение

ls

 

j$

 

φs(x) = (x − αj ),

(19.41)

=s

где ls — длина цикла сопряженных с αi по степени 2 элементов.

Таким образом, минимальный многочлен элемента αi GF(q) может быть представлен в виде

φs(x) = (x − αi)(x − α2i) . . . (x − αi2ls −1 ).

В соответствии с теоремой Ферма для конечных полей [7.7], каждый элемент β поля GF(q), qpm, удовлетворяет уравнению βq − β = 0, или, что то же самое, является корнем уравнения xq x. В силу этой теоремы справедливо выражение

 

(x−β)

 

xq − x = xq−1 − 1 =

β $

(19.42)

.

GF (q)

Глава 19. Помехоустойчивое кодирование в системах передачи

Из уравнений (19.41) и (19.42) следует, что

(x−αj )

$

xq−1 − 1 =

,

(19.43)

j Cs

где s принимает все значения из множества представителей классов по модулю (q − 1).

Выражение (19.42) иллюстрирует разложение бинома xq−1 − 1 на неприводимые сомножители в поле GF(q) и, согласно (19.22), определяет способ нахождения порождающих полиномов циклических кодов. Этот способ состоит

вследующем:

поиск всех циклотомических классов по модулю (2m − 1);

для каждого циклотомического класса Cs вычислить минимальный полином φs(x) [7.7]; найденный многочлен φs(x), согласно (19.22), может быть применен в качестве порождающего полинома циклического кода.

В качестве примера можно решить задачу определения минимального многочлена φs(x) для поля GF(24). Используя результаты рассмотренного выше примера, определим минимальный полином для элемента α5 (циклотомический класс C5). Тогда на основании (19.41)

φ5(x) = (x + α5)(x + α10) = x2 + x(α5 + α10) + α15 =

 

= x2 + x(α2

+ α + α2

+ α + 1) + 1 = x2

+ x + 1,

C

DA B C

 

 

 

 

 

 

 

αDA B

 

 

α5

10

 

 

где арифметические операции сложения и вычитания эквивалентны, а сумма элементов поля характеристики 2 одинаковых степеней равна 0 в силу свойств двоичной арифметики.

Можно получить выражения для остальных минимальных полиномов поля GF(24):

φ0(x) = x + 1;

φ1(x) = x4 + x + 1;

φ3(x) = x4 + x3 + x2 + x + 1; φ7(x) = x4 + x3 + 1.

19.3.8. Циклические коды Хэмминга

Циклические коды Хэмминга образует важное семейство циклических (n, k)-ко- дов. Свойства кодов Хэмминга как подмножества линейных кодов были подробно рассмотрены выше. При определении методов построения циклических кодов Хэмминга используется понятие примитивного многочлена.

Неприводимый многочлен p(x) степени m называется примитивным, если

наименьшая степень n, при которой многочлен xn +1 делится на p(x) без остатка, равна n = 2m − 1.

В табл. 19.5 приведены некоторые примитивные многочлены с коэффициентами из GF(2). Примитивные многочлены играют важную роль в технике передачи сообщений. Например, примитивный многочлен степени n = 23 используется

19.3. Циклические коды

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

Любой циклический код Хэмминга длины n = 2m − 1 с m>3 может быть построен с помощью некоторого примитивного многочлена p(x) степени m. Используя в качестве порождающего полинома p(x), можно строить порождающие и проверочные матрицы, а также схемы декодеров любых циклических кодов Хэмминга (табл. 19.6).

Таблица 19.6. Порождающие и проверочные матрицы циклических кодов Хэмминга

m

p(x)

m

p(x)

 

 

 

 

3

1 + x + x3

11

1 + x+x4 + x6 + x12

4

1 + x + x4

12

1 + x+x3 + x4 + x13

5

1 + x2 + x5

13

1 + x2 + x6 + x10 + x14

6

1 + x + x6

14

1 + x + x15

7

1 + x3 + x7

15

1 + x + x2 + x3 + x4 + x12 + x13 + x14 + x15

8

1 + x2 + x3 + x4 + x8

23

1 + x + x23

9

1 + x4 + x9

32

1 + x + x2 + x3 + x4 + x5 + x7 + x8 + x10

10

1 + x3 + x10

+x11 + x12 + x16 + x22 + x23 + x26 + x32

 

11

1 + x2 + x11

 

 

19.3.9. CRC-коды

Примером использования семейства циклических кодов является контроль ошибок с помощью циклического избыточного кода, т. е. CRC-кода (Cyclic Redundancy Check), называемого также кодом Абрамсона. При передаче данных в пакетных режимах эти коды используются для определения целостности блоков данных (Frame Checking Sequence — FCS). Примером систем с FCS являются стандарты передачи данных Х.25 (HDSL), ISDN, DECT и LAN. Коды CRC представляют собой расширения циклических кодов Хэмминга.

Пусть p(x) — примитивный многочлен степени m, тогда порождающий многочлен CRC-кода Gm(x) можно записать в виде произведения:

Gm(x) = (1 + x)p(x).

(19.44)

С помощью порождающего многочлена Gm(x) может быть построен циклический CRC (n, k)-код с параметрами n = 2m − 1, k = 2m − m − 2, имеющий m + 1 проверочных символов и dmin = 4. CRC-коды обладают следующими важными свойствами:

все ошибки кратности 3 или меньше обнаруживаются;

все ошибки нечетной кратности обнаруживаются;

все пакеты ошибок длины m + 1 или меньше обнаруживаются;

доля необнаружимых пакетов ошибок длины m + 2 составляет 2−m;

доля необнаружимых пакетов ошибок длины, большей m + 2, составляет

2−(m−1).

Глава 19. Помехоустойчивое кодирование в системах передачи

На практике часто используются укороченные CRC-коды. В табл. 19.4 приведены наиболее употребляемые порождающие многочлены CRC-кодов, а также указаны области их применения.

19.3.10. Двоичные БЧХ-коды.

Коды БЧХ представляют собой класс линейных циклических кодов, исправляющих кратные ошибки. Они являются обобщением ранее описанных кодов Хэмминга. Сокращение БЧХ связано с именами Боуза Р.К., Рей-Чоудхури Д.К. и Хоквингема А., одновременно описавшими в 1959–60 гг. эти коды.

Циклический код длины n над полем GF(q) называется кодом БЧХ с конструктивным расстоянием δ, если для некоторого целого числа b 0 его порождающий многочлен равен

G(x) = НОК{φb(x), φb+1 (x), φb+2 (x), . . . , φb+δ−2(x)},

(19.45)

т. е. G(x) — полином над полем GF(q) наименьшей степени такой, что элементы поля последовательных степеней αb, αb+1, αb+2, . . . , αb+δ−2 являются его корнями. Это значит, что вектор C(x) будет кодовым вектором БЧХ только тогда, когда

C(αb) = C(αb+1 ) = . . . = C(αb+δ−2 ) = 0.

Двоичные БЧХ-коды строятся на основе расширенного поля GF(2m). Если порождающий полином G(x) имеет в расширенном поле GF(2m) корни α, α2, . . . , αs, где α — примитивный элемент поля GF(2m), тогда циклический код с порождающим полиномом G(x) обладает минимальным расстоянием dmin, не меньшим s + 1.

Таким образом, двоичный БЧХ-код с кодовым расстоянием dmin 2t + 1 = = s + 1 является циклическим кодом, если его порождающий полином имеет 2t последовательных корней для элементов полей αb, αb+1, αb+2, . . . , αb+2t−1. Коды при b = 1 называются кодами БЧХ в узком смысле, при n = 2m − 1 коды называются примитивными. Размерность информационной части кода равна

k = n − deg(G(x)).

Общий алгоритм построения БЧХ-кодов состоит в следующем: для значения m, обеспечивающего необходимую длину кода n = 2m −1, из таблиц примитивных полиномов выбирается полином степени m и строится расширенное поле GF(2m). В построенном поле выбирается последовательность α, α2, . . . , αs степеней примитивного элемента α, определяются все циклотомические классы элементов последовательности и для каждого циклотомического класса Ci вычисляется минимальный полином φi(x) [7.7].

Если α выбран в качестве корня порождающего полинома G(x), то, в соответствии с (19.41), корнями будут и все сопряженные с α по степени 2 элементы α2, α4, . . ., которые вместе с тем являются и корнями соответствующего минимального многочлена

φ1(x) = (x − α)(x − α2) . . . (x − ς2l1−1),

где l1 — размер циклотомического класса элемента α, который вследствие примитивности α равен l1m.

19.3. Циклические коды

Следующим элементом, претендующим на роль корня G(x), является α2, который уже учтен в сомножителе φ1(x), поскольку сопряжен с α по степени 2.

Если минимальное расстояние конструируемого кода больше 2 (s>2), то следующим корнем порождающего полинома будет α3, а также все 2-сопряженные с ним элементы (α3)2, (α3)4, . . ., которые являются корнями минимального для

α3 полинома

φ3(x) = (x − α3)(x − (α3)2) . . . (x − (α3)2l3 −1 ),

где l3 — длина цикла 2–сопряженных с α3 элементов.

Данная операция построения порождающего полинома G(x) продолжается до полного исчерпывания множества α, α2, . . . , αs, т. е. до тех пор, пока каждый из них не войдет в число корней какого-нибудь минимального многочлена. В итоге порождающий полином G(x) определяется как произведение всех получаемых минимальных многочленов

G(x) = φ1(z)φ3(z) . . . .

Построенный таким образом циклический код может исправлять более t = = dmin − 1/2 = s/2 ошибок, в связи с этим величина d = 2t + 1 = s + 1 носит название конструктивного расстояния кода, поскольку истинное минимальное расстояние кода dmin может быть больше конструктивного.

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

n = 2m − 1, d 2t + 1, k n − mt.

Таблица 19.7. Элементы поля БЧХ-кодов

Элемент поля

Элемент поля в векторной форме

Двоичный символ

 

 

 

 

 

a2

a1

a0

 

 

 

 

 

0

0

0

0

0

 

 

 

 

 

α0

1

0

0

1

α1

α

0

1

0

α2

α2

1

0

0

α3

α3 = α + 1

0

1

1

α4

α4 = α · α3 = α(α + 1) = α2 + α

1

1

0

α5

α5 = α · α4 = α(α2 + α) = α2 + α + 1

1

1

1

α6

α6 = α · α5 = α(α2 + α + 1) = α2 + 1

1

0

1

α7

α7 = α · α6 = α(α2 + 1) = α3 + α = α + 1 + α = 1

0

0

1

α8

α8 = α · α7 = α

0

0

1

. . .

. . .

 

 

 

В качестве примера рассмотрим построение порождающего полинома G(x) БЧХ-кода длины n = 23 − 7, исправляющего любую однократную ошибку (t = 1, s = 2t = 2). Расширенное поле GF(23), необходимое для нахождения G(x), приведено в табл. 19.7. Поскольку s = 2, то корнями порождающего многочлена должны быть элементы α и α2.

Минимальный многочлен, отвечающий элементу α, имеет вид:

g1(x) = (x+α)(x+α2 )(x+α4 ) = (x3 +(α+α2 4)x2 +(αα2 +αα4 2α4)x+αα2 α4,

где αα2α4 = α7 = 1; α + α2 + α4 = α + α2 + α + α2 = 0;

αα2 + αα4 + α2α4 = α3 + α5 + α6 = α + 1 + α2 + α + 1 + α2 + 1 = 1.

Глава 19. Помехоустойчивое кодирование в системах передачи

Ипоэтому φ1(x) = x3 + x + 1. Элемент α2, являющийся корнем G(x), уже учтен в φ1(x), так что G(x) = φ1(x) = x3 + x + 1.

Поскольку deg(G(x)) = 3, число информационных символов k, содержащихся в каждом слове, будет k = n − deg(G(x)) = 4, что соответствует циклическому коду Хэмминга (n, k)=(7,4), исправляющему любую однократную ошибку.

В настоящее время разработчикам телекоммуникационных систем нет необходимости осуществлять весь объем работы по поиску БЧХ-кода, поскольку подобные исследования были выполнены много лет назад, результатом чего явились детальные таблицы, содержащие готовые к использованию порождающие полиномы БЧХ-кодов [7.1, 7.7, 7.8].

Асимптотические оценки зависимости вероятности ошибки в кодовом блоке PB , q-ичном символе PS и бите Pb при декодировании кодов БЧХ по максимуму правдоподобия имеют вид [7.1]:

 

 

n

 

i

 

PB =

Cnt Pqi (1 − Pq )n−i,

 

 

=t+1

 

 

 

n

 

1

i

 

PS

n

(i + t) Cni Pqi (1 − Pq )n−i,

(19.46)

 

 

=t+1

 

q/2

Pb q − 1 PS .

Для некоторых (n, k)-кодов БЧХ с rk/n ≈ 1/2 на рис. 19.13 представлены зависимости вероятности ошибки на символ Pb от отношения сигнал/шум на бит Eb/N0, на рис. 19.14 показаны аналогичные зависимости для кодовых скоростей r, близких к 1/3 и 2/3. Как следует из сопоставления представленных графиков, энергетическая эффективность кодов БЧХ с уменьшением кодовой скорости понижается.

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

19.3.11. Коды Рида–Соломона

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

Коды Рида–Соломона относятся к недвоичным кодам БЧХ, значения кодовых слов которых взяты из поля GF(2m). Если при построении порождающего

19.3. Циклические коды

 

Рис. 19.13. Оценка характеристик различных кодов БЧХ в ДСК для кодовых скоростей,

близких к 1/2

 

Рис. 19.14. Оценка характеристик различных кодов БЧХ в ДСК для кодовых скоростей,

близких к 1/3 и 2/3

полинома составлять его как произведение биномов вида x − αi, i = 1, 2, . . . , s, то получающийся полином окажется недвоичным. Вследствие этого и код, порождаемый им, также окажется недвоичным, поскольку символы кода будут принадлежать расширенному полю GF(q), q = 2m.

Глава 19. Помехоустойчивое кодирование в системах передачи

Таким образом, q-ичный (q = 2m) код с порождающим полиномом вида

 

s

 

 

i$

 

G(x) =

(x − αi),

(19.47)

 

=1

 

называется кодом Рида–Соломона, или просто РС-кодом, и обладает кодовым расстоянием, равным dmin s + 1. Длина указанного кода составляет nq − 1 = 2m − 1 q-ичных символов, а поскольку степень порождающего полинома равна s, то число информационных q-ичных символов будет равно kn − s, и следовательно, dmin n − k + 1.

Коды Рида–Соломона являются оптимальными с точки зрения величины кодового расстояния dmin среди всех q-ичных кодов с аналогичными значениями длины и скорости кодирования.

Очевидно, что любой q-ичный (q = 2m) символ может быть представлен

ввиде двоичного блока размерности m. Тогда в результате получаем двоичный код длины nbm · nm · (2m − 1) с числом информационных двоичных символов kbm ·k и скоростью Rkb/nbk/n. Этот код чрезвычайно эффективен в борьбе с так называемыми «пакетами ошибок»: если в результате ошибки будут искажены t = (d − 1)/2 последовательных 2m-ичных символов, то будет повреждено в m раз большее число двоичных разрядов. Однако благодаря своей исправляющей способности РС-код может исправить любую ошибку кратности до t включительно, а значит, его двоичный эквивалент способен исправлять любой пакет ошибок длиной до m · t двоичных символов.

Для декодирования кодов Рида–Соломона существуют достаточно эффективные алгоритмы декодирования жестких решений, что позволяет использовать относительно длинные коды во многих практических приложениях, особенно

всистемах с q-ичной модуляцией.

Так как коды Рида–Соломона являются одной из разновидностей кодов БЧХ, то для оценки их эффективности можно воспользоваться формулами (19.46). Для примера на рис. 19.15 представлены зависимости оценки вероятности символьной ошибки Ps от отношения сигнал/шум Eb/N0 на информационный битов для различных значений q и кодовых скоростей r.

Сверточное (convolutional) кодирование можно пояснить, рассматривая действие кодирующего устройства [7.10, 7.11]. Структурная схема одного из вариантов построения такого устройства представлена на рис. 19.16. Оно состоит из (M −1)- разрядного сдвигового регистра, N сумматоров по модулю два и коммутатора K.

Кодируемые биты источника bi в дискретные моменты времени i = 1, 2, . . .

последовательно поступают на вход кодера. Последние M − 1 битов источника запоминаются в регистре сдвига. Вместе с поступившим в дискретный момент времени i битом bi они подаются на N сумматоров по модулю два. При этом в каждый дискретный момент времени i блок из M бит источника линейно преобразуется в N выходных двоичных кодовых символов сверточного кода u1i , u2i , . . . , uNi , которые с помощью коммутатора K занимают временной ин-

19.4. Сверточные коды

 

Рис. 19.15. Оценка характеристик кодов Рида–Соломона

 

Рис. 19.16. Структурная схема сверточного кодера

тервал, равный длительности одного бита источника bi. Опрашивая поочередно выходы N сумматоров в течение битового интервала τb, коммутатор преобразует параллельное представление кодовых символов в последовательное. С приходом очередного бита содержимое регистра сдвигается на одну ячейку вправо. Происходит частичное обновление кодируемого блока — в него водится поступивший от источника бит с одновременным исключением самого «старого» бита предыдущего блока. В результате вновь формируется блок из M бит источника, запаздывающий на один бит относительно предыдущего и содержащий M − 1