реклама на сайте
подробности

 
 
> Вопросы по итеративному декодированию, Реализация CTC/BTC/LDPC кодов
des00
сообщение Dec 24 2014, 14:00
Сообщение #1


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Добрый день!

Наконец то появилось время подтянуть себя в вопросах реализации кодов с вероятностным декодированием. Первая задача реализация DVB-RCS/WiMAX CTC кодера на ПЛИС, часть проекта будет выложен в опенсорс. Решил создать отдельную тему для обсуждения вопросов по реализации

После штудирования литературы и примеров сорцов в сети возникла часть вопросов, на которые не хватает ума/настойчивости найти ответы:
1. Для DVB-RCS оговорены выкалывания под скорости кодирования 1/3, 2/5, 1/2, 2/3, 3/4, 4/5, 6/7. Почему не определены скорости 5/6 (удивляет "дырка" между скоростями 4/5 и 6/7) и 7/8? При этому матрица выкалывания под эти скорости возможна.
2. Полиномы RCS для Wimax и DVB одинаковые, но перемежители разные. Это сделано по политическим причинам или это результат "улучшения" характеристик декодера в процессе разработки стандарта?
3. В сверточных бинарных кодах, свойство tail-bitting используется при декодировании: В одной доке нашел что дополняют принятую последовательность вначале и в конце, затем декодируют по витерби и выкусывают нужное. В примере матлаба вообще составляют два фрейма, декодируют один за другим, потом из двух декодированных собирают один результат. Никакого намека на похожие операции в доках на турбокоды не нашел. Почему в алгоритмах SOVA/MAP/... для турбокодов это не делается?
4. По tail-bitting нашел в доках только то, что особым образом инициализируются рекурсия прямой и обратной метрики на первой итерации, а на всех остальных значения между итерациями сохраняются. Но
в сорцах от CML цикл по итерациям выглядит так :
Код
for it = 1:max_iterations
    inx1 = X + inner_extr;
    [outx1, outz1]=DuobinaryCRSCDecode( inx1, inz1, poly, decoder_type);
    
    llrx1 = outx1 - inner_extr;
    inx2(1:3*N) = llrx1( code_interleaver_GF4);
    [outx2, outz2, out_info]=DuobinaryCRSCDecode( inx2, inz2, poly, decoder_type);
    detected_data(code_interleaver.info_intl) = (out_info>0)+0;
    errors(it)= sum( sum(abs(detected_data - data)));
    if (errors(it) == 0)
        break;
    else
        inner_extr(code_interleaver_GF4) = outx2 - inx2;
    end
end

Т.е. видно что последовательные вызовы функции DuobinaryCRSCDecode между собой не обмениваются этой информацией. А в самих функциях
Код
    // initialization  for CRSC code
    for (i =0; i< max_states; i++)
    {
        alpha[i][0] = 0;
        beta[i][len] = 0;
    }

Т.е. не используется даже свойство одинакового начального состояния. Более того, в алгоритмах с оконным расчетом обратной рекурсии тоже забивают на свойство tail-bitting. Так насколько это важно и почему во всех доках настойчиво пишут кодировать данные 2 раза для определения состояния инициализации?
5. В алгоритмах, наследованных от Log-MAP метрика ветки считается как сумма корреляций метрик приемных битов с выходными битами решетки : gamma(Sk-1, S) = Lapri + (ys0*xs0 + ys1*xs1 + yp0*xp0 + yp1*xp1). При этом предполагается что y - надежность принятого символа , x = -1/1 выходной(переданный) бит. В сорцах от CML это место выглядит так :
Код
    int m_input = 2;  // 2 input bits,
    int max_states = 8; // total state numbers
    int M_input = 1<<m_input;
    int i, j, max_trellis = M_input * max_states;
.......
        for (j = 0; j< max_trellis; j++)
        {
            temp_input = j%M_input;
            temp_output = trellis_out[j];
            gamma[j] = ( temp_input ==0)? 0: inx[ (temp_input -1)+ i*llr_height ];   //llr for systematic symbol
            gamma[j] += ( temp_output ==0)? 0: inz[ (temp_output -1)+ i*llr_height ];  //llr for parity symbol
        }

Насколько я понимаю Си gamma[j] = ( temp_input ==0)? 0: inx[ (temp_input -1)+ i*llr_height ] - берет надежности символов кроме нулевого. Диапазон изменения temp_input = 0..3 или в битах 00/01/10/11. Вот этот момент мне совсем не понятен.

Пока всё sm.gif Прошу помощи тех кто в теме.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Feb 7 2015, 16:34
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(andyp @ Feb 7 2015, 03:14) *
В приложенной статье утверждается, что аналогичная схема может быть использована для генерации индексов интерливера как в прямом так и в инверсном порядке.

Цитата(des00 @ Feb 7 2015, 15:42) *
покурю внимательно

самое занятное что они правы, внимательно позырил на формулу и все встало на круги своя. Замена сложения на вычитание P0 в аккумуляторе и изменение адреса инициализации с 0 на P0*(N-1) % N дает искомый результат. Жаль только то, что под каждую длину нужен свой уникальный адрес инициализации wink.gif


--------------------
Go to the top of the page
 
+Quote Post
andyp
сообщение Feb 8 2015, 08:59
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(des00 @ Feb 7 2015, 19:34) *
самое занятное что они правы, внимательно позырил на формулу и все встало на круги своя. Замена сложения на вычитание P0 в аккумуляторе и изменение адреса инициализации с 0 на P0*(N-1) % N дает искомый результат. Жаль только то, что под каждую длину нужен свой уникальный адрес инициализации wink.gif


Это не самая большая проблема. Проблема - обеспечить, чтобы параллельно работающие SISO модули не сталкивались при доступе к памяти экстринсиков. Вот статья про это на примере wimax. Может, будет интересно.


Прикрепленные файлы
Прикрепленный файл  martina2008.pdf ( 177.06 килобайт ) Кол-во скачиваний: 33
 
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 9 2015, 05:27
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(andyp @ Feb 8 2015, 16:59) *
Проблема - обеспечить, чтобы параллельно работающие SISO модули не сталкивались при доступе к памяти экстринсиков. Вот статья про это на примере wimax. Может, будет интересно.

статья немного путаная но занятная, но по кросс линкам ведет к статье A HIGH-SPEED MAP ARCHITECTURE WITH OPTIMIZED MEMORY SIZE AND POWER CONSUMPTION вот там яснее написано sm.gif

Попутно возник вопрос, почему все бьются за повышение параллелизма одной полуитерации. Положим есть 10 параллельно работающих движков, это требует наличия 10 ти портовых регистровых файлов. Ведь можно же уйти в глубину : те же 10 движков поставить последовательно в конвейер и развязать их двухпортовыми блочками памяти(при этом память под Lext можно заменить на память Lext + Ls). Да, задержка обработки вырастет, но пиковая производительность останется на том же уровне. Правда количество итераций произвольно менять будет сложнее.
Прикрепленные файлы
Прикрепленный файл  A_HIGH_SPEED_MAP_ARCHITECTURE_WITH_OPTIMIZED_MEMORY_SIZE_AND_POWER_CONSUMPTION.pdf ( 80.62 килобайт ) Кол-во скачиваний: 21
 


--------------------
Go to the top of the page
 
+Quote Post
andyp
сообщение Feb 9 2015, 09:48
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(des00 @ Feb 9 2015, 08:27) *
Попутно возник вопрос, почему все бьются за повышение параллелизма одной полуитерации. Положим есть 10 параллельно работающих движков, это требует наличия 10 ти портовых регистровых файлов. Ведь можно же уйти в глубину : те же 10 движков поставить последовательно в конвейер и развязать их двухпортовыми блочками памяти(при этом память под Lext можно заменить на память Lext + Ls). Да, задержка обработки вырастет, но пиковая производительность останется на том же уровне. Правда количество итераций произвольно менять будет сложнее.


Потому что ты себе несколько не тот вопрос задаешь. Ты рассматриваешь задачу получения максимальной пропускной способности без ограничений, а надо с ограничениями wink.gif Вопрос должен быть таким - у меня есть максимум М движков, я жутко экономлю электричество (фактически, экономлю тактовую и память ). Какими выбрать М и тактовую, чтобы все же получить нужную пропускную способность для всех возможных размеров блоков?

Что касается статьи, она не про тоже самое, что и статья, которую ты привел. У Martinа размер окон меняется динамически в зависимости от размера блока и авторы ставят задачу прокормить до 4 движков, делающих одну полуитерацию, экстринсиками из однопортовой памяти. Т.е. они вообще не ставят перед собой задачу получить макс. пропускную способность с выхода декодера. Они говорят о достаточной.

Больше информации о том, как устроен декодер у Martinа, можно почерпнуть из прицепленной статьи. Предыдущая была только про интерливер.

Что касается граничных альф и бет для окна, они используют значения, полученные на предыдущей итерации.
Прикрепленные файлы
Прикрепленный файл  martina2008_1.pdf ( 427.08 килобайт ) Кол-во скачиваний: 33
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- des00   Вопросы по итеративному декодированию   Dec 24 2014, 14:00
- - stealth-coder   2. Полиномы RCS для Wimax и DVB одинаковые, но пер...   Dec 24 2014, 19:54
|- - andyp   Пункт 1 Вероятно, кривая BER для 5/6 лежит слишко...   Dec 24 2014, 22:13
|- - des00   Цитата(andyp @ Dec 25 2014, 06:13) Массив...   Dec 26 2014, 09:48
|- - andyp   Цитата(des00 @ Dec 26 2014, 12:48) Вы пра...   Dec 26 2014, 12:10
- - des00   Цитата(stealth-coder @ Dec 25 2014, 02...   Dec 26 2014, 03:46
|- - andyp   Цитата(des00 @ Dec 26 2014, 06:46) По это...   Dec 26 2014, 08:56
- - des00   Занятное дело. Скидал в матлабе кодер, похожий на ...   Dec 26 2014, 16:05
|- - andyp   Цитата(des00 @ Dec 26 2014, 19:05) Занятн...   Dec 27 2014, 18:25
- - des00   Цитата(des00 @ Dec 24 2014, 22:00) 1. Для...   Dec 26 2014, 17:15
|- - Dr.Alex   .   Dec 28 2014, 10:23
|- - des00   Возник вопрос по поводу расчета LLR канальных симв...   Dec 28 2014, 14:46
|- - Serg76   Цитата(des00 @ Dec 28 2014, 17:46) Одни п...   Dec 28 2014, 19:12
|- - andyp   Цитата(des00 @ Dec 28 2014, 17:46) Наскол...   Dec 28 2014, 19:30
|- - Maverick   Прошу прощения, что влажу в чужую тему, но вопрос ...   Dec 28 2014, 20:26
|- - andyp   Цитата(Maverick @ Dec 28 2014, 23:26) В п...   Dec 28 2014, 23:36
|- - Maverick   Цитата(andyp @ Dec 29 2014, 01:36) Глубок...   Dec 29 2014, 09:48
|- - andyp   Цитата(Maverick @ Dec 29 2014, 12:48) А к...   Dec 29 2014, 10:13
||- - Maverick   Цитата(andyp @ Dec 29 2014, 12:13) Для дл...   Dec 29 2014, 10:58
||- - andyp   Цитата(Maverick @ Dec 29 2014, 13:58) Да,...   Dec 29 2014, 13:02
||- - Serg76   Цитата(andyp @ Dec 29 2014, 17:02) Что ты...   Dec 29 2014, 13:23
||- - andyp   Цитата(Serg76 @ Dec 29 2014, 16:23) По вс...   Dec 29 2014, 13:55
||- - Maverick   Цитата(Serg76 @ Dec 29 2014, 15:23) По вс...   Dec 29 2014, 15:39
||- - Serg76   Цитата(Maverick @ Dec 29 2014, 19:39) сов...   Dec 29 2014, 16:28
||- - Maverick   Цитата(Serg76 @ Dec 29 2014, 18:28) естес...   Dec 29 2014, 19:29
||- - Serg76   Цитата(Maverick @ Dec 29 2014, 23:29) да,...   Dec 29 2014, 20:53
|- - Serg76   Цитата(Maverick @ Dec 29 2014, 13:48) спа...   Dec 29 2014, 12:13
|- - Maverick   Цитата(Serg76 @ Dec 29 2014, 14:13) при п...   Dec 29 2014, 21:40
|- - Serg76   Цитата(Maverick @ Dec 30 2014, 01:40) пог...   Dec 29 2014, 21:48
||- - Maverick   Цитата(Serg76 @ Dec 29 2014, 23:48) ссылк...   Dec 29 2014, 22:25
||- - des00   Цитата(Maverick @ Dec 30 2014, 06:25) зна...   Dec 30 2014, 03:42
||- - Maverick   Цитата(des00 @ Dec 30 2014, 05:42) То что...   Dec 30 2014, 09:50
|- - Serg76   Цитата(Maverick @ Dec 30 2014, 01:40) воп...   Dec 30 2014, 00:33
- - des00   Глупый вопрос. Почему в RSС кодах не учитывается e...   Jan 19 2015, 10:09
|- - andyp   Цитата(des00 @ Jan 19 2015, 13:09) Глупый...   Jan 19 2015, 12:14
|- - des00   Цитата(andyp @ Jan 19 2015, 20:14) Апосте...   Jan 19 2015, 13:25
|- - andyp   Цитата(des00 @ Jan 19 2015, 16:25) Понял,...   Jan 19 2015, 15:23
- - andyp   Подумал на счет пункта 1 - LLR проверочных бит мог...   Jan 21 2015, 08:37
- - smoke_111   или для демодуляции и декодировании в многоуровнев...   Jan 21 2015, 09:42
- - des00   Цитата(andyp @ Jan 19 2015, 22:23) P_appr...   Jan 22 2015, 09:06
- - smoke_111   я имею в виду схемы наподобии trellis-coded modula...   Jan 23 2015, 08:08
|- - andyp   Цитата(smoke_111 @ Jan 23 2015, 11:08) я ...   Jan 23 2015, 08:49
- - smoke_111   точно, спасибо, забыл как это называется.   Jan 23 2015, 13:09
- - des00   Перевожу модель в фиксед поинт. Есть глупый вопрос...   Jan 26 2015, 06:45
|- - andyp   Цитата(des00 @ Jan 26 2015, 09:45) Первый...   Jan 26 2015, 16:54
|- - des00   Цитата(andyp @ Jan 27 2015, 00:54) Т.е. э...   Jan 27 2015, 05:52
|- - andyp   Цитата(des00 @ Jan 27 2015, 08:52) Т.е. б...   Jan 27 2015, 09:19
- - des00   Созрел следующий вопрос: метрики состояний проходя...   Jan 28 2015, 08:13
|- - andyp   Видел, что экстринсики скалили между итерациями (н...   Jan 28 2015, 09:26
|- - des00   Цитата(andyp @ Jan 28 2015, 16:26) Видел,...   Jan 28 2015, 09:44
|- - andyp   Цитата(des00 @ Jan 28 2015, 12:44) да, гд...   Jan 28 2015, 12:07
|- - des00   Цитата(andyp @ Jan 28 2015, 19:07) Я встр...   Jan 28 2015, 15:42
|- - Maverick   Цитата(des00 @ Jan 28 2015, 17:42) хмм, н...   Jan 28 2015, 20:09
||- - des00   Цитата(Maverick @ Jan 29 2015, 03:09) спа...   Jan 29 2015, 04:53
|- - andyp   Цитата(des00 @ Jan 28 2015, 18:42) Перехо...   Jan 29 2015, 08:56
|- - des00   Цитата(andyp @ Jan 29 2015, 16:56) Поздра...   Feb 3 2015, 15:34
|- - des00   Цитата(des00 @ Feb 3 2015, 22:34) Похоже ...   Feb 4 2015, 13:47
|- - Mogwaika   Цитата(des00 @ Feb 4 2015, 17:47) Ошибся ...   Feb 4 2015, 16:08
||- - des00   Цитата(Mogwaika @ Feb 4 2015, 23:08) Код ...   Feb 4 2015, 16:11
||- - Grizzzly   Цитата(des00 @ Feb 4 2015, 19:11) Судя по...   Feb 4 2015, 17:07
||- - Mogwaika   Цитата(Grizzzly @ Feb 4 2015, 21:07) Посм...   Feb 4 2015, 20:01
||- - Serg76   Цитата(Mogwaika @ Feb 4 2015, 23:01) У ме...   Feb 5 2015, 07:47
||- - Grizzzly   Цитата(Serg76 @ Feb 5 2015, 10:47) Какая ...   Feb 5 2015, 08:43
|||- - Serg76   Цитата(Grizzzly @ Feb 5 2015, 11:43) Турб...   Feb 5 2015, 10:04
|||- - Grizzzly   Цитата(Serg76 @ Feb 5 2015, 13:04) Ок, сп...   Feb 5 2015, 10:36
|||- - Mogwaika   Цитата(Serg76 @ Feb 5 2015, 14:04) Спасиб...   Feb 5 2015, 10:59
||- - Mogwaika   Цитата(Serg76 @ Feb 5 2015, 11:47) Какая ...   Feb 5 2015, 09:30
|- - smoke_111   Цитата(des00 @ Feb 4 2015, 16:47) Ошибся ...   Feb 4 2015, 18:32
- - andyp   Поделиться результатами не могу - давно было, так ...   Feb 4 2015, 11:53
- - des00   Цитата(Grizzzly @ Feb 5 2015, 01:07) Посм...   Feb 4 2015, 19:03
- - smoke_111   На больших все хорошо должно быть, если мне правил...   Feb 4 2015, 19:18
- - des00   Первые результаты по RTL кодированию   Feb 6 2015, 11:34
- - des00   Сел за синтезируемую RTL реализацию и сразу возник...   Feb 6 2015, 16:42
- - smoke_111   метод обращения функции генерации адреса есть, смо...   Feb 6 2015, 17:28
|- - des00   Цитата(smoke_111 @ Feb 7 2015, 01:28) мет...   Feb 6 2015, 17:43
- - smoke_111   Прошу прощения я кажется запутался, я правильно по...   Feb 6 2015, 18:07
|- - andyp   Цитата(smoke_111 @ Feb 6 2015, 21:07) Про...   Feb 6 2015, 19:14
- - des00   Цитата(smoke_111 @ Feb 7 2015, 01:07) я п...   Feb 7 2015, 07:42
|- - des00   Цитата(andyp @ Feb 9 2015, 17:48) Что кас...   Feb 9 2015, 16:48
|- - andyp   Ну да, на оверлап забивают, чтобы поднять производ...   Feb 9 2015, 17:16
- - des00   Цитата(andyp @ Feb 10 2015, 01:16) Ну да,...   Feb 10 2015, 07:32
- - des00   Базовый синтезируемый декодер в ПЛИСовой теме. К с...   Feb 24 2015, 09:06
|- - andyp   Цитата(des00 @ Feb 24 2015, 12:06) Базовы...   Feb 24 2015, 10:00
|- - des00   Цитата(andyp @ Feb 24 2015, 17:00) Код не...   Feb 24 2015, 15:16
|- - andyp   Цитата(des00 @ Feb 24 2015, 18:16) Теперь...   Feb 24 2015, 16:02
|- - petrov   Цитата(des00 @ Feb 24 2015, 18:16) Наприм...   Feb 24 2015, 16:02
- - des00   Цитата(andyp @ Feb 25 2015, 00:02) На пра...   Feb 24 2015, 16:29
|- - Mogwaika   Есть подозрение, что кодовую конструкцию в отрыве ...   Feb 24 2015, 17:14
|- - andyp   Цитата(Mogwaika @ Feb 24 2015, 20:14) Луч...   Feb 24 2015, 17:28
- - des00   Может кто сталкивался, что бы заново велосипед не ...   Feb 25 2015, 07:47
|- - andyp   Цитата(des00 @ Feb 25 2015, 10:47) В стан...   Feb 25 2015, 10:02
- - des00   В процессе вариации параметров декодера, обнаружил...   Mar 7 2015, 15:33
|- - andyp   На счет 1 - расскажи подробнее про паттерн выкалыв...   Mar 7 2015, 18:26
|- - des00   Цитата(andyp @ Mar 8 2015, 02:26) На счет...   Mar 8 2015, 07:27
- - andyp   Почитал немного про выкалывание. Действительно, лу...   Mar 8 2015, 09:37
- - des00   Цитата(andyp @ Mar 8 2015, 17:37) Объясне...   Mar 8 2015, 14:29
3 страниц V   1 2 3 >


Reply to this topicStart new topic
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 03:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01527 секунд с 7
ELECTRONIX ©2004-2016