|
Вычисление LLR декодера турбокода, Необходимо подробное описание математики алгоритма для практической ре |
|
|
|
Nov 30 2008, 09:59
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 24-05-06
Из: Россия, Таганрог
Пользователь №: 17 409

|
Здравствуйте!
Столкнулся с задачей турбокодирования и сразу возникли проблемы с документацией и литературой касательно темы. Единственный неплохой на мой взгляд источник информации (на русском языке), который я нашел, это книга Б. Скляра "Цифровая связь". Но все же, эта информация дает базовые теоретические знания о турбокодировании и не раскрывает до конца всех тонкостей проектирования турбокодека применительно к практике (программные или аппаратные реализации). С кодером проблем, естественно, не возникло. Трудности появились с реализацией так называемого SISO декодера, а точнее с вычислением логарифмического отношения функций правдопродобия (LLR), по алгоритму MAP (Maximum A Posteriori). С математикой в принципе все ясно, применяем теорему Байеса, вычисляем прямую, обратную метрику состояний и метрику ветви и т.д. Но это в теории. Хотелось бы взглянуть на аппроксимированную практическую реализацию, т.к. исходный алгоритм MAP существует только в теории, а на практике применяют его модификации, такие как log-MAP и MAX-log-MAP. Вобщем, буду рад, если у кого-нибудь найдется достаточно подробная информация по вычислению LLR декодера турбокодов применительно к практической реализации (программная или аппаратная).
Благодарю за внимание!
--------------------
Не сломаешь - не поймешь!
|
|
|
|
|
 |
Ответов
|
Dec 13 2008, 17:10
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 24-05-06
Из: Россия, Таганрог
Пользователь №: 17 409

|
А как быть с нормализацией? На аппаратном уровне все оперируемые величины представляют собой действительные числа с разрядностью R (в программном же эквиваленте при расчете LLR используют вещественные данные). Вот скажем такой пример: Рассчитываем метрики ветвей Gamma. В программе можно было бы использовать выражение Код Gamma[k] = AP * exp(X[k]*U[k] + Y[k]*V[k]) где AP- априорная вероятность (т.е. апостериорная вероятность предыдущей итерации. При первой итерации AP=0.5), X-Систематические данные, Y-проверочные данные, U и V -данные определяющие выход кодера в момент времени k. Естественно Gamma имела бы тип double или float. Так вот, для облегчения вычислений в аппаратуре, это выражение представляет собой как логарифм метрики ветви, т.е.: Код Log_Gamma[k] = Xk*Uk + Yk*Vk + Log(AP) Причем априорную вероятность хранят, я так понимаю, в ПЗУ (заренее вычисляется вобщем, т.к. натуральный логарифм вычислять это целое дело, хотя могу и ошибаться, так что это дело также пока под вопросом). Основной вопрос такой, в каком виде лучше хранить вычесленные метрики, ну и соответственно логарифм априорной вероятности? Я представляю себе систему вот такую: на вход SISO декодера подаются мягкие решения с АЦП, допустим с 32-х уровневым квантованием. т.е. логический '0' будет представлять собой "00000", логическая единица - "11111", соответственно, например, аналоговый уровень 0.5, будет представляться как "10000". Далее, уже внутри системы разрядность может быть увеличена. Соответсвенно все вычисления на аппаратном уровне будут представляться именно в таком виде. Можно ли использовать такой подход к решению задачи? Или все-таки необходимо привести все к вещественному виду по правилу машинного представления дробных чисел. Соответственно при таком подходе увеличится и масштаб вычислений. Очень интересно Ваше мнение.
Сообщение отредактировал Rundll - Dec 13 2008, 17:15
--------------------
Не сломаешь - не поймешь!
|
|
|
|
|
Dec 13 2008, 19:11
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 24-05-06
Из: Россия, Таганрог
Пользователь №: 17 409

|
Цитата(Serg76 @ Dec 13 2008, 21:36)  По поводу 32-х битной разрядности квантования это Вы перегнули. На практике, как правило, разрядность квантователя составляет 3...5 бит, дальнейшее увеличение не имеет смысла и к никакому дополнительному энергетическому выигрышу не приведет. Все операции совершаются в целочисленной арифметике. Я не говорил что квантование 32-х битное  Я сказал что оно 32-х уровневое, т.е. как раз 2^5=32, а значит шина 5 битная и соответственно АЦП 5-ти разрядный. А как насчет логарифма априорной вероятности? Вычислять, квантовать и зашивать в ПЗУ?
--------------------
Не сломаешь - не поймешь!
|
|
|
|
|
Dec 13 2008, 19:58
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 24-05-06
Из: Россия, Таганрог
Пользователь №: 17 409

|
Цитата(Serg76 @ Dec 13 2008, 22:27)  Да, действительно, невнимательно прочитал. Я в своем декодере использовал Max-Log-MAP аппроксимацию и поэтому вычисление функций правдоподобия там делается просто: выбором максимального (минимального) абсолютного значения элемента с учетом знака. При использовании Log-MAP аппроксимации для вычисления LLR используется заранее подготовленная таблица всех возможных расчетных значений. Да, но если Ваш декодер итеративный, то вы должны были использовать выходную апостериорную вероятность (внешнее LLR декодера) в качестве входа априорной вероятности. Кстати, я так понял, что в принципе, от алгоритма Max-Log-MAP к алгоритму Log-MAP перейти довольно таки просто. Поэтому я решил пока с Max-Log-MAP аппроксимацией поэкспериментировать, он по-проще. Вот, схемку прикрепил. Интересует блок Look-up Table в котором вычисляются, то-ли хранятся логарифмы априорной вероятности.
Сообщение отредактировал Rundll - Dec 13 2008, 20:01
Эскизы прикрепленных изображений
--------------------
Не сломаешь - не поймешь!
|
|
|
|
|
Dec 13 2008, 21:14
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(Rundll @ Dec 13 2008, 22:58)  Да, но если Ваш декодер итеративный, то вы должны были использовать выходную апостериорную вероятность (внешнее LLR декодера) в качестве входа априорной вероятности. .... Декодер, конечно, итеративный, в этом и заключается принцип турбокодирования. После каждой итерации значения внешних LLR одного декодера служат для обновления априорной информации другого декодера и, соответственно, после каждой итерации оценки выходных LLR каждого из декодеров будут расти в правильном направлении. После определенного количества итераций решающее устройство выносит жесткое решение в пользу того или иного бита (0 или 1) в зависимости от знака апостериорного значения последнего декодера (выходного LLR). По поводу схемы отвечу Вам в понедельник, есть кое-какие описания, но они на работе.
|
|
|
|
Сообщений в этой теме
Rundll Вычисление LLR декодера турбокода Nov 30 2008, 09:59 Serg76 Цитата(Rundll @ Nov 30 2008, 12:59) Здрав... Nov 30 2008, 12:44 Rundll Цитата(Serg76 @ Nov 30 2008, 15:44) Вы не... Nov 30 2008, 14:17 dsp85 Цитата(Serg76 @ Nov 30 2008, 16:44) Вы не... Jul 19 2010, 16:55  petrov Цитата(dsp85 @ Jul 19 2010, 20:55) Serg76... Jul 19 2010, 17:18   dsp85 Цитата(petrov @ Jul 19 2010, 21:18) В 5 п... Jul 19 2010, 17:39  vadimuzzz Цитата(dsp85 @ Jul 19 2010, 23:55)
глянь... Jul 20 2010, 00:18   dsp85 2 vadimuzzz,
а Вы дедодер TPC сделали только прогр... Jul 22 2010, 16:20    Serg76 Цитата(dsp85 @ Jul 22 2010, 19:20) есть л... Jul 22 2010, 16:38     dsp85 Цитата(Serg76 @ Jul 22 2010, 20:38) MAP (... Jul 22 2010, 16:48      Serg76 Цитата(dsp85 @ Jul 22 2010, 19:48) Serg76... Jul 22 2010, 16:55    vadimuzzz Цитата(dsp85 @ Jul 22 2010, 23:20) 2 vadi... Jul 22 2010, 22:44 Serg76 Вспомнил, достаточно глубоко сверточными турбодеко... Nov 30 2008, 15:04 Rundll Цитата(Serg76 @ Nov 30 2008, 18:04) Вспом... Nov 30 2008, 15:45  Serg76 Цитата(Rundll @ Nov 30 2008, 18:45) TI sp... Nov 30 2008, 16:21   Rundll Цитата(Serg76 @ Nov 30 2008, 19:21) В реа... Nov 30 2008, 16:40    Serg76 Цитата(Rundll @ Nov 30 2008, 19:40) log-M... Nov 30 2008, 18:01     Rundll Цитата(Serg76 @ Nov 30 2008, 21:01) По по... Nov 30 2008, 19:08      Serg76 Цитата(Rundll @ Nov 30 2008, 22:08) Книгу... Nov 30 2008, 19:19  SKov Цитата(Rundll @ Nov 30 2008, 18:45) ...
И... Nov 30 2008, 23:00   Rundll Цитата(SKov @ Dec 1 2008, 02:00) Примите ... Dec 1 2008, 08:29 Rundll to Serg76:
Вот ещё один момент заинтересовал, кас... Dec 8 2008, 16:43 Serg76 Цитата(Rundll @ Dec 8 2008, 19:43) to Ser... Dec 8 2008, 17:11  Rundll Цитата(Serg76 @ Dec 8 2008, 20:11) По-мое... Dec 8 2008, 17:25 Rundll У меня очередная порция вопросов Вопрос касается ... Dec 10 2008, 14:43 Grumbler_2002 Можно. Используется схема как в стандарте dvb-rcs.... Dec 10 2008, 22:51      Rundll Цитата(Serg76 @ Dec 14 2008, 00:14) По по... Dec 13 2008, 21:20 Grumbler_2002 Начните с этих материалов.
Dec 13 2008, 23:35 Serg76 2Rundll
В принципе все то, что я хотел посмотреть ... Dec 15 2008, 16:24 Grumbler_2002 На самом деле нужно задать себе вопрос, так ли нео... Dec 16 2008, 02:00 Serg76 Я пользовался Max-Log_MAP аппроксимацией. Энергети... Dec 16 2008, 15:44 Grumbler_2002 Коррекцию extrinsic information использовали? У ме... Dec 16 2008, 18:50 Serg76 Цитата(Grumbler_2002 @ Dec 16 2008, 21:50... Dec 16 2008, 19:19 Grumbler_2002 Дык у Вас блоковые турбо-коды (коды-произведения с... Dec 16 2008, 21:24 Serg76 Цитата(Grumbler_2002 @ Dec 17 2008, 00:24... Dec 17 2008, 19:54 Grumbler_2002 Выложил всё, что у меня есть на текущий момент. Со... Dec 17 2008, 20:54 Serg76 Цитата(Grumbler_2002 @ Dec 17 2008, 23:54... Dec 17 2008, 22:41 Rundll В продолжение темы выкладываю на мой взгляд лучшие... Jan 9 2009, 15:28 AntonSS Прочитал некоторую литературу насчёт систематическ... May 29 2009, 10:40 Coder2009 Столкнулся сейчас с аналогичной проблемой. Скляра ... Jul 19 2009, 08:48 bark Занимаюсь решением такой же задачи.
строю декодер.... Feb 25 2010, 09:36 des00 Цитата(bark @ Feb 25 2010, 03:36) если ес... Feb 26 2010, 04:37 dsp85 подскажите, пожалуйста, для 2D турбокодов с гипер ... Nov 8 2010, 18:24 Serg76 Цитата(dsp85 @ Nov 8 2010, 22:24) подскаж... Nov 8 2010, 18:56  dsp85 Цитата(Serg76 @ Nov 8 2010, 21:56) могут,... Nov 8 2010, 19:02   Serg76 Цитата(dsp85 @ Nov 8 2010, 22:02) понял, ... Nov 8 2010, 19:12 Денис Олегович Ув. RunDLL, я как раза занимаюсь написанием диплом... Feb 19 2011, 15:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|