Декодирование ранговых кодов с использованием слабоортогонального базиса

УДК 519.725.2

И. Ю. Сысоев, Э. М. Габидулин

Московский физико-технический институт

Декодирование ранговых кодов с использованием слабоортогонального базиса

Процедура вычисления синдрома является важной частью операции декодирования рангового кода. В работе показано, что, используя слабый самоортогональный базис, можно уменьшить сложность этой операции. Оценка сложности приблизительно определяется величиной n(log п)2. Оценка меньше, чем оценка сложности операции при использовании только стандартного базиса и известного алгоритма Карацубы-Офмана.

Ключевые слова: помехоустойчивое кодирование, ранговые коды, коды Габидулина, синдром, слабый самоортогональный базис, быстрые вычисления, алгоритм Карацубы-Офмана, ПЛИС, реализация, оптимизация.

1. Введение

Ранговые коды представляют интерес для многих областей применения: для коммуникационных технологий, криптографии, пространственно-временного кодирования, случайного сетевого кодирования. Ранговое декодирование является достаточно сложной процедурой и характеризуется большим количеством умножений в расширенном поле Галуа. Поэтому разработчику необходимо решать много проблем при разработке системы, осуществляющей декодирование ранговых кодов. К таким проблемам относятся борьба с большими задержками, высокое потребление мощности и ресурсов кристалла интегральной схемы.

Одним из эффективных способов решения перечисленных проблем является уменьшение сложности алгоритма. Этап вычисления синдрома в процессе декодирования занимает значительную долю во всей процедуре декодирования. В работе будет показано, как можно уменьшить сложность вычисления синдрома, используя слабоортогональный базис.

Основная часть данной работы организована следующим образом. В разделе 2 приводится обзор ранговой метрики и ранговых кодов. В разделе 3 выводится оценка сложности вычисления синдрома рангового кода стандартным методом и вклад этой операции в общую сложность процедуры декодирования. Слабый самоортогональный базис вводится в разделе 4. В разделе 5 рассматриваются используемые быстрые алгоритмы умножения. В разделе 6 обсуждается особенности реализации блока вычисления синдрома с использованием слабого самоортогонального базиса. В разделе 7 обсуждается эффективность нового алгоритма.

2. Ранговые метрика и ранговые коды

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

Ранговая норма матрицы X, определяемая в виде Иик(Х), может быть вычислена как количество линейно-независимых строк матрицы. Ранговое расстояние между матрицами X и У определено как ранг разности этих матриц:

Акк

Кодирование с использованием ранговой нормы, или ранговое кодирование, подходит для тех каналов передачи данных, в которых одна и та же ошибка распространяется на различные символы кодового слова, например в сетевом кодировании [16]. В качестве примера стоит привести способ передачи данных под названием «сетевое кодирование» [1].

Введём необходимые обозначения. Обозначим через СР(д) базовое конечное поле из д элементов, где д - степень простого числа. СР(дм) - это расширение базового поля степени N. Если а - примитивный элемент СР(дм), то каждый ненулевой элемент @ из СР(дм) есть некоторая степень а, то есть @ = ав. Более того, для неравных целых г и существует целое к, такое, что аг — = ак.

Введём понятие рангового кода [9]. Пусть Xп - п-мерное векторное пространство над полем СР(дм). Пусть иг,и2,... ,им - некоторый фиксированный базис поля СР(дм), рассматриваемого как векторное пространство над СР(д). Любой элемент хг е СР(дм) однозначно представляется в виде хг = а1ги1 + а2ги2 + ... + амгим. Пусть АМ означает совокупность всех (Ы х п)-матриц с элементами из СР(д). Можно задать биекцию А : Хп ^ АМ правилом: для любого вектора х = (х\,х2,..., хп) можно найти соответствующую матрицу

Рангом вектора х над СР(д) называется ранг матрицы А(х). То есть ранг вектора - это максимальное число его координат, линейно независимых над СР(д). Ранг вектора х над СР(д) обозначается как г(х; д). Аналогично рангом (г х п)-матрицы Н с элементами из СР(дм) над СР(д) называется максимальное число столбцов, линейно независимых над СР(д). Обозначим ранг матрицы, используя г(Н; д). Обозначим ранг г(Н; д). Очевидно, что г(Н; д) > г(Н; дм).

