Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Реализация декодера турбокода DVB-RCS
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Coder2009
Столкнулся с задачей реалезации декодера свёрточного циркулярного недвоичного (double-binary) турбокода DVB-RCS. Предстоит сделать как аппаратную, так и программную реализацию. Для начала попробовал сделать программную реализацию, для этого выбрал декодер SOVA - алгоритм Витерби с мягким выходом (по той причине, что алгоритм Витерби мне очень хорошо знаком и его реализовать для меня не составило труда). Всё получилось, модель алгоритма (написана на Си) работает. Но дело в том, что требуется обеспечить скорость обработки хотя бы 1 мегабит в секунду на компьютере Intel с частотой 2.8 .. 3 ГГц, а ввиду огромного количества вычислений (с учётом не двоичной, а четверичной решётки кода, большого количества сравнений и копирований блоков данных, а также итерационного декодирования) такие скорости никак не получаются Даже после всевозможных оптимизаций кода. В связи с этим решил попробовать разобраться с алгоритмами декодирования серии log-MAP и max-log-MAP, где вычисляются апостериорные вероятности и LLR (есть подозрение, что реализация такого алгоритма может оказаться оптимальнее мягкого Витерби), но везде в литературе данные алгоритмы описываются на уровне теории, с теоремами и формулами, а хотелось бы что-либо почитать такое, где бы описывалось именно практическое применение, и алгоритм был бы описан именно в виде алгоритма, понятного программисту. С той целью, чтобы разобраться по возможности быстрее, ибо время ограничено. Вопрос: есть ли источники с такими, наиболее понятными описаниями? И, что ещё лучше - может, кто-либо встречал хорошие и понятные на уровне программирования описания алгоритмов декодирования именно свёрточных турбокодов DVB-RCS?

Спасибо заранее.
DRUID3
Цитата(Coder2009 @ Jul 18 2009, 19:57) *
Всё получилось, модель алгоритма (написана на Си) работает. Но дело в том, что требуется обеспечить скорость обработки хотя бы 1 мегабит в секунду на компьютере Intel с частотой 2.8 .. 3 ГГц, а ввиду огромного количества вычислений (с учётом не двоичной, а четверичной решётки кода, большого количества сравнений и копирований блоков данных, а также итерационного декодирования) такие скорости никак не получаются Даже после всевозможных оптимизаций кода.
Спасибо заранее.

...есть другой путь - CUDA... очень трудно придумать сейчас тяжелые вычисления для топовых видях а уж тем более спецвычислителей...
alex_os
Цитата(Coder2009 @ Jul 18 2009, 20:57) *
Вопрос: есть ли источники с такими, наиболее понятными описаниями? И, что ещё лучше - может, кто-либо встречал хорошие и понятные на уровне программирования описания алгоритмов декодирования именно свёрточных турбокодов DVB-RCS?

Поищите, где-то здесь кто-то выкладывал L. Hanzo. Turbo Coding, Turbo Equalisation and Space-Time Coding. Там все возможные виды MAP (MAP... MAX-LOG-MAP) очень хорошо расписаны. По поводу производительности MAX-LOG-MAP быстрее будет чем SOVA (в силу меньшей корявости алгоритма). Далее берете Intel C compiler и с помощью SSE2(3) инстринстиков пишите. Если получится обрабатывать сразу 4-8 состояний кодера будет Вам счастье. Ну еще полезно какие-нибудь доки от интела почитать как писать быстрый код.

p.s. еще можно посмотреть реализацию MAP в матлабовских исходниках.
p.p.s еще хорошая книга K.Moon. Error Correction Coding: Mathematical Methods and Algorithms.
К ней прилагалось куча примеров на матлабе и кажется на С.
Coder2009
Цитата(alex_os @ Jul 21 2009, 08:47) *
Поищите, где-то здесь кто-то выкладывал L. Hanzo. Turbo Coding, Turbo Equalisation and Space-Time Coding.
p.s. еще можно посмотреть реализацию MAP в матлабовских исходниках.
p.p.s еще хорошая книга K.Moon. Error Correction Coding: Mathematical Methods and Algorithms.
К ней прилагалось куча примеров на матлабе и кажется на С.

Спасибо.

По поводу первой книги - посты в форуме нашёл, но файл уже удалён, видимо, за давностью. А в инете эта книга только за деньги продается. Зато, нашёл статью "Comparative Study of Turbo Decoding Techniques: An Overviev", где один из авторов этот же Hanzo. Там на удивление расписано всё достаточно понятно. Ещё нашел пошаговое описание MAP-алгоритма Charan Langton (www.complextoreal.com), жаль только, что там есть огрехи и ошибки, но в общем всё достаточно наглядно расписано, и это помогло разобраться. Ну и, статья "Low-Power Traceback MAP Decoding for Double-Binary Convolutional Turbo Decoder" от Cheng-Hung Lin, Chun-Yu Chen, and An-Yeu (Andy) Wu после этого воспринимается уже понятно в качестве поправок, которые надо применить в случае double-binary кода.

По поводу матлаба - а что за исходники имелись в виду? Точнее можно?

Что касается третьей книги, а её можно где-то найти в свободном доступе?
(57rus)AlieN
Что касается Ханз(ц)о - нашел по этой ссылке. Части глав нет, но что касается турбокодов - на месте
BOBA_12345
Цитата((57rus)AlieN @ Feb 5 2010, 11:03) *
Что касается Ханз(ц)о - нашел по этой ссылке. Части глав нет, но что касается турбокодов - на месте


В библиотеке колхоза ( биб тиера ру ) есть третья книжка
vadimuzzz
Цитата(Coder2009 @ Jul 27 2009, 00:32) *
а что за исходники имелись в виду? Точнее можно?

http://the-art-of-ecc.com/topics.html

книжку тоже почитайте
Serg76
как писал alex_os в дополнение к интеловскому компилятору имеется еще набор библиотек IPP (intel primitive performance), среди которых имеются и функции (выполненные с помощью тех же самых SSE инструкций) для декодирования 4D Viterbi (применяется в проводных модемах, стандарт ITU-V.34) - очень сильно ускоряет работу. Кроме того, я когда то реализовывал турбодекодер и код писал в виде набора макросов (Visual C++ компилятор), получилось тоже очень быстро на машине типа Core2Duo 2.4 GHz (правда универсального декодера не получилось, но чем-то приходится жертвовать).
DMax
http://www.iterativesolutions.com/Matlab.htm
Это исходники матлабовской библиотеки. Там есть нужный вам турбокод, обвязка написана на матлабе + Си для ядра декодера. Почитайте, как матлаб сопрягается с сями, чтобы понять что происходит - ничего сложного нет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.