Исследование итеративного алгоритма декодирования MAP и разработка модели турбокодека в сиcтеме MathCAD
Секция: Технические науки

XLII Студенческая международная заочная научно-практическая конференция «Молодежный научный форум: технические и математические науки»
Исследование итеративного алгоритма декодирования MAP и разработка модели турбокодека в сиcтеме MathCAD
На сегодня турбокоды получили широкое распространение в области связи, особенно в технологиях беспроводной связи, таких как WiMAX, мобильные и спутниковые сети и др. Турбокоды особенно эффективны в каналах с низким отношением сигнал/шум, поэтому имеют огромные перспективы для использования в новых поколениях связи [4]. В этой статье представлен принцип работы турбокода и его итеративного декодирования при помощи алгоритма MAP. Также представлен численный пример кодирования и декодирования турбокода. Модель выполнена в среде MathCAD v.15, разработаны функции для вычисления всех параметров декодирования.
Структура 1/3 турбокодера показана на рисунке 1. Используем два идентичных свёрточных кодера. На первый поступает информационный бит  , на второй поступает перемеженный информационный бит. В результате получаем один информационный бит и два проверочных. Для перемежения входной информационной последовательности используется псевдослучайный перемежитель (interleaver) [1; 5].
, на второй поступает перемеженный информационный бит. В результате получаем один информационный бит и два проверочных. Для перемежения входной информационной последовательности используется псевдослучайный перемежитель (interleaver) [1; 5].

Рисунок 1. Структурная схема турбокодера
Каждый свёрточный кодер является систематическим рекурсивным RSC-кодером, но поскольку мы уже передаем информационный элемент  на выход турбокодера, то на выходе каждого из двух RSC-кодеров будут только проверочные элементы
 на выход турбокодера, то на выходе каждого из двух RSC-кодеров будут только проверочные элементы  и
и  .
.

Рисунок 2. Схема RSC-кодера
При детектировании значения принятого символа из канала необходимо определить его значение функции правдоподобия. Расположение этого символа вдоль оси х не позволяет однозначно определить значение передаваемого бита, поскольку в любой точке на оси х соответствуют два значения правдоподобия –
вдоль оси х не позволяет однозначно определить значение передаваемого бита, поскольку в любой точке на оси х соответствуют два значения правдоподобия –  для
для  и
 и  для
для  . Основываясь на принципах жесткого решения и максимального правдоподобия, приемник должен сравнить значения
. Основываясь на принципах жесткого решения и максимального правдоподобия, приемник должен сравнить значения  и
 и  и вынести решение о принятом бите. Таким образом, в жесткой схеме принятия решения, при расположении точки правее порога x = 0, сигнал переносит бит «1».
 и вынести решение о принятом бите. Таким образом, в жесткой схеме принятия решения, при расположении точки правее порога x = 0, сигнал переносит бит «1».

Рисунок 3. Функции распределения вероятностей принятого сигнала
Если взять логарифм отношения  к
 к  для a и b, то:
 для a и b, то:
 ,
,
Как видно, вероятнее всего a является «0», а b является «1». Логарифм отношения  к
 к  называется логарифмическим отношением функций правдоподобия (LLR – Log-Likelyhood Ratio).
 называется логарифмическим отношением функций правдоподобия (LLR – Log-Likelyhood Ratio).

Рисунок 4. Структурная схема турбодекодера
MAP – это алгоритм декодирования по методу максимума апостериорной вероятности контролирующих ошибки кодов, определённых на решётках [5]. На рисунке 5 приведена блок-схема алгоритма MAP турбодекодера.

Рисунок 5. Блок-схема алгоритма MAP турбодекодера
Для вычисления LLR нужно рассчитать значения переходов между узлами решетки, прямую и обратную метрики. Переходы между узлами решетки рассчитываются как:
 ,
,
где:  и
 и  – прошлое и следующее состояния,
 – прошлое и следующее состояния,  и