Представим класс кодов максимального рангового расстояния для длин п < N. Эти коды являются аналогами обобщённых кодов Рида-Соломона [17]. Для удобства записи введём обозначение [г] = дг, г = 0,±1,...

Пусть Кг е СР(дм), г = 1, 2,... ,п, и пусть эти элементы линейно независимы над СР(д). Зададим целое й < п. Образуем матрицу

ап а\2 . . а\п

А(х) = <121 а22 . . а2п

ам 1 ам 2 .

Н

Кг К1] К2 . к21] . К . Кп Кп] . . Кп

кр1 к2'-2] . Кп

Код с проверочной матрицей вида (3) является кодом с максимальным ранговым расстоянием длины п с расстоянием й. При этом порождающая матрица кода имеет вид

С =

91 М11 . ю »о . 9п . ^

9Г1 . 9п-1]

где к = п — (I+1, а элементы д\,д2,... ,дп линейно независимы над СР(д). Для проверочной и порождающей матриц должно выполняться условие

СНТ = 0.

Кодирование ранговых кодов во многих случаях сводится к вычислению значений линеаризованных многочленов в поле СР(дм). Пусть порождающая матрица имеет вид (4). Тогда кодовое слово имеет вид

где

д = (Р (91),Р Ы,...^ (Сп)), к-1

Р= ^ щг,

г=о

причём щ,... ,ик-1 являются информационными символами.

Коды с проверочной матрицей вида (3) допускают декодирование с помощью алгоритма, который подобен алгоритму декодирования обобщённых кодов Рида-Соломона.

Пусть д = (д\,... ,дп) - кодовый вектор, е = (е\,..., еп) - вектор ошибки у = д + е - принятый вектор. После получения вектора у из канала связи инеобходимо вычислить синдром:

8 =

Задача декодера - по известному вектору синдрома в найти вектор ошибки е. Пусть ранговая норма вектора ошибки равна т. Тогда ошибку е можно представить в виде

е = ЕУ = (Еь...,Ет)У,

где величины Е\,... ,Ет линейно независимы над СЕ(д), а У = (У^) - (т, х п)-матрица ранга т, с элементами из СЕ(д). Тогда вместо (8) можно записать

8 = ЕУНТ = ЕХ.

где матрица X = УНТ имеет вид

X =

причём величины

Х1 г[1] 1

Х2 г[1]

г .1] •ът

п

£ У -Ъ  1РЗ Ъз

3-1

х

И-2] [с-1-2]

X

ги-2]

Ьт,

, т,

линейно незавимимы над СЕ(д). Равенство (9) эквивалентно системе уравнений относительно неизвестных Е\,..., Ет, х\,..., хт:

^ Ег хИ = вр,р = 0,1,...,(1 - 2.

г=1

Пусть найдено решение этой системы. Тогда из (12) определяется матрица У, а из (9) -вектор ошибки е. Отметим, что система (13) при заданном т имеет много решений, однако при т < (с! — 1)/2 все решения приводят к одному и тому же вектору е.

2

3. Сложность вычисления синдрома

Проанализируем один из этапов процедуры декодирования, а именно систему вычисления синдрома и поиска вектора ошибок рангового кода (п, к, (I). Здесь п - длина кодового вектора и в нашем варианте равняется размерности расширенного поля. Примем, что размерность поля N равняется длине кодового вектора п, к - количество информационных векторов, с! - кодовое расстояние, определяющее максимальный ранг ошибки. Интересным представляется случай п = 2к, поэтому примем п а: к.

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

Поскольку операция вычисления синдрома есть умножение вектора на матрицу, то сложность алгоритма равняется сложности вычисления результатов от п2к умножений. В этом случае асимптотически сложность алгортма вычисления синдрома «простым» способом оценивается как 0(п2к) или как 0(п3) умножений.

В работе [1] сложность алгоритма поиска вектора ошибок оценивается величиной, равной 5 п2 — § к2 + или 0(п2) + О(п) умножениям (см., например, [2]). Из приведёных

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

4. Слабоортогональный базис

Выберем п линейно-независимых элементов расширенного поля

до

Этот набор (14) является базисом из СР(дп) над СР(д). Для любого такого набора векторов можно всегда ввести матрицу специального вида

9i 92 . . 9n

9i 9l . . дП i2 . gn

Gn — 9f 9f .

дГ1 9\1 . qn: . gn

Определение 1. Базис до(п) = (д\,д2,... ,дп) называется слабым самоортогональным базисом, если для матрицы (15) выполняется условие

GnGl — D,

где И - это диагональная матрица в СР(дп), которая не является результатом умножения на единичную матрицу 1п.

Мы будем использовать следствия из следующей леммы.

Лемма 1. Пусть Р е СР(д2п) будет элементом, таким что Р= -1. Если до(п) = (д1, д2,..., дп) является слабым самоортогональным базисом поля Рд™, тогда до(2п) = (д1,д2,..., дп, Рд1, Рд2,..., @дп) есть слабый самоортогональный базис расширенного поля СР(д2п).

Доказательство см. в [3]. Далее в тексте будут рассматриваться только конечные поля, для которых д = 2.

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

ОпСТп = I.

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

5. Алгоритмы умножения во встроенных системах

В настоящее время оптимальными для практической реализации считаются алгоритмы, производные от алгоритма умножения по методу Карацубы-Офмана [4], [5], [6], имеющие сложность порядка 0(nlog2 3). При п ^ ж наименьшую асимптотическую сложность имеет алгоритм умножения Шёнхаге-Штрассена [7], имеющий оценку 0(п log п  log log п). Однако для случая ранговых кодов он не подходит, так как на практике эффективное использование алгоритма Шёнхаге-Штрассена допустимо при п ^ 0(21Ъ) [8], [9]. По этой причине в данной работе предложено использовать схему умножения Карацубы-Офмана совместно со слабосамоортогональным базисом.

5.1. Вычисление синдрома с использованием слабых самоортогональных базисов

где

Рассмотрим самый простейший вариант базиса, состоящий из двух векторов

Ъ2 = (1,Л),

/3 = 1

или

/3 = /1.

Этот базис является слабосамоортогональным. Нетрудно убедиться, что

1 /! 1 /2

11 /! /2

1 + /2 1 + /1

1 + /3 1 + П

Используя базис (18) и базисный элемент /2

1 + /2

о

о

1 + ¡1

Г)1

/? +1 = /2 =1,/2 € ^(22), построим базис пространства вдвое большей размерности:

Ь4 = (1,/1,/2,/2/1).

В качестве примера оптимизации рассмотрим СР(24)-линейный ранговый код (4, 2, 3), с! = п — к + 1 с максимальным ранговым расстоянием [10]. Для задания проверочной матрицы Н мы будем использовать базис, в котором базисный элемент /1 задаётся выражением

/22 +1 = /3 = 1,Л € ^(22).

Базис &1 = (1, У1) является слабым самоортогональным базисом в СР(22), поскольку для него выполняется условие (16):

1 /1

1 /2

11 /1 /2

1 + /2

о

о

1 + /4

= £>.

Используя базис (18), вектор из (22) и выражение (25), из леммы 1 получаем, что Ь является слабым самоортогональным базисом в С Р(24). Тогда на основе базиса Ь можно построить проверочную матрицу рангового кода

#2 =

1 ^ ^ /1/2

1 Л /2 Л /2

Аналогично, для размерности п = 8 проверочная матрица рангового кода может быть записана в виде

1 /1 /2 1 3 3 1 /3/2 /3/2/1

1 /11] г [1] ( Л/1)[1] [1] 3 ( /3/1)[1] ( /3/2)[1] ( /3/2/1)[1]

1 /1 г [2] ¿2 ( /2 /1)[2] [2] 3 (/э Л)[2] ( /3/2)[2] ( /3/2/1)[2]

1 /11] гИ J 2 ( /2 /1)[3] 3[3] 3 ( Н ЛЯ ( /3/2)[3] ( /3/2/1Я

#4 =

Можно переписать матрицу (26) иначе. Для этого введём обозначения

^1,2 =

1 /1

[1]

^2,2 =

[0]

0

[1]

Тогда (26) преобразуется следующим образом:

Н2 = II Fl 2 F22  ^1,2!

Для п = 8 проверочная матрица также может быть представлена компактным образом. Новый вектор /э, используемый для генерации пространства элементов в СР (28) из элементов пространства СР(24), приведёт к матрице

F3,4 =

Сконструируем из (29) матрицу размерности 4:

f [0] /3 0 0 0

0 [1] 3 0 0

0 0 3/2 ] 0

0 0 0 3/3 ]

F2,4 =

а из (28) матрицу той же размерности:

F

[0]

2,2 0

F

[2]

2,2

F1,4 =

