СПОСОБ МЯГКОГО ДЕКОДИРОВАНИЯ БЛОКОВЫХ КОДОВ
METHOD OF SOFT DECODING OF BLOCK CODES

Изобретение относится к технике связи и может использоваться при проектировании новых и модернизации существующих систем передачи дискретной информации. Заявленный способ может быть использован для декодирования помехоустойчивых систематических блоковых кодов, обеспечивая высокую скорость и достоверность восстановления информации.
Заявленное техническое решение расширяет арсенал применения помехоустойчивых блоковых кодов за счет повышения кратности исправляемых кодом стираний.
Известен способ декодирования блоковых кодов (см. Дж. Кларк, мл., Дж Кейн «Кодирование с исправлением ошибок в системах цифровой связи». М.: Радио и связь, 1987, с. 96-128), в которых комбинации ошибок отыскиваются неалгебраическим методом. Недостатком подобного способа является сложность декодера, которая резко возрастает с ростом веса вектора ошибок, и поэтому подобный метод декодирования оказывается не эффективным при исправлении трех и более ошибок. Кроме того, вычислительная сложность процедуры отыскания ошибочных позиций в принятом кодовом векторе оказывается высокой.
Известен также способ декодирования блоковых кодов со стираниями элементов (см. патент РФ 2327297), в котором пространство кодовых комбинаций разбивается на кластеры и при правильном определении номера кластера декодирование осуществляется в подмножестве комбинаций (списке), принадлежащих выделенному кластеру с использованием метрики Евклида.
Недостатком данного способа является слабая защищенность номера кластера, при искажении которого декодер осуществляет поиск решения в подмножестве комбинаций (списке), отличном от истинного, что резко повышает вероятность ошибки декодирования.
Близким по технической сущности к заявленному способу является способ мягкого декодирования систематических блоковых кодов, в основе которого лежит процедура использования упорядоченных статистик индексов мягких решений (ИМР) (см. Р. Морелос-Сарагоса. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. М., Техносфера, 2005, с. 213, …, 216). Недостатком этого способа является необходимость вычисления обратной матрицы относительно переставленной в соответствии с результатами сортировки ИМР исходной порождающей матрицы кода, приведения вновь образованной матрицы в систематическую форму и получения на этой основе эквивалентного кода, с помощью которого отыскивается в конечном счете образец ошибки. Достоинством способа является возможность исправления ошибок за пределами метрики Хэмминга.
экв
ук
ук
ук
ук
ук
T
Наиболее близким по технической сущности к заявленному способу является способ, представленный в патенте РФ 2444427, когда символы принятой кодовой комбинации V систематического (n, k)-кода по основному алгоритму упорядочиваются по убыванию их индексов мягких решений и на основании выполненных перестановок формируется вектор V′, который совместно с вектором V образуют двудольный граф для формирования матрицы перестановок Р, умножение на которую порождающей матрицы кода G приводит к получению новой матрицы G′, первые k столбцов которой проверяются на предмет линейной независимости, и в случае положительного исхода этой проверки матрица G′ приводится к систематической форме , при этом первые k наиболее надежных элементов вектора V′ путем умножения на  образуют вектор эквивалентного кода V, который при поэлементном сложении по модулю два с вектором V′ формирует переставленный вектор ошибок Е′, и после умножения вектора Е′ на P формируется вектор ошибок Е, действовавший в канале связи на вектор V, при этом в случае отрицательного результата проверки линейной независимости строк матрицы G′ осуществляется замена k-того столбца этой матрицы на (k+1)-й столбец и в случае необходимости на последующие столбцы до выполнения условия линейной независимости k первых столбцов матрицы G′, и при выполнении этого условия адекватно меняются местами элементы в V′ и столбцы Р, отличающийся тем, что для всех разрешенных кодовых комбинаций (n, k)-кода по их f старшим разрядам определяют номер кластера, при этом значение f выбирают в пределах 1<f≤k/2, и при формировании кодового вектора на передаче младший разряд комбинации (правый) выкалывается и заменяется на бит проверки четности f разрядов кластера, а приемник, приняв вектор V по градациям надежности и биту четности, оценивает правильность приема номера кластера и в случае положительного решения переходит к обработке (n-f, k-f)-кода по основному алгоритму, предварительно сформировав корректирующий вектор W путем умножения разрядов номера кластера на первые f строк порождающей матрицы G кода и последующего временного удаления из него разрядов кластера, после чего вектор W вычитается из вектора V, при этом разряды кластера вектора V также не учитываются, с присвоением младшему разряду вновь образованного вектора V наиболее низкой оценки градации надежности, после чего декодер работает по основному алгоритму, формируя вектора ошибок Е, который поразрядно складывается с векторами W, V, формируя переданный вектор V за счет возвращения на свои места старших разрядов номера кластера, при этом, если проверка на четность номера кластера не выполняется, декодер подвергает инверсии наиболее ненадежный бит из числа участвующих в проверке.
Достоинством данного способа декодирования является возможность исправлять число ошибок, кратность которых превосходит число ошибок, определяемых метрикой Хэмминга и снижение вычислительной сложности процессора приемника, за счет снижения размерности порождающей матрицы эквивалентного кода.
Недостаток прототипа заключается в низкой скорости декодирования данных из-за необходимости для каждой кодовой комбинации в зависимости от конфигурации ИМР вычислять определитель матрицы размерности (k-f)×(k-f) при оценке свойства нелинейности строк переставленной матрицы G′. Таким образом, вычисление обратной матрицы в указанной процедуре обязательно. Кроме того, не используются все полезные свойства кластерного разбиения множества кодовых комбинаций. По сути в прототипе номер кластера применяется только для организации параметров укороченного кода, что ограничивает область применения способа использованием только систематических кодов.
Задачей изобретения является разработка способа декодирования кодовых комбинаций любых блоковых кодов, обеспечивающего получение технического результата, заключающегося в повышении скорости декодирования и достоверности принимаемой информации при исправлении ошибок.
пр
ук
ук
пр
пр
ук
er
ук
ук
i
уп
er
пр
пр
f
k-f
k-f
k-f
T
Технический результат достигается тем, что для всех разрешенных кодовых комбинаций (n, k)-кода по их f старшим разрядам определяют номер кластера, при этом значение f выбирают в пределах 1<f≤k/2, и при формировании кодового вектора на передаче младший разряд комбинации (правый) выкалывается и заменяется на бит проверки четности f разрядов кластера, а приемник, приняв вектор V по индексам мягких решений и биту четности оценивает правильность приема номера кластера и в случае положительного решения переходит к обработке символов (n-f, k-f)-кода по основному алгоритму ранжирования индексов мягких решений, предварительно сформировав корректирующий вектор W путем умножения разрядов номера кластера на первые f строк порождающей матрицы G кода и последующего временного удаления из него разрядов кластера, после чего вектор W вычитается из вектора V, при этом разряды кластера вектора V также не учитываются, с присвоением младшему разряду вновь образованного вектора V индекса мягкого решения равного нулю, после чего декодер работает по основному алгоритму, формируя вектора ошибок V, который поразрядно складывается с векторами W, V, формируя переданный вектор V за счет обратных перестановок символов и возвращения на свои места старших разрядов номера кластера, при этом, если проверка на четность номера кластера не выполняется, декодер подвергает инверсии наиболее ненадежный бит из числа участвующих в проверке. Особенностью является то, что любые f разрядов определяют номер кластера в двоичном представлении, а в совокупности все номера кластеров взятые по одному образуют полный набор элементов из поля GF(2), при этом среди оставшихся n-f разрядов выбирают любые k-f разрядов так, чтобы в для всех комбинаций кластера на позициях этих разрядов оказался полный набор элементов из поля GF(2), при этом кластер с номером ноль является базовым, а принятые комбинации любых других кластеров переводят в одну из комбинаций базового кластера путем сложения этих комбинаций с известной декодеру ключевой комбинацией K для кластера с номером i, признаком которой является наличие единичного элемента поля GF(2) относительно операции сложения на позициях выделенных k-f разрядов, формируют далее вектор , в котором временно исключают разряды, указывающие на номер кластера, и путем лексикографической сортировки символов  по признаку убывания соответствующих им индексов мягких решений образуют упорядоченный вектор , формируя в соответствии с этим упорядочением матрицу перестановок Р, используя которую переставляют столбцы комбинаций базового кластера так, чтобы на позициях старших k-f разрядов этого кластера образовался полный набор элементов поля GF(2), для чего в случае необходимости, одновременно корректируют Р и V, а после отыскивают в кластере вектор с номером j, в котором на k-f позициях старших разрядов окажутся символы в точности равные битам на одноименных позициях вектора , при этом выделенный вектор после его упорядочения принимают за эталонный , после чего складывают этот вектор поразрядно с вектором , получая упорядоченный вектор ошибок , при умножении которого на матрицу P формируют истинный вектор ошибок V, по которому, возвращая разряды кластера, с учетом V находят переданный вектор V, учитывая, что в ходе декодирования вектора V при невыполнении условия четности для разрядов кластера их восстановление осуществляют путем известных итеративных преобразований символов, составляющих номер кластера и определенного для этого бита четности.
8
Способ, применимый к любому блоковому коду, осуществляют следующим образом. Код БЧХ (15, 5, 7) с порождающим полиномом g(x)=2467 имеет порождающую матрицу G вида
13
14
15
3
5
6
9
1
5
5
3
k-f
2
Множество кодовых комбинаций кода разбивается на кластеры путем выделения f любых разрядов, где 1<f≤k/2. Пусть f=3 и в качестве разрядов кластера в системе выделяются разряды a, a, a (см. таблицу 1). Все множество комбинаций кода разбитое на кластеры в соответствие с выбранным правилом представлено в таблицах 1-8, а номера всех кластеров образуют множество элементов поля GF(2). Анализ элементов столбцов кластеров показывает, что не все перестановки столбцов приводят к образованию полного набора элементов поля GF(2). Подобное сочетание столбцов не может привести к образованию эквивалентного кода, и поэтому должно быть заменено на другое путем итеративных преобразований соседних столбцов. Например, столбец а, отдельно в сочетании со столбцами а, а, а и а не обеспечивает получение полного набора элементов поля GF(2) и поэтому в сочетании со столбцом а должны быть другие подходящие по значению ИМР столбцы. Число подобных неудачных сочетаний для всех столбцов составляет около 20% от общего возможного числа комбинаций столбцов, которые в подавляющем большинстве устраняются за одну итерацию, например, заменяя столбец, стоящий на второй позиции на третий столбец и так далее. Заметно, что столбец а всех кластеров при любом сочетании не обеспечивает получение желаемого результата, поэтому разряд а целесообразно отвести под бит проверки четности номера кластера, присваивая ему на приеме наиболее низкое значение ИМР. Для других кодов, исходя из указанного принципа, могут быть выбраны другие позиции кодовых комбинаций.
Пусть на выходе кодера образовался вектор вида
5
Для защиты номера кластера от ошибок передатчик заменяет бит а оставшейся части комбинации на бит проверки четность для символов, определяющих номер кластера  (в примере он остается без изменений). В канал связи будет передан вектор
er
Приемник принимает вектор , устанавливая по какому-либо известному принципу индекс мягкого решения (ИМР) для каждого символа комбинации, где V - вектор мешающих факторов или вектор ошибок. Пусть соответствие символов и их целочисленных значений ИМР имеет вид
Следовательно, вектор ошибок представлен последовательностью вида
пр
13
14
15
пр.
После приема вектора V, декодер на первом шаге декодирования проверяет соответствие символов номера кластера (позиции а, а, a) правилу четности. Если правило четности выполняется, декодер выполняет последующие шаги по восстановлению вектора VВ противном случае, номер кластера восстанавливается с использованием арсенала итеративных преобразований в соответствии с правилом
1
2
где функция  возвращает знак своего аргумента; L(d) - оценка надежности символа, участвующего в формировании проверочного бита; L(d) - оценка надежности проверочного символа; µ - число исключенных из преобразований единичных символов при условии, что они имеют высокий показатель ИМР.
5
13
14
15
l5
15
Например, в полученной последовательности а, а, а, а символ a является наиболее надежным. Ему соответствует информационное значение a=0, поэтому µ=0. Последовательность, подлежащая коррекции, принимает вид:  В этой последовательности единицы представляются знаком +, а нули знаком -, вертикальная черта указывает на проверочный символ четности +6.
На первом шаге итеративных преобразований получаем
1
L(d)=[-3+0]+6·(-1)≈3 - новое значение апостериорной оценки для символа -5;
2
L(d)=[-5+0]+6·(-1)≈5 - новое значение для символа -3.
Второй шаг итерации
1
L(d)=[-3+5]+6·(-1)≈-2 - значение коррекции для символа -5;
2
L(d)=[-5+3]+6·(-1)≈2 - значение коррекции для символа +4.
Третий шаг итерации
1
L(d)=[-3+2]+6·(-1)≈1 - значение коррекции для символа -5;
2
L(d)=[-5-2]+6·(-1)≈6 - значение коррекции для символа +4.
Итогом преобразований являются действия (-5+1=-4) и (-3+6)=+3.
2
10
В результате вместо искаженной последовательности  получают восстановленную последовательности символов  Следовательно, номер кластера, которому принадлежит комбинация, имеет номер 010=2.
k-f
1
2
4
8
1
2
i
1
2
Разряды для оставшихся k-f символов подбираются так, чтобы комбинации бит этих разрядов в совокупности представляли полный набор элементов поля FG(2). Например, подходящими кандидатами для всех кластеров являются символы а и а (см. таблицы 1-8), но, например, символы а и а этому требованию не отвечают. Пусть выбраны символы a и а. Для любого кластера с номером i комбинация K, в которой a=0 и а=0 является ключевой, позволяющей перевести комбинацию из кластера с номером i в одну из комбинаций кластера с номером 0.
Для второго кластера такой комбинацией является комбинация вида
После удаления номера кластера получают
i
5
Штрих в значении векторов означает работу декодера без учета символов кластера. При использовании процедуры  получают вектор, в котором осуществляется ранжирование символов a по убыванию значений их ИМР, так называемая лексикографическая сортировка массива данных. При этом символу проверки четности а искусственно присваивается наименьшее значение из возможных значений ИМР.
Перевод вектора в нулевой кластер
Процедура сортировки с образованием матрицы перестановок Р.
В новом формате на первых двух позициях оказываются символы, имеющие наиболее высокие значения ИМР, что отвечает требованиям перестановочного декодирования. Матрица Р принимает вид
0
Очевидно, что полной перестановки столбцов кластера K не требуется. Достаточно получить значения первых двух (трех) столбцов, чтобы выделить требуемый вектор из набора векторов кластера
8
9
8
12
2
Первые два столбца в  образуют полный набор элементов двоичного поля Галуа второй степени расширения, что говорит о возможности формирования эквивалентного кода. По совпадению элементов а=1 и а=0 в кластере  выделяется вторая строка  и осуществляется ранжирование ее элементов путем умножения  Это снижает сложность вычислительного процесса. Однако в случае образования пары a и а на позициях старших разрядов  набор элементов поля GF(2) не является полным, следовательно, эквивалентный код образовать невозможно.
Далее выполнение операция
Выделение второй строки в кластере комбинаций по
пep
Обратные преобразования вида  обеспечивают получение образца ошибок, действовавших на вектор V при передаче его по каналу связи.
er
пр
пер
Возвращая номер кластера на свои позиции и применяя значение V к вектору V, получают вектор V.
Предложенный способ мягкого декодирования блоковых позволяет:
- в большинстве случаев исправлять стирания, кратность которых определяется соотношением n-k;
- по сравнению с аналогами существенно сократить время обработки кодовых комбинаций в декодере за счет исключения из вычислительного процесса процедуры поиска обратной матрицы для переставленной порождающей матрицы кода и последующего формирования на этой основе матрицы эквивалентного кода;
- применение способа для декодирования не только систематических блоковых кодов.