|
Вопросы по итеративному декодированию, Реализация CTC/BTC/LDPC кодов |
|
|
|
Dec 24 2014, 14:00
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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. Вот этот момент мне совсем не понятен. Пока всё  Прошу помощи тех кто в теме.
--------------------
|
|
|
|
|
 |
Ответов
|
Feb 8 2015, 08:59
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(des00 @ Feb 7 2015, 19:34)  самое занятное что они правы, внимательно позырил на формулу и все встало на круги своя. Замена сложения на вычитание P0 в аккумуляторе и изменение адреса инициализации с 0 на P0*(N-1) % N дает искомый результат. Жаль только то, что под каждую длину нужен свой уникальный адрес инициализации  Это не самая большая проблема. Проблема - обеспечить, чтобы параллельно работающие SISO модули не сталкивались при доступе к памяти экстринсиков. Вот статья про это на примере wimax. Может, будет интересно.
|
|
|
|
|
Feb 9 2015, 09:48
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(des00 @ Feb 9 2015, 08:27)  Попутно возник вопрос, почему все бьются за повышение параллелизма одной полуитерации. Положим есть 10 параллельно работающих движков, это требует наличия 10 ти портовых регистровых файлов. Ведь можно же уйти в глубину : те же 10 движков поставить последовательно в конвейер и развязать их двухпортовыми блочками памяти(при этом память под Lext можно заменить на память Lext + Ls). Да, задержка обработки вырастет, но пиковая производительность останется на том же уровне. Правда количество итераций произвольно менять будет сложнее. Потому что ты себе несколько не тот вопрос задаешь. Ты рассматриваешь задачу получения максимальной пропускной способности без ограничений, а надо с ограничениями  Вопрос должен быть таким - у меня есть максимум М движков, я жутко экономлю электричество (фактически, экономлю тактовую и память ). Какими выбрать М и тактовую, чтобы все же получить нужную пропускную способность для всех возможных размеров блоков? Что касается статьи, она не про тоже самое, что и статья, которую ты привел. У Martinа размер окон меняется динамически в зависимости от размера блока и авторы ставят задачу прокормить до 4 движков, делающих одну полуитерацию, экстринсиками из однопортовой памяти. Т.е. они вообще не ставят перед собой задачу получить макс. пропускную способность с выхода декодера. Они говорят о достаточной. Больше информации о том, как устроен декодер у Martinа, можно почерпнуть из прицепленной статьи. Предыдущая была только про интерливер. Что касается граничных альф и бет для окна, они используют значения, полученные на предыдущей итерации.
|
|
|
|
Сообщений в этой теме
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 страниц
1 2 3 >
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0
|
|
|