УДК 621.391.25 (075)
Система помехоустойчивого кодирования с переменной избыточностью
К.Е. Румянцев, И.Л. Трунов, Т.М. Горягина
Рассмотрены особенности построения помехоустойчивых кодов с переменной избыточностью; предложена структура системы передачи информации, использующей эти коды; представлены результаты практической реализации предложенных алгоритмов.
In this paper we consider a characteristic property of noise combating code with variable superfluity. We propose new structure of information transmission system using noise combating codes and present results of practical realization proposing algorithms.
Ускорение темпов развития телекоммуникационных систем явилось одной из причин появления принципиально новых способов кодирования сообщений, с помощью которых достигается не только достоверная передача, но и быстрая обработка данных. Несмотря на рост мощности вычислительной техники, актуальным остается вопрос построения простых алгоритмов коррекции ошибок. Одним из малоизученных направлений в этой области можно считать использование кодов с иррациональным основанием.
Помехоустойчивое кодирование передаваемой информации позволяет в приемной части системы обнаруживать и исправлять ошибки. Коды, применяемые при этом, называются корректирующими кодами.
Как правило, корректирующий код может исправлять меньше ошибок, чем обнаруживать. Число ошибок, которые корректирующий код может исправить в определенном интервале последовательности двоичных символов, например, в одной кодовой комбинации, называется исправляющей способностью кода.
Существует система счисления с иррациональным основанием т = (1 + л/5) / 2, получившая название системы счисления Фибоначчи. Эта система счисления обладает свойствами, на основе которых может быть реализовано помехоустойчивое кодирование.
Данная работа посвящена анализу помехоустойчивости кодов с иррациональным основанием (кодов Фибоначчи), построенных на основе ряда Фибоначчи 1-го порядка. Под р-кодом Фибоначчи понимается следующее представление натурального числа N
N = а (п) ¥р (п) + а (п - 1) ¥р (п - 1) +
+... + а(/)¥(/) + ... + а(1)¥р (1) ,
где а(/) = {0,1} - двоичная цифра /-го разряда представления; п - разрядность представления; р - целое неотрицательное число, принимающее значение из множества {0,1,2,3...}; ¥р(/) -р-число Фибоначчи, задаваемое с помощью рекуррентных формул
¥р (/) = ¥р (/ -1) + ¥р (/ - р -1),
¥р (1) = ¥р (2) = ... ¥р (р + 1) = 1.
Кодом Фибоначчи первого порядка называют следующее позиционное представление десятичного числа N
N = а (п) ¥ (п) + а (п - 1) ¥ (п - 1) +
+... + а(/)¥(/) + ... + а(1)¥(1) , (1)
где а(/)= {0,1} - двоичная цифра /-го разряда представления; п - разрядность представления; ¥(/) - число Фибоначчи, задаваемое с помощью следующих рекуррентных соотношений
¥(/) = ¥(/ -1) + ¥(/ - 2),
¥ (1) = ¥ (2) = 1. (2)
Формулы (1) и (2) позволяют получить двоичное представление любого целого положительного числа в системе Фибоначчи.
Ряд Фибоначчи 1-го порядка представляет собой последовательность натуральных чисел, в которой каждое последующее число равно сумме двух предыдущих. Для представления натурального числа N в системе Фибоначчи необходимо разложить его на сумму членов ряда Фибоначчи.
Очевидно, что одно и то же натуральное число N может иметь несколько разложений, а следо-
вательно, несколько видов (форм) кодировки в системе Фибоначчи.
Минимальной формой кода Фибоначчи или свернутым кодом числа N называется последовательность единиц и нулей, которая соответствует разложению числа N на наименьшее число слагаемых ряда Фибоначчи. Максимальной формой кода Фибоначчи или развернутым кодом числа N называется двоичная последовательность, содержащая максимальное число единиц.
Эти две формы представления кода Фибоначчи являются ключевыми в построении помехоустойчивого кода благодаря наличию особых свойств.
Минимальная форма кода Фибоначчи никогда не содержит двух подряд идущих единиц, т.е. кодовая комбинация 11 является запрещенной для минимальной формы, а кодовая комбинация 00 является запрещенной для максимальной формы.
Минимальную форму кода можно получить из двоичного представления числа по алгоритму, представленному на рис. 1.
Переход от минимальной формы к максимальной и наоборот обеспечивают микрооперации развертки и свертки.
Рис. 1. Алгоритм преобразования двоичного представления числа В в свернутый код Фибоначчи
Микрооперацией развертки называют последовательную замену кодовой комбинации !OO на OH. Для разложения эта операция эквивалентна замене члена последовательности на сумму двух предыдущих, при условии, что они ранее не участвовали в разложении. Если над кодом произвести все возможные развертки, получим максимальную форму.
Микрооперация свертки состоит в последовательной замене кодовой комбинации OH на !OO, что соответствует замене двух последовательных членов суммы на следующий старший член, при условии, что он ранее не участвовал в разложении. При использовании минимальной и максимальной форм кода Фибоначчи для передачи данных одиночную ошибку можно обнаружить по двум последовательным символам. Это позволяет сделать вывод о верности принятого сообщения по его части, не дожидаясь конца сообщения.
Система счисления Фибоначчи позволяет не только обнаруживать, но и исправлять некоторые ошибки. Принцип исправления ошибок основан на использовании фиксированных чисел. Фиксированным называется десятичное число, для которого минимальная и максимальная форма кода Фибоначчи совпадают. Такое число можно восстановить со 100-процентной точностью, если известна длина кодовой последовательности (независимо от числа искаженных символов).
Предлагаемая система помехоустойчивого кодирования «FIB», структура которой представлена на рис. 2, позволяет фиксировать до 98% ошибок. Эта цифра обусловлена возможными ошибками и отказами в аппаратной части системы.
Исходное сообщение S формируется в компьютере ПКІ и поступает на преобразователь ПІ, который переводит его в свернутый код Фибоначчи Fs. Кодовая последовательность Fs одновременно поступает в канал связи и на блок развертки БР, где преобразуется в развернутый код Fr, после чего поступает в канал связи. На входе приемной части системы стоят блоки проверки свернутого БПС и развернутого БПР кода. В БПР происходит проверка принятого развернутого кода F^ на наличие комбинации OO (ошибка І-го рода), БПС проверяет принятый свернутый код F^ на наличие комбинации ІІ(ошибка 2-го рода). Если хотя бы один из них обнаруживает запрещенную комбинацию, посылается сигнал на генератор сигнала ошибки ГСО, который управляет устройством синхронизации УС. Устройство синхронизации
Рис. 2. Структурная схема системы передачи информации «FIB»
посылает запрос на повторную передачу. Если запрещенные комбинации не обнаружены, развернутый код Fr1 поступает на блок свертки БС, который производит полную свертку кода Fs2. Затем Fs1 сравнивается с Fs2 в схеме сравнения СС. Если коды идентичны, они поступают на преобразователь П2, который переводит код в десятичную систему и отправляет на компьютер-получатель ПК2. Если Fs1 и Fs2 не равны, то на ГСО поступает сигнал об ошибке. Достоинство системы состоит в том, что большую часть преобразований можно осуществить как на программном уровне, так и на аппаратном.
Поскольку ставится цель третировать текстовое сообщение, то согласно 4:4девюй таблице Windows СР-1251, максимальное десятичное число, которое участвует в передаче, равно 255. Для его кодировки нужно 13 разрядов в свернутом коде и 12 в развернутом. В стандартной двоичной системе кодовая последовательность займет 8 разрядов. Таким образом, максимальная избыточность R, вносимая при кодировании, равна
K - k R ---------100%
(3)
где к - длина исходного кодового слова; К - длина результата помехоустойчивого кодирования.
В приведенном примере избыточность равна 62,5%. Если для передачи использовать только развернутый код, то для любого числа избыточность не превышает 50 %. Следует отметить, что для различных чисел избыточность различна и колеблется от 15 до 50 %. Этот нестандартный подход с переменной избыточностью позволяет получить хорошую помехоустойчивость достаточно простым методом. Другие системы кодирования, например, кодирование Рида-Соломона или коди-
рование Хэмминга, вносят меньшую избыточность, но требуют сложных математических вычислений во время кодирования. Применение в системе Фибоначчи очень простых математических основ сводит к минимуму вероятность ошибок кодирования.
Поскольку реализация математических операций кодирования Фибоначчи достаточно проста как на программном, так и на аппаратном уровне, целесообразно включить в систему блок исправления ошибок (место подключения условно показано на рис. 2). Его функции основаны на свойствах свернутого и развернутого кодов, а также на понятии фиксированных чисел. Сначала производится оценка размеров принятых (свернутого и развернутого) кодов. Если они равны, производится автоматическое построение фиксированного кода нужной длины (последовательность 10101010....). Если длины кодов не равны, свер-
нутый код проверяется на ошибку 1-го рода. В случае ее обнаружения исправление производится в соответствии с алгоритмом, представленным на рис. 3.
Рис. 3. Алгоритм исправления ошибки 1-го рода в минимальной форме кода
Исправление ошибки 2-го рода производится аналогично.
Алгоритм исправления ошибок реализован экспериментально. Производилась передача текстового сообщения между двумя персональными компьютерами. Эмулятор канала с ошибками был реализован программно, с возможностью изменения интенсивности ошибки в ходе эксперимента. Текст кодировался в соответствии с кодовой таблицей Windows СР-1251, где каждому символу ставится в соответствие целое число от 0 до 255. Эти числа переводились в кодировку Фибоначчи (минимальная форма). Кодовые последовательности длиной 12 или 13 бит подавались на эмулятор канала, где происходила инверсия одного, двух, трех или четырех последовательных символов. Искаженные кодовые посылки поступали на вход эмулятора блока коррекции в приемной части системы, где производилась проверка и исправление ошибок.
Вероятность правильного восстановления кодовой последовательности в приемной части системы рассчитывалась по формуле (для трех- и более кратной ошибки):
1п( гп)
Р( п, г) = ■
г > 3,
(4)
где п - число разрядов кода, г - кратность ошибки.
При кратности однократной и двукратной ошибке восстановленная кодовая последовательность полностью соответствовала исходной.
Благодаря свойствам кода Фибоначчи в приемной части системы передачи информации возможно обнаружить ошибку уже по двум последовательно принятым разрядам кода, причем локализировать ее с точностью до двух символов. Это позволяет сделать вывод о верности принятого сообщения по его части, не дожидаясь конца сообщения. Данные свойства могут быть полезны для систем, в которых необходимо отслеживать достоверность принятого сообщения в режиме реального времени и с высокой точностью. Как показали эксперименты, разработанные алгоритмы позволяют организовать эффективную помехоустойчивую передачу данных и могут найти применение в защищенных системах связи.
ЛИТЕРАТУРА
1. Воробьев Н.Н. Числа Фибоначчи. - М.: Наука, 1978.
2. Стахов А.П. Кодирование данных, основанное на фибоначчиевых матрицах // Труды Междунар. конф. «Проблемы гармонии, симметрии и Золотого Сечения в природе, науке и искусстве». - Винница: Изд-во Винницкого государственного аграрного ун-та, 2003, с.311-225.
3. Конопелько В.К., Липницкий В.А. Теория норм синдромов и перестановочное декодирование помехоустойчивых кодов. - М.: Эдиториал УРСС, 2004.
4. Золоторев В.В., Овечкин Г.В. Помехоустойчивое кодирование. Методы и алгоритмы. Справочник. -М.: Горячая линия-Телеком, 2004.
Поступила 15. 12. 2006 г.
г