УДК 519.725.2
И. Ю. Сысоев, Э. М. Габидулин
Московский физико-технический институт (государственный университет)
Декодирование ранговых кодов с использованием слабоортогонального базиса
Процедура вычисления синдрома является важной частью операции декодирования рангового кода. В работе показано, что, используя слабый самоортогональный базис, можно уменьшить сложность этой операции. Оценка сложности приблизительно определяется величиной n(log п)2. Оценка меньше, чем оценка сложности операции при использовании только стандартного базиса и известного алгоритма Карацубы-Офмана.
Ключевые слова: помехоустойчивое кодирование, ранговые коды, коды Габидулина, синдром, слабый самоортогональный базис, быстрые вычисления, алгоритм Карацубы-Офмана, ПЛИС, реализация, оптимизация.
1. Введение
Ранговые коды представляют интерес для многих областей применения: для коммуникационных технологий, криптографии, пространственно-временного кодирования, случайного сетевого кодирования. Ранговое декодирование является достаточно сложной процедурой и характеризуется большим количеством умножений в расширенном поле Галуа. Поэтому разработчику необходимо решать много проблем при разработке системы, осуществляющей декодирование ранговых кодов. К таким проблемам относятся борьба с большими задержками, высокое потребление мощности и ресурсов кристалла интегральной схемы.
Одним из эффективных способов решения перечисленных проблем является уменьшение сложности алгоритма. Этап вычисления синдрома в процессе декодирования занимает значительную долю во всей процедуре декодирования. В работе будет показано, как можно уменьшить сложность вычисления синдрома, используя слабоортогональный базис.
Основная часть данной работы организована следующим образом. В разделе 2 приводится обзор ранговой метрики и ранговых кодов. В разделе 3 выводится оценка сложности вычисления синдрома рангового кода стандартным методом и вклад этой операции в общую сложность процедуры декодирования. Слабый самоортогональный базис вводится в разделе 4. В разделе 5 рассматриваются используемые быстрые алгоритмы умножения. В разделе 6 обсуждается особенности реализации блока вычисления синдрома с использованием слабого самоортогонального базиса. В разделе 7 обсуждается эффективность нового алгоритма.
2. Ранговые метрика и ранговые коды
На практике в большинстве случаев используется метрика Хэмминга. Однако представляют интерес другие метрики, в частности ранговая метрика.
Ранговая норма матрицы X, определяемая в виде Иик(Х), может быть вычислена как количество линейно-независимых строк матрицы. Ранговое расстояние между матрицами X и У определено как ранг разности этих матриц:
Акк(Х,У) = Кк(Х - У). (1)
Кодирование с использованием ранговой нормы, или ранговое кодирование, подходит для тех каналов передачи данных, в которых одна и та же ошибка распространяется на различные символы кодового слова, например в сетевом кодировании [16]. В качестве примера стоит привести способ передачи данных под названием «сетевое кодирование» [1].
Введём необходимые обозначения. Обозначим через СР(д) базовое конечное поле из д элементов, где д - степень простого числа. СР(дм) - это расширение базового поля степени N. Если а - примитивный элемент СР(дм), то каждый ненулевой элемент @ из СР(дм) есть некоторая степень а, то есть @ = ав. Более того, для неравных целых г и существует целое к, такое, что аг — = ак.
Введём понятие рангового кода [9]. Пусть Xп - п-мерное векторное пространство над полем СР(дм). Пусть иг,и2,... ,им - некоторый фиксированный базис поля СР(дм), рассматриваемого как векторное пространство над СР(д). Любой элемент хг е СР(дм) однозначно представляется в виде хг = а1ги1 + а2ги2 + ... + амгим. Пусть АМ означает совокупность всех (Ы х п)-матриц с элементами из СР(д). Можно задать биекцию А : Хп ^ АМ правилом: для любого вектора х = (х\,х2,..., хп) можно найти соответствующую матрицу
(2)
Рангом вектора х над СР(д) называется ранг матрицы А(х). То есть ранг вектора - это максимальное число его координат, линейно независимых над СР(д). Ранг вектора х над СР(д) обозначается как г(х; д). Аналогично рангом (г х п)-матрицы Н с элементами из СР(дм) над СР(д) называется максимальное число столбцов, линейно независимых над СР(д). Обозначим ранг матрицы, используя г(Н; д). Обозначим ранг г(Н; д). Очевидно, что г(Н; д) > г(Н; дм).
Представим класс кодов максимального рангового расстояния для длин п < N. Эти коды являются аналогами обобщённых кодов Рида-Соломона [17]. Для удобства записи введём обозначение [г] = дг, г = 0,±1,...
Пусть Кг е СР(дм), г = 1, 2,... ,п, и пусть эти элементы линейно независимы над СР(д). Зададим целое й < п. Образуем матрицу
ап а\2 . . а\п
А(х) = <121 а22 . . а2п
ам 1 ам 2 .
Н
Кг К1] К2 . к21] . К . Кп Кп] . . Кп
кр1 к2'-2] . Кп
(3)
Код с проверочной матрицей вида (3) является кодом с максимальным ранговым расстоянием длины п с расстоянием й. При этом порождающая матрица кода имеет вид
С =
91 М11 . ю »о . 9п . ^
9Г1 . 9п-1]
(4)
где к = п — (I+1, а элементы д\,д2,... ,дп линейно независимы над СР(д). Для проверочной и порождающей матриц должно выполняться условие
СНТ = 0.
(5)
Кодирование ранговых кодов во многих случаях сводится к вычислению значений линеаризованных многочленов в поле СР(дм). Пусть порождающая матрица имеет вид (4). Тогда кодовое слово имеет вид
где
д = (Р (91),Р Ы,...^ (Сп)), к-1
Р= ^ щг®,
(6) (7)
г=о
причём щ,... ,ик-1 являются информационными символами.
Коды с проверочной матрицей вида (3) допускают декодирование с помощью алгоритма, который подобен алгоритму декодирования обобщённых кодов Рида-Соломона.
Пусть д = (д\,... ,дп) - кодовый вектор, е = (е\,..., еп) - вектор ошибки у = д + е - принятый вектор. После получения вектора у из канала связи инеобходимо вычислить синдром:
8 = (8о,81,...,8а-2) = унт = еНт. (8)
Задача декодера - по известному вектору синдрома в найти вектор ошибки е. Пусть ранговая норма вектора ошибки равна т. Тогда ошибку е можно представить в виде
е = ЕУ = (Еь...,Ет)У,
(9)
где величины Е\,... ,Ет линейно независимы над СЕ(д), а У = (У^) - (т, х п)-матрица ранга т, с элементами из СЕ(д). Тогда вместо (8) можно записать
8 = ЕУНТ = ЕХ.
(10)
где матрица X = УНТ имеет вид
X =
причём величины
Х1 г[1] 1
Х2 г[1]
г .1] •ът
п
£ У -Ъ ■ 1РЗ Ъз
3-1
х
И-2] [с-1-2]
X
ги-2]
■Ьт,
(11)
, т,
(12)
линейно незавимимы над СЕ(д). Равенство (9) эквивалентно системе уравнений относительно неизвестных Е\,..., Ет, х\,..., хт:
^ Ег хИ = вр,р = 0,1,...,(1 - 2.
г=1
(13)
Пусть найдено решение этой системы. Тогда из (12) определяется матрица У, а из (9) -вектор ошибки е. Отметим, что система (13) при заданном т имеет много решений, однако при т < (с! — 1)/2 все решения приводят к одному и тому же вектору е.
2
3. Сложность вычисления синдрома
Проанализируем один из этапов процедуры декодирования, а именно систему вычисления синдрома и поиска вектора ошибок рангового кода (п, к, (I). Здесь п - длина кодового вектора и в нашем варианте равняется размерности расширенного поля. Примем, что размерность поля N равняется длине кодового вектора п, к - количество информационных векторов, с! - кодовое расстояние, определяющее максимальный ранг ошибки. Интересным представляется случай п = 2к, поэтому примем п а: к.
Заметим, что операция вычисления синдрома выполняется всегда для каждого принятого кодового вектора, в то время как операция поиска вектора ошибок выполняется только в случае ненулевого значения синдрома, полученного на первом этапе.
Поскольку операция вычисления синдрома есть умножение вектора на матрицу, то сложность алгоритма равняется сложности вычисления результатов от п2к умножений. В этом случае асимптотически сложность алгортма вычисления синдрома «простым» способом оценивается как 0(п2к) или как 0(п3) умножений.
В работе [1] сложность алгоритма поиска вектора ошибок оценивается величиной, равной 5 п2 — § к2 + или 0(п2) + О(п) умножениям (см., например, [2]). Из приведёных
оценок следует, что одно из возможных направлений эффективных оптимизаций - это уменьшение сложности вычисления синдрома. Далее будет показан способ оптимизации операции вычисления синдрома с помощью такого математического объекта, как слабоортогональный базис.
4. Слабоортогональный базис
Выберем п линейно-независимых элементов расширенного поля
до(п) = (д1,д2,...,дп),9] е ^(дп). (14)
Этот набор (14) является базисом из СР(дп) над СР(д). Для любого такого набора векторов можно всегда ввести матрицу специального вида
9i 92 . . 9n
9i 9l . . дП i2 . gn
Gn — 9f 9f .
дГ1 9\1 . qn: . gn
(15)
Определение 1. Базис до(п) = (д\,д2,... ,дп) называется слабым самоортогональным базисом, если для матрицы (15) выполняется условие
GnGl — D, (16)
где И - это диагональная матрица в СР(дп), которая не является результатом умножения на единичную матрицу 1п.
Мы будем использовать следствия из следующей леммы.
Лемма 1. Пусть Р е СР(д2п) будет элементом, таким что Р= -1. Если до(п) = (д1, д2,..., дп) является слабым самоортогональным базисом поля Рд™, тогда до(2п) = (д1,д2,..., дп, Рд1, Рд2,..., @дп) есть слабый самоортогональный базис расширенного поля СР(д2п).
Доказательство см. в [3]. Далее в тексте будут рассматриваться только конечные поля, для которых д = 2.
Стоит напомнить, что существует сильный самоортогональный базис, для которого выполняется условие
ОпСТп = I. (17)
В отличие от слабого самоортогонального базиса, самоортогональный базис не позволяет рекурсивно строить пространства с сохранением свойства самоортогональности.
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).
(18)
(19)
(20)
(21)
(22) (23)
В качестве примера оптимизации рассмотрим СР(24)-линейный ранговый код (4, 2, 3), с! = п — к + 1 с максимальным ранговым расстоянием [10]. Для задания проверочной матрицы Н мы будем использовать базис, в котором базисный элемент /1 задаётся выражением
/22 +1 = /3 = 1,Л € ^(22).
(24)
Базис &1 = (1, У1) является слабым самоортогональным базисом в СР(22), поскольку для него выполняется условие (16):
1 /1
1 /2
11 /1 /2
1 + /2
о
о
1 + /4
= £>.
(25)
Используя базис (18), вектор из (22) и выражение (25), из леммы 1 получаем, что Ь является слабым самоортогональным базисом в С Р(24). Тогда на основе базиса Ь можно построить проверочную матрицу рангового кода
#2 =
1 ^ ^ /1/2
1 Л /2 Л /2
(26)
Аналогично, для размерности п = 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) иначе. Для этого введём обозначения
(27)
^1,2 =
1 /1
[1]
(28)
^2,2 =
[0]
0
[1]
Тогда (26) преобразуется следующим образом:
Н2 = II Fl 2 F22 ■ ^1,2!
(29)
(30)
Для п = 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 ]
(31)
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.
(32)
(33)
(34)
(35)
Таким образом, если проверочная матрица строится с использованием слабого самоортогонального базиса, то это построение носит рекурсивный характер. Рекурсивная структура позволяет по-новому подойти к операции декодирования рангового кода.
В общем случае при п = 4 декодер рангового кода (4,2,3) получает вектор у = (уо, у\, у2, уэ) и, используя матрицу (26), вычисляет синдром
т
S = 1 so sJ = уНт =
Уо + У1 h + /2 (У2 +У3/1) уо + У1/1 + /2 (У2 + У3/1)
(36)
Заметим, что каждый элемент у^ £ СР(24), г = 0,1, 2, 3, может быть представлен в форме
У г = аг + /2 Ьг,
где а £ СР(22), Ьг £ СР(22), а /2 £ СР(22).
Элемент /| может так же быть представлен по правилу (37), как
/22 = а + /2р,а £ СР(22),р £ СР(22).
(37)
(38)
При определённом выборе /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(22),i eGF(22). (39)
0
2
Заметим, что для вычисления г и t мы должны выполнить 3 сложения по модулю 2 в GF(22) и 4 умножения в GF(22). Если CGF^) обозначить как сложность предыдущей операции (39), тогда
CGF (222) — 3ADDGF (22) + 4MULTgf (22) — С2. (40)
5.2. Обобщение на случай больших полей
В общем случае, если базис является слабым самоортогональным и п — 2м, М — 0,1, 2, 3,..., то, обобщив (40), мы получим
Сг — 3ADDgf (22i-i) + 2MULTgf (22<-1) + 2Ci-i (41)
при г — 1, 2, 3,... (Со — 0). MULTgf^i-1) - сложность произведения двух небазисных векторов. В случае М — 2 из (41) получаем (40). Поэтому сложность нахождения элемента синдрома Si £ GF(22 ) есть
м
Сs — V( Сг + ADD , 2Мч ). (42)
£ (С* + 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П (1)Л +2^ ( 2i-1n (2rlo%2 3-1)
3 = 1 3 = 1
3 Y, (2i-10(1)) +2 ^ (2i-10(2^iog2 3-1)^j i=1
— - § о (a (2) '"')
< 3(i - 1)2i-10(1) + 0(2idog23),
j-1N
— 3(г - 1)2г-10(1)+2гJ2 О (3(J) ) <
или
Ci и0(i2i) + 0(2idog23). (45)
Используя (43), (44) и (45), упростим (42):
м , .
С - — Е [Ci + ADDGF (22М }J —
м
— ^ (^0(i2i) + Q(2Uog23) + Q(2M)) <
г=1
< 0(k22M) + 0(2М log23). (46) Так как М — log2 п, то из (46) получим
Сs и О ((log n)2n) + 0(nlog23). (47)
Используя только алгоритм Карацубы-Офмана, выполним оценку сложности вычисления элемента синдрома
Ск = (п - 1)0(nlog3) + (п - l)O(n) и 0(nlog3+1) + 0(п2).
(48)
Сравнивая (47) и (48), замечаем, что предложенный метод имеет значительную меньшую вычислительную сложность, чем метод, основанный только на использовании алгоритма Карацубы-Офмана.
6. Реализация блока вычисления синдрома
Опишем реализацию блока вычисления синдрома для случая (8, 4, 5). Согласно (23), слабый самоортогональный базис для этого случая будет основываться на базисе 64 и иметь вид
ь8 = (1, /1, к, /2/1, /а, к /1, /3/2, /3/2/1). (49)
Для того чтобы выполнить умножение в слабом самоортогональном базисе, необходимо определить матрицы перехода из исходного (стандартного) базиса в слабый самоортогональный (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
(50)
Далее подробно будет рассматриваться схема вычисления элемента синдрома в о, аналогичная (36),
so = Уо + hVi + /2У2 + /1/22/3 + /зУ4 + /3/12/5 + /з /22/6 + /3/2/12/7.
(51)
Схемы вычисления других элементов синдрома строятся аналогичным образом и имеют схожий с (51) вид. Для них изменятся только базисные векторы /¿, согласно формуле
/f+1 = 1, к eGF(2И).
(52)
Заметим, что числа вида Рп = 2[га1 + 1 называются числами Ферма [15]. Из (52) следуют формулы (23) и (24).
6.1. Построение матрицы перехода
Для преобразования векторов в слабый самоортогональный базис и обратно необходимо найти матрицу перехода. Пусть кодовые векторы представлены в стандартном базисе. Чтобы построить матрицу перехода из слабо самоортогонального базиса в исходный стандартный базис, надо определить, каким векторам в новом базисе соответствуют векторы матрицы Н (50). Примем, что /min соответствует вектор, равный примитивному элементу поля в степени п/2 (для рассматриваемого базиса (49) это будет вектор а4), такой, что единичный вектор преобразуется в единичный:
00000001s ^ 000000001^. (53)
С одной стороны, остальные векторы, кроме единичного (53), представлены как комбинация произведений векторов к (к = /min). Назовём его подмножество Л. С другой стороны, оставшиеся векторы являются комбинациями из подмножества Л, умноженные на
вектор fmin. Назовём это подмножество В. Можно показать, что подпространству, образуемому каждым вектором fi (Д — /min), можно поставить во взаимно однозначное соответствие подпространство, образуемое векторами yi с такими же условиями (52), но из поля GF (2n/2). Тогда базисные векторы из подмножества А будут поставлены в соответствие векторам yi, записанным в младших п/2 разрядах, а векторы из подмножества В будут поставлены в соответствие тем же векторам yi, но записанным в старших п/2 разрядах. Операции умножения преобразуются так, чтобы в слабо самоортогональном базисе выполнялись следующие правила [10]:
U ■ fi £ Л, (54)
(fmuit ■ fi) ■ fj £ В; (55)
fmin ■ fmin — a + P ■ fmin,P ■ fmin £В,(1 £ A. (56)
6.2. Пример вычисления матрицы перехода
Пусть имеется поле GF(28) или GF(2[3]) и элементы в поле задаются неприводимым многочленом [11]
р8(х) — х8 + ж4 + ж3 + ж2 + 1. (57)
Для определения подмножеств нам необходимо выбрать полином из поля GF(2[3-1]):
р4(х) — х4 + х + 1. (58)
Примитивный элемент обозначим как 5. Используя условия (52), вычислим значения векторов fi, на основе которых строятся следующие базисные векторы:
¡1 — 5(18]-1)/(2[1-1+1) — §255/3 — 585 — 11010110; (59)
¡2 — 5(18]-1)/(2[2-1+1) — §255/5 — §51 — 00001010; (60) f3 — 5W-1)/(2l3-1]+1) — §255/17 — §15 — 00100110. (61)
Отметим, что fmin — /3. Элемент в новом базисе, соответствующий элементу v в старом базисе, обозначим v. Тогда, поскольку в новом базисе образ элемента fmin есть примитивный элемент поля степени N/2,
f3 — fmin — 00010000. (62)
Вектору f1 поставим в соответствие вектор из поля, образованного неприводимым многочленом (57), и запишем значение получившегося младшего элемента в младшие разряды образа в новом базисе. Найдём образы векторов f1 и f2 в базисе размерности N/2. Для нахождения элементов поля воспользуемся полиномом (58):
д3 — 1 ^ 91 — 115/3 — Y5 — 0110, (63)
д5 — 1 ^ 92 — 115/5 — I3 — 1000, (64)
91 ■ 92 — I8 — 0101, (65)
где 7 - примитивный элемент поля GF(2[1]). Согласно принятому соглашению, образы векторов 1 и 2 будут равны
f1 — 0000, д1 — 00000100, (66)
f2 — 0000, д2 — 00001000, (67)
h ■ ¡2 — 0000, Q1 ■ (J2 — 00000101. (68)
Здесь мы определили образы подмножества А. Поскольку элементы подмножества В есть элементы подмножества А, умноженные на вектор fmin то, если воспользоваться правилом
умножения (55), можно легко найти образы базисных векторов этого подмножества в новом базисе:
/тт • к ^ 9тт • 91 = 01100000, (69)
/тт • к ^ 9тш • 92 = 10000000, (70)
/тт •/! • к ^ 9тш • 91 • 92 = 01010000. (71)
Учитывая правила (53), (62), (66), (67), (68), (69), (70) и (71), можем записать в виде матрицы набор векторов в стандартном базисе В этом случае исходным векторам
будет соответствовать столбец:
= || /тткк /ттк /ттк /тт /2/1 к к , (72)
^ = ||а151 а100 а66 а15 а136 а51 а85 а01| (73)
или
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
|0 1 1 0 1 0 0 1|
Соответствующий им набор векторов в слабом самоортогональном базисе есть
Р-теак = Ц /ттк/1 /тт/2 ¡ттк /тт /2/1/2/1 1| (75)
или
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
|0 0 0 0 1 0 0 1|
Используя операции «сложение столбцов», преобразуем (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 0 0 0 1|
Матрица перехода из стандартного базиса в слабый самоортогональный определяется как обратная к матрице Т^:
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.