Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы циклических кодов.doc
Скачиваний:
35
Добавлен:
21.09.2019
Размер:
1.48 Mб
Скачать

5. Циклические коды бчх

Коды Боуза—Чоудхури—Хоквингема (БЧХ-коды) представ­ляют собой большой класс циклических кодов, исправляющих независимые ошибки кратности t и менее. Для кодов БЧХ ха­рактерны все основные свойства циклических кодов. Чаще все­го коды БЧХ описывают с помощью корней порождающего мно­гочлена Р (х) степени 2t. В качестве корней Р (х) выбирают 2t последовательных элементов аj,aj+1 ..., аj+2i-1поля Галуа GF (р'п), где 1≤ j≤pm— 1. Если при этом элемент а является примитивным (первообразным) в поле GF(pm), то такой код БЧХ называют примитивным с длиной кодовой комбинации п=рт1 над полем GF (р). Для двоичных примитивных ко­дов БЧХ п = 2n — 1 над полем GF (2). В случае, если ряд кор­ней многочлена Р(х) для кода БЧХ начинается с j=1, т. е. а, а2, .... а2t, то такой код называют кодом БЧХ в узком смысле.

Код БЧХ, у которого корень а не является примитивным элементом поля GF (рm), т. е. имеет порядок d < рт —1, на­зывают непримитивным с длиной комбинации п =d.

Пусть аj-элемент расширения простого числового поля. Тогда по определению, данному в [7], некоторый нормирован­ный многочлен т(х) наименьшей степени, для которого т(аj ) = 0, называют минимальной функцией для аi.

Отметим, что минимальные функции m(х) являются непри-водимыми многочленами. Если предположить, что каждому из корней аi производящего многочлена Р (х) соответствует своя минимальная функция тi (х), то производящий многочлен Р (х) должен быть наименьшим общим кратным всех минимальных функций, т. е.

P(x)=НОК[m1(x),m2(x), ... m2t(x)]. (51)

Таким образом, вектор, представленный многочленом f (x),будет кодовым тогда и только тогда, когда он делится без ос­татка как на каждую из минимальных функций т1 (х), m2(x), ..., т2t (х), так и на их наименьшее общее кратное.

Тогда для любого из корней а, а2, ....a2t справедливо урав­нение fi) = с0 + с1 аi2i )2+…cn-1 (ai)n-1 = 0, которое можно записать в виде произведения двух матриц (coc1c2…cn-1)*[lai(ai)2…(ai)n-1]T=0. Но так как корнями f(х) должны быть все элементы a, a2 …,a2t, то можно сделать вывод, что вектор (c0c1cn-1_) будет кодовым тогда и только тогда, когда он принадлежит нулевому прост­ранству матрицы

Может оказаться, что элементы аi и аj из совокупности а, а2, ..., а2t соответствуют одной и той же минимальной функ­ции, т. е. тi (х) = mj(х). Вследствие того, что производящий многочлен Р(х) равен наименьшему общему кратному всех ми­нимальных функций mj(х), в качестве сомножителя в разложе­нии многочлена Р(х) следует взять только одну из нескольких равных между собой минимальных функций.

Из свойства 1.6 полей следует, что если аi корень какой-либо минимальной неприводимой по модулю 2 функции mi (х)степени к, то остальными корнями будут (аi)2,((аi)2)2,...,(ai)2^(k-1).Следовательно, в разложении многочлена Р (х) каждая из различных минимальных функций mi (х) должна вхо­дить только один раз, а для построения матрицы (5.2) нужно использовать только по одному корню каждой из минимальных функций, входящих в разложение многочлена Р (х). Таким об­разом, если в качестве совокупности корней многочлена Р (х) выбраны элементы поля Галуа GF (2m) а, а2, а3, ..., а2t, то при построении матрицы Н должны быть использованы только нечетные степени а, а3, ..., а2t-1, а многочлен Р (х) будет иметь вид

P(x)=m1(x)m3(x) ... m2t-1(x). (5.3)

Рассмотрим следующий пример.

