УДК 681.3.042.5:621.39
МЕТОДИКА ПОСТРОЕНИЯ КОРРЕКТИРУЮЩИХ ЦИКЛИЧЕСКИХ КОДОВ ДЛЯ ЦИФРОВЫХ СИСТЕМ ПЕРЕДАЧИ И ОБРАБОТКИ ИНФОРМАЦИИ
Б.В. Матвеев, В.А. Середа
Предлагается методика построения непримитивных корректирующих циклических кодов длиной с кратностью равной байту для цифровых систем передачи и обработки информации, включая устройства памяти, а также систем передачи данных, использующих обратную связь. В таких системах важную роль играет правильный выбор корректирующего кода, обеспечивающий исправление или обнаружение ошибок и повышающий их эффективность. Разрядность данных обычно используют кратной 8 (байту), что напрямую связано с соответствующей кратностью процессорных устройств (16, 32, 64). При этом число информационных и проверочных символов кода также должно быть кратным байту и может выбираться одинаковым или отличаться в пределах той же кратности. Наиболее часто циклические корректирующие коды являются примитивными, и их длина не соответствует кратности байту. Это приводит к необходимости выбора непримитивных циклических кодов, набор которых, к сожалению, ограничен. В связи с этим в ряде случаев возникает потребность построения непримитивного циклического кода для решения определенных задач в цифровых системах, что может быть реализовано с помощью конкретной методики выбора образующего полинома. Образующий полином циклического кода должен удовлетворять следующим требованиям: должен быть ненулевым; вес его не должен быть меньше кодового расстояния кода; должен иметь максимальную степень числа проверочных символов в коде; все разрешенные кодовые комбинации циклического кода должны иметь свойство делимости на полином без остатка. Для получения нового полинома для циклического кода была разработана специальная программная процедура, реализованная на ЭВМ. Последовательность действий в процедуре следующая: формирование набора двоичных чисел с заданной разрядностью; отбор двоичных чисел с весом большим или равным кодовому расстоянию корректирующего кода; формирование полиномов из набора двоичных чисел; построение образующей матрицы кода по полиномам; проверка образующей матрицы кода на существование кода с заданным кодовым расстоянием; переход к новому полиному в случае невыполнения условия по кодовому расстоянию; фиксация всех полиномов, удовлетворяющих требованиям существования образующей матрицы кода. Таким образом, предложенная методика выбора непримитивных полиномов для циклических корректирующих кодов длиной кратной байту может быть реализована для получения других еще не построенных корректирующих циклических кодов для применения их в цифровых устройствах различного назначения
Ключевые слова: циклический код, кодовое расстояние, обработка информации
Введение
В системах цифровой обработки информации имеющих устройства памяти, а также в различных системах передачи данных важную роль играет правильный выбор корректирующего кода, обеспечивающий исправление или обнаружение ошибок и повышающий эффективность функционирования систем. В цифровых системах разрядность данных обычно берут кратной 8 (байту), что напрямую связано с соответствующей кратностью, используемой в ЭВМ (16, 32, 64) [1] . При этом число информационных и проверочных символов кода также должно быть кратным байту и может выбираться одинаковым или отличаться в пределах той же кратности.
Однако большинство циклических
корректирующих кодов являются примитивными [2] и их длина не соответствует кратности байту. Выбор непримитивных циклических кодов с требуемой длиной ограничен и не всегда подходит для решения конкретных задач. В связи с этим в ряде случаев возникает необходимость построения
непримитивного циклического кода под конкретное применение в цифровых системах.
Для решения такой задачи требуется определенная методика получения непримитивных циклических кодов, структура которых отлична от примитивных кодов. Разработке такой методики и посвящена предлагаемая статья, где на примере известных кодов примитивного БЧХ (15, 7) с кодовым расстоянием d = 5 и непримитивного кода (17, 9) с d = 5 [3] рассматриваются процедуры предлагаемой методики и последовательность их выполнения.
Постановка задачи
Недостатком кода (15, 7) является не кратное байту число информационных символов k = 7 при кратности числа проверочных символов г = 8. Таким образом, наиболее подходящим корректирующим кодом был бы циклический код (16, 8) с k = 8 и кодовым расстоянием d = 5, на примере получения которого и излагается суть предлагаемой методики.
Информационные и проверочные символы в кодовой комбинации циклического кода располагаются в строго определенных местах. В частности, как правило, первые к символов являются информационными, а остальные символы - проверочными. Такие коды обозначаются (п, к). В корректирующих кодах с исправлением ошибок кодовое расстояние (минимальное количество
Матвеев Борис Васильевич - ВГТУ, канд. техн. наук, профессор, тел. 8 960 1384561, e-mail: [email protected]
Середа Владимир Александрович - ВГТУ, магистрант, тел. 8 920 444 64 15, e-mail: [email protected]
символов, которыми одна разрешенная кодовая комбинация отличается от другой) связано с числом исправляемых ошибок t соотношением
d > 2t +1. (1) Однако вопрос об определении минимального числа избыточных символов для построения кода с исправлением t ошибок до настоящего времени не решен, существует лишь ряд верхних и нижних оценок границы этой обрасти [4]. Для этой цели наиболее часто используют оценки Хемминга и Варшамова-Гильберта при вычислении числа проверочных символов г корректирующего кода длиной П с кодовым расстоянием d .
Применительно к рассматриваемой задаче следует оценить возможность существования циклического корректирующего кода (16, 8), с числом информационных символов 8 вместо 7, как у кода БЧХ (15, 7).
Границу Хемминга получают из следующих соображений. Пусть задана кодовая комбинация с блоковой длиной П, и в ней возникают независимые ошибки кратностью до t включительно. Общее число ошибок в комбинации складывается из однократных, двукратных, трехкратных и т.д. до t -кратных ошибок и может быть определено из равенства
N = С 1 + С 2 + С 3 + + С * (2)
Это число ошибок должно найти соответствие в количестве проверочных символов г и определяться через них как соотношение
2г -1 > Сп1 + Сп2 + Сп3 +... + Сп< или
2г > 1 + Сп1 + Сп2 + Сп3 + ... + С . (3)
Из (3) получается граница Хемминга для
проверочных символов корректирующего кода
*
г > ^ сп , (4)
i=0
которую можно интерпретировать как границу существования кода при минимальной избыточности, необходимой при заданных k и *.
Применительно к нашему случаю с п = 16 и * = 2 получим в соответствии с (4)
г > 10М21 + С161 + СХ62 ]. (5)
Отсюда после вычисления логарифма получаем
г > 7.1. (6)
Из (6) следует, что наименьшее значение числа проверочных символов для циклического кода (16, 8) может быть оценено как г = 8 и увеличение числа информационных символов с 7 до 8 допустимо, при применении соответствующего образующего полинома циклического кода Р(х).
Образующий полином Р( х) циклического кода должен удовлетворять следующим требованиям [3]: 1. Р(х) должен быть ненулевым;
2. вес P(x) не должен быть меньше кодового расстояния кода , т.е. [P(x)] > dmin;
3. P(x) должен иметь максимальную степень r (число проверочных символов в коде);
4. все разрешенные кодовые комбинации циклического кода должны иметь свойство делимости на P(x) без остатка.
Расширение информационного пространства (k = 8) у кода (15, 7) с образующим полиномом P( x) = x8 + x7 + x6 + x4 +1 приводит к образующей матрице, показанной на рис. 1.
"10000000 00000001" 01000000 11101000 00100000 01110100 00010000 00111010 00001000 00011101 00000100 11100110 00000010 01110011 00000001 11010001
Рис. 1. Образующая матрица циклического кода (15, 7) с расширением информационного пространства
Как видно из рис. 1 циклический код (16, 8) с такой матрицей не обеспечивает требуемого кодового расстояния d = 5, необходимого для исправления двух ошибок (t = 2), так как верхняя строка матрицы, принадлежащая к разрешенной кодовой комбинации, имеет вес d = 2 .
Отсюда следует, что повышенные требования к числу информационных символов могут быть реализованы при другом образующем полиноме P(x), который должен удовлетворять требованиям, упомянутым выше.
Методика
Для получения нового P(x) для циклического
кода (16, 8) с d = 5 была разработана специальная программная процедура, реализованная на ЭВМ.
Последовательность действий в процедуре следующая:
1. Формирование набора двоичных чисел с разрядностью 7;
2. Отбор двоичных чисел с весом P(x) > dmin ;
3. Формирование P(x) из набора двоичных чисел;
4. Построение образующей матрицы кода по P(x);
5. Проверка образующей матрицы кода на существование кода (16, 8) с t = 2 ;
6. Переход к новому P(x) в случае невыполнения условия п. 2;
7. Фиксация всех P(x) по требованиям п. 5.
Формирование двоичных чисел следует
проводить, начиная с требования минимального количества единиц в них, чтобы обеспечивалось необходимое кодовое расстояние d = 5. Первая строка такого набора формируется в
виде1|0000111 |1, где внутренняя часть отражает двоичное число, полином Р(х) = 100001111 и вес его [Р(х)] = 5 . Вторая строка образует следующий полином, т.е. Р(х) = 1|0001011|1 = 100010111 и т.д. Всего полиномов при таком выборе образуется, как С73 = 35. Последний 35 полином будет Р(х) = 111100001, отражающий десятичное число 112. Первый полином отражал число 7, второй 11.
По набору полиномов строятся образующие матрицы циклического кода (16, 8) и проверяются на предмет их соответствия условиям существования кода с d = 5.
Проверка осуществляется по правой (проверочной) части образующей матрицы, первая часть которой является единичной матрицей (см. рис. 1).
Условия проверки следующие:
1. число единиц в любой строке правой части образующей матрицы должно составлять не менее чем d -1, т.к. одна единица разрешенной кодовой комбинации для этого случая находится в левой части по определению единичной матрицы;
2. сумма по модулю 2 двух любых строк правой части образующей матрицы должна содержать число единиц большее или равное d -2;
3. сумма по модулю 2 трех любых строк должна содержать число единиц большее или равное
d - 3 ;
4. сумма по модулю 2 четырех любых строк (в общем случае 2t строк) должна содержать число единиц большее или равное одной (в общем случае d - 2t).
Невыполнение хотя бы одного из условий проверки свидетельствует о не принадлежности полинома циклического кода (16, 8) к коду с величиной d > 5.
Проверка полиномов с весом [Р( х)] = 5 показала наличие только трех образующих полиномов, выполняющих условие 1, но 2 из них при проверке второго условия не обеспечили величину кодового расстояния большую или равную d - 2 = 3 . В связи с этим проверка для этого случая третьего и четвертого условия не производилась. Третий полином ^0011100^ обеспечил выполнение всех условий и может использоваться для кода (16, 8).
Дальнейшая проверка полиномов с весом [Р(х)] = 6 не обеспечила получение циклического кода (16, 8) с кодовым расстоянием d > 5 . При трех полиномах [Р(х)] = 6 , выбранных из 35 возможных,
все обеспечили построение образующей матрицы циклического кода (16, 8) только с кодовым расстоянием d = 2 . Для [Р(х)] = 7 из возможных 21 полинома было выбрано 5, обеспечивающих
предварительное построение образующей матрицы циклического кода (16, 8). Из пяти построенных образующих матриц две обеспечили для кода (16, 8) кодовое расстояние d = 2 , две показали наличие у кода (16, 8) только кодового расстояния d = 1.
Образующая матрица с полиномом
Р(х) = 111010111 ^ х8 + х7 + х6 + х4 + х2 + х +1 показала соответствие ее структуры циклическому коду (16, 8) с d = 5.
Полиномы с [Р(х)] = 8 при их количестве семь не обеспечили соответствующего построения матрицы циклического кода (16, 8) с d = 5. Все они показали возможность построения образующей матрицы только с кодовым расстоянием d = 4 .
Таким образом, только два непримитивных полинома циклического кода, первый
Р( х) = х8 + х5 + х4 + х3 +1 и второй
Р( х) = х8 + х7 + х6 + х4 + х2 + х +1 обеспечивают построение корректирующего циклического кода (16, 8) с d = 5 и t = 2. Из двух полученных полиномов первый в справочниках не приводится, второй полином соответствует таблице в [3].
Образующая матрица корректирующего циклического кода (16, 8) Р( х) = х8 + х7 + х6 + х4 + х2 + х +1 показана на рис. 2
"10000000 10011110" 01000000 01001111 00100000 11001100 00010000 01100110 00001000 00110011 00000100 11110010 00000010 01111001 00000001 11010111
Рис. 2. Образующая матрица корректирующего циклического кода (16, 8)
Образующая матрица корректирующего кода (16, 8) с Р( х) = х8 + х5 + х4 + х3 +1 показана на рис. 3.
"10000000 01001110" 01000000 00100111 00100000 10001111 00010000 11011011 00001000 11110001 00000100 11100100 00000010 01110010 00000001 00111001
Рис. 3. Образующая матрица корректирующего циклического кода (16, 8)
с Р(х) = х8 + х5 + х4 + х3 +1
Выводы
Отсюда следует, что предложенная методика выбора непримитивных полиномов для циклических корректирующих кодов длиной кратной байту может быть реализована для получения других еще не построенных корректирующих циклических
кодов для применения их в цифровых устройствах различного назначения. Так при отработке предлагаемой методики наряду с известным [3] полиномом кода (17, 9)
P( x) = x8 + x7 + x6 + x 4 + x 2 + x +1 полечен второй полином кода (17, 9) P( x) = x8 + x5 + x4 + x3 +1 с кодовым расстоянием d = 5 и t = 2, имеющий производящую матрицу (рис. 3), позволяющую при существующем в ней наборе строк, по сравнению с предыдущей матрицей, например, проще организовать мажоритарное декодирование кода (16, 8), полученного из кода (17, 9).
Литература
1. Basic Algorithm for the Coherent Digital Processing of the Radio Signals / A.N. Glushkov, V.P. Litvinenko, B.V. Matveev, O.V. Chernoyarov, A.V. Salnikova // Proceeding of the 2015 International Conference on Space Science & Communication. - Malaysia, Langkawi, 2015. - 5 p.
2. Прокис Дж. Цифровая связь / Дж. Прокис; пер. с англ. под ред. Д.Д. Кловского. - М.: Радио и связь, 2000. 800 с.
3. Кларк Дж. Кодирование с исправлением ошибок в системах цифровой связи / Дж. Кларк, мл. Дж. Кейн; пер. с англ. - М.: Радио и связь, 1987. 392 с.
4. Питерсон У. Коды, исправляющие ошибки / У. Питерсон, Э. Улдон; пер. с англ. М.: Мир, 1976. 593 с.
Воронежский государственный технический университет
METHODOLOGY OF CONSTRUCTION OF CORRECTIVE CYCLIC CODES FOR DIGITAL SYSTEMS OF INFORMATION TRANSMISSION AND PROCESSING
B.V. Matveev1, V.A. Sereda2
'PhD, Professor, Voronezh State Technical University, Voronezh, Russian Federation, e-mail: [email protected] 2MA, Voronezh State Technical University, Voronezh, Russian Federation, e-mail: [email protected] A technique is proposed for constructing non-primitive corrective cyclic codes with a length equal to a byte for digital systems for transferring and processing information, including memory devices, as well as data transmission systems using back-coupling. In such systems, the right choice of the corrective code plays an important role, providing correction or detection of errors and increasing their effectiveness. The bit capacity of the data is usually a multiple of 8 (byte), which is directly related to the corresponding multiplicity of the processor devices (16, 32, 64). At the same time, the number of information and verification code symbols must also be a multiple of a byte and can be chosen the same or different within the same multiplicity.
Most often the cyclic corrective codes are primitive, and their length does not correspond to the multiplicity of a byte. This leads to the need to select non-primitive cyclic codes, the collection of which is limited, unfortunately. In this connection, in a number of cases, there arises the need to construct a non-primitive cyclic code for solving certain problems in digital systems, which can be realized with the help of a specific method of selecting a generator polynomial.
A generator polynomial of a cyclic code must satisfy the following requirements: it must be non-zero; its weight should not be less than the code distance of the code; it should have the maximum degree of the number of check symbols in the code; all allowed code combinations of the cyclic code should have the property of divisibility on the polynomial without an excess.
To obtain a new polynomial for cyclic code, a special software procedure was developed, implemented on a computer. The sequence of actions in the procedure is as follows: the formation of a set of binary numbers with a given digit capacity; selection of binary numbers with a weight greater than or equal to the code distance of the corrective code; formation of polynomials from a set of binary numbers; constructing a generator matrix of the code by polynomials; checking the generator matrix code for the existence of a code with a given code distance; transition to a new polynomial if the condition is not fulfilled by code distance; fixation of all polynomials satisfying the requirements for the existence of a code generator matrix. Thus, the proposed method for selecting non-primitive polynomials for cyclic corrective codes with a length multiple of a byte can be realized to obtain other correction codes that have not yet been constructed for the use in digital devices of various purposes
Key words: cyclic code, code distance, information processing
References
1. Glushkov A.N., Litvinenko V.P., Matveev B.V., Chernoyarov O.V., Salnikova A.V. "Basic Algorithm for the Coherent Digital Processing of the Radio Signals", Proceeding of the 2015 International Conference on Space Science & Communication, Malaysia, Langkawi, 2015, p. 5
2. Proakis J. "Digital Communication" (Russian ed.: Prokis D. "tsifrovaya svyaz'", Moscow, Radio i svyaz', 2000, 800 p.)
3. Clark J., Kane Jr. J. "Encoding with error correction in digital communication systems" (Russian ed.: Klark D., Keyn D. "Kodirovanie s ispravleniem oshibok v sistemakh tsifrovoy svyazi", Moscow, Radio I svyaz', 1987, 392 p.)
4. Peterson W., Weldon E. J. Jr. "Error-correcting codes" (Russian ed.: Piterson U., Ueldon E., "Kody ispravlyayushchie oshibki", Moscow, Mir, 1976, 593 p.)