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

6.3. Использование кодов Рида—Соломона для исправления стираний

Код Рида—Соломона с минимальным расстоянием d может исправлять d—1 или менее стираний. При этом под стиранием понимается такое состояние приемника, когда значение сигнала попадает в так называемую зону неопределенности. Для кас­кадных кодов под стиранием понимают «маскирование». Это означает, что на предшествующем уровне декодирования при­меняют код, обнаруживающий ошибки, что позволяет пометить специальным образом элементы кодовых комбинаций с обнару­женными ошибками. Таким образом, при передаче кодового вектора по стирающему каналу на приемной стороне становят­ся известными номера позиций Х1,X2, ..., Xt со стираниями пли отмеченные специальной «маской». Поэтому задачей деко­дирования является определение неизвестных кодовых элемен­тов, расположенных на этих позициях. Алгоритм исправления стираний мало чем отличается от исправления ошибок и сво­дится к решению системы уравнений (6.8) относительно неиз­вестных Yt, которые являются значениями стертых символов комбинации либо значениями вектора ошибок в позициях, по­меченных «масками».

Рассмотрим пример исправления стираний. Пусть (п, k)— код Рида—Соломона с образующим полиномом g(x) = (х+ 1)(x+ а) имеет минимальное расстояние d = 3. Тогда такой код исправляет одно или два стирания. Проверочная матрица имеет вид (6.17).

Пусть далее, а — примитивный элемент поля GF (23) с по­рождающим полиномом Р (х) = 1 + х+x3. Тогда, выбрав дли­ну комбинации n = 23—1, мы построим код (7, 5), который может исправлять одно или два стирания или однократную ошибку без стираний.

Рассмотрим передачу по стирающему каналу кодового век-гора

(c0c1c2c3c4c5c6)=(a61aa2a3a4a5),

где элементы сi являются коэффициентами разрешенной ко­довой комбинации кода (7, 5), представленной полиномом (6.1). Предположим, что в результате приема имели место два стирания и были стерты элементы c2 и с4 и тогда на декодер поступит комбинация (а6 1 0 а2 0 а4 а5). Таким образом стер­тые позиции Х1 = х2 и Х2 = х4 известны. Умножив принятый вектор со стираниями на НT в соответствии с (6.17), получим значения синдромов

S0=Y1+Y2=1

S1=Y1X1+Y2X2=a

Решая полученную систему уравнений относительно значе­ний стертых символов Y1 и Y2 находим:

Y1=(S1+X2S0)/(X1+X2)=a;

Y2=S0+Y1=a3.

Таким образом, зная номера X1 и X2 стертых символов, мо­жет быть осуществлено исправление стираний путем замены, ну­лей найденными значениями Y1 и Y2.

6.4. Реализация действий над элементами поля

При построении кодирующих и декодирующих устройств циклических кодов, особенно БЧХ и Рида—Соломона, должны быть реализованы операции умножения и деления в поле GF(2k). Рассмотрим реализационные основы таких действий над элементами конечного поля Галуа.

Пусть задан примитивный полином k-й степени над про­стым полем GF (2):

Квадратной матрице F соответствует характеристический поли­ном f (λ), представляющий собой определитель характеристи­ческой матрицы [λЕF], где Е — квадратная единичная мат­рица k-го порядка, т. е. f (λ) =│ λ ЕF. Корни полинома f (λ ) λ 1, λ 2, … λ k, называемые характеристическими числами, являются решением векового [9] уравнения λ ЕF = 0.

Как видно из этого уравнения, одним из корней полинома f (λ ) является сопровождающая матрица F. Действительно, если в характеристический полином f (λ ) вместо λ подставить F, то получим f (F) = FE F =0, Тем самым доказана тео­рема Гамильтона—Кэли [9], в соответствии с которой всякая квадратная матрица F является корнем своего характеристиче­ского полинома f (λ ).

С другой стороны, легко проверить, что заданный прими­тивный полином Р (х) в точности совпадает с характеристиче­ским полиномом f(X) при подстановке х = λ , т. е. f (λ ) = Р (λ ). Отсюда следует, что матрица F является также корнем поли­нома Р (х), т. е. Р (F) = 0. Последнее условие приводит к важ­ному следствию, заключающемуся в том, что множество эле­ментов поля GF(2k) построенного по примитивному полиному Р (х), изоморфно множеству полиномов — вычетов по модулю P(F). Другими словами, любому элементу am поля GF(2k), выраженному через степенной базис

где. а — первообразный элемент поля, а коэффициенты а, eGF(2), взаимнооднозначно соответствует многочлен

приведенный по модулю Р (F). Указанное свойство позволяет достаточно просто реализовать умножение и деление элемен­тов поля GF (2к) в векторной форме. Рассмотрим эти действия.

6.4.1. Умножение элементов поля

Пусть необходимо умножить элемент аi на элемент aJ. С этой целью выразим эти элементы поля GF (2k) через степен­ной базис следующим образом:

Тогда произведение aiaj=am=c0+c1a+c2a2+…+ck-1ak-1 может быть реализовано в векторной форме следующим обра­зом:

(a0a1…ak)Fj=(a0a1…ak)[b0E+b1F+…bk-1Fk-1]=

Напомним, что для двоичных кодов сложение производится по mod 2.

Структурная схема умножителя в соответствии с алгорит­мом (6.24) представлена на рис. 6.8.

Рис. 6.8. Структурная схема умножителя произвольных элементов поля GF(2k)

Рассмотрим конкретный пример.

Пусть поле GF (24) образовано примитивным полиномом Р (х) = 1+x+x4. Сопровождающая матрица F этого полино­ма и ее степени F2 и F3 имеют вид

Необходимо произвести умножение двух элементов аi и аj, принадлежащих полю GF (24).

Выразим аi и аj через базис {1, а, а2, а3} следующим образом:

Таким образом, векторная форма записи элементов аi и аj будет соответственно [а] = 0, аь а2, a3] и [b] = [bо, b1, b2, b3]. Заменив элемент поля aJ на Fj, равный Fj=b0E+b1F+b2F2+b3F3, найдем произведение (aiaj )= со +c1a+c2a2+c3a3 в векторной форме, используя алгоритм (6.24), а именно

У чтем, что для данного полинома Р (х) и его матрицы F имеют место равенства:

Тогда вектор [c]=[c0,c1,c2,c3], соответствующий произведению aiaj, будет равен поэлементной сумме по модулю два

Ф ункциональная схема существенно упрощается, если необходимо произвольный элемент поля ai умножить на константу aj. Пусть для рассматриваемого выше примера необходимо производить умножение на а5. Тогда произведение аia5 в векторной форме будет выражаться следующим образом:

Функциональная схема такого умножителя представлена на рис. 6.10.

Рис 6.9. Функциональная схема умножения произвольных элементов поля GF (24) с образующим многочленом Р(х) = 1 + х + х4

Другой распространенный в настоящее время алгоритм ум­ножения элементов поля GF (2k) основан на применении опе­раций логарифмирования и антилогарифмирования в полях GF (2k) [4, 6].

Рис. 6.10. Функциональная схема ум­ножения произвольного элемента аi поля GF(24) на константу a5

Если некоторый элемент поля β=ai принадлежит полю GF(2k), то логарифм элемента β по основанию a€GF (2k) есть показатель степени i, а именно: Log β = log ai=i, i≥0. Тогда, умножение aiaj= am может быть реализовано по сле­дующему алгоритму, представленному на рис. 6.11.

Рис. 6.11. Структурная схема умножителя произволь­ных элементов аi и аj в поле GF(2k) с использо­ванием логарифмировании и антилогарифмирования

Особенностью данного алгоритма является то, что комби­нациям из k нулей или k единиц на выходе арифметического сумматора должно соответствовать появление на выходе ан-тилогарифматора одинакового элемента, а именно а0 = 1.

Логарифмирование и антилогарифмирование реализуется чаще всего табличным способом.

6.4.2. Деление элементов поля

В теории циклических кодов часто встречающейся операцией является деление произвольного элемента ai на некоторый эле­мент aj, где ai , aiGF (2k). Вместе с тем на практике деле­ние элементов заменяется умножением элемента ai на a-j, т. е.

где a-j —элемент поля, обратный элементу аj. Напомним, что для любого элемента аj в поле GF (2k) всегда существует и обратный ему a-j , которые связаны равенством aja-j= 1. Та­ким образом, реализация деления осуществляется по той же схеме, что и умножение (рис. 6.9) с той разницей, что один из сомножителей является обратным элементом a-j. Рассмот­рим способы обращения элементов поля GF(2k).

Один из способов основан на свойстве полей Галуа, кото­рое заключается в том, что ненулевые элементы поля GF (2k) образуют циклическую мильтипликативную группу порядка 2k — 1, т. е. для любого ненулевого элемента аj справедливо

равенство (аj)2k-1 = 1. Отсюда получается (аj)2k-2 =

= (aJ)-1= a-j. Для вычисления (2k —2)-й степени элемента β можем воспользоваться одним из следующих двух равенств:

(β )2k-2={[(β2β)2β]2… β }2= β -1 (6.27)

Характерной особенностью равенства (6.26) является то, что обращение элемента β может быть реализовано аппарат­ным путем за один шаг (такт), тогда как равенство (6.27) мо­жет быть реализовано за (k—1) последовательных этапов. Вместе с тем реализация последнего значительно проще. На каждом этапе необходимо осуществить умножение текущего значения на β и возведение результата в квадрат. Если элемент β выразить через базисные элементы поля 1, а, а2, ..., аk-1 в виде β = а0 +a1a+a2a2+…ak-1ak-1, то на основании свойств (1.4) и (1.5) возведение в квадрат в поле GF (2*) со­ответствует выражению

Тогда операцию возведения в квадрат в векторной форме мож­но записать

(a0a1a2…ak-1)[X] = (b0b1b2…bk-1),

где [X] — квадратная матрица k-го порядка, строки которой представляют собой двоичные векторы элементов поля

Пример. Построить матрицу [X] и схему возведения в квад­рат, если конечное поле GF (24) образовано примитивным по­линомом Р (х) = 1+x+x4

Выразим элементы поля а0, а2, а4, а6 через базис {1, а, а2 а3} в виде аi = с0 + с1а + с2а2 + c3а3, где с€GF (2):

И з векторов (с0 с1 с2 с3) указанных элементов составим матрицу [X]:

Пусть элементу аi соответствует вектор 0 а1 а2 а3). Для возведения аi в квадрат произведем умножение вектора 0 а1 а2 а3) на матрицу [X]:

Логическая схема возведения в квадрат в поле GF (24) с

образующим полиномом Р(х) = 1 + х +x4 представлена на рис. 6.12.

Для проверки возведем эле­мент а5 в квадрат. Так как a5 = a +а2, то для получения элемента (а5)2 выполним ум­ножение вектора элемента а5 на матрицу [X], т. е.

Рис. 6.12. Функциональная схе­ма

возведения в квадрат про­извольного элемента аi в по­ло GF(24)

Полученный вектор (1110) соответствует элементу (а5)2 = a10 поля GF (24).