Пример 5.1. Пусть имеем двоичный циклический код БЧХ. к которому вектор {f (х)} будет принадлежать только тогда, когда элементы а, a2, а3, а4, а5, а6 будут корнями многочлена f (х). Кроме того, предполагается, что a — примитивный эле­мент поля Галуа GF (24). Тогда а15 = 1 и тi (х) обозначает минимальную функцию для аj .

В соответствие со свойством 1.6 элементы a, а2, а4 и а8 — корни одной и той же минимальной функции четвертой степе­ни, следовательно, m1(х) = т2 (х)= т4 (х) = т8 (х). Анало­гично, а3, а6, а12 и а24 = а9 — корни минимальной функции чет­вертой степени и m3 (х) = т6 (х) = m9 (х) = т12(х), а элемен­ты a5 и а10 являются корнями минимальной функции второй степени и, следовательно, т5 (х)=т10(х). Отсюда, Р (х) яв­ляется многочленом

P(x)= ml(x)m3(x)m5(x) (5.4)

степень которого равна 10.

Таким образом, к искомому циклическому коду БЧХ будет принадлежать любой вектор {f (х)}, если f (х) делится на Р(х). В то же время циклический код будет нулевым пространством матрицы

Так как аj является элементом поля GF (2т ) и представляет собой вектор из т двоичных элементов 0 и I, то матрица HT имеет размерность п * mt.

Из свойства 2.2 следует, что многочлен Р (х) является де­лителем многочлена F (х) = хn — 1, где п = 2m—1. В то же время, многочлен Р (х) для кодов БЧХ равен произведению ми­нимальных функций. Следовательно, любая из минимальных функций, входящих в разложение многочлена Р(х), должна быть делителем функции F (х) = хn— 1 = х2^m-1— 1. При этом, как следует из высшей алгебры [4, 7], степень каждой мини­мальной функции не может быть больше т. А так как таких функций t, то степень многочлена Р (х) не превосходит mt. Отсюда каждая комбинация циклического примитивного кода БЧХ при длине, равной n = 2m—1, имеет число информационных разрядов, равное k≥2m— 1mt.

Рассмотрим конкретный пример построения циклического кода БЧХ.

Пример 5.2. Построить двоичный примитивный циклический код БЧХ для т = 4 и t= 3.

В этом случае длина кодовой комбинации равна п = 2m— 1 = 15, а вектор {f (х)} будет принадлежать этому цикличе­скому коду, если элементы поля GF (24) а, a2, ..., а6 будут корнями многочлена f(х). Кроме того, отметим, что а — при­митивный элемент поля, а минимальной функцией для него пусть будет примитивный неприводимый многочлен т1 (х) = 1 +x+x4.

Как видим, этот пример является непосредственным про­должением примера 5.1, из которого следует, что производящий многочлен Р (х) имеет вид Р (х) = m1(х) т3 (х) т5 (х), где т1 (х) и m3 (х) — минимальные многочлены четвертой степени, а т5 (х) — минимальный многочлен второй степени, вследствие чего степень многочлена Р (х) равна 10. Кроме того, было по­казано, что матрица Н имеет вид (5.5).

Т ак как примитивный элемент а — корень минимального многочлена тх(х)=1 + х + х4, то, подставив вместо каждого элемента матрицы H его значение из табл. 1.1, получим транс­понированную матрицу НТ;

В [7] показано, что m3(x)=1+x+x2+x3+x4, m5(x)=1+x+x2, тогда степень многочлена P(x) равна 10, что не превышает mt.

В рассмотренном примере

Т огда производящая матрица G искомого систематического кода имеет вид :

Образованный таким образом циклический (n,k)=(15,5) код БЧХ позволяет исправить любую совокупность ошибок кратности t=3 и менее.

Принципы исправления ошибок кодами БЧХ

Предположим, что передавая кодовый вектор {f(x)}, представление которого в виде многочлена будет иметь вид: f(x)=c0+c1x+…+cn-1xn-1. Пусть далее вследствие ошибок вместо вектора {f(x)} принят вектор {f(x)+e(x)}= {f(x)}+ {e(x)}, где {e(x)}-вектор ошибок.