F1,2 F1,2

F1,2 F1,2

F1

1,2.

Введём обозначение

К4 =

F1,2 F2,2 ' F1,2 Fi,2 F222  F1,2

F2,

F

[2]

2,2

F1,

Тогда проверочная матрица из пространства GF(28) примет вид

Я4 = IIK4 F34 .К4У = F3JK4.

Таким образом, если проверочная матрица строится с использованием слабого самоортогонального базиса, то это построение носит рекурсивный характер. Рекурсивная структура позволяет по-новому подойти к операции декодирования рангового кода.

В общем случае при п = 4 декодер рангового кода (4,2,3) получает вектор у = (уо, у\, у2, уэ) и, используя матрицу (26), вычисляет синдром

т

S = 1 so sJ = уНт =

Уо + У1 h + /2

Заметим, что каждый элемент у^ £ СР(24), г = 0,1, 2, 3, может быть представлен в форме

У г = аг + /2 Ьг,

где а £ СР(22), Ьг £ СР(22), а /2 £ СР(22).

Элемент /| может так же быть представлен по правилу (37), как

/22 = а + /2р,а £ СР(22),р £ СР(22).

При определённом выборе /2 можно добиться того, что в (38) а = 1, но этот факт принципиально не изменит дальнейшие рассуждения. Тогда

/2( У2 + У3/1) = /2(02 + hb2 + ( 03 + /2^3) /1) =

= /202 + аЪ2 + hß b2 + /2(03/1) + ab3h + /2^ ¿>3/1 =

= а( 62 + 63/1) + /2(02 + 03/1 + ß( 62 + 63/1)) =

= r + /2t,r eGF

0

2

Заметим, что для вычисления г и t мы должны выполнить 3 сложения по модулю 2 в GF(22) и 4 умножения в GF(22). Если CGF^) обозначить как сложность предыдущей операции (39), тогда

CGF

5.2. Обобщение на случай больших полей

В общем случае, если базис является слабым самоортогональным и п — 2м, М — 0,1, 2, 3,..., то, обобщив (40), мы получим

Сг — 3ADDgf

при г — 1, 2, 3,... (Со — 0). MULTgf^i-1) - сложность произведения двух небазисных векторов. В случае М — 2 из (41) получаем (40). Поэтому сложность нахождения элемента синдрома Si £ GF(22 ) есть

м

Сs — V

£ (С* + ADDOF(22-)) .

^2М) Если

