Исследование итеративного алгоритма декодирования MAP и разработка модели турбокодека в сиcтеме MathCAD
Секция: Технические науки
XLII Студенческая международная заочная научно-практическая конференция «Молодежный научный форум: технические и математические науки»
Исследование итеративного алгоритма декодирования MAP и разработка модели турбокодека в сиcтеме MathCAD
На сегодня турбокоды получили широкое распространение в области связи, особенно в технологиях беспроводной связи, таких как WiMAX, мобильные и спутниковые сети и др. Турбокоды особенно эффективны в каналах с низким отношением сигнал/шум, поэтому имеют огромные перспективы для использования в новых поколениях связи [4]. В этой статье представлен принцип работы турбокода и его итеративного декодирования при помощи алгоритма MAP. Также представлен численный пример кодирования и декодирования турбокода. Модель выполнена в среде MathCAD v.15, разработаны функции для вычисления всех параметров декодирования.
Структура 1/3 турбокодера показана на рисунке 1. Используем два идентичных свёрточных кодера. На первый поступает информационный бит , на второй поступает перемеженный информационный бит. В результате получаем один информационный бит и два проверочных. Для перемежения входной информационной последовательности используется псевдослучайный перемежитель (interleaver) [1; 5].
Рисунок 1. Структурная схема турбокодера
Каждый свёрточный кодер является систематическим рекурсивным RSC-кодером, но поскольку мы уже передаем информационный элемент на выход турбокодера, то на выходе каждого из двух RSC-кодеров будут только проверочные элементы и .
Рисунок 2. Схема RSC-кодера
При детектировании значения принятого символа из канала необходимо определить его значение функции правдоподобия. Расположение этого символавдоль оси х не позволяет однозначно определить значение передаваемого бита, поскольку в любой точке на оси х соответствуют два значения правдоподобия – для и для . Основываясь на принципах жесткого решения и максимального правдоподобия, приемник должен сравнить значения и и вынести решение о принятом бите. Таким образом, в жесткой схеме принятия решения, при расположении точки правее порога x = 0, сигнал переносит бит «1».
Рисунок 3. Функции распределения вероятностей принятого сигнала
Если взять логарифм отношения к для a и b, то:
,
Как видно, вероятнее всего a является «0», а b является «1». Логарифм отношения к называется логарифмическим отношением функций правдоподобия (LLR – Log-Likelyhood Ratio).
Рисунок 4. Структурная схема турбодекодера
MAP – это алгоритм декодирования по методу максимума апостериорной вероятности контролирующих ошибки кодов, определённых на решётках [5]. На рисунке 5 приведена блок-схема алгоритма MAP турбодекодера.
Рисунок 5. Блок-схема алгоритма MAP турбодекодера
Для вычисления LLR нужно рассчитать значения переходов между узлами решетки, прямую и обратную метрики. Переходы между узлами решетки рассчитываются как:
,
где: и – прошлое и следующее состояния, и – информационный и проверочный символы на решетке, и – информационный и проверочный символы на входе декодера, – качество канала, – информация с прошлой итерации работы декодера, 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].
Рассмотрим пример итеративного декодирования турбокода алгоритмом MAP [6]. На вход турбокодера отправим последовательность из шести битов:. Эти биты приходят на RSC #1. Результат кодирования показан на решетке:
Рисунок 6. Кодирование в RSC #1
Искусственно остановим состояние решетки в нулевом состоянии, отправив дополнительно еще два бита:. Теперь перемежим эту информационную последовательность (с учётом добавочных битов) для отправки на второй декодер. Результат кодирования для 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, которую можно использовать для изучения процессов итеративного декодирования, изменения и создания модели для других алгоритмов работы турбокодов. Турбокоды имеют высокий потенциал и энергетическую эффективность, что позволяет их использовать в системах связи для увеличения дальности приема, скрытности системы, поэтому актуальность исследования итеративных кодов только возрастает.