Оптимальная реализация линейных блочных кодов средствами вычислительной техники за счет выбора полиномиальной формы представления систем булевых функций

А.Б. Сизоненко,

кандидат технических наук, доцент, Краснодарский университет МВД России

ОПТИМАЛЬНАЯ РЕАЛИЗАЦИЯ ЛИНЕИНЫХ БЛОЧНЫХ КОДОВ СРЕДСТВАМИ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ ЗА СЧЕТ ВЫБОРА ПОЛИНОМИАЛЬНОЙ ФОРМЫ ПРЕДСТАВЛЕНИЯ СИСТЕМ БУЛЕВЫХ ФУНКЦИЙ

OPTIMAL IMPLEMENTATION OF LINEAR BLOCK CODES BY MEANS OF COMPUTER TECHNOLOGY BY CHOOSING A POLYNOMIAL FORM REPRESENTATIONS OF SYSTEMS OF BOOLEAN FUNCTIONS

Рассмотрено помехоустойчивое кодирование линейными блочными кодами. Проанализированы полиномиальные формы задания систем булевых функций. Представлен алгоритм, позволяющий повысить производительность кодирования (декодирования) при реализации вычислений на ЭВМ.

Error-correcting coding by linear block codes is considered. Polynomial forms of the systems of Boolean functions are analyzed. Algorithm which increases the performance coding (decoding) during calculations on a computer is presented.

Введение

Большинство современных цифровых систем связи используют методы помехоустойчивого кодирования [10]. Необходимость их применения продиктована тем, что каналы связи несовершенны и при передаче и хранении информации возможно появление ошибок. Одним из видов блочных кодов является линейный блочный код, кодирование которым связано с выполнением интенсивных логических вычислений. Производительность логических вычислений, выполняемых средствами серийной вычислительной техники, сильно зависит от формы представления системы булевых функций. Поэтому необходимо выбрать такую форму представления и способ вычисления, которые бы наиболее полно и эффективно использовали ресурсы ЭВМ: память, набор команд, разрядность процессора и др. С этой целью в статье проанализированы различные формы представления булевых функций и их систем, введены показатели эффективности. Рассмотрен пример реализации линейного блочного кода, для которого произведен выбор наиболее эффективной формы представления. Для более эффективного использования разрядности процессора применен метод кратных логических вычислений.

Целью статьи является разработка подхода к реализации линейных блочных кодов на ЭВМ, позволяющая повысить производительность кодирования.

1. Общие сведения о линейных блочных кодах

Линейный блочный код образуется с помощью 2k линейно независимых базисных векторов {g1, ... g k }, которые образуют строки порождающей матрицы кода G [1, 8]:

' g1" ' gl,1 g1,2 g1,n

GkX n = g 2 = g 2,1 g2,2 g 2,n

^g k у ^ gk ,1 g k,1 gk ,n j

(Ik х k

P,

kх

),

где Ikхk — единичная матрица идентичности;

Pk х (п _Г) — матрица формирования проверочных бит.

Вычисление кодового слова V производится умножением вектора значений U на матрицу Gkхп:

V = U • Gkхn .

Проверочная матрица строится по следующему правилу:

H

Синдромное декодирование производится путем умножения принятого кодового слова R на транспонированную проверочную матрицу:

Я = R • )хп .

Каждому принятому слову, не принадлежащему коду, соответствует свой, от-

личный от 0 синдром [1].

При реализации кодера линейных блочных кодов средствами микропроцессорной техники важно выбрать такой алгоритм, который позволял бы производить вычисления за минимальное время и наиболее рационально использовал ресурсы ЭВМ — память и набор команд микропроцессора.

Как видно из (1)—(4), осуществление операций кодирования и декодирования связано с вычислением значений систем булевых функций (СБФ).

2. Анализ способов представления систем булевых функций и выбор показателей эффективности

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

При теоретико-множественном задании булева функция задается множествами М1 и наборов значений аргументов, на которых она принимает значения 1 и 0 соответственно [4].

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

Булева функция может быть представлена в виде алгебраического выражения суперпозиции элементарных логических операций — в виде формул [4].

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

Анализ источников [3, 4, 6, 7, 12, 13, 15] показывает, что в общем случае совершенные полиномиальные формы можно описать формулой:

2 п_1

/(X) = * а1х’п__1 °...°X1 ° х0 ,

I=0

где название формы, операции * и о, степенная операция х\, область значений коэффициента а1 представлены в таблице.

Полиномиальные формы представления булевых функций

Название формы Операция * Операция о Степенная операция аі

Конъюнктивная А V х і і II II II 0 аі є{0,1}

Дизъюнктивная V А Г х., і = 0 і Iі Хі = 1 Хі,і = 1 аіє {0,1}

Жегалкина 0 А хі= {и = 0 і 1 хі,і=1 аіє {0,1}

Арифметическая 1 + А і {1р і'=0 х,- = і 1 хір і=1 аі є Z

Арифметическая 2 + V і {1р і=0 х, = і 1 хі,і=1 аі є Z

Арифметическая 3 + 0 і {1р і'=0 х, = і і 1 хір і=1 аі є Z

Спектральная + X Xі. = I1, і = 0 хі 1(_1)хі, і = 1 аі є Z

Для представления произвольной функции полиномом Жегалкина применяют матричное преобразование [13]:

• Y,

A = В.

Y = B2 ” А

где

A = [

а0 а1

а2„ _1] — вектор коэффициентов ПЖ;

У — вектор истинности БФ;

В 2„ =

В„

0

В2” _1 В 2” _1.

— матрица логического преобразования, является п-й кронекеров-

ской степенью В 9„ =  В1 базовой матрицы В1 =

і=1

^1 0^ 1 1

При матричном преобразовании все вычисления производятся поразрядно и по mod 2.

Разновидностью арифметического способа представления булевых функций и их систем является представление модулярными арифметическими полиномами (МАП), которое позволяет ограничить размерность коэффициентов и уменьшить их количество [12].

Если т > Утах , где Утх — максимальное значение, принимаемое СБФ при десятичном представлении значений СБФ, то произвольный кортеж логических функций может быть представлен МАП [12]:

У = МБ (X) =

2” _1

і=0

+

т

где у = С

с е ъ;

п-1

/ = (4-1^- 2 к 7с) = X 4 2“ , 7и е I0,1} —

• разряды двоичнои системы счисления;

и = 0

хр =

|1, при ¡р = 0, 1хв, пРи 7' =1

Коэффициенты МАП МЭ(X) лежат в области целых неотрицательных чисел, а их числовой диапазон равен значению модуля т [12].

Матричное преобразование выполняется следующим образом:

С = Ап ¥,

где ¥ — вектор истинности БФ; матрица А = ^ А1 называется п-й кронекеровской

1=1

степенью базовой матрицы А1 =

1 0

-1 1

Для получения коэффициентов МАП каждый коэффициент вектора С берется по модулю т . Модуль удобно выбирать т = 2е1, где е — количество функций СБФ.

В минимизированной нормальной форме количество первичных термов минимально и последовательно выполняется не более двух базовых операций алгебры логики. Для получения минимизированной нормальной формы из СНФ применяется аналитический метод минимизации или графический (диаграммы Вейча) [7].

При вынесении в нормальных формах общих членов за скобки количество последовательно выполняемых операций, необходимых для вычисления значения функции (порядок функции), увеличивается. Такие формы называют скобочными [7].

Для представления систем булевых функций одним полиномом используют обобщенные формы [6]. Пусть дан произвольный кортеж булевых функций: /е-1(Х)*/й(X)* ••• */0(Х). Для получения обобщенной формы необходимо выполнить следующий алгоритм:

Шаг 1. Получить полиномиальное представление в выбранном базисе каждой из е функций:

Л( X) = *

/ =0 2п-1

/,(X) = *

-7-1

0

а0,хп -1 х1 О х0;

/-1

/= 0

/е,-,(X) = *

а х7 1 ° ° х1 ° х0

и(е-1)/Лп-1 ••• Л1 Л0 •

Шаг 2. Умножить каждый коэффициент функции / (X) на 21

С/ = 1, к,е -1).

Шаг 3. Привести подобные слагаемые и получить обобщенный полином:

2п-1

) = * 4хп:; °...° х1 о х00.

/ = 0

+

т

п-1

0

Вычисление обобщенного полинома производится поразрядным суммированием коэффициентов А7, если операция * логическая, и по правилам арифметического сло-

* —N +

жения, если ^ + .

Представление СБФ обобщенными полиномами позволяет распараллелить процесс логических вычислений и более эффективно использовать ресурсы ЭВМ. Распараллеливание процесса вычислений осуществляется за счет того, что система булевых функций описывается одним полиномом. Результаты вычисления располагаются в одной ячейке памяти в соседних разрядах.

Выберем показатели и критерии эффективности [3].

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

NT: h =

Показателем эффективности по трудоемкости вычислений будем считать отношение количества операций (тактов процессора), необходимых для вычисления значения функции при табличном представлении N к количеству операций (тактов процессора), необходимых для вычисления значения функции при полиномиальном представ-

N

лении Np : x = -Np .

Np

Комплексным показателем эффективности будет являться произведение эффективности по трудоемкости и информационной эффективности: V = h%.

При задании системы булевых функций таблицей истинности V = 1. Полиномиальная реализация будет эффективной, если V> 1.

Критерием эффективности будет являться максимальное значение комплексного показателя эффективности: V max.

3. Демонстрационный пример параллельной реализации линейного блочного кода

Разберем реализацию линейного блочного кода различными полиномиальными формами на примере.

Пусть линейный блочный код (7,3), исправляющий одну ошибку в семиразрядном слове, задан образующей матрицей: г1 0 0 0 1 1 1Л

0 10 0 10 1

0 0 1 0 0 1 1

v0 0 0 1 1 1 0у

Необходимо выбрать оптимальное, с точки зрения реализации на ЭВМ, полиномиальное представление.

В соответствии с образующей матрицей проверочные биты будут вычисляться следующей СБФ:

r2(X) = x3  x2  x0; ' r (X) = x3  Xj  x0; r0(X) = x3 ©x2  Xj.

Обобщенная СДНФ будет иметь следующий вид:

T

У = 6х0 + 3х1 + 5х1х0 + 5х2 + 3х2х0 + 6х2х1 + 7х3 + 1х3х0 + 4х3х1 + 2х3х1х0 +

+ 2х3х2 + 4х3х2х0 + 1х3х2х1 + 7х3х2х1;

и = 16Л» 0,03.

14 41

Обобщенная минимизированная дизъюнктивная форма имеет следующий вид:

У = 4х3х2х0 + 4х3х2х0 + 4х3х2х0 + 4х3х2х0 + 2х3х1х0 + 2х3х1х0 + 2х3х1х0 + 2х3х1х0 +

+ х3х2х1 + х3х2х1 + х3х2х1 + х3х2х1,

16 1

и =

12 35

Модулярный АП, описывающий данную систему, будет иметь следующий вид: ЫБ( X) = |б х0 + 3х1 + 4 х1х0 + 5 х2 + 6 х2 х1 + 7 х3 + 4 х3 х0 + 2 х3 х1 + 6 х3 х2 + 4 х3х2 х,|+,

16 1

и =-----» 0,06

10 29

Обобщенный полином Жегалкина:

У (X) = 7 х3 © 5 х2 © 3 х1 © 6 х0.

16 1

и =-----»1,33

4 3

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

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

В литературе [2, 5] был описан алгоритм (векторных) кратных логических вычислений. Суть алгоритма заключается в следующем. При кратности вычислений д входное воздействие можно задать матрицей размерностью q строк на п столбцов:

^ ^ ••• ( х (п—1)0 х(п-1)1 .. х.0 . .. х;1 . х х00 • х01

V Xq Ч, V х(п-1)( q—1) • - х. (q—1) • • х0( q—1) у

X

на основе которой формируются переменные х^ . е (0,1, к, п - 1) по следующему

к 0 х. 0)

правилу:

= (0 к 0 х

0 х.1 , 0

.____________У ^_____

а

а

а

где с1 — количество функций.

Затем действия производятся уже с переменными х.

Параллельно вычислим проверочные биты для трех кодовых комбинаций: X, = 1001, Х2 = 1010, Х3 = 0111.

Сформируем векторы входных переменных: х'0 = (0 0 1 I 0 0 0 I 0 0 1)2 = 65х

х; = (0 0 1 | 0 0 1 | 0 0 0 )2 = 72*

х2 = (0 0 1 | 0 0 0 | 0 0 0)2 = 641

хг = (0 0 0 I 0 0 1 I 0 0 1)2 = 910

Для вычисления значений термов операции выполним поразрядно и получим:

У (X) = 7 х © 5 х2 © 3 х^© 6 х0 = 7-9 © 5-64 © 3-72 © 6-65.

10

10

10

Ниже наглядно показано размещение битов, которые содержат вычисленные значения СБФ на трех наборах аргументов:

7*9=63

5*64=320

3*72=216

6*65=390

0 1 1 0 1 1 0 0 0

1 1 0 0 0 0 1 1 0

0 0 0 1 0 0 0 0 1

J J J

V Y- r2 Y- R1

0

©

0

Иллюстрация процесса вычисления

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

16 3 „

u =-----= 4.

4 3

Таким образом, можно сделать следующие выводы:

линейные блочные коды представимы линейным обобщенным полиномом Же-галкина;

коэффициенты обобщенного полинома Жегалкина, описывающего линейный блочный код, соответствуют десятичному представлению строк матрицы формирования проверочных битов — Pkх{п_к), входящей в состав образующей матрицы (1).

однотипность выполняемых операций дает возможность применения принципа кратных логических вычислений, что позволяет повысить производительность кодирования.

ЛИТЕРАТУРА

1. Вернер М. Основы кодирования: учебник для вузов. — М.: Техносфера, 2006. — 228 с.

2. Выхованец В.С. Кратные логические вычисления // Автоматика и телемеханика. — 1998. — № 6. — С. 163—171.

3. Выхованец В.С. Обработка сигналов в дискретных базисах на основе обобщенных полиномиальных форм // Цифровая обработка сигналов и ее применение: доклады 2-й Международной конференции. — М., 1999. Т. 2. — С. 372—377.

4. Закревский А.Д., Поттосин Ю.В., Черемисинова Л.Д. Логические основы проектирования дискретных устройств. — М.: Физматлит, 2007. — 592 с.

5. Лапкин Л. Я. О векторной программной реализации логических функций // Автоматика и телемеханика. —1983. — N° 3. — С. 120—128.

6. Малюгин В. Д. Параллельные логические вычисления посредством арифметических полиномов. — М.: Наука. Физматлит, 1997. — 192 с.

7. Пухальский Г. И., Новосельцева Т. Я. Цифровые устройства: учебное пособие для втузов. — СПб.: Политехника, 1996. — 885 с.

8. Мореллос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. — М.: Трансфера, 2006. — 320 с.

9. Сизоненко А.Б. Высокопроизводительный алгоритм вычисления термов нелинейного арифметического полинома средствами серийной вычислительной техники // Современные проблемы и пути их решения в науке, транспорте, производстве и образовании 2010: сборник научных трудов по материалам международной НПК. 20— 27.12.2010. Том 4. Технические науки. — Одесса: Черноморье, 2010. — С. 35—38.

10. Скляр Бернард. Цифровая связь. Теоретические основы и практическое применение: пер. с англ. — Изд. 2-е, испр. — М.: Издательский дом «Вильямс», 2004. — 1104 с.

11. Карпов Ю.Г. Теория автоматов. — СПб.: Питер, 2003. — 208 с.

12. Финько О.А. Модулярная арифметика параллельных логических вычислений: монография / под ред. В. Д. Малюгина. — М.: Институт проблем управления им.

В.А. Трапезникова РАН; Краснодар: Краснодарский военный институт, 2003. — 224 с.

13. Шалыто А. А. Логическое управление. Методы аппаратной и программной реализации алгоритмов. — СПб.: Наука, 2000. — 747 с.

14. Малюгин В.Д., Соколов В. В. Интенсивные логические вычисления // Автоматика и телемеханика. — 1993. — № 4. — С. 160—167.

15. Сизоненко А.Б. Анализ логических функций средств и систем защиты информации и способов повышения эффективности их вычислений // Научный журнал КубГАУ.— 2012. — №78(04). [Электронный ресурс]. — Режим доступа: http: // ej. kubagro.ru/2012/04/pdf/76.pdf