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

Декодирование ранговых кодов с использованием слабоортогонального базиса Текст научной статьи по специальности «Математика»

CC BY
105
13
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ / РАНГОВЫЕ КОДЫ / КОДЫ ГАБИДУЛИНА / СИНДРОМ / СЛАБЫЙ САМООРТОГОНАЛЬНЫЙ БАЗИС / БЫСТРЫЕ ВЫЧИСЛЕНИЯ / АЛГОРИТМ КАРАЦУБЫ-ОФМАНА / ПЛИС / РЕАЛИЗАЦИЯ / ОПТИМИЗАЦИЯ

Аннотация научной статьи по математике, автор научной работы — Сысоев И.Ю., Габидулин Э.М.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Декодирование ранговых кодов с использованием слабоортогонального базиса»

УДК 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]. По этой причине в данной работе предложено использовать схему умножения Карацубы-Офмана совместно со слабосамоортогональным базисом.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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), вычисляет синдром

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

т

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)

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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.

i Надоели баннеры? Вы всегда можете отключить рекламу.