и  – информационный и проверочный символы на решетке,
 – информационный и проверочный символы на решетке,  и
и  – информационный и проверочный символы на входе декодера,
 – информационный и проверочный символы на входе декодера,  – качество канала,
– качество канала,  – информация с прошлой итерации работы декодера, k – номер элемента. Рассчитать прямую метрику α можно рекурсивно:
– информация с прошлой итерации работы декодера, k – номер элемента. Рассчитать прямую метрику α можно рекурсивно:

Расчет обратной метрики β так же вычисляется рекурсивно, начиная с конца решетки:

Чтобы начать вычисление метрик, нам нужно инициализировать начальные состояния:
| Декодер #1 | Декодер #2 | |||
| 
 | 
 | 
 | 
 | |
| 1 | 1 | 1 | 0,25 | |
| 0 | 0 | 0 | 0,25 | |
| 0 | 0 | 0 | 0,25 | |
| 0 | 0 | 0 | 0,25 | |
Так как мы не знаем в каком состоянии остановлен свёрточный декодер #2, то его начальные значения β будут равны:  , где
, где  – количество ячеек в регистре памяти кодера. При этом результаты вычисления метрик нужно пронормировать:
 – количество ячеек в регистре памяти кодера. При этом результаты вычисления метрик нужно пронормировать:  и
 и  .
.
	Расчет LLR с выхода декодера осуществляется по формуле:

где:  – это априорная информация, которая является мягким выходом декодера после одной итерации декодирования,
 – это априорная информация, которая является мягким выходом декодера после одной итерации декодирования,  – это внешняя информация, взятая из результата предыдущей итерации декодирования [6; 9].
 – это внешняя информация, взятая из результата предыдущей итерации декодирования [6; 9].
Рассмотрим пример итеративного декодирования турбокода алгоритмом MAP [6]. На вход турбокодера отправим последовательность из шести битов: . Эти биты приходят на RSC #1. Результат кодирования показан на решетке:
. Эти биты приходят на RSC #1. Результат кодирования показан на решетке:

Рисунок 6. Кодирование в RSC #1
Искусственно остановим состояние решетки в нулевом состоянии, отправив дополнительно еще два бита: . Теперь перемежим эту информационную последовательность (с учётом добавочных битов) для отправки на второй декодер. Результат кодирования для RSC #2 и схема работы псевдослучайного перемежителя:
. Теперь перемежим эту информационную последовательность (с учётом добавочных битов) для отправки на второй декодер. Результат кодирования для RSC #2 и схема работы псевдослучайного перемежителя:


Рисунок 7. Кодирование в RSC #2 (слева) и схема работы перемежителя (справа)
Далее информационные и проверочные биты преобразуются в символы отправляются в канал. После этого получаем искаженную последовательность:
Таблица 1.
Передача информации по каналу с шумом
| xk | p1k | p2k | AWGN | x`k | p`1k | p`2k | ||||
| +1 | +1 | -1 | 1,966099 | 2,132927 | -0,701887 | 2,966099 | 3,132927 | -1,701887 | ||
| +1 | -1 | -1 | -1,232363 | -0,443420 | -0,696641 | -0,232363 | -1,443420 | -1,696641 | ||
| -1 | -1 | +1 | 0,750745 | 0,823265 | 0,823463 | -0,249255 | -0,176735 | 1,823463 | ||
| -1 | +1 | +1 | + | 1,832447 | -0,088392 | 1,036052 | = | 0,832447 | 0,911608 | 2,036052 | 
| +1 | -1 | -1 | -1,262811 | 0,551007 | -2,051227 | -0,262811 | -0,448993 | -3,051227 | ||
| -1 | +1 | +1 | 0,205224 | 0,277622 | 0,462560 | -0,794776 | 1,277622 | 1,462560 | ||
| +1 | +1 | +1 | -0,569778 | 0,978633 | 1,105726 | 0,430222 | 1,978633 | 2,105726 | ||
| -1 | -1 | +1 | 0,257169 | 0,465353 | -0,700940 | -0,742831 | -0,534647 | 0,299060 | ||
Первый этап первой итерации декодирования. Вычислим значение  при
 при  .
.
Таблица 2.
Переходы между узлами решетки
| s`,s | γ1(s`,s) | γ2(s`,s) | γ3(s`,s) | γ4(s`,s) | γ5(s`,s) | γ6(s`,s) | γ7(s`,s) | γ8(s`,s) | 
| 0,0 | 0.00245 | 5.342977 | 1.531105 | 0.174810 | 2.037664 | 0.617025 | 0.089918 | 3.587580 | 
| 0,1 | 445.423716 | 0.187162 | 0.653123 | 5.720493 | 0.490758 | 1.62068 | 11.12122 | 0.278739 | 
| 1,2 | 0.846345 | 3.357031 | 0.930047 | 0.923891 | 1.204641 | 0.125884 | 0.212586 | 0.812058 | 
| 1,3 | 1.181551 | 0.297882 | 1.075214 | 1.082379 | 0.830122 | 7.94385 | 4.703990 | 1.231440 | 
| 2,0 | 445.423716 | 0.187162 | 0.653123 | 5.720493 | 0.490758 | 1.62068 | 11.12122 | 0.278739 | 
| 2,1 | 0.00245 | 5.342977 | 1.531105 | 0.174810 | 2.037664 | 0.617025 | 0.089918 | 3.587580 | 
| 3,2 | 1.181551 | 0.297882 | 1.075214 | 1.082379 | 0.830122 | 7.94385 | 4.703990 | 1.231440 | 
| 3,3 | 0.846345 | 3.357031 | 0.930047 | 0.923891 | 1.204641 | 0.125884 | 0.212586 | 0.812058 | 
Таблица 3.
Результаты  с учетом нормировки
 с учетом нормировки
| s | α0(s) | α1(s) | α2(s) | α3(s) | α4(s) | α5(s) | α6(s) | α7(s) | α8(s) | 
| 0 | 1 | 0.000005 | 0.000007 | 0.276497 | 0.086266 | 0.125209 | 0.125318 | 0.611503 | 0.645632 | 
| 1 | 0 | 0.999995 | 0 | 0.648177 | 0.490561 | 0.20369 | 0.080761 | 0.164843 | 0.227173 | 
| 2 | 0 | 0 | 0.918491 | 0.04039 | 0.196582 | 0.358283 | 0.478213 | 0.172365 | 0.05674 | 
| 3 | 0 | 0 | 0.081501 | 0.034937 | 0.226591 | 0.312817 | 0.315708 | 0.051289 | 0.070455 | 
Таблица 4.
Результаты  с учетом нормировки
 с учетом нормировки
| s | β8(s) | β7(s) | β6(s) | β5(s) | β4(s) | β3(s) | β2(s) | β1(s) | β0(s) | 
| 0 | 1 | 0.927906 | 0.007756 | 0.00085 | 0.011918 | 0.620645 | 0.497532 | 0.561278 | 0.289971 | 
| 1 | 0 | 0 | 0.001425 | 0.046305 | 0.384623 | 0.182016 | 0.096161 | 0.229608 | 0.00058 | 
| 2 | 0 | 0.072094 | 0.959294 | 0.001678 | 0.046058 | 0.038162 | 0.318321 | 0.127281 | 0.708827 | 
| 3 | 0 | 0 | 0.031526 | 0.951132 | 0.557401 | 0.159177 | 0.087986 | 0.081832 | 0.000623 | 
Результаты расчета LLR первого этапа первой итерации декодирования и расчет внешней информации для следующего декодера. Как видим, здесь три ошибки при декодировании:
Таблица 5.
Результаты первого этапа первой итерации
| 
 | Жесткое решение | 
 | 
 | 
 | 
 | 
 | 
| 11.304209 | 1 | 0 | 5.932198 | 5.372011 | 
 | -2.335599 | 
