А.Б. Сизоненко,
кандидат технических наук, доцент, Краснодарский университет МВД России
МОДЕЛИРОВАНИЕ РАБОТЫ КОДЕРА СВЕРТОЧНОГО КОДА ПОСРЕДСТВОМ АРИФМЕТИЧЕСКИХ ПОЛИНОМОВ
SIMULATION OF A CONVOLUTIONAL CODE ENCODER BY ARITHMETIC POLYNOMIALS
На основе анализа арифметических форм представления булевых функций разработаны арифметико-логические модели кодера сверточного кода. Это позволяет вычислять кодовые комбинации, заменив логические операции на арифметические, и распараллелить процесс вычисления.
Arithmetic-logical model of encoder convolutional code were developed according to the analysis of arithmetic representation forms of Boolean functions. This allow to calculate code combinations by replace the logical operations on the arithmetic and parallelize the process of calculation.
В современных цифровых системах связи для обнаружения и исправления ошибок широко используется помехоустойчивое кодирование сверточными кодами, которые описываются логическими функциями [5, 6]. Реализация логических функций арифметическими полиномами (АП) [1, 4], в частности модулярными арифметическими полиномами (МАП) [2, 3], имеет ряд важных преимуществ (по гибкости, производительности, достоверности реализации). Максимальной эффективности можно достичь при аппаратной реализации логических функций специализированными вычислительными средствами, функционирующими в модулярной арифметике [1, 2]. Однако распространена и программная реализация, позволяющая обеспечить необходимую функциональную гибкость и получить экономические преимущества. Реализация логических функций арифметическими полиномами микропроцессорами фон-неймановской архитектуры позволяет распараллелить процесс вычислений и расширить используемый набор команд микропроцессора [1].
Цель работы — разработка арифметико-логической модели кодера сверточного кода.
1. Представление систем булевых функций арифметическими полиномами
Арифметические полиномы и их получение.
Произвольный кортеж булевых функций fd (X) * fd _1 (X) * ■ ■ ■ * ^( X ) может быть единственным образом представлен АП [1]:
Введение
2n -1
i=0
где С = (с0 ... с n 1) — вектор коэффициентов АП; ci е Z .
i = (in-1in-2k i0) = I i 2" i е{0,1} — здесь и далее разряды двоичной системы счис
и =0
ления;
[1, при гр = 0,
, хр, при 1р =1.
АП, описывающий систему логических функций, можно получить алгебраическим и матричным способами [1—3]. Алгебраический способ заключается в реализации следующего алгоритма:
Алгоритм 1.
Шаг 1. Получение арифметического полинома Рг (X) для каждой булевой функции у / = // (X), / = 1, к, d , по формулам замены логических операций на арифметические:
х © у = х + у - 2 ху, (1)
Х V у = х + у - ху,
Х Л у = ху, х = 1 - х .
После приведения подобных слагаемых получим:
Л (х)=Р (х) = Е
¿=0
п
где г1 * г2 * к * гп = Е ¿и 2п-и, ги е {0,1} — разряды двоичной
и =1
системы счисления.
Шаг 2. Получение арифметического полинома, взвешенного весами 2 71 {j = 1,d):
2--1
Р'(Х) = р1 (X)21-1 = XЇХ1*? кX;, 1 = 1, к, й,
,=0
27-1 С/ = 1, к, ^ г = 0,1, ...,2п -1).
Шаг 3. Получение искомого арифметического полинома П( X) путем суммирования коэффициентов арифметического полинома Р'(X) для всех / = 1,..., d :
2- -1 й 2- -1
в (X) = XX 1Х'*? к *-- = X к *;-
І = 0 1 = 1
І = 0
где Сг = Е7 , (г = 0, 1, к ,2п - 1).
7 =1
Числовой диапазон, требуемый для представления коэффициентов и результатов промежуточных вычислений, может значительно превосходить числовой диапазон, достаточный для представления У.
Матричное преобразование выполняется следующим образом:
C = A 2п • Y, (2)
где У — вектор истинности БФ; A — матрица прямого арифметического преобразо-
вания размерности 2п х 2п; Матрица А_
А
2- -1 А
0
А
ской степенью А1 =
2 -1 2 -1 1 0
называется --й кронекеров-
1=1
Матричные преобразования хорошо алгоритмизируются и удобны для практического применения.
Модулярная форма арифметического полинома.
2--1
Если т < Утх, где Утх — максимальное значение, принимаемое У, то произвольный кортеж логических функций может быть представлен арифметическим полиномом [2, 3]:
У = МБ(Х) =
Еу (X1 X2 к х:)
(3)
где У = Ит •
Коэффициенты АП МО(X) лежат в области целых неотрицательных чисел, а их числовой диапазон равен значению модуля т [2, 3].
2. Сверточные коды
При сверточном кодировании преобразование информации происходит непрерывно. Сверточный кодер реализуется кК-разрядным регистром сдвига и п сумматорами по модулю 2, где К — длина кодового ограничения. Длина кодового ограничения — это количество к-битовых сдвигов, после которых один информационный бит может повлиять на выходной сигнал кодера. В каждый момент времени на место первых к разрядов регистра перемещаются к новых бит. Все биты в регистре перемешаются на к разрядов вправо, и выходные данные п сумматоров последовательно дискретизируются, давая биты кода. Поскольку для каждой входной группы из к бит сообщения имеется п бит кода, степень кодирования кодера равна к/п бит сообщения на бит кода, где к<п. Для сверточных кодов в отличие от блоковых исправляющая способность не зависит от длины кодового слова [6].
Пример 1. На рис. 1 приведена схема кодера сверточного кода со скоростью 1/2 и порождающими многочленами (7,5)8, представленными в восьмеричной форме. Порождающие многочлены определяют, какие разряды сдвигового регистра используются в выходных ветвях. В данном случае для одной выходной ветви используется многочлен 78=111, для другой 58=101. Двоичные символы поступают на вход регистра с К разрядами (К=3). На выходах сумматоров по модулю 2 образуются кодовые символы. Входы сумма-
+
2п -1
г=0
т
торов соединены с определенными разрядами регистра. За время одного информационного символа в данном случае на выходе образуются два кодовых символа [5].
Рис. 1. Схема кодера сверточного кода
Сверточный кодер, как автомат с конечным числом состояний, может быть описан диаграммой состояний [5]. Диаграмма представляет собой направленный граф и описывает все возможные переходы кодера из одного состояния в другое. Разверткой диаграммы состояний во времени является решетчатая диаграмма. Для кодера, рассмотренного в примере 1, решетчатая диаграмма представлена на рис. 2.
Рис. 2. Решетчатая диаграмма
Пример 2. Закодируем по решетчатой диаграмме, представленной на рис. 2, последовательность 0110101. Маршрут следования по решетчатой диаграмме при закоди-ровании данной последовательности показан на рис. 2 жирной линией, а закодированная последовательность приведена в табл. 1.
Таблица 1
и 0 1 1 0 1 0 1
Ус, VI 00 11 01 01 00 10 00
Для уменьшения избыточности при сверточном кодировании используется процедура перфорации («выкалывания» символов). При этом часть символов, полученных на выходе кодера сверточного кода, удаляется (выкалывается) с помощью заранее известного правила, а на приемной стороне с помощью того же правила на место выколотых символов вставляются так называемые «серые» уровни. «Серый» уровень для исходных сигналов 0 и 1 будет равен 0,5. Далее сообщение с добавленными «серыми» уровнями поступает на вход декодера сверточного кода [5].
1:і оо Ъ оо 1:3 оо й оо 1:5 оо І6 оо Ь оо оо І9 оо ^0
а=00 4 л
ь=іо *
с=01 *
с1=11 •
Для декодирования коротких сверточных кодов наиболее эффективным является алгоритм Витерби [5, 6]. Декодирование по этому алгоритму состоит в прослеживании по кодовой решетке пути с максимальной апостериорной вероятностью.
Периодическая структура решетчатой диаграммы существенно упрощает сравнение и выбор путей в соответствии с правилом минимизации метрики пути.
В соответствии с алгоритмом Витерби сравнение и отбрасывание отрезков путей производится периодически на каждом шаге декодирования. В каждом из состояний решетчатой диаграммы производятся следующие однотипные операции:
- сложение метрик предыдущих состояний с метрикой соответствующих ветвей;
- сравнение метрик входящих путей;
- выбор путей с наименьшими метриками, величины которых используются как метрики состояний на последующих шагах декодирования [5, 6].
На каждом шаге в результате сравнения половина возможных путей отбрасывается и в дальнейшем не используется. Поэтому количество вычислений на каждом шаге остается постоянным. Декодер прослеживает по кодовой решетке путь, имеющий минимальное расстояние от пути, который генерирует кодер [5, 6].
3. Арифметико-логическая модель кодера сверточного кода
Предлагаются алгебраический и матричный алгоритмы построения арифметикологической модели кодера сверточного кода.
о
1
Алгебраический алгоритм заключается в следующем:
Алгоритм 2.
1. Представление состояний кодера сверточного кода системой булевых функций от (К—1)+1 переменных, где i — количество моделируемых шагов работы кодера. Количество полиномов зависит от количества моделируемых шагов работы и будет равно in
2. Получение арифметического полинома для каждой булевой функции.
3. Получение арифметического полинома, взвешенного весами 2j_1
(j = 1,..., in).
4. Получение арифметического полинома, моделирующего работу кодера сверточного кода.
5. Получение модулярного арифметического полинома по (mod 2in).
Пример 3. Для кодера, представленного в примере 1, по алгоритму 2 построим арифметико-логическую модель.
1. Составим систему булевых функций, описывающую 2 шага работы кодера. В соответствии с выражениями, приведенными в п. 1 алгоритма 2, количество полиномов будет равно 4, количество переменных — 4.
Vn
00
х0 ® х_ ® х_2,
V10 = х0 © Х_2 ,
V 0+1 = х+1 © х 0 © х _^
4+1
х +1 © х_1.
2. Представим каждую логическую функцию арифметическим полиномом, используя формулы перехода от логических операций к арифметическим (1):
V00 = (х0 + х_1 - 2х0 х_1) ® х_2 = х0 + х_1 - 2х0х_1 + х
_2 2 Х 0 Х_ 2
2х-1 х-2 + 4х0 х-1 х-2,
V10 = х0 + х_ 2
■2х0х_2,
0+1
(х+1 + х0 _ 2 х+1 х0) © х _1 = х+1 + х0 _ 2 х+1 х0 + х _1 _ 2 х+1 х _1 _ 2 х 0 х _1 + 4 х+1 х0 х _1
V1+1 = х +1 + х_1
2 х +1 х -1 .
Переупорядочив слагаемые в полиномах по старшинству, получим: V00 = х_2 + х_1 _ 2х_1 х_2 + х0 _ 2х0 х_2 _ 2х0х_1 + 4х0х_1 х_2,
10
х - 2 + х0 - 2 х 0 х - 2 ,
= х_1 + х0 _ 2х0 х_1 + х+1 _ 2х+1 х_1 _ 2х+1 х0 + 4х +1 х0 х_1,
V1+1 = х _1 + х+1
2 х +1 х -1 .
3. Получение системы арифметических полиномов, взвешенных весами 8, 4, 2, 1:
V00 = 8(х_2 + х_1 _ 2х_1 х_2 + х0 _ 2х0 х_2 _ 2х0 х_1 + 4х0 х_1 х_2),
4(х_2 + х0 _ 2х0 X_2),
10
0+1
2(х_1 + х0 _ 2х0 х_1 + х+1 _ 2х+1 х_1 _ 2х+1 х0 + 4х+1 х0 х_1).
Vi+1 = х _1 + х+1 V 00 = 8х_2 + 8 х_1
2 х +1 х -1 .
_ 16 х_1 х_2 + 8х 0
16х0х_2
16 х0 х -1 + 32 х 0 х-1 х -2 ,
10
0+1
4х_2 + 4х0 _ 8х0 х_2,
2х_1 + 2х0 _ 4х0х_1 + 2х+1 _ 4х +1 х_1 _ 4х+1 х0 + 8х+1х0 х_1),
Vi+1 = х _1 + х+1
2 х +1 х-1 .
4. Просуммируем полученные полиномы и приведем подобные слагаемые:
Y = D(X) = 12х_2 + 11х_1 _ 16х_1 х_2 +14х0 _ 24х0 х_2 _ 20х0 х_1 +
+ 32 х 0 х_1 х_2 + 3х1 _ 6 х1 х_1 _ 4 х1 х0 + 8 х1 х0 х_1.
V
5. Получение модулярного арифметического полинома:
Y = MD( X) = |l2 х _ 2 + Их _ +14 x0 + 8 x0 x _2 +12 x0 x _ +
+ 3 x +10 x1 x_1 + 12 x1 x0 + 8x1 x0 x4| +
Матричный алгоритм получения арифметико-логической модели кодера сверточного кода представлен ниже.
Алгоритм 3.
1. Представление состояний сверточного кода таблицей истинности. Количество переменных в таблице истинности будет равно (#-1)+/, где i — количество моделируемых шагов работы кодера, то есть входными данными будут являться i кодируемых бит и (#-1) предыдущих бит. Количество переменных равно in.
2. Вычисление вектора истинности.
3. Применение прямого матричного преобразования (2) и получение коэффициентов модулярного арифметического полинома (mod 2n) с положительными коэффициентами.
4. Построение модулярного арифметического полинома (3), соответствующего моделируемому кодеру.
Пример 4. Построим по исходным данным примера 1 арифметико-логическую модель сверточного кодера со скоростью 1/2 и заданными порождающими многочленами (7,5)8, моделирующую два шага работы. Таким образом, для моделируемого кодера i=2, K=3, *=1, n=2.
В соответствии с алгоритмом 1 построим арифметико-логическую модель кодера сверточного кода:
1. Представим состояния сверточного кодера таблицей истинности (табл. 2).
Таблица 2
X V0 V1 Y
x+1 x0 x_1 x_2 V00 V10 V0+1 *1+1
0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 12
0 0 1 0 1 0 1 1 11
0 0 1 1 0 1 1 1 7
0 1 0 0 1 1 1 0 14
0 1 0 1 0 0 1 0 2
0 1 1 0 0 1 0 1 5
0 1 1 1 1 0 0 1 9
1 0 0 0 0 0 1 1 3
1 0 0 1 1 1 1 1 15
1 0 1 0 1 0 0 0 8
1 0 1 1 0 1 0 0 4
1 1 0 0 1 1 0 1 13
1 1 0 1 0 0 0 1 1
1 1 1 0 0 1 1 0 6
1 1 1 1 1 0 1 0 10
В соответствии с исходными данными таблица истинности будет содержать 4 переменные и 4 функции. В таблице истинности индексы переменных показывают значение в определенный момент времени ( х0 — текущий бит сообщения в момент времени t0, х_1 — предыдущий бит сообщения, х+1 — последующий бит сообщения и
т.д.). Индексы переменных обозначают номер выхода и номер соответствующего бита сообщения.
2. Вычисляем вектор истинности, путем взвешенного суммирования значений переменных и заносим его в таблицу истинности.
3. Применяем прямое матричное преобразование. Получаем вектор коэффициентов арифметического полинома:
С = А 24 [0 12 11 7 14 2 5 9 3 15 8 4 13 1 6 10] =
= [0 12 11 _ 16 14 _ 24 _ 20 32 3 0 _ 6 0 _ 4 0 8 0].
В соответствии с (2) получаем вектор коэффициентов модулярного арифметического полинома:
С +6 =[0 12 11 7 14 2 5 9 3 15 8 4 13 1 6 10] =
= [0 12 11 0 14 8 12 0 3 0 10 0 12 0 8 0].
4. Строим модулярный арифметический полином, моделирующий два шага работы сверточного кода:
У = МЭ(Х) = |12 х_ 2 + 11х_1 + 14х0 + 8 х0 х_2 + 12х0 х_1 + 3 х1 + 10х1 х_1 + 12х1 х0 + 8 х1 х0 х_1|+6 (4)
В соответствии с примером 2 закодируем под 2 бита первые 4 символа 0110.
Для закодирования первых двух бит значение аргумента будет равно X = {1000},
подставим X в выражение (4), получим У = 310 = 00112, для следующих двух бит X = {0110}, У = 510 = 01012. Полученные значения соответствуют значениям, вычисленным традиционным способом (табл. 1).
Выводы:
1. В полученных арифметико-логических моделях кодера сверточного кода логические операции заменены арифметическими. Это позволяет распараллелить процесс вычисления кодовых комбинаций при выполнении этих вычислений средствами серийных ЭВМ.
2. Реализация модулярной арифметико-логическая модели более предпочтительна в силу меньшей длины реализующего ее полинома.
ЛИТЕРАТУРА
1. Малюгин В. Д. Параллельные логические вычисления посредством арифметических полиномов. — М.: Наука; Физматлит, 1997. — 192 с.
2. Финько О. А. Модулярная арифметика параллельных логических вычислений: монография / под ред. В.Д. Малюгина. — М.: Институт проблем управления им.
В. А. Трапезникова РАН; Краснодар: Краснодарский военный институт, 2003. — 224с.
3. Финько О. А. Реализация систем булевых функций большой размерности методами модулярной арифметики // Автоматика и телемеханика.— 2004.— № 6.— С. 37—60.
4. Шалыто А.А. Логическое управление. Методы аппаратной и программной реализации алгоритмов. — СПб.: Наука, 2000. — 747 с.
5. Защищенные радиосистемы цифровой передачи информации / П. Н.Сердюков [и др.]. — М.: АСТ, 2006. — 403 с.
6. Скляр Б. Цифровая связь. Теоретические основы и практическое применение.
— М.: Издательский дом «Вильямс», 2004. — 1104 с.