Библиографический список
1. Бортовая радиостанция цифровой связи УКВ диапазона «Пульсар» : техническое описание. - СПб. : НИТА, 2003.
2. Основы энергетического расчета радиоканалов / В. А. Мешалкин. - Л. : ВАС,
1991.
3. Методика расчета вероятности правильного приема пакета данных сообщения в целом в радиоканале с GFSK : отчет по НИР «Пульсар» / С. Г. Пятко, А. А. Привалов, С. А. Сердинов и др. - СПб. : НИТА, 2006.
4. Метод топологического преобразования стохастических сетей и его использование для анализа систем связи ВМФ / А. А. Привалов. - СПб. : ВМА, 2000. -166 с.
5. Модель процесса короткой передачи в радиолиниях «Пульсар» в условиях случайных помех / А. А. Привалов, А. Е. Красковский, А. П. Вандич. - СПб., 2011.
УДК 004.052.32
Вал. В. Сапожников, Вл. В. Сапожников, А. А. Блюдов
ЭКСПЕРИМЕНТАЛЬНЫЕ ИССЛЕДОВАНИЯ ДВОИЧНЫХ КОДОВ С СУММИРОВАНИЕМ
Проведен анализ двоичных кодов с суммированием с точки зрения обнаружения искажений информационных разрядов в кодовых словах. Выявлены новые свойства кодов с суммированием.
код с суммированием, кратность ошибки.
Введение
Классический код с суммированием, или код Бергера [1], относится к классу разделимых кодов. В кодовых словах выделяются информационные разряды. Контрольные разряды вычисляются по значениям информационных разрядов.
Код Бергера обозначим как S(n, т)-код, где m - число информационных разрядов, n = m + к - общее число разрядов, к - число контрольных разрядов. Контрольный вектор в кодовом слове представляет собой двоичное слово, равное числу единичных разрядов среди информационных разрядов, число контрольных разрядов к = ]log2(m + 1)[.
Код S(n, m) используется при организации функционального контроля комбинационных схем в дискретных устройствах [2, 3].
На рис. 1 приведена структура системы функционального контроля. Заданная схема fx) реализует систему булевых функций f1(x), f2(x), ..., fm(x). Для организации контроля устанавливается блок дополнительной
логики g(x), который вычисляет такие функции gi(x), g2(x), ..., gk(x), при которых рабочие выходные векторы <f1 f2.fmg1g2.gk> являются кодовыми словами некоторого кода с суммированием. Факт принадлежности этих векторов выбранному коду фиксируется при помощи специального устройства - тестера. При возникновении неисправностей в блоках fx) и g(x) происходит искажение выходного вектора <f1f2.fmg1g2.gk>, что определяется тестером.
сигнал
контроля
Рис. 1. Структура системы функционального контроля
Блоки fx), g(x) и тестер реализуются раздельными схемами. При анализе свойств схемы по обнаружению ошибок принимается допущение о возможности отказа только одного из блоков. Отказы блока g(x) вызывают искажения контрольных разрядов и всегда обнаруживаются, так как нарушается соответствие между числом единичных разрядов в информационной части кодового вектора и числом, которое реализуется на выходах неисправного блока g(x). Отказы блокаf(x) приводят к ошибкам в информационных разрядах кода. В блоке f(x) выход логического элемента может быть связан с произвольным числом выходов блока, и поэтому возможны любые комбинации искажений информационных разрядов, в том числе те, которые не обнаруживаются. При выборе S(n, т)-кода необходимо учитывать структуру необнаруживаемых искажений информационных разрядов.
1 Свойства S(n, т)-кода
Метод определения свойств S(n, т)-кода по обнаружению ошибок информационных разрядов рассмотрен в [4]. Множество информационных разрядов кода разбивается на m + 1 групп слов с одинаковым числом
единиц r (r = 0, 1,..., m). Число слов в одной группе равно Crm. В табл. 1 показано разбиение слов £(8,5)-кода. Всем информационным словам одной группы соответствует одно и то же контрольное слово. Оно записано в табл. 1 в нижней строке столбца. Все ошибки, переводящие слово из одной группы в другую, обнаруживаются, так как нарушают соответствие контрольного слова числу единиц информационного. Ошибки внутри одной группы не обнаруживаются и являются ошибками четной кратности, у которых число искажений типа 1^0 равно числу искажений типа 0^1.
ТАБЛИЦА 1. Разбиение информационных слов кода S(8,5) на группы по весу r
r
0 1 2 3 4 5
00000 10000 11000 11100 11110 11111
01000 10100 11010 11101
00100 10010 11001 11011
00010 10001 10110 10111
00001 01100 10101 01111
01010 10011
01001 01110
00110 01101
00101 01011
00011 00111
000 001 010 011 100 101
Например, в табл. 1 внутри группы r = 1 все искажения слов (ложный переход одного слова в другое в результате искажений разрядов) являются ошибками кратности 2, и они не обнаруживаются. Внутри группы r = 2 искажения слов являются ошибками кратности 2 или 4 и т. д. Назовем группы, представленные в табл. 1, обособленными группами.
Авторами разработаны и реализованы алгоритмы (рис. 2) вычисления характеристик по обнаружению ошибок любого разделимого кода, в котором информационные векторы могут быть распределены по обособленным группам.
Рис. 2. Алгоритм вычисления количества необнаруживаемых ошибок
в коде с суммированием
В [4, 5] определено следующее свойство S(n, т)-кода: доля необнаруживаемых ошибок информационных разрядов данной кратности t от общего числа ошибок информационных разрядов данной кратности не зависит от числа информационных разрядов и является постоянной величиной
t
Р,=С?/2\
В дальнейшем через в для любого кода с суммированием будем обозначать отношение (в процентах) числа необнаруживаемых ошибок информационных разрядов кратности t к общему числу таких ошибок. Для S(n, т)-кода и рассматриваемых далее кодов значения характеристик в приведены в табл. 2.
ТАБЛИЦА 2. Значения характеристик в
Код Кратность ошибки t
2 4 6 8 10 12 14 16
S(n, m) 50 37,5 31,25 27,34 24,61 22,56 20,95 19,638
S2(n, m) 100 100 100 100 100 100 100 100
S4(n, m) 50 50 50 50 50 50 50 50
S8(n, m) 50 37,5 31,25 28,13 26,56 25,78 25,39 25,2
S16(n, m) 50 37,5 31,25 27,34 24,61 22,56 20,95 19,641
2 Модульные коды с суммированием
S(n, т)-код можно считать частным случаем кода с суммированием по модулю, при этом модуль M = т + 1. Назовем код с суммированием M-модульным, если подсчет числа единиц производится по модулю M = 2 < т + 1 (обозначим такой код как SM(n, m)). С увеличением значения модуля M уменьшается число контрольных разрядов кода с суммированием, но ухудшаются свойства кода по обнаружению ошибок.
Код S2(n, т) является кодом паритета [2]. Данный код содержит две обособленные группы. Первая группа содержит все информационные слова с четным числом единичных разрядов, а вторая - все слова с нечетным числом единичных разрядов. Ложный переход одного кодового вектора в другой с одинаковым по четности числом единичных разрядов связан с искажением четного числа разрядов. Поэтому в коде S2(n, т) не обнаруживается 100 % четных ошибок (табл. 2), но обнаруживаются все ошибки нечетной кратности.
ТАБЛИЦА 3. Разбиение информационных слов кода S4(7,5) по обособленным группам
р
0 1 2 3
00000 10000 11000 11100
11110 01000 10100 11010
11101 00100 10010 11001
11011 00010 10001 10110
10111 00001 01100 10101
01111 11111 01010 10011
01001 01110
00110 01101
00101 01011
00011 00111
00 01 10 11
В общем случае SM(n, т)-код содержит М обособленных групп с весом 0, 1,...,М. В одну группу с весом р(ре{0, 1, ...,М}) входят информационные векторы с числом единичных разрядов, равным р при счете по модулю М. В табл. 3 представлены обособленные группы для S4(n, т)-кода. В группу со значением р = 0 входят векторы с весом r = 0,4, а в группу со значением р = 1 - векторы с весом r = 1,5.
Поскольку M = 21 (/е{1, 2, 3, .}) и является четным числом, то в одну обособленную группу входят векторы с одинаковым по четности по соответствующему модулю числом единичных разрядов. Кодовое расстояние между такими векторами определяется четными числом. По этой причине справедливо:
Утверждение 1. Во всех модульных кодах с суммированием, включая S(n, т)-код, обнаруживаются все ошибки информационных разрядов
нечетной кратности, но могут не обнаруживаться ошибки четной кратности.
При помощи системы программ, реализующих алгоритм, показанный на рис. 2, были произведены расчеты значений характеристик в для модульных кодов, которые приведены в табл. 2. Из полученных результатов следует:
Утверждение 2. Во всех модульных кодах с суммированием, включая S(n, т)-код, доля необнаруживаемых ошибок информационных разрядов данной кратности от общего числа ошибок информационных разрядов данной кратности не зависит от числа информационных разрядов и является постоянной величиной для данного кода.
Экспериментально показаны следующие свойства модульных кодов:
любой S2(n, т)-код не обнаруживает 100 % ошибок информационных разрядов четной кратности;
любой S4(n, т)-код не обнаруживает 50 % ошибок информационных разрядов четной кратности;
любой код SM(n, m) со значением М> 4 не обнаруживает 50 % ошибок информационных разрядов кратности 2;
код SM(n, т) со значением М > 8 имеет такое же число необнаруживаемых ошибок кратности t < M, что и S(n, т)-код;
код SM(n, т) со значением М> 8 имеет необнаруживаемых ошибок кратности t > M больше, чем SM(n, т)-код.
Указанные свойства кодов позволяют сделать важный с практической точки зрения вывод. При реализации структуры, показанный на рис. 1, целесообразно использовать не код Бергера, а код SM(n, т) со значением М = -2-',/=]log2 (т + 1)[.
Например, при т = 10 вместо кода S(14, 10) следует применить код S8(13, 10). Как следует из табл. 2, оба кода имеют одно и то же количество необнаруживаемых ошибок кратностей t = 2, 4, 6. По сравнению с кодом S(14, 10) код S8(13, 10) имеет необнаруживаемых ошибок кратности 8 в
1,03 раза больше, а кратности 10 - в 1,08 раза больше. Учитывая небольшую вероятность возникновения ошибок кратности t = 8, 10 на выходах основного блока fx) последнее обстоятельство не является существенным. В то же время применение кода S8(13, 10) уменьшает на единицу число контрольных разрядов, а следовательно, сокращает число выходов блока g(x) и число входов тестера, что уменьшает их сложность.
3 Модифицированный код с суммированием
Модульные коды имеют общий существенный недостаток - не обнаруживается значительное число искажений информационных разрядов небольшой кратности (см. табл. 2). Этот факт имеет существенное значение для построения структуры, изображенной на рис. 1, общая обнаруживающая способность которой может в значительной степени зависеть от внутренней струтуры блока f(x). Схема блока f(x)
определяет возможность возникновения на выходахf1, f2,..., fm ошибок той или иной кратности. Очевидно, что наибольшую вероятность возникновения имеют ошибки малой кратности, и особенно кратности 2 и 4, которые в соответствии с табл. 2 имеют наибольшую вероятность необнаружения.
Улучшение характеристик кода с суммированием достигается в предлагаемом модифицированном коде RS(n, m), который строится следующим образом. Для данного значения m составляется код S(n, m). Затем каждое слово полученного кода преобразуется в слово RS(n, m)-кода по следующим правилам, которые проиллюстрированы в табл. 4 для нескольких слов RS(8, 5)-кода. Определяется модуль М = 2r-1, где r = ]log2(m + 1)[. В этом случае r = 3 и М = 4. Для данного информационного слова вычисляется параметр W, равный числу единичных разрядов, подсчитанному по модулю М. Определяется также специальный коэффициент а. Если хт 0 хт_х 0... 0 хг+1 = 0, то а = 0; в противном случае а = 1. Например, в табл. 4 для информационного слова 00111 имеем х5 ® х4 = 0, поэтому а = 0.
Далее подсчитывается результирующий вес информационного слова по формуле: V = W + Ма. Контрольное слово является двоичным
представлением числа, равного результирующему весу информационного слова.
ТАБЛИЦА 4. Слова RS(8,5)-кода
Информационные слова Сумма единичных разрядов по модулю 4 Коэффициент а Вес информационного слова W + 4а Контрольное слово
Х5 х4 хз Х2 Х1 .Уз У2 У1
0 0 1 1 1 (3) mod4 = 3 0 3 0 1 1
1 1 0 1 1 (4) mod4 = 0 0 0 0 0 0
0 1 0 0 0 (1) mod4 = 1 1 5 1 0 1
0 1 0 0 1 (2) mod4 = 2 1 6 1 1 0
ТАБЛИЦА 5. Разбиение информационных слов кода RS(8,5) по обособленным группам
V
0 1 2 3 4 5 6 7
00000 00001 00011 00111 01111 01000 01001 01011
11011 00010 00101 11001 10111 10000 01010 01101
11101 00100 00110 11010 01100 01110
11110 11111 11000 11100 10001 10011
10010 10101
10100 10110
000 001 010 011 100 101 110 111
В табл. 5 представлено все множество информационных слов кода RS(8, 5), разбитое на семь групп с одинаковым результирующим весом V. Из сравнения табл. 1 и 5 следует, что в коде RS(8, 5) информационные слова более равномерно распределены по обособленным группам, чем в коде S(8, 5). Это обеспечивает уменьшение общего числа
необнаруживаемых ошибок.
В табл. 6 приведены характеристики по обнаружению ошибок для кодов S(8, 5) и RS(8, 5). Код RS(8, 5) имеет существенно лучшие характеристики. Общее число необнаруживаемых ошибок у кода RS(8, 5) почти в два раза меньше. Особенно важным является то, что при предложенной модификации кода S(8, 5) в 2,5 раза уменьшилось число необнаруживаемых ошибок кратности 2. В отличие от кода S(n, m) код RS(n, m) может не обнаруживать однонаправленные искажения разрядов четной кратности. Например, у кода RS(8, 5) в группе со значением V = 0 (табл. 5) не обнаруживаются три четырехкратные ошибки разрядов вида 0—>1 и три аналогичные ошибки разрядов вида 1—0.
ТАБЛИЦА 6. Характеристики кодов с суммированием
Код Кратность ошибки
2 4 1-5
Общее число ошибок данной кратности
320 160 992
Число/процент необнаруживаемых ошибок
S(8, 5) 160/50 60/37,5 220/22,2
RS(8, 5) 64/20 48/30 112/11,3
Заключение
Таким образом, приведен алгоритм вычисления количества необнаруживаемых ошибок в коде с суммированием, который позволяет эффективно оценивать свойства любого конкретного кода и делать вывод о рациональности его применения в том или ином случае.
Библиографический список
1. А note on error detecting codes for asymmetric channels / J. M. Berger // Information and Control. - 1961. - Vol. 4, № 3. - P. 68-73.
2. Самопроверяемые дискретные устройства / Вал. В. Сапожников, Вл. В. Сапожников. - СПб. : Энергоатомиздат, 1992. - 224 с.
3. Error Detection Circuits / M. Goessel, S. Graf. - London : Me Graw-Hill, 1994. -
261 p.
4. О свойствах кода с суммированием в схемах функционального контроля / Д. В. Ефанов, Вал. В. Сапожников, Вл. В. Сапожников // Автоматика и телемеханика. -2010. - № 6. - С. 155-162.
5. Генератор тестера с суммированием на новой элементной базе / Д. В. Ефанов // Известия Петербургского университета путей сообщения. - 2010. - Вып. 1 (22). - С 86-92.
УДК 681.3.01