| 3.707484 | 1 | 0 | -0.464726 | 4.17221 | 
 | -2.786418 | 
| 0.393572 | 1 | 0 | -0.49851 | 0.892082 | 
 | 4.17221 | 
| 0.505559 | 1 | 0 | 1.664894 | -1.159335 | Перемежение | 0.892082 | 
| -0.436345 | 0 | 0 | -0.525622 | 0.089277 | 
 | 0.089277 | 
| -4.37597 | 0 | 0 | -1.589552 | -2.786418 | 
 | -1.159335 | 
| 3.737709 | 1 | 0 | 0.860444 | 2.877265 | 
 | 2.877265 | 
| -3.821261 | 0 | 0 | -1.485662 | -2.335599 | 
 | 5.372011 | 
Второй этап первой итерации декодирования.
Таблица 6.
Переходы между узлами решетки
| s`,s | γ1(s`,s) | γ2(s`,s) | γ3(s`,s) | γ4(s`,s) | γ5(s`,s) | γ6(s`,s) | γ7(s`,s) | γ8(s`,s) | 
| 0,0 | 37.027066 | 48.648744 | 0.025294 | 0.107224 | 26.295547 | 0.179903 | 0.018787 | 0.002603 | 
| 0,1 | 0.027007 | 0.020556 | 39.535741 | 9.326298 | 0.038029 | 5.558561 | 53.227787 | 384.200557 | 
| 1,2 | 0.810899 | 0.611804 | 1.030742 | 0.158934 | 16.997298 | 0.298263 | 0.789093 | 211.250514 | 
| 1,3 | 1.181551 | 0.297882 | 1.075214 | 1.082379 | 0.830122 | 7.94385 | 4.70399 | 1.23144 | 
| 2,0 | 0.027007 | 0.020556 | 39.535741 | 9.326298 | 0.038029 | 5.558561 | 53.227787 | 384.200557 | 
| 2,1 | 37.027066 | 48.648744 | 0.025294 | 0.107224 | 26.295547 | 0.179903 | 0.018787 | 0.002603 | 
| 3,2 | 1.233199 | 1.634511 | 0.970175 | 6.291918 | 0.058833 | 3.352749 | 1.267278 | 0.004734 | 
| 3,3 | 0.810899 | 0.611804 | 1.030742 | 0.158934 | 16.997298 | 0.298263 | 0.789093 | 211.250514 | 
Таблица 7.
Результаты  с учетом нормировки
 с учетом нормировки
| s | α0(s) | α1(s) | α2(s) | α3(s) | α4(s) | α5(s) | α6(s) | α7(s) | α8(s) | 
| 0 | 1 | 0.999271 | 0.999544 | 0.000649 | 0.000028 | 0.000096 | 0.006442 | 0.987545 | 0.003026 | 
| 1 | 0 | 0.000729 | 0.000422 | 0.999329 | 0.000937 | 0.037461 | 0.000354 | 0.007571 | 0.991757 | 
| 2 | 0 | 0 | 0.000009 | 0.000012 | 0.024624 | 0.004239 | 0.880803 | 0.003006 | 0.004181 | 
| 3 | 0 | 0 | 0.000024 | 0.000011 | 0.974411 | 0.958204 | 0.112401 | 0.001878 | 0.001037 | 
Таблица 8.
Результаты  с учетом нормировки
 с учетом нормировки
| s | β8(s) | β7(s) | β6(s) | β5(s) | β4(s) | β3(s) | β2(s) | β1(s) | β0(s) | 
| 0 | 0.25 | 0.322611 | 0.341684 | 0.035868 | 0.052754 | 0.490632 | 0.422587 | 0.93188 | 0.979355 | 
| 1 | 0.25 | 0.177389 | 0.017336 | 0.057222 | 0.411621 | 0.364305 | 0.004247 | 0.016093 | 0.001704 | 
| 2 | 0.25 | 0.322611 | 0.621132 | 0.432318 | 0.084045 | 0.06842 | 0.568904 | 0.009759 | 0.017627 | 
| 3 | 0.25 | 0.177389 | 0.019848 | 0.474592 | 0.451581 | 0.076643 | 0.004262 | 0.042268 | 0.001314 | 
Результаты расчета LLR второго этапа первой итерации декодирования и расчет внешней информации для следующей итерации:
Таблица 9.
Результаты второго этапа первой итерации
| 
 | 
 |   | 
 | 
 | 
 | 
| -11.28214 | -2.335599 | -1.485662 | -7.460879 | 
 | 0.586152 | 
| -11.006386 | -2.786418 | -1.589552 | -6.630416 | 
 | 3.346571 | 
| 7.054056 | 4.17221 | -0.464726 | 3.346571 | Обратное перемежение | -5.582095 | 
| -5.188523 | 0.892082 | -0.49851 | -5.582095 | -5.076676 | |
| 4.845143 | 0.089277 | -0.525622 | 5.281488 | 
 | 5.281488 | 
| -4.571117 | -1.159335 | 1.664894 | -5.076676 | 
 | -6.630416 | 
| 5.737179 | 2.877265 | 0.860444 | 1.99947 | 
 | 1.99947 | 
| 11.890361 | 5.372011 | 5.932198 | 0.586152 | 
 | -7.460879 | 
Произведем обратное перемежение выхода второго этапа первой итерации декодирования  и примем жесткое решение:
 и примем жесткое решение:
Таблица 10.
Вывод результатов после декодеров
| 
 | Жёсткое решение | 
| 11.89036 | 1 | 
| 7.05406 | 1 | 
| -5.18852 | 0 | 
| -4.57112 | 0 | 
| 4.84514 | 1 | 
| -11.00639 | 0 | 
| 5.73718 | 1 | 
| -11.28214 | 0 | 
Декодер исправил ошибки. Мы можем произвести еще несколько итераций декодирования для увеличения доверия к полученным результатам. Результаты восьми этапов декодирования для четырех итераций:
Таблица 11.
Результаты 8 этапов декодирования
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 
| 11.304 | 11.890 | 20.874 | 20.886 | 23.923 | 23.923 | 23.924 | 23.924 | 
| 3.707 | 7.054 | 13.568 | 28.371 | 36.309 | 36.790 | 36.838 | 36.838 | 
| 0.394 | -5.189 | -15.299 | -23.380 | -34.140 | -34.175 | -34.224 | -34.224 | 
| 0.506 | -4.571 | -14.706 | -17.363 | -20.921 | -20.922 | -20.923 | -20.923 | 
| -0.436 | 4.845 | 13.458 | 21.366 | 34.036 | 34.084 | 34.157 | 34.157 | 
| -4.376 | -11.006 | -19.115 | -30.682 | -39.510 | -39.561 | -39.597 | -39.597 | 
| 3.738 | 5.737 | 15.494 | 18.303 | 20.972 | 20.972 | 20.973 | 20.973 | 
| -3.821 | -11.282 | -20.976 | -33.533 | -42.587 | -42.637 | -42.684 | -42.684 | 
Количество итераций может быть разным для разных алгоритмов турбодекодирования. Это также зависит от параметров канала. Обычно если дальнейшее итеративное вычисление не приводит к смене знака выходной надежности бит, то утверждают, что декодер сошелся, т.е. пришел к некоторому стационарному состоянию [2; 3]. В данной работе принято вычислять 8 итераций. Существует три критерия остановки декодера. Подробно можно узнать в [7; 8].
В результате работы получена модель турбокодека в среде MathCAD, которую можно использовать для изучения процессов итеративного декодирования, изменения и создания модели для других алгоритмов работы турбокодов. Турбокоды имеют высокий потенциал и энергетическую эффективность, что позволяет их использовать в системах связи для увеличения дальности приема, скрытности системы, поэтому актуальность исследования итеративных кодов только возрастает.















