Читайте также:
|
|
При построении кодирующих и декодирующих устройств циклических кодов, особенно БЧХ и Рида—Соломона, должны быть реализованы операции умножения и деления в поле 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. Структурная схема умножителя произвольных элементов поля G F(2k)
Рассмотрим конкретный пример.
Пусть поле GF (24) образовано примитивным полиномом Р (х) = 1+x+x 4. Сопровождающая матрица 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. Функциональная схема умножения произвольных элементов поля G F (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, ai€ GF (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).
Дата добавления: 2015-07-16; просмотров: 72 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Использование кодов Рида—Соломона для исправления стираний | | | МАЖОРИТАРНОЕ ДЕКОДИРОВАНИЕ ЦИКЛИЧЕСКИХ КОДОВ |