Способ декодирования линейного каскадного кода
Изобретение относится к области вычислительной техники и может быть использовано для помехоустойчивого декодирования информации в каналах с большим уровнем шума. Технический результат – повышение вероятности исправления ошибок при декодировании за счет повышения эффективности декодирования итеративных каскадных кодов. Способ декодирования линейного каскадного кода основан на том, что на приемном конце канала связи закодированную информационную последовательность вначале направляют во внутренний итеративный декодер, а затем во внешний декодер, причем закодированную информационную последовательность, используемую для декодирования на приемной стороне, формируют на передающей стороне путем направления исходной информационной последовательности сначала во внешний кодер, который использует код контроля по mod q, q≥2, и после каждых (n-1) символов вычисляет их сумму по mod q и ставит этот символ на n-ю позицию, а затем сформированную последовательность направляют во внутренний кодер, в котором ее кодируют в соответствии с выбранным кодом, причем при декодировании закодированной информационной последовательности внутренним итеративным декодером внешний декодер контролирует число информационных символов, которые были декодированы внутренним декодером, и производит оценку надежности декодированных символов путем подсчета количества этих символов, а после каждого n-го символа внешний декодер считает сумму по mod q для предыдущих (n-1) символов и сравнивает результат со значением n-го символа, вычисляя их разность R.
Реферат
Изобретение относится к области вычислительной техники, а именно к способам и устройствам, входящим в состав аппаратуры и программного обеспечения для систем коррекции ошибок при передаче, хранении, чтении и восстановлении цифровых данных. Оно может быть использовано, преимущественно, для помехоустойчивого кодирования информации в каналах с большим уровнем шума, в частности, в спутниковых и космических сетях связи.
Техническая и экономическая польза применения систем кодирования и последующего исправления ошибок в принятых из канала сообщениях состоит в том, что кодирование при хорошем эффективном последующем декодировании на приемной стороне системы связи многократно повышает к.п.д. используемых каналов, что особенно важно для чрезвычайно дорогих спутниковых и космических сетей связи.
Известен способ декодирования в системе помехоустойчивого кодирования сигналов в цифровой системе радиосвязи [RU 2573263, С2, Н03М 13/15, Н03М 13/23, 20.01.2016], путем преобразования входного сигнала в цифровой вид с помощью дельта-модуляции, заключающийся в том, что цифровое значение ei очередного i-гo отсчета определяется разностью между отсчетом входного сигнала xi и формируемой аппроксимацией этого отсчета yi, выраженной зависимостью:
и последующим избыточным кодированием цифровой информации помехоустойчивым циклическим или сверточным кодом, отличающийся использованием последовательности сверточного кода для повышения помехоустойчивости цифрового сигнала, кодированием одновременно пары отсчетов xi,1 и xi,2 позволяющим сохранить информационную скорость канала связи, равную скорости аналого-цифрового преобразования речевого сигнала.
Недостатком этого технического решения является относительно узкая область применения, поскольку способ предназначен, преимущественно, для декодирования речевых сигналов.
Известен также способ порогового декодирования в системе помехоустойчивого кодирования, который реализуется пороговым декодером [В.В. Золотарев, Г.В. Овечкин. Помехоустойчивое кодирование. Методы и алгоритмы. Справочник. М., "Горячая линия - телеком", 2004, 124 с., с. 80], заключающийся в том, что, после передачи по каналу связи информационные символы кода (поток U) направляют в информационный регистр, а проверочные символы (поток V) - в синдромный регистр, используя пороговый элемент (ПЭ), являющийся решающим элементом декодера, суммируют определенные символы синдрома (проверки) и, если число ненулевых символов на входе ПЭ превышает заданное пороговое значение, то изменяют содержимое ячеек, с которых снимались сигналы, а также декодируемый символ в шестой крайней ячейке информационного регистра.
Недостатком этого способа декодирования является относительно низкая эффективность декодирования в каналах связи с высоким уровнем шума.
Наиболее близким по технической сущности к предложенному является способ декодирования линейного каскадного кода (каскадирования двух кодов) [В.В. Золотарев, Г.В. Овечкин. Помехоустойчивое кодирование. Методы и алгоритмы. Справочник. М., "Горячая линия - телеком", 2004, с. 88], заключающийся в том, что сообщение в цифровой форме на передающей стороне сначала кодируют внешним кодом, а затем созданную первым кодером последовательность направляют во второй кодер для кодирования внутренним кодом и с его выхода в канал связи, а на приемном конце канала связи сначала в принятом сообщении декодируют внутренний код и исправляют ошибки канала связи, а затем улучшенное таким образом принятое сообщение отправляют в декодер внешнего кода для исправления оставшихся ошибок.
В качестве примера можно указать на каскадную схему из сверточного кода во внутреннем каскаде и кода Рида-Соломона (PC) во внешнем каскаде [В.В. Золотарев, Г.В. Овечкин. Помехоустойчивое кодирование. Методы и алгоритмы. Справочник. М., "Горячая линия - телеком", 2004, 124 с., с. 90], которая демонстрирует весьма хорошую эффективность декодирования, если внутренний сверточный код декодируется, например, по алгоритму Витерби.
Однако, наиболее близкому техническому решению присущ недостаток, заключающийся в относительно низкой эффективности декодирования, обусловленный тем, что избыточность обоих кодов, входящих в каскадную схему оказывается существенно меньшей, чем у каскадного кода в целом.
Это несколько снижает эффективность каждого из кодов, входящих в каскадную схему декодирования, и снижает тот допустимый уровень шума, при котором этот способ декодирования каскадного кода будет эффективным.
Кроме того, в наиболее близком техническом решении оба этапа декодирования производят независимо друг от друга. Это также несколько снижает итоговую эффективность декодирования по сравнению с тем, если бы каждый из декодеров каскадной схем использовал результаты работы другого.
Эти недостатки устраняются в предполагаемом изобретении.
Задача, которая решается в изобретении, направлена на создание способа итеративного декодирования линейного каскадного кода, отличающегося более высокой эффективностью.
Требуемый технический результат заключается в повышении эффективности декодирования итеративных каскадных кодов с целью повышения вероятности исправления ошибок при декодировании.
Поставленная задача решается, а требуемый технический результат достигается тем, что, на приемном конце канала связи закодированную информационную последовательность вначале направляют во внутренний итеративный декодер, а затем во внешний декодер, причем, закодированную информационную последовательность, используемую для декодирования на приемной стороне, формируют на передающей стороне путем направления исходной информационной последовательности сначала во внешний кодер, который использует код контроля по mod q, q≥2, и после каждых (n-1) символов вычисляет их сумму по mod q и ставит этот символ на n-ю позицию, а затем сформированную последовательность направляют во внутренний кодер, в котором ее кодируют в соответствии с выбранным кодом, согласно изобретению, при декодировании закодированной информационной последовательности внутренним итеративным декодером внешний декодер контролирует число информационных символов, которые были декодированы внутренним декодером, и производит оценку надежности декодированных символов путем подсчета количества этих символов, а после каждого n-го символа, внешний декодер считает сумму по mod q для предыдущих (n-1) символов и сравнивает результат со значением n-го символа, вычисляя их разность R, и, если они совпали (R=0), то внешний декодер снова переводят в режим ожидания поступления следующих n символов от внутреннего итеративного декодера и оценок надежности этих символов, а при несовпадении контрольных символов (R≠0) и обнаружении ошибки из этих n символов выбирают самый ненадежный, а когда количество одинаково минимально надежных символов среди рассматриваемых n символов равно двум или более, внешний декодер не вносит корректировок во внутренний код, а, если внешний декодер при обнаруженной ошибке определил, что есть только один наиболее ненадежный символ и этот символ не n-й, то этот информационный символ изменяют во внутреннем декодере на величину разности результатов R в n-ом контрольном символе, причем, на последней итерации внешний декодер после выполнения своей функции передает ее результат получателю информации без изменения символов во внутреннем декодере.
Способ декодирования линейного каскадного кода реализуется следующим образом.
При кодировании информации на передающем конце канала связи исходная информация, например байтовая, поступает при кодировании сначала во внешний кодер, который использует код контроля по mod q, q≥2, который при q=2 является кодом контроля по четности (ККЧ). Внешний кодер в информационной последовательности, предназначенной для передачи, после каждых (n-1) символов вычисляет их сумму по mod q и ставит этот символ на n-ю позицию. Далее ожидают приход следующих (n-1) символов и т.д. Эта немного удлинившаяся последовательность поступает во внутренний кодер, который кодирует эту информационную последовательность в соответствии с выбранным кодом, т.е. создает проверочные (избыточные) символы этого кода и отправляет их вместе с информационной последовательностью в канал связи. Внутренний код может быть как блоковым, так и сверточным.
Декодирование начинает внутренний итеративный декодер и в соответствии с правилами своей работы он, по мере продвижения принятых информационных и проверочных символов кода по своим сдвиговым регистрам, последовательно на каждой итерации декодирования производит исправление ошибок, пришедших из канала связи, так, что на каждой итерации уменьшается число оставшихся ошибок. Когда вероятность (доля) оставшихся ошибок в декодируемом сообщении становится достаточно малой, например ~10-3 или даже меньше, в процесс декодирования добавляется декодирование и внешним декодером с кодом ККЧ. Итерация, на которой начинается использование внешнего декодера, выбирается при наладке устройства и зависит от уровня шума и от кода внутреннего декодера.
Внутренний декодер далее продолжает работать обычным для него образом в соответствии со своим алгоритмом. А внешний декодер на своей итерации контролирует число информационных символов, которые уже были декодированы внутренним декодером, т.е. просто считает количество этих символов и собирает в своей памяти оценки надежности для уже декодированных внутренним декодером символов. Для мажоритарного внутреннего декодера в качестве оценки надежности принимают суммы проверок, подаваемых на входы пороговых элементов, которые являются решающими блоками в мажоритарных внутренних декодерах.
Когда внутренний декодер завершает декодирование n-го символа в информационной последовательности, предназначенной для декодирования, внешний декодер считает сумму по mod q для предыдущих (n-1) символов и сравнивает результат со значением n-го символа, т.е. определяет их разность R. Если они совпали, т.е. R=0, то внешний декодер переходит в режим ожидания следующих n символов и оценок их надежности от внутреннего декодера.
Если контроль со стороны внешнего декодера показал несовпадение контрольных символов на предыдущем шаге, т.е. R≠0, и, следовательно, обнаружена ошибка, то из n символов выбирается самый ненадежный (в случае мажоритарного внутреннего декодера это символ, для которого метка надежности - сумма проверок на пороговом элементе (ПЭ) - ближе других к половине общего числа проверок, которые поступают на входы этого ПЭ) и, если количество одинаково минимально надежных символов среди рассматриваемых n символов внешнего кода ККЧ равно двум или больше, то внешний декодер ничего более не делает, а если внешний декодер при R≠0 определил, что есть только один самый ненадежный символ, то, если этот символ не n-й, этот информационный символ изменяется на величину разности результатов в контрольном n-ом символе во внешнем декодере, т.е. на величину R. После этого внешний декодер переходит в режим ожидания следующих n символов кода ККЧ. Исправленный внешним декодером символ вместе с другими информационными символами и исправленными проверками внутреннего кода затем поступает на следующую итерацию декодирования.
После последней итерации декодирования информационные символы внутреннего кода направляют получателю информации, за исключением контрольного символа, т.е. каждого n-го символа каскадного кода, который является контрольным избыточным символом в ККЧ, которого не было у источника информации.
Примером реализации предложенного способа для сверточного кода может быть вариант использования внешнего декодера с кодом контроля по четности длины 48 битов и внутреннего декодера с мажоритарным декодированием, кодовой скоростью R=1/2 и кодовым расстоянием d=9. При I=20 итерациях декодирования в многопороговом декодере (МПД) оказалось, что в двоичном канале с аддитивным белым гауссовским шумом при уровне шума Eb/N0=-0,1 dB, в котором при этих параметрах кода и канала вероятность ошибки на символ равна р0=0,084, вероятность ошибки на бит после 20-й итерации декодирования оказалась равной Рb(е)=2,2×10-7, тогда как при использовании только одного МПД декодера, состоящего только из внутреннего декодера каскадной схемы, с таким же числом итераций I=20 при более высокой энергетике АБГШ канала 0,0 дБ выходная вероятность ошибки декодирования была равна только Рb(е)=1,2⋅10-5. Таким образом, повышение эффективности по вероятности ошибки декодирования составляет более 50 раз, что является весьма высоким результатом при достаточно простой реализации.
Увеличение объема вычислений во внешнем коде при контроле по четности оказалось невелико и не превышало трех простых операций сложения или сравнения в пересчете на каждый информационный символ. Следует учесть, что на первых итерациях коррекции, когда внутренний декодер работает еще при относительно большой плотности ошибок, использование внешнего декодера обычно неэффективно и его применение становится полезным только на последних нескольких итерациях. В этом случае общий объем вычислений еще более снижается и может составлять 10 и менее процентов по сравнению с общим объемом вычислений, т.е. вычислений на всех итерациях декодера внутреннего кода.
Таким образом, в предложенном способе обеспечивается более эффективное итеративное декодирование за счет использования декодерами одного каскадов результатов декодирования в другом каскаде с целью повышения вероятности исправления ошибок при декодировании.
Предложенный способ можно рассматривать, как дальнейшее развитие новых методов коррекции ошибок на основе оптимизационной теории помехоустойчивого кодирования, изложенной в монографии, изданной Международным союзом электросвязи (МСЭ/ITU) в Женеве: V.V. Zolotarev, Y.b. Zubarev, G.V. Ovechkin. Optimization Coding Theory and Multithreshold Algorithms. // Geneva, ITU, 2015, 159р. Ссылка на электронную версию монографии: http://www.itu.int/pub/S-GEN-OCTMA-2015).
Способ декодирования линейного каскадного кода, основанный на том, что, на приемном конце канала связи закодированную информационную последовательность вначале направляют во внутренний итеративный декодер, а затем во внешний декодер, причем закодированную информационную последовательность, используемую для декодирования на приемной стороне, формируют на передающей стороне путем направления исходной информационной последовательности сначала во внешний кодер, который использует код контроля по mod q, q≥2, и после каждых (n-1) символов вычисляет их сумму по mod q и ставит этот символ на n-ю позицию, а затем сформированную последовательность направляют во внутренний кодер, в котором ее кодируют в соответствии с выбранным кодом, отличающийся тем, что при декодировании закодированной информационной последовательности внутренним итеративным декодером внешний декодер контролирует число информационных символов, которые были декодированы внутренним декодером, и производит оценку надежности декодированных символов путем подсчета количества этих символов, а после каждого n-го символа внешний декодер считает сумму по mod q для предыдущих (n-1) символов и сравнивает результат со значением n-го символа, вычисляя их разность R, и если они совпали (R=0), то внешний декодер снова переводят в режим ожидания поступления следующих n символов от внутреннего итеративного декодера и оценок надежности этих символов, а при несовпадении контрольных символов (R≠0) и обнаружении ошибки из этих n символов выбирают самый ненадежный, а когда количество одинаково минимально надежных символов среди рассматриваемых n символов равно двум или более, внешний декодер не вносит корректировок во внутренний код, а если внешний декодер при обнаруженной ошибке определил, что есть только один наиболее ненадежный символ и этот символ не n-й, то этот информационный символ изменяют во внутреннем декодере на величину разности результатов R в n-ом контрольном символе, причем на последней итерации внешний декодер после выполнения своей функции передает ее результат получателю информации без изменения символов во внутреннем декодере.