ADDgf (22i) — 0(2г) (43

и

MULTgF(22i) — О (2г log2 3) (см. [5]), (44

тогда из (41) следует

Ci — 30(2i-1) + 20(2(i-1) log23) + 2Ci-1 —

г-1 г-1

— 3 2i-1-j0(2j)) +2 ^ (V-1-0(2^log23)) —

3=1 3=1

г-1 г-1

-1П

3 = 1 3 = 1

3 Y, (2i-10(1)) +2 ^ (2i-10(2^iog2 3-1)^j i=1

— - § о

< 3(i - 1)2i-10(1) + 0(2idog23),

j-1N

— 3(г - 1)2г-10(1)+2гJ2 О (3(J) ) <

или

Ci и0

Используя (43), (44) и (45), упростим (42):

м , .

С - — Е [Ci + ADDGF (22М }J —

м

— ^ (^0(i2i) + Q(2Uog23) + Q(2M)) <

г=1

< 0(k22M) + 0(2М log23). (46) Так как М — log2 п, то из (46) получим

Сs и О

Используя только алгоритм Карацубы-Офмана, выполним оценку сложности вычисления элемента синдрома

Ск = (п - 1)0(nlog3) + (п - l)O(n) и 0(nlog3+1) + 0(п2).

Сравнивая (47) и (48), замечаем, что предложенный метод имеет значительную меньшую вычислительную сложность, чем метод, основанный только на использовании алгоритма Карацубы-Офмана.

6. Реализация блока вычисления синдрома

Опишем реализацию блока вычисления синдрома для случая (8, 4, 5). Согласно (23), слабый самоортогональный базис для этого случая будет основываться на базисе 64 и иметь вид

ь8 =

Для того чтобы выполнить умножение в слабом самоортогональном базисе, необходимо определить матрицы перехода из исходного (стандартного) базиса в слабый самоортогональный (14). Степени Фробениуса (а[г] = а2) векторов этого базиса составляют элементы проверочной матрицы. Подобно (26), для кода, имеющего скорость 1/2, проверочная матрица будет иметь вид

Н

1 1 2 2 1 3 3 1 /3/2 /3/2/1

1 /111 /[11 2 ( /2 /1)[11 [1 3 (/3 Л)[11 ( 3 2)[1 ( /3/2/1)[11

1 /121 [2] 2 ( к /1)[21 [2 3 ( к /1)[21 ( кк )[21 ( /3/2/1)[21

1 /131 [3] 2 ( /2/1)131 [3 3 ( /3/1)131 ( кк )[31 ( /3/2/1)[31

Далее подробно будет рассматриваться схема вычисления элемента синдрома в о, аналогичная (36),

so = Уо + hVi + /2У2 + /1/22/3 + /зУ4 + /3/12/5 + /з /22/6 + /3/2/12/7.

Схемы вычисления других элементов синдрома строятся аналогичным образом и имеют схожий с (51) вид. Для них изменятся только базисные векторы /¿, согласно формуле

/f+1 = 1, к eGF(2И).

Заметим, что числа вида Рп = 2[га1 + 1 называются числами Ферма [15]. Из (52) следуют формулы (23) и (24).

6.1. Построение матрицы перехода

Для преобразования векторов в слабый самоортогональный базис и обратно необходимо найти матрицу перехода. Пусть кодовые векторы представлены в стандартном базисе. Чтобы построить матрицу перехода из слабо самоортогонального базиса в исходный стандартный базис, надо определить, каким векторам в новом базисе соответствуют векторы матрицы Н (50). Примем, что /min соответствует вектор, равный примитивному элементу поля в степени п/2 (для рассматриваемого базиса (49) это будет вектор а4), такой, что единичный вектор преобразуется в единичный:

00000001s ^ 000000001^.

С одной стороны, остальные векторы, кроме единичного (53), представлены как комбинация произведений векторов к (к = /min). Назовём его подмножество Л. С другой стороны, оставшиеся векторы являются комбинациями из подмножества Л, умноженные на

вектор fmin. Назовём это подмножество В. Можно показать, что подпространству, образуемому каждым вектором fi (Д — /min), можно поставить во взаимно однозначное соответствие подпространство, образуемое векторами yi с такими же условиями (52), но из поля GF (2n/2). Тогда базисные векторы из подмножества А будут поставлены в соответствие векторам yi, записанным в младших п/2 разрядах, а векторы из подмножества В будут поставлены в соответствие тем же векторам yi, но записанным в старших п/2 разрядах. Операции умножения преобразуются так, чтобы в слабо самоортогональном базисе выполнялись следующие правила [10]:

U  fi £ Л,

fmin  fmin — a + P  fmin,P  fmin £В,

6.2. Пример вычисления матрицы перехода

Пусть имеется поле GF(28) или GF(2[3]) и элементы в поле задаются неприводимым многочленом [11]

р8

Для определения подмножеств нам необходимо выбрать полином из поля GF(2[3-1]):

р4

Примитивный элемент обозначим как 5. Используя условия (52), вычислим значения векторов fi, на основе которых строятся следующие базисные векторы:

¡1 — 5

¡2 — 5

Отметим, что fmin — /3. Элемент в новом базисе, соответствующий элементу v в старом базисе, обозначим v. Тогда, поскольку в новом базисе образ элемента fmin есть примитивный элемент поля степени N/2,

f3 — fmin — 00010000.

Вектору f1 поставим в соответствие вектор из поля, образованного неприводимым многочленом (57), и запишем значение получившегося младшего элемента в младшие разряды образа в новом базисе. Найдём образы векторов f1 и f2 в базисе размерности N/2. Для нахождения элементов поля воспользуемся полиномом (58):

д3 — 1 ^ 91 — 115/3 — Y5 — 0110,

д5 — 1 ^ 92 — 115/5 — I3 — 1000,

91  92 — I8 — 0101,

где 7 - примитивный элемент поля GF(2[1]). Согласно принятому соглашению, образы векторов 1 и 2 будут равны

f1 — 0000, д1 — 00000100,

f2 — 0000, д2 — 00001000,

h  ¡2 — 0000, Q1

Здесь мы определили образы подмножества А. Поскольку элементы подмножества В есть элементы подмножества А, умноженные на вектор fmin то, если воспользоваться правилом

умножения (55), можно легко найти образы базисных векторов этого подмножества в новом базисе:

/тт • к ^ 9тт • 91 = 01100000,

/тт • к ^ 9тш • 92 = 10000000,

/тт •/! • к ^ 9тш • 91 • 92 = 01010000.

Учитывая правила (53), (62), (66), (67), (68), (69), (70) и (71), можем записать в виде матрицы набор векторов в стандартном базисе В этом случае исходным векторам

будет соответствовать столбец:

= || /тткк /ттк /ттк /тт /2/1 к к ,

^ = ||а151 а100 а66 а15 а136 а51 а85 а01|

или

1 0 0 0 0 0 1 0

0 0 1 0 1 0 0 0

1 0 1 1 0 0 0 0

0 1 0 0 0 0 1 0

1 0 0 0 1 1 0 0

0 0 0 1 1 0 1 0

1 0 0 1 1 1 1 0

Соответствующий им набор векторов в слабом самоортогональном базисе есть

Р-теак = Ц /ттк/1 /тт/2 ¡ттк /тт /2/1/2/1 1|

или

0 1 0 0 0 0 0 0

1 0 1 0 0 0 0 0

0 0 1 0 0 0 0 0

1 0 0 1 0 0 0 0

0 0 0 0 0 1 0 0

0 0 0 0 0 0 1 0

0 0 0 0 0 0 1 0

Используя операции «сложение столбцов», преобразуем (76) в единичную матрицу. Применим такие же операции к (74). После этих операций преобразованная матрица (74) будет равна матрице перехода из слабо самоортогонального базиса в первоначальный, то есть стандартный базис. В рассматриваемом случае

0 1 1 0 0 0 1 0

1 0 0 0 0 1 0 0

1 0 0 1 0 0 0 0

0 0 1 0 0 0 1 0

0 1 1 1 0 1 1 0

0 1 1 1 0 1 0 0

0 0 0 1 1 1 0 0

Матрица перехода из стандартного базиса в слабый самоортогональный определяется как обратная к матрице Т^:

1 0 1 0 1 0 1 0

1 0 0 1 0 0 0 0

1 1 1 1 0 1 0 0

1 0 0 0 1 0 1 0

0 1 1 0 0 0 1 0

1 1 1 0 1 0 1 0

1 1 1 0 0 1 0 0

0 1 0 1 1 1 1 1

Для данных значений ТвЫТ,шеак = I.

6.3. Блок-схема устройства вычисления синдрома

В рассматриваемом случае для реализации математических операций в блоке вычисления синдрома рангового кода потребуются следующие элементы:

• блок преобразования векторов из стандартного базиса в слабый самоортогональный;

• блок умножения в поле размерности п/2 на вектор /1;

• блок умножения в поле размерности п/2 на вектор /2;

• блок умножения в поле размерности п/2 на вектор @ (вектор а принимаем равным единичному).

Рис. 1. Структурная схема устройства вычисления синдрома

На рис. 1 показано взаимодействие между элементами устройства. Данные поступают на вход системы в порядке убывания индекса (у7, у6,..., у0). Наиболее частое обращение происходит к умножителю на /1 (8 обращений). К блоку, реализующему умножение на /2, происходит 4 обращения. Меньше всего обращений (1 раз) выполняется по отношению к умножителю на 0. На выход системы после определённого количества тактов выдаётся значение элемента синдрома Для скорости, равной 1/2, потребуется 4 блока (п = 8). Заметим, что поскольку в проверочной матрице последующая строчка получается возведением в определённую степень Фробениуса первой строчки, то имеется возможность оптимизировать вычисления за счёт учёта результатов, найденных в соседних блоках. Результаты в соседних блоках получены в процессе определения других элементов синдрома.

6.4. Моделирование и синтез

Для моделирования был использован пакет Active-HDL 7.2 Student Edition от компании Aldec [12]. В качестве языка описания аппаратной части использовался VHDL [13]. Проект создавался для ПЛИС XC3S700AN-4FGG484C [14]. Синтез (synthesize) и алгоритм создания описания для упаковки в память ПЛИС (tranlation, mapping, placement и routing) выполнялись с настройками по умолчанию. Результаты приведены в табл. 1.

Т а б л и ц а 1

Результаты моделирования и синтеза

Тип схемы Задержка, такты Элементарные блоки (slice), шт. (%) 4-портовая память (LUT), шт. (%) Макс. рабочая частота, МГц

Предложенный алгоритм 23 1355 (23) 1549 (13) 173

Алгоритм на базе умножителей Карацубы-Офмана 106 751 (12) 1124 (9) 173

Отметим, что задержка в тактах получена при моделировании, однако точно такая же задержка будет и в физическом устройстве. Блок на основе предложенного алгоритма оказывается примерно в 4 раза быстрее. Из-за большего количества элементов (несколько типов умножителей и блоков преобразования векторов в требуемый базис) в физическом устройстве предложенный блок занимает больше ресурсов микросхемы.

7. Заключение

Предложенный способ позволяет для случая декодирования ранговых кодов (п/2) сократить время вычисления синдрома по сравнению с методом, основанным на умножителях Карацубы-Офмана. Проверочное моделирование и синтез показал, что для реализации нового метода требуется в 1,5 раза больше ресурсов кристалла. Вычисление синдрома, основанного на слабо самоортогональном базисе, предпочтительно для систем, в которых время декодирования рангового кода является существенным ограничением.

Литература

1. Ahlswede R., Cai N. [et al.]. Network Information Flow // IEEE Transactions on Information Theory. — V. 46, N 4. — 2000. — P. 1204-1216.

2. Loidreau P. A Welch-Berlekamp like algorithm for decoding Gabidulin codes // Proc. 4th Int. Workshop on Coding and Cryptography. — 2005. — P. 36-45.

3. Gabidulin E. M., Pilipchuk N. I. Symmetric matrices and codes correcting rank errors beyond the [(d - 1)/2\ bound // Discrete Applied Mathematics. — 2006. — N 154. — P. 305-312.

4. Карацуба А. А., Офман Ю. П. Умножение многозначных чисел на автоматах // Доклады Академии наук СССР. — 1962. — Т. 145, № 2. — C. 293-294.

5. Афанасьев В. Б., Габидулин Э. М. Кодирование в радиоэлектронике. — М. : Радио и связь, 1986. — 176 с.

6. Bednara M., Gathen J., Grabbe C., Shokrollahi J., Teich J. FPGA designs of parallel high performance GF(2333) multipliers // Proc. of the 2003 International Symposium on IEEE «Circuits and Systems (ISCAS03)». — 2003. — V. II. — P. 268-271.

7. Schonhage A., Strassen V. Schnele Multiplikation großer Zahlen // Computing. — 1971. — I. 7. — P. 281-292.

8. Coronado Garcia L.C. Can Schönhage multiplication speed up the RSA encryption or decryption? // University of Technology, Darmstadt. — 2005.

9. Габидулин Э.М. Теория кодов с максимальным ранговым расстоянием // Проблемы передачи информации. — 1985. — Т. 21, № 1. — С. 1-12.

10. Gabidulin E.M., Sysoev I.Y. Rank codes using weak self-orthogonal bases // Proc. 2010 IEEE Region 8 International Conference on Computational Technologies in Electrical and Electronics Engineering. — 2010. — P. 70-71.

11. Лидл Р., Нидеррайтер Г. Конечные поля. Т. 2. — М. : Мир, 1988. — 822 с.

12. Aldec inc. Active-HDL Manual / aldec.com: web-site of Aldec inc. 2012. URL: http://aldec.com/resources/manuals/Active-HDL/index.htm (дата обращения 22.01.2012).

13. Xilinx inc. ISE 13.1 Documentation / xilinx.com: web-site of Xilinx inc. 2012 URL: http://www.xilinx.com/support/documentation/dt_ise13-1.htm (дата обращения 22.01.2012).

14. Xilinx inc. Spartan-3AN FPGA User Guides / xilinx.com: web-site of Xilinx inc. 2012 URL: http://www.xilinx.com/support/documentation/spartan-3an_user_guides.htm (дата обращения 22.01.2012).

15. Luigi Morelli. Distributed search for Fermat Number Divisors / fermatsearch.org: http://www.fermatsearch.org/index.html (дата обращения 04.05.2013).

16. Silva D., Kschischang F.R., Koetter R. A Rank-Metric Approach to Error Control in Random Network Coding // IEEE Transactions on Information Theory. — 2008. — V. 54, I. 9. — P. 3951-3967.

17. Сагалович Ю.Л. Введение в алгебраические коды: учебное пособие. — М. : МФТИ, 2007. — 262 с.

Поступила в редакцию 06.05.2013.