2007
Доклады БГУИР
апрель-июнь
№ 2 (18)
УДК 621.391.(075.8)
КОРРЕКЦИЯ КЛАССИФИЦИРОВАННЫХ ОШИБОК ЦИКЛИЧЕСКИМИ КОДАМИ
А.В. ШКИЛЁНОК, В.К. КОНОПЕЛЬКО
Белорусский государственный университет информатики и радиоэлектроники П. Бровки, 6, Минск, 220013, Беларусь
Поступила в редакцию 22 января 2007
Рассматривается коррекция ошибок циклическими кодами, основанная на классификации векторов ошибок и анализе состояния делителя декодера циклического кода. Предлагается алгоритм декодирования циклических кодов, позволяющий декодировать любые циклические коды, корректирующие двукратные ошибки при малых временных затратах.
Ключевые слова: помехоустойчивое кодирование, циклические коды, делитель декодера.
Введение
В настоящее время широчайшее распространение в телекоммуникациях получили циклические коды (ЦК), контролирующие ошибки, основанные на БЧХ-кодах. На практике, как правило, применяются ЦК, корректирующие ошибки невысокой кратности ¿<3. Это обусловлено высокими аппаратурными и временными затратами на схемы коррекции (вычислительные затраты), которые резко возрастают при увеличении кратности исправляемых ошибок ¿>2. Возникает так называемая проблема селектора — устройства, вычисляющего вектор ошибки по виду синдрома, сложность которого при увеличении кратности корректируемых ошибок и длины кода п растет по экспоненциальному закону. Так, например, при п=31 число N анализируемых синдромов селектором для ¿=3 равно N=4491, для ¿=5 N=206367, а уже при п=127 и ¿=3 — N=341503.
В [1] показано, что при использовании теории норм синдромов возможно в п и более раз уменьшить сложность селектора при параллельном декодировании БЧХ-кодов, задаваемых проверочными матрицами вида Н = [а1 : а31 : а51 .. .]т, где а — элемент поля Галуа. ЦК в общем случае задаются иначе, чем БЧХ-коды, имеют другую структуру проверочной матрицы. Это не дает возможности использовать результаты, полученные в теории норм синдромов применительно к декодированию ЦК. Ниже рассматривается декодирование ЦК, использующее классификацию ошибок, являющуюся основой теории норм синдромов.
Классификация векторов ошибок при декодировании циклических кодов
Попытки классификации векторов ошибок для декодирования ЦК осуществлялись достаточно давно. Наиболее интересные результаты были получены в 60-х годах прошлого столетия Меггиттом, который предложил схемы и алгоритмы декодирования, позволяющие корректировать двукратные ошибки при полном и сокращенном наборе селектируемых комбинаций за 2п и 3п тактов декодирования соответственно [2]. Сокращенный набор селектируемых комбинаций стал возможен благодаря использованию частичной
классификации ошибок. Данная классификация основана на анализе совпадения образующих векторов ошибок с содержимым делителя декодера.
На рис. 1 приведен декодер Меггитта для ЦК (п;к)=(15;7). Цепи модификации синдрома и обратной связи буферного регистра сдвига, показанные пунктирной линией, используются только при декодировании с сокращенным набором селектируемых комбинаций.
Рис. 1. Декодер Меггитта с сокращенным набором селектируемых комбинаций
При декодировании ЦК (15;7) с полным набором селектируемых комбинаций имеется
14 синдромов двукратных ошибок и 1 синдром однократной ошибки. При циклическом сдвиге принятого слова несколько из 14 синдромов исправляемых конфигураций ошибок кратности ¿=2 появляются дважды. Например, вектор (000000100000001) после восьми циклических сдвигов переходит в вектор (000000010000001). Каждой из этих ошибок соответствует свой синдром. Если удалить один из этих синдромов, то при соответствующем циклическом сдвиге ошибка будет обнаружена. Если для каждой такой пары запоминать только один синдром, то для декодирования достаточно только восьми синдромов (селектируемые комбинации 1-8 на рис. 1). Когда первая ошибка достигнет конца буферного регистра, она может быть не исправлена, хотя в течение 15 сдвигов будет исправлена по крайней мере одна из двух ошибок. Для исправления обеих ошибочных позиций необходимо произвести два «-разрядных циклов сдвига. В таком случае декодирование займет 3п тактов: 15 тактов для вычисления синдрома,
15 тактов для исправления первого ошибочного символа и еще 15 тактов для исправления второго ошибочного символа. Поэтому для исправления всех двукратных ошибок необходимо добавление цепей обратной связи буферного регистра и модификации синдрома в делителе декодера. В противном случае ошибочный символ окажет воздействие на оставшиеся информационные символы и при втором поступлении в конец буферного регистра он не будет распознан и исправлен.
Данный метод декодирования применим только для ЦК, когда число проверочных символов больше числа информационных символов г>к. Для ЦК с г<к метод не применим, потому что для части векторов ошибок кратности ¿=2 соответствующие им синдромы будут иметь вес больше двух и совпадений векторов ошибок и их синдромов, на которых основана частичная классификация, не наблюдается. Поэтому декодер Меггитта не применим и для коррекции ошибок кратности ¿>2.
В теории норм синдромов показывается, что все множества ошибок различной кратности на фиксированной длине кода п могут быть классифицированы на классы — замкнутые /"-орбиты, в которых векторы ошибок постоянного веса представляют собой циклически сдвинутые двоичные последовательности. В табл. 1 приведена классификация
всевозможных ошибок кратности 1=1, 2 на длине кода п=7. Все множество ошибок кратности 1=2 разбивается на подмножеств. Каждое подмножество содержит п векторов
ошибок (циклически замкнутую Т-орбиту), образуемых циклическим сдвигом исходного образующего вектора веса два. Таким образом, описывается все множество двойных ошибок, содержащее Сп2=п(п-1)/2 векторов. Все ошибки кратности 1=1, 2 на длине кода п=7 разбиваются на 4 класса (Т-орбиты). Каждая орбита имеет свой образующий вектор ошибок, число которых равно числу Т-орбит.
Таблица 1. Векторы ошибок кратности ¿=1, 2 и образующие Г- орбит на длине кода п=7
Образующие векторы Векторы ошибок Координаты векторов ошибок Г-орбит^1
1 0000001 (1) - Е
0000010 (2) - Е2 Тс
1000000 (7) - Е7
2 0000011 (2;1) - Е2:1
0000110 1100000 1000001 (3;2) - Ез;2 (7;6) - Е7;6 (7;1) - Е™ Г1
3 0000101 (3;1) - Е3;1
0001010 (4;2) - Е4;2
1010000 0100001 1000010 (6;4) - Еб;4 (6;1) - Еб;1 (7;2) - Е7;2 Т2
4 0001001 (4;1) - Е4;1
0010010 0100100 1001000 0010001 0100100 1001000 (5;2) - Е5;2 (7;4) - Е7;4 (5;1) - е5;1 (6;2) - Е6;2 (7;3) - Е7;3 Т
Анализ данных табл. 1 показывает, что в каждой Т-орбите (для ошибок кратности 1=2) имеются состояния, когда в одном и том же подмножестве при постоянном весе встречаются два типа векторов ошибок (типичные и нетипичные) с различным расстоянием между единичными разрядами (определяется как диаметр ошибок П). Например, для типичных векторов ошибок второй и третьей Т-орбит П=0 и П=1 соответственно. Векторы нетипичных ошибок выделены жирным шрифтом.
Анализ состояний делителя ЦК при коррекции классифицированных ошибок
В табл. 2 и на рис. 2 приведены множества синдромов для образующих векторов ошибок и Г-орбит, состояния делителя декодера кода (31,21), задаваемого порождающим полиномом g(x) = х10+х9+х8+хб+х5+х3+1 в зависимости от тактовых сигналов. На рис. 2 в виде точек на окружностях показаны состояния делителя для типичных векторов ошибок орбиты Т1 в соответствии с номерами тактовых сигналов. Внешняя окружность содержит состояния делителя для подмножества с образующим вектором ошибок Е2д, а внутренняя - Е31,30. Состояния делителя представлены в виде элементов поля Галуа (210). Синдром образующего вектора ошибок орбиты Т -а 259; остальные точки на окружностях содержат состояния делителя орбиты Гь циклически сдвинутые каждое на один такт относительно предыдущего. Стрелками на рис. 2 показаны связи состояний делителя между подмножествами векторов ошибок орбиты Г]. Из рис. 2 видно, что селекция синдромов и коррекция ошибок происходит за вторые п тактов, а общее время на декодирование и коррекцию типичных ошибок составляет 2п тактов.
Синдром ошибки (элемент поля ОЕ (2Г)) Образующий вектор ошибки /- орбита
= (0000000001) - (а0) £1 /0
52 = (0000000011) - (а259) £2;1 /1
53 = (0000000101) - (а518) £3;1 /2
54 = (0000001001) - (а478) £4;1 /3
55 = (0000010001) - (а13) £5;1 /4
56 = (0000100001) - (а868) £6;1 /5
57 = (0001000001) - (а956) £7;1 /6
58 = (0010000001) - (а148) £8;1 /7
59 = (0100000001) - (а26) £9;1 /8
5ю = (1000000001) - (а1019) £10;1 /9
5ц = (0010110110) - (а603) £11;1 /10
512 = (0101101111) - (а91) £12;1 /11
513 = (1011011101) - (а536) £13;1 /12
514 = (0100000111) - (а926) £14;1 /13
515 = (1000011111) - (а1012) £15;1 /14
516 = (0010001010) - (а387) £16;1 /15
Рис. 2. Синдромы векторов типичных ошибок орбиты Г1 в зависимости от векторов ошибок £2+ц1+1 и тактирующих сигналов
Переходы между орбитами /2, ••• Г\5 для нетипичных ошибок кратности ¿=2 приведены на рис. 3, из которого следует, что для нетипичных ошибок вначале состояния делителя соответствуют орбите / 0, а затем переходят через промежуточные состояния в орбиты / 1, / 2, • / 15. Для исправления векторов нетипичных ошибок требуется дополнительное количество тактов для перехода на одну из орбит / 1, / 2, • / 15 и вычисления синдрома образующего вектора ошибок; в сумме общее число тактов на декодирование равно 2«.
Рис. 3. Состояния делителя для нетипичных ошибок различных Т-орбит
Декодирование классифицированных ошибок
Из предыдущего рассмотрения следует, что при декодировании необходимо ориентироваться на два типа корректируемых ошибок. Тип ошибки определяет и способ ее коррекции. При возникновении типичной ошибки первый и второй ошибочные символы исправляются соответственно по синдрому для двойных ошибок с модификацией и синдрому для одиночной ошибки по мере поступления тактовых сигналов. В отличие от типичных ошибок коррекция нетипичных ошибок происходит за один такт, согласно корректирующему вектору, формируемому в селекторе нетипичных ошибок в зависимости от состояний двоичного счетчика. На рис. 4 приведен алгоритм декодирования двукратных ошибок.
1. Вычисляется синдром S'(x)=А'(x)/g(x) принятого сообщения А'(х).
2. Если /<61, то переходим к п. 3., иначе — к п. 8.
3. Если S'(x)=0, то переходим к п. 1 с /=/+1, иначе — к п. 4.
4. Если S'(x)=S(x), то переходим к п. 5, иначе, когда S\x)фS(x) — к п. 1 с /=/+1.
5. При наличии разрешающего сигнала от счетчика и _)<16 осуществляется переход к п. 6, иначе — к п. 7.
6. Согласно значению формируется корректирующий вектор Е^) и нетипичная ошибка исправляется за один такт А^^А'^+Е^).
7. Корректируется первый ошибочный символ типичной ошибки по синдрому двойной ошибки Ап=(Ап_1+1) mod2, затем этот синдром модифицируется и осуществляется переход к п. 1 с /=/+1 для вычисления синдрома одиночной ошибки и коррекции второго ошибочного символа.
8. Конец алгоритма.
Для аппаратной реализации алгоритма декодера потребуются: двоичный счетчик, селектор для формирования векторов нетипичных ошибок и дополнительный буферный регистр со встроенными сумматорами по модулю два длины п. В зависимости от адреса, задаваемого двоичным счетчиком, и выхода селектора синдромов, с которого подается сигнал логической "1", формируется корректирующий вектор (в селекторе нетипичных ошибок). Нетипичные ошибки исправляются суммированием по модулю два ненулевых позиций корректирующего вектора с ошибочными символами принятого вектора. Это позволяет осуществить формирование и коррекцию нетипичных векторов ошибок кратности 1=2 в течение 2п тактов. Типичные ошибки исправляются аналогично декодеру с модификацией синдрома на рис. 1. Число селектируемых комбинаций составляет С321/31 + С3\/31 = 16, а для
декодера с полным набором селектируемых комбинаций С321 + С31 = 465 + 31 = 491 для кода длины п=31 и кратности ошибок 1=2.
Декодирование применимо для всех ЦК с любым соотношением параметров г и к, а не только для кодов с г>к. Поскольку синдромы однократных, двукратных и пакетных ошибок длины три попарно различны [1], то это дает возможность исправлять дополнительно эти пакетные ошибки ЦК с d=5. Это потребует введения одного элемента "И" в селектор синдромов и двух элементов " И" в селектор нетипичных ошибок.
Приведенный алгоритм
декодирования может быть использован и для коррекции ошибок большей кратности. Очевидно, что для этого следует ввести дополнительные элементы в селектор синдромов и селектор нетипичных ошибок (например, при ¿=3 потребуется ввести по С331/31 = 145 и
2 х С321 / 31 = 290 элементов "И" в селектор
синдромов и селектор нетипичных ошибок соответственно), что связано с увеличением количества селектируемых комбинаций и возрастанием количества векторов нетипичных ошибок. При этом коррекция ошибок будет также осуществляться за 2« тактов.
На рис. 5 приведены некоторые нетипичные векторы кратности ¿=2, 3, 4 для кодов длины «=31 и адресов, задаваемых двоичным счетчиком, при которых эти ошибки будут исправляться.
Вектор нетипичной ошибки I = 2 с образующим Е(х)=(0 11)
Буферный
Рис. 4. Алгоритм коррекции классифицированных ошибок
регистр
1
е 1 е
61 таит - коррекция е(л) = (1. 1)
Буферный регистр
1
Вектор не типичной ошибки I = 3 с образующим £(л)^=(0. ill)
■г
О
регистр F ■ ■
1 V 1 е 1 е
)*
6! такт ■ коррекция еШ = (; ■ 1)
60 такт ■ коррекция е(х) =(11 1)
Вектор нетипичной ошибки t = 4 с образующим ¿щМ] ¡111)
регистр J S» г 1 Г 1
1 Ф 1 ф 1 ф 1 ф
г
Буферный
регистр J S, 1 Г IF 1 Г
1 1 ф 1 Ф 1 Ф
1 1 1 1
ф ф ф
6! такт ■ коррекция е(х) = (1.. 111)
Й такт ■ коррекция е(х) = (11 .11)
59 такт - коррекция е(х) = (111. 1)
Рис. 5. Векторы нетипичных ошибок кратности ¿=2, 3, 4 и их коррекция
В табл. 3 приведено число типичных и нетипичных селектируемых ошибок при коррекции классифицированных ошибок и число селектируемых ошибок при полном переборе для исправления ошибок кратности 1=2, 3, 4 циклическим кодом длины «=31.
Для векторов ошибок кратности 3 на каждый образующий вектор типичной ошибки будет приходиться по два различных вектора нетипичных ошибок из этой же /"-орбиты, для векторов ошибок кратности 4 — три и т.д., т.е. количество различных векторов нетипичных ошибок всегда будет на единицу меньше веса образующего вектора этой /-орбиты. Из рис. 5 следует, что с увеличением кратности исправляемых ошибок возникает несколько подмножеств нетипичных ошибок, отличающихся месторасположением ошибочных символов внутри одной /-орбиты. Аналогичным образом будут выглядеть ситуации при коррекции ошибок более высокой кратности.
Таблица 3. Зависимость числа типичных и нетипичных селектируемых ошибок от числа корректируемых ошибок для п=31
Кратность ошибок, t Число селекти руемых ошибок Суммарное число селектируемых ошибок Число селектируемых ошибок при полном переборе
Типичные Нетипичные
2 16 (15+1) 15 31 465
3 161 (145+15+1) 305 (145-2+15) 466 4495
4 1076 (1015+145+15+1) 1350 (1015-3+145-2+15) 2426 31465
Анализ данных табл. 3 показывает, что число селектируемых комбинаций уменьшается примерно на порядок при использовании классификации ошибок, а по сравнению с декодером Меггитта с сокращенным набором синдромов приблизительно в t раз.
Выводы
Проведение исследования показало, что благодаря применению при декодировании циклических кодов классификации ошибок из теории норм синдромов, разделению векторов ошибок на типичные и нетипичные, введению дополнительного буферного регистра со встроенными сумматорами по модулю два уменьшается примерно на порядок количество селектируемых комбинаций и на n тактов время декодирования по сравнению с известными устройствами. Общее время на декодирование многократных ошибок постоянно (равно 2n тактам) и не зависит от числа корректируемых ошибок.
CLASSIFICATION'S ERRORS CORRECTING METHOD BY CYCLIC CODES
A.V. SHKILIONOK, V.K. KONOPELKO Abstract
Consider correction of double independent errors by cyclic codes based on classification errors and analysis states of divisor cyclic code decoder. There are offered decoding algorithm reducing time for correction double independent errors in comparison with famous independent error correcting methods.
Литература
1. Конопелько В.К, Липницкий В.А. Теория норм синдромов и перестановочное декодирование помехоустойчивых кодов. Изд. 2-е — М., 2004.
2. Теория прикладного кодирования: Учеб. пособие / Под ред. В.К. Конопелько. Минск, 2004, Т. 2.