|
Вопросы по итеративному декодированию, Реализация 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. Вот этот момент мне совсем не понятен. Пока всё  Прошу помощи тех кто в теме.
--------------------
|
|
|
|
|
 |
Ответов
|
Jan 26 2015, 06:45
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Перевожу модель в фиксед поинт. Есть глупый вопрос: в документе ETSI TR 101 790 V1.4.1 указаны рекомендации Цитата It has been found in one implementation, using Sub-MAP and at Packet Error Ratio (PER) in the region of 10е-5, that a 3-bit quantization entails a penalty of 0,2 dB compared to a 4-bit quantization. It can be further shown, by simulation, that increasing from 4 bits to 5 bits results in no more than 0,1 dB additional coding gain. Насколько я понимаю речь идет о квантовании LLR метрик битов. Изучение других материалов показало, что 1 бит под дробную часть не эффективно, минимально рекомендуемое 2 бита. Делаю вывод, что в случае 4-х бит речь идет о формате представления чисел s2.2. Т.е. знаковое число, 2 бита под целую часть и 2 бита под дробную. В таком случае диапазон LLR метрик битов -4.00 ... +3.75 (вероятность нуля 0.98... вероятность единицы 0.97). Эти значения как раз совпадают со значением LLR битов нормированного QPSK созвездия -+1 -+1i, при попадании точно в точку. Тут все понятно. Нормируем созвездие на эквалайзере/ару, считаем евклидовы метрики, делаем ограничение на уровень -4...3.75. Чуть ниже в этом же документе написано Цитата Measurements, using samples from a real demodulator with Automatic Gain Control, have put into evidence that the position of the "sample clouds" within the quantizer range could be optimized for Turbo decoding. One implementation uses the following rule-of-thumb: "multiply the analogue samples of the demodulator by a constant so that after 4-bit quantization, the average of the unsigned values is equal to Rate × 8, Rate being the Turbo code rate (6/7, 4/5, 3/4, etc.) И тут у меня взрывается мозг. Судя по доке, рекомендуемые уровни для кодирования [1/3 1/2 2/3 3/4 4/5 6/7] = [2.6 4.0 5.3 6.0 6.4 6.8]. Первый вопрос почему не нормируют созвездие, ведь ару это умножение на константу, сигнал умножается вместе с шумом? Второй вопрос, судя по всему предполагается квантование сигнала в формате s3.0, но в таком случае диапазон чисел -8...+7, т.е. при кодировании 6/7, они ставят созвездие почти в насыщение квантователя. В чем тайный смысл сего действа ?
--------------------
|
|
|
|
|
Jan 26 2015, 16:54
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(des00 @ Jan 26 2015, 09:45)  Первый вопрос почему не нормируют созвездие, ведь ару это умножение на константу, сигнал умножается вместе с шумом? Давай сначала - что такое канальные LLR (случай BPSK,AWGN) LLR = log(p(x=1|r)/p(x = 0|r)) = log(exp(-(r-a)^2/sigma^2)/exp(-(r+a)^2/sigma^2)) = =4*a/sigma^2*r; r - сигнал на входе демаппера; sigma^2 - дисперсия шума a - точка, соответствующая чистому сигналу на входе приемника (фактически, это мат. ожидание абс. величины сигнала на выходе приемника). АРУ на входе демаппера увеличит в К_agc раз sigma^2 и a, поэтому формула для LLR не изменится. Т.е. это математически это все равно - скалить сигнал на входе или созвездие в демаппере. Цитата Второй вопрос, судя по всему предполагается квантование сигнала в формате s3.0, но в таком случае диапазон чисел -8...+7, т.е. при кодировании 6/7, они ставят созвездие почти в насыщение квантователя. В чем тайный смысл сего действа ? На счет 3.0 vs 2.1 - если рассмотреть алгоритм MAXLOG-MAP, то он не чувствителен к постоянному множителю в канальных LLR, т.е. суть вопроса от меня ускользает - можно отскалить вход как это будет удобно. Именно поэтому при реализации смело плюют на a/sigma^2 в знаменателе канальных LLR, если диспресия шума постоянна на кодовом блоке. Давай теперь перейдем к квантованию. Сначала проще ограничение на входе рассмотреть. Мой опыт говорит, что ограничение на входе декодера полезно даже без квантования. Фактически оно приводит к тому, что в декодер попадает меньше шума, экстремальные всплески которого просто срезаются ограничителем. Я обычно выбираю уровень ограничения, равный a+(1.5...2)*sigma. a/sigma - худший рабочий SNR декодера. Авторы рекомендаций используют мало уровней квантования, так что им нужно сбалансировать шум квантования и шум от ограничения динамического диапазона входа ограничителем. Для больших скоростей они посчитали, что дисперсия шума на входе будет меньше (рабочая точка декодера смещается вправо по шкале SNR) и потому решили сузить динамический диапазон относительно +/- a и уменьшить шум квантования малых LLR. Видимо, провели моделирование какое-то, чтобы подтвердить результаты.
|
|
|
|
|
Jan 27 2015, 05:52
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(andyp @ Jan 27 2015, 00:54)  Т.е. это математически это все равно - скалить сигнал на входе или созвездие в демаппере. ... суть вопроса от меня ускользает - можно отскалить вход как это будет удобно. Согласен с вами во всем, похоже вопрос задал не совсем понятно. Задам с графическим материалом. На рисунке qpsk - классический QPSK, с точками {4,4} и SNR 5дб, по стандарту так должно быть отмасштабировано созвездие для кодирования 1/2. На рисунке qpsk_sat тоже созведие, но после ограничения диапазона [-8,7]. Видно что такое ограничение не особо критично. На рисунке qpsk_6by7 созвездие перед ограничением отмасштабировано с коэффициентом (6/7)/(1/2). Видно что большая часть точек, ушла в зону ограничения. Это я и назвал термином "насыщение квантователя". Т.е. большую часть статистической информации тупо выкинули. Цитата что ограничение на входе декодера полезно даже без квантования. Да, вы про это уже писали. Возражений тут никаких, единственное что уровень ограничения в ПЛИС я делаю меньше, т.е. для QAM16 с уровнями 1 и 3, беру 2 бита запаса в сигнале в ару и перед декодированием ограничиваю по уровню 4, мне так проще в ПЛИС. Цитата Видимо, провели моделирование какое-то, чтобы подтвердить результаты. Похоже что вы правы, сам не додумался. ИМХО это сильно на шаманство похоже. Вырезать актуальную информацию из канала, вместо того что бы 1 бит в метрику накинуть или нелийнейное квантование сделать.
Эскизы прикрепленных изображений
--------------------
|
|
|
|
Сообщений в этой теме
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   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 7 2015, 03:14) В прило... Feb 7 2015, 16:34 andyp Цитата(des00 @ Feb 7 2015, 19:34) самое з... Feb 8 2015, 08:59  des00 Цитата(andyp @ Feb 8 2015, 16:59) Проблем... Feb 9 2015, 05:27   andyp Цитата(des00 @ Feb 9 2015, 08:27) Попутно... Feb 9 2015, 09:48    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 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|