Перейти к содержанию
    

LDPC код из стандарта DVB-S2

Думал долго... Для меня тоже. Как работает shuffling network - вообще вопрос. Первый Read address на мой взгляд должен быть 54 т.к. именно этот CN обновляется первым. Хотя, может и не понимаю что...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думал долго... Для меня тоже. Как работает shuffling network - вообще вопрос. Первый Read address на мой взгляд должен быть 54 т.к. именно этот CN обновляется первым. Хотя, может и не понимаю что...

 

Совершенно неважно, какой ЧН "обновляется первым", тем более что в статье распараллеливание в 360 раз, и кстати первым месседжем может быть любой из 7 (в 1/2 градус чекнодов равен 7).

 

А те числа могут быть просто случайными. Поскоку принцип очевиден, то сами они ничего не решают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Совершенно неважно, какой ЧН "обновляется первым", тем более что в статье распараллеливание в 360 раз, и кстати первым месседжем может быть любой из 7 (в 1/2 градус чекнодов равен 7).

 

А те числа могут быть просто случайными. Поскоку принцип очевиден, то сами они ничего не решают.

 

Не уверен на счет того, что все CN имеют одинаковую степень.Для нулевого CN в таблице стандарта только 4 подходщих значения х (равных 0 или кратных 90) - 2700, 6030, 0,16290. Остальные ребра в нулевой CN вроде не попадают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не уверен на счет того, что все CN имеют одинаковую степень.Для нулевого CN в таблице стандарта только 4 подходщих значения х (равных 0 или кратных 90) - 2700, 6030, 0,16290. Остальные ребра в нулевой CN вроде не попадают.

 

А вам и не нужно быть уверенным, я вам это просто сообщаю как факт. В нормал фреймах градусы чекнодов одинаковы, только у нулевого градус на единицу меньше. Почему вы насчитали для нулевого 4 вместо 6 я тоже знаю, но уж сами разберитесь (если вам вообще это нужно конечно..)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответы) Пока не верю в случайность чисел... еще покумекаю... Нашел очередную статью, где на одном из слайдов указан принцип формирования адресов сдвигов и адресов chek node. На мой взгляд так и должно быть, но опять не вижу пока соответствия с выше приведенным рисунком. Есть такой товарищ... Falcao, вот он много чего наработал на эту тему... но опять таки не все ясно... эту же архитектуру он немного раскрывает, но опускает адресацию, ссылаясь на недоступную мне статью...

Gomes, M., Falcão, G., Silva, V., Ferreira, V., Sengo, A., and Falcão, M. (2007b). Flexible

Parallel Architecture for DVB-S2 LDPC Decoders. In Proceedings of the IEEE Global

Telecommunications Conf. (GLOBECOM’07), pages 3265–3269.

post-26768-1392878623_thumb.png

post-26768-1392878640_thumb.png

thesis_v1.ppt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вам и не нужно быть уверенным, я вам это просто сообщаю как факт. В нормал фреймах градусы чекнодов одинаковы, только у нулевого градус на единицу меньше. Почему вы насчитали для нулевого 4 вместо 6 я тоже знаю, но уж сами разберитесь (если вам вообще это нужно конечно..)

 

Поутру разобрался, хотя и не нужно было :). Еще 2 ребра получаются от parity nodes.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет!

Подниму в очередной раз эту тему...

На данный момент загвоздка в реализации блока обработки метрик CN-узла.

В прилагаемом документе есть описание MSA-алгоритма (стр.27) и схемы блоков его реализующих (стр.77-78). По формулам алгоритма особых вопросов нет, кроме треугольничка означающего видимо дополнительную коррекцию при вычислении, приближающую MSA к алгоритму SPA. Как я понимаю это осуществляется при помощи блоков BOXPLUS и BOXMINUS. Если в BOXPLUS еще как то можно разобраться и увидеть смысл, то BOXMINUS для меня стал загадкой. Для чего реализовывать операцию (a+б)-(a-б)=2б? И в целом... каким таким образом можно последовательным путем находить минимумы среди набора метрик за исключением одной... их несколько раз что ли нужно прогонять через блок обработки?

post-26768-1403160390_thumb.png

post-26768-1403160401_thumb.png

post-26768-1403160413_thumb.png

Tese_Gabriel_Fernandes.pdf

Изменено пользователем Neznaika

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день уважаемые форумчане

Помогите плиз.. с таким вопросом . Реализовал по Морелосе-Сарагосе (который идет в приложении) программный декодер LLR LDPC (мягкий вход/жесткий выход, расчеты по видимому с плавающей точкой). Но меня очень не устраивает скорость. Подскажите может кто в теме мягкие схемы декодирования пригодные для программной реализации или хотябы литературу по которой можно реализовать (желательно кто на практике проверил).

 

Си-код прикрепил в виде файла-txt

llr_pearl.txt

llr_pearl.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день уважаемые форумчане

Помогите плиз.. с таким вопросом . Реализовал по Морелосе-Сарагосе (который идет в приложении) программный декодер LLR LDPC (мягкий вход/жесткий выход, расчеты по видимому с плавающей точкой). Но меня очень не устраивает скорость. Подскажите может кто в теме мягкие схемы декодирования пригодные для программной реализации или хотябы литературу по которой можно реализовать (желательно кто на практике проверил).

 

Си-код прикрепил в виде файла-txt

посмотрите в сторону Min-Sum Algorithm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

посмотрите в сторону Min-Sum Algorithm

 

нет ли у вас статьи по которой можно было бы реализовать, простой для понимания

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет! Подниму ка я снова эту тему. Сделал модель LDPC кодека на C++ по DVB-S2 стандарту, опираясь на структуры предложенные Falcao. Его статья прикреплена к посту. Так вот встала проблема со сходимостью алгоритма. В прикрепленном рисунке представлена архитектура блока обрабатывающего ветви в CN-режиме. В этом же режиме происходит одновременное обновление как памяти сообщений проверочных узлов CN, так и памяти сообщений проверочных узлов PN. Причем как я понимаю в представленной архитектуре режимы CN и VN для PN здесь объединены. В регистре Reg MEM сохраняются сообщения Pm-1, обновляемые после сложения LrPNm со значениями из канальной памяти Channel (LpNm) на каждом такте. Так вот... вычисление LpNm-1 происходит благодаря сложению LrNm-1 со значением обновленной величины из Reg Mem. Так вот сделав вычисление LpNm-1 и обновив сообщение в памяти PN Message получил определенную сходимость алгоритма... но на мой взгляд не достаточную. Например, если на входе декодера 775 ошибок в 7200 информационных битах (R=4/9. N=16400 бит), то по итерациям декодер будет исправлять ошибки следующим образом: 775-> 424, 267, 162, 95, 64, 48, 32, 26... и потом с 16-ой итерации остается постоянно 12 ошибок. При в двое меньшем количестве ошибок получаем чистую работу декодера, т.е. 368->53, 12, 1, 0... 4 итерации и 0 ошибок. Чуть ранее, копаясь в ошибках алгоритма добавлял к LqPNm соответствующие канальные значения LpNm, а сложения с Reg Mem не делал. В результате сходимость алгоритма выглядела более внушительно: 775-> 424, 237, 118, 51, 21, 3, 0... Вроде бы логически ошибки не происходит, идет независимое обновление сообщений Pm и Pm-1 во внешней памяти PN message и внутренней памяти Reg Mem. Кто-нибудь получал похожие результаты или может есть у кого то какое то мнение на этот счет? Было бы интересно докопаться до истины...

post-26768-1418134362_thumb.png

HDL_for_DVB_S2.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет возможности (да наверно и необходимости) разбираться в деталях вашей реализвции, но............ кто ж так измеряет "сходимость"??

И что это вообще такое? И зачем у вас подсчитывается кол-во ошибок?? Вы же не рид-соломон делаете..

 

На декодер нужно подавать сигнал + гаусовский шум, и считать не "ошибки", а сигнал/шум, и сравнивать его с пределом для данного кода, который известен.

 

Когда окажется, что ваш декодер обеспечивает этот предел, тогда уже можно будет говорить о кол-ве итераций, при которм тот или иной SNR достигается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В моделе на С++ я ко входному сигналу декодера добавляю гауссовский шум с помощью функции RandG и дополнительно смотрю сколько ошибок получается. Например, если без шума входной сигнал А=[-0.5, +0.5], то с шумом A+RandG(0,N). Допустим N=0.4, то какое здесь будет отношение сигнал/шум? Я слышал о 3 сигмах и могу предположить, что с/ш=20Log(0.5/(3*(0.4^2)))=0.3 дБ... Возможно я и ошибаюсь, но не в этом суть... я лишь хотел узнать, кто копался с LDPC по стандарту DVB-S2 и имеет какое то представление о работе алгоритма. Было бы любопытно сравнить полученные результаты... Предложенные в найденных мной статьях BER-ы лишь частично удовлетворяют мое любопытство, так как зачастую не указывается число итераций или рассмотрен блок длинной в 64800 бит.

Изменено пользователем Neznaika

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в матлабе же есть DVB-S2 LDPC кодеры, собрать стенд дело простое и удовлетворить все что хотите

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...