УСТРОЙСТВО ИТЕРАТИВНОГО ДЕКОДИРОВАНИЯ БЛОКОВЫХ ТУРБОКОДОВ

Настоящая полезная модель имеет отношение к устройству исправления ошибок в цифровой системе радиосвязи и, в частности, к устройству итеративного декодирования блоковых турбокодов.
Турбокоды впервые были представлены в работе [1]. Разработка турбокодов развивается по двум направлениям: сверточные турбокоды, образованные путем параллельного соединения двух сверточных кодеров, и блоковые турбокоды, образованные путем последовательного соединения двух блоковых кодеров.
На фиг.1 представлена схема построения блокового турбокода. Блоковый турбокод изображается в виде прямоугольника и основан на двух систематических кодах: C1(N1, K1) и C2(N2, K2), кодовые слова которых расположены по вертикали и по горизонтали, соответственно. Общая информационная емкость кода K=K1·K2, а длительность кода N=N1·N2. Блок 1 содержит информационные символы, а блоки 2, 3 и 4 содержат проверочные символы.
Для декодирования турбокодов применяется концепция так называемого итеративного декодирования, впервые описанная в работе [2]. Основу итеративного декодера блоковых турбокодов составляет декодер с мягким входом и мягким выходом (Soft Input Soft Output - SISO), который последовательно применяется для декодирования вертикальных и горизонтальных составных кодов. В процессе работы декодера турбокода схемы SISO декодирования горизонтальных и вертикальных составных кодов обмениваются друг с другом внешней информацией, с каждой итерацией улучшая вероятность правильного декодирования. Окончание процесса декодирования происходит после выполнения заданного количества итераций. После завершения последней итерации принимается жесткое решение о передаваемых информационных символах, которое и является выходом устройства итеративного декодирования блоковых турбокодов.
На первой итерации от демодулятора на вход SISO декодера вертикальных кодов поступают оценки (мягкие решения) относительно символов. На выходе схемы декодирования вертикальных кодов формируются мягкие решения относительно
символов, которые затем используется для формирования входной информации для схемы декодирования горизонтальных кодов. На последующих итерациях декодирования на вход SISO декодеров подаются мягкие решения, формируемые по результатам SISO декодирования на предыдущей итерации.
SISO декодирование составных кодов С1 и С2 основано на вычислении логарифма отношения апостериорных вероятностей двоичных символов кодовых слов С1 и С2, знак которого определяет значение декодированного бита, а модуль - надежность этого значения.
Наиболее близким по технической сущности и достигаемому эффекту является устройство итеративного декодирования блоковых турбокодов, описанное в патенте ЕР 1282237 А2, Н03М 13/29 от 5 февраля 2003 г. "Decoding method and decoding apparatus of product code" [3].
В патенте-прототипе [3] описано устройство итеративного декодирования блоковых турбокодов, образованных составными блоковыми кодами С1 и С2. Устройство итеративного декодирования блоковых турбокодов состоит из первой памяти, первого сумматора, SISO декодера, второго сумматора, блока принятия решений, третьей памяти и схемы нормировки. SISO декодер включает в себя последовательно соединенные: блок декодирования по алгоритму Чейза, блок вычисления правдоподобия гипотетических кодовых слов и блок вычисления мягких выходных решений.
Полученные от демодулятора значения хранятся в первой памяти. Для декодирования кода С1 (кодовые слова которого расположены по вертикали) или кода С2 (кодовые слова которого расположены по горизонтали), корректирующая величина, хранимая по заданному адресу во второй памяти, считывается из нее и подается на первый сумматор после прохождения через схему нормировки. Первый сумматор складывает принятое значение, хранимое по заданному адресу в первой памяти и корректирующую величину, полученную от схемы нормировки, генерируя таким образом мягкие входные значения. При первой итерации декодирования корректирующие величины равны нулю, поэтому первый сумматор выдает принятые от демодулятора значения на SISO декодер без изменений.
Мягкие входные значения, сгенерированные первым сумматором подаются на SISO декодер. Получив мягкие входные значения, соответствующие кодовым словам кода С1 и кода С2, SISO декодер начинает декодирование.
SISO декодер состоит из блока декодирования по алгоритму Чейза, который генерирует гипотетические вектора ошибок из мягкого входного вектора, блока вычисления правдоподобия гипотетических кодовых слов, и блока вычисления мягких выходных значений.
Блок декодирования по алгоритму Чейза генерирует гипотетические вектора ошибок из мягкого входного вектора. Гипотетические вектора ошибок, сгенерированные в блоке декодирования по алгоритму Чейза подаются на блок вычисления правдоподобия гипотетических кодовых слов. Блок вычисления правдоподобия гипотетических кодовых слов вычисляет гипотетические кодовые слова и скалярные произведения между мягким входным вектором и гипотетическими кодовыми словами, и выбирает гипотетическое кодовое слово, дающее максимальное скалярное произведение. Скалярные произведения и максимально вероятное кодовое слово подаются на блок вычисления мягких выходных значений.
Блок вычисления мягких выходных значений генерирует мягкие выходные значения, которые являются выходами SISO декодера.
Мягкие выходные значения, сгенерированные в блоке вычисления мягких выходных значений SISO декодера, подаются на блок принятия решений и на второй сумматор. В случае перехода на следующую итерацию декодирования второй сумматор вычитает принятое значение из мягкого выходного значения для вычисления корректирующей величины, которая сохраняется в заданном адресе второй памяти. В случае завершения декодирования блок принятия решений выносит жесткое решение о переданном кодовом слове из мягких выходных значений SISO декодера и сохраняет его в заданном адресе третьей памяти. Жесткие решения хранятся в третьей памяти и являются выходом устройства итеративного декодирования блоковых турбокодов.
Недостатком описанного в патенте-прототипе [3] устройства является сложность аппаратной реализации. Следует отметить, что сложность устройства
декодирования блоковых турбокодов в основном определяется сложностью SISO декодера.
Сложность SISO декодера, описанного в патенте-прототипе, обусловлена использованием для вычисления мягких выходов: гипотетических кодовых слов, их правдоподобий и кодового слова с максимальным правдоподобием. В то время как в декодере Чейза [4] в качестве промежуточных параметров вычисляются жесткие решения относительно элементов входного вектора, гипотетические вектора ошибок и их веса, достаточные для вычисления мягких векторов SISO декодера.
Целью настоящей полезной модели является создание устройства итеративного декодирования блоковых турбокодов, обладающего меньшей сложностью аппаратной реализации, при неизменной эффективности декодирования.
Для достижения данного технического результата предлагается использовать полученные в декодере Чейза промежуточные параметры для вычисления мягких выходов SISO декодера.
Технический результат достигается тем, что устройство итеративного декодирования блоковых турбокодов состоит из первой памяти, данные из которой подаются на первый вход первого сумматора и инверсный первый вход второго сумматора, выход первого сумматора соединяется со входом SISO декодера, выход которого соединяется со вторым входом второго сумматора и со входом блока принятия решений, выход которого соединен с третьей памятью, выход второго сумматора соединяется со входом второй памяти, а данные с выхода второй памяти подаются на схему нормировки, выход которой соединяется со вторым входом первого сумматора, SISO декодер состоит из блока декодирования по алгоритму Чейза, выход которого соединен со входом блока вычисления мягких выходных значений, отличающееся тем, что из SISO декодера исключается блок вычисления правдоподобий гипотетических кодовых слов и из блока декодирования по алгоритму Чейза выводятся вычисляемые на промежуточных этапах жесткие решения, гипотетические вектора ошибок и их веса для подачи непосредственно на вычислитель мягких решений.
Сущность полезной модели поясняется далее. На фиг.2 представлена блок-схема цифровой системы радиосвязи, использующей турбокодирование. Система состоит
из кодера турбокода 201, в котором осуществляется кодирование входных данных, модулятора 202 для преобразования кодированных данных в сигнал, который будет передаваться по каналу связи, канала связи 203, демодулятора 204, который демодулирует принятый сигнал, прошедший по каналу связи 203, и декодера турбокода 205, который декодирует данные, поступающие от демодулятора 204. Кодер 201 и модулятор 202 составляют передатчик, а демодулятор 204 и декодер 205 составляют приемник.
Далее опишем работу системы, представленной на фиг.2. Входная информация бит кодируется в кодере турбокода 201.
Кодер турбокода 201 соединяется с модулятором 202, в котором закодированные данные преобразуются в сигнал, передаваемый по каналу связи 203. Сигнал, полученный по каналу связи 203 подается на демодулятор 204 приемника.
Демодулятор 204 преобразует принятый из канала связи 203 сигнал в массив чисел, представляющих собой оценку переданных данных. С выхода демодулятора 204 эти оценки подаются на декодер турбокода 205.
Далее опишем принцип работы устройства итеративного декодирования блоковых турбокодов, реализованного в настоящей полезной модели.
Устройство итеративного декодирования блоковых турбокодов состоит из первой памяти, первого сумматора, SISO декодера, второго сумматора, блока принятия решений, третьей памяти и схемы нормировки. SISO декодер включает в себя блок декодирования по алгоритму Чейза и блока вычисления мягких выходных решений.
Полученные от демодулятора значения хранятся в первой памяти. Для декодирования кода С1 (кодовые слова которого расположены по вертикали) или кода С2 (кодовые слова которого расположены по горизонтали), корректирующая величина, хранимая в двоичном виде по заданному адресу во второй памяти, считывается из нее и подается на первый сумматор после прохождения через схему нормировки. Первый сумматор складывает принятое значение, хранимое по заданному адресу в первой памяти и корректирующую величину, полученную от схемы нормировки, генерируя таким образом мягкие входные значения, представляемые в двоичном виде. При первой итерации декодирования
корректирующие величины равны нулю, поэтому первый сумматор выдает принятые от демодулятора значения на SISO декодер без изменений.
Мягкие входные значения, сгенерированные первым сумматором в двоичном виде подаются на SISO декодер.
SISO декодер состоит из блока декодирования по алгоритму Чейза, который генерирует гипотетические вектора ошибок из мягкого входного вектора, и блока вычисления мягких выходных значений.
Далее опишем процесс SISO декодирования кодов С1 и С2.
В декодере по алгоритму Чейза [4] на промежуточных этапах кроме вектора жестких решений вычисляются также гипотетические вектора ошибок, принимающие значение 1 на ошибочных позициях и 0 на остальных, а также веса гипотетических векторов ошибок. Вес гипотетического вектора ошибок равен скалярному произведению гипотетического вектора ошибок и мягкого входного вектора.
В соответствии с настоящей полезной моделью указанные промежуточные параметры в двоичном виде выводятся из декодера Чейза и подаются непосредственно на блок вычисления мягких выходных значений SISO декодера.
Далее, также как и в прототипе, в блоке вычисления мягких выходных значений по каждому двоичному символу вычисляются мягкие решения на основе логарифма отношения апостериорных вероятностей, представляемого в этом блоке в двоичном виде.
На фиг.3 представлена блок-схема аппаратной реализации предлагаемого устройства итеративного декодирования блоковых турбокодов, образованных составными кодами С1 и С2. Блок-схема состоит из первой памяти 301, в которой хранятся принятые от демодулятора входные значения, первого сумматора 302, второго сумматора 303, SISO декодера 304, блока принятия решений 305 для принятия решения о переданном кодовом слове от мягких выходных значений, полученных от SISO декодера 304, третьей памяти 306 для хранения кодового слова, решение по которому было принято в блоке принятия решений 305, второй памяти 307 для хранения корректирующих значений, полученных от второго сумматора 302, схемы нормировки 308 для умножения корректирующих значений,
полученных от второй памяти 307, на коэффициенты нормировки α. Блок принятия решений определяет знаковый разряд от подаваемых на него значений.
Далее опишем работу устройства декодирования, представленного на фиг.3. Полученная от демодулятора матрица входных значений, представленных в двоичном виде, хранится в первой памяти 301. Для декодирования кода С1 (кодовые слова которого расположены по вертикали) или кода С2 (кодовые слова которого расположены по горизонтали), корректирующая величина, хранимая по заданному адресу во второй памяти 307, считывается из нее и подается на первый сумматор 302 после прохождения через схему нормировки 308. Первый сумматор 302 складывает принятое значение, хранимое по заданному адресу в первой памяти 301 и корректирующую величину, полученную от схемы нормировки 308 для генерации мягкого входного значения, представляемого в двоичном виде. На первой итерации декодирования корректирующие величины, хранящиеся в двоичном виде во второй памяти 307, равны нулю, поэтому первый сумматор 302 выдает принятые от демодулятора значения на SISO декодер 304 без изменений.
Мягкие входные значения, сгенерированные первым сумматором 302, в двоичном виде подаются на SISO декодер 304. Получив мягкие входные значения, соответствующие кодовым словам кода С1 и кода С2, SISO декодер 304 начинает декодирование.
На фиг.4 представлена блок-схема SISO декодера 304. SISO декодер состоит из блока декодирования по алгоритму Чейза 401 и блока вычисления мягких векторов 402. Опишем работу SISO декодера 304 из фиг.4. Блок декодирования по алгоритму Чейза 401 генерирует двоичные данные: вектор жестких решений, гипотетические вектора ошибок и их веса. Вес гипотетического вектора ошибок равен скалярному произведению гипотетического вектора ошибок и мягкого входного вектора.
В соответствии с настоящей полезной моделью блок, осуществляющий в патенте-прототипе вычисление гипотетических кодовых слов и их правдоподобия, исключен и выход декодера Чейза 401 соединен непосредственно с блоком вычисления мягких выходных значений 402.
Мягкие выходные значения, сгенерированные в блоке вычисления мягких выходных значений 402 SISO декодера 304 подаются в двоичном виде на блок
принятия решений 305 и на второй сумматор 303. Второй сумматор 303 вычитает принятое значение из мягкого выходного значения для вычисления корректирующей величины, которая сохраняется в двоичном виде в заданном адресе второй памяти 307. Блок принятия решений 305 выносит жесткое решение о переданном кодовом слове из мягкого выходного значения и сохраняет его в заданном адресе третьей памяти 306.
В предлагаемой полезной модели в сравнении с патентом-прототипом исключен блок вычисления правдоподобий гипотетических кодовых слов, вычисляющий гипотетические кодовые слова и их правдоподобие. Кроме того, из блока декодирования по алгоритму Чейза исключаются операции, связанные с поиском наиболее вероятного кодового слова. Вследствие этого аппаратная реализация SISO декодера и, соответственно, устройства итеративного декодирования блоковых турбокодов, упрощаются.
Преимуществом предлагаемого устройства является меньшая сложность аппаратной реализации, которая выражается в уменьшении количества дискретных логических элементов, при неизменной эффективности.
Полезная модель может быть осуществлена на соответствующей элементной базе по типовым технологиям.
Источники информации:
1. С.Berrou, A.Glavieux, P.Thitimajshima: "Near Shannon limit error-correcting coding and decoding: Turbo codes", IEEE Int. Conf. Communications, ICC'93, vol.2/3, May 1993, pp.1064-1070.
2. J.Lodge, R.Young, P.Hoeher and J.Hagenauer, "Separable MAP 'Filters' for the Decoding of Product and Concatenated Codes", Proc. 1993 IEEE Int. Conf. Comm. (ICC'93), pp.1740-1745, May 1993.
3. Патент EP 1282237 A2, H03M 13/29 от 5 февраля 2003 г. "Decoding method and decoding apparatus of product code" - прототип.
4. D.Chase, "A Class of Algorithms for Decoding Block Codes With Channel Measurement Information" (IEEE Trans. On Information Theory, January 1972, Vol.IT-18, pp.170-182).