Обозначим принятый с ошибками вектор {f(x)+e(x)} через вектор {h(x)}=(h0h1h2…hn-1).Принятую комбинацию можно представить в виде многочлена степени n-1, т.е. h(x)=h0+h1x+h2x2+…+hn-1xn-1. В результате умножения вектора {h(x)} на матрицу (5.2) получим вектор из t компонент [h(a), h(a3),…h(a2t-1)],где h(a)=h0+h1a+h2a2+…+hn-1an-1; h(a3)=h0+h1a3+h2(a3)2+…+hn-1(a3)n-1

И т.д.

В то же время {h(x)}= {f(x)+e(x)}, следовательно, h(x)= f(x)+e(x). Тогда h(ai)=f(ai)+e(ai), где i=1,3,…,2t-1, но так как f(x) делится на P(x) без остатка, то f(a)=f(a3)=…=f(a2t-1)≡0, так что h(ai)≡e(ai).

При умножении вектора {h(x)} на первый столбец матрицы HT , образованной из (5.5), получаем элемент

Отсюда следует, что имеется взаимнооднозначное соответствие между элементами вектора ошибок и элементами поля GF(2m). Каждому ошибочному элементу ei соответствует элемент i-й строки (i=0,1,2,…,n-1) первого столбца транспонированной матрицы HT, т.е. элемент поля ai.

Предположим, что ошибки произошли на позициях i1,i2,…,it, для которых ei=1, а для всех остальных ej=0, тогда (5.8) может быть переписана следующим образом:

Обозначим каждый из элементов аk через Хk (k = 1, 2, ...it) и назовем их локаторами ошибок, тогда (5.9) может быть переписана так:

Умножив вектор {h(x)} на какой-либо другой j-й столбец матрицы HTполучим

h(aj)=e(aj)=(aj)i1+(aj)i2+…+(aj)it=

где j= 1, 3, .... 2t— 1.

Выражения (5.11) представляют t симметрических функций Sj от нечетных степеней элементов Х1, Х2 Xt, которые

имеют вид

Функции Sj называют синдромами.

Таким образом, функции Sj дают t уравнений вида (5.12) с t неизвестными Х1, Х2..., Xt. Кроме того, из (5.12) можно найти также симметрические функции для четных j = 2, 4, .., 2t, т. е. можно получить дополнительно t уравнений вида (5.12) с теми же неизвестными. Действительно, учитывая свойство 1.4 для р = 2, получим

Решение указанных уравнений относительно Хk определит номера ошибочных позиций. Поскольку имеется конечное число решений, то значения Хk могут быть найдены путем подстано­вок в эти уравнения различных элементов поля GF (2m). Но подстановка всех комбинаций no t из 2m — 1 ненулевых эле­ментов поля требует большого числа вычислений.

Для кодов БЧХ имеются более эффективные алгебраические алгоритмы декодирования. Рассмотрим один из них.

Так как суммы j-x степеней элементов Х12, ..., Xt пред­ставляют собой симметрические функции Sj, то эти элементы могут рассматриваться [8] как корни некоторого многочлена степени t

Xt+p1Xt-1+p2Xt-2+…+pt (5.I4)

разложение которого на линейные множители дает уравнение

(X-X1)(Х-Х2) ... (X-Xt)=0. (5.16)

Коэффициенты р1, р2, ..., рt являются простейшими симмет­рическими функциями, которые связаны с симметрическими функциями Sj тождествами Ньютона [1, 7]:

S3-p1S2+p2S1-3p3=0

S4-p1S3+p2S2-p3S1+4p4=0 и т. д.

При операциях по модулю 2 тождества Ньютона выписываются по формуле

где δ = 0 при i—четном и δ=1- при нечетном.

С учетом последнего тождества Ньютона можно перепи­сать так:

St=p1St-1+p2St-2+…+pt-1S1+ δpt

Если тождества (5.16) решить относительно простейших сим­метрических функций pi и найденные значения рi, подставить в (5.14), то корни этого многочлена Х1, Х2, ..., Xt можно оп­ределить последовательной подстановкой в него каждого из п = 2m — 1 элементов поля. Если подставленный вместо X эле­мент аi не является корнем, то соответствующий символ век­тора {h (x)} принят правильно. Если же элемент ai является корнем, то соответствующий i-й символ вектора {h (х)} принят ошибочным и должен быть исправлен.

Однако в силу зависимости (5.13) следует рассматривать не все тождества (5.16), а лишь те, которые определяют Sj для нечетных j, т. е.

St-1=p1St-2+p2St-3+…+pt-2S1+pt-1 (при t четном) или St=p1St-1+p2St-2+…pt-1S1+pt (при t— нечетном). Отсюда видно, что имеется i/2 (при t—четном) или (t+1)/2 (при t — нечетном) уравнений, которых недостаточно для определения t неизвестных р1, р2, ..., рi. Однако в резуль­тате умножения {h(x)}*HT можно определить все симметриче­ские функции S1, S3,…,S2t-1. Знание симметрических функ­ций Sj с нечетными значениями j' вплоть до 2t—1позволяет составить дополнительные уравнения, которые вместе с (5.17) дадут t независимых уравнений с t неизвестными р12, .... рt Эти уравнения можно уже решить относительно pt.

Выше было показано, как составить тождества Ньютона, когда j при Sj принимает целые значения, не превосходя­щие t, т. е. степени многочлена (5.14). Можно показать, что аналогично можно составить тождества Ньютона для значений j > t.

Действительно, если обозначить многочлен (5.14) через ψ(X) и подставить вместо X какой-либо из корней Х1, X2 .... Xt, то получим уравнение

Умножение обоих частей уравнения (5.18) на Xic-t дает

Где c>t. Если теперь просуммируем (5.19) по всем корням, т.е.

То получим

Решаем уравнения (5.17) совместно с (5.22) относительно не­известных рi Найденные значения рi подставляем в (5.14) и, как было указано, последовательной подстановкой вместо X элементов поля GF (2m) находим корни этого многочлена. Этим самым мы устанавливаем ошибочные позиции принятого век­тора {h (х)}.

Если произошло в действительности t — 1 ошибок, то один из корней Х1, Х2,…Xt должен быть равен нулю. Следова­тельно, при решении уравнений (5.17) и (5.22) мы должны по­лучить pt =0. Если произошло t — 2 ошибки, то два корня рав­ны нулю и, следовательно, pt= рt-1= 0 и так далее.

Пример 5.3. Рассмотрим процесс исправления тройных оши­бок (t = 3) циклическим кодом БЧХ, построение которого рас­сматривалось в примере 5.2. Многочлен (5.14) для такого кода будет иметь вид Х3 + р1Х2 + р2Х + р3

На основании (5.17) и (5.22) составляем уравнения:

Сложение по модулю 2 соответствующих столбцов матрицы HT(5.6) позволяет найти значения S1,S3, S5. Кроме того, при операциях по модулю 2 S2 = S12, a S4 = S14 Решая уравнения относительно рt, находим [7]:

при условии, что S13+S3≠0.

Рассмотрим случай, когда ошибки появляются на 2, 5 и 7-м местах, т.е. {e(x)}=(010010100000000), тогда {h(x)}HT=(1011,1111,1000), т.е. S1=(1011), S3=(1111), S5=(1000).

Теперь найдем S2 и S4, обращаясь к табл. 1.1,

По формулам (5.24) находим p1=S1=a13,

Теперь путем подстановки элементов поля в уравнение X3+ + а13X2+ а9X +a11= 0 находим, что корни этого уравнения бу­дут а, а4 а6. Следовательно, в принятом векторе {h (x)} ошибки находятся на 2, 5 и 7-м местах. Если произошла только одна ошибка, то р2 = р3 = 0, а из уравнений (5.23) pi=S1. Следовательно, номер ошибочной позиции можно определить, решая, уравнение X1= 0.