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

 
 
> Вопросы по итеративному декодированию, Реализация 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
сообщение Jan 26 2015, 06:45
Сообщение #2


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

Группа: Модераторы
Сообщений: 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, они ставят созвездие почти в насыщение квантователя. В чем тайный смысл сего действа ?


--------------------
Go to the top of the page
 
+Quote Post
andyp
сообщение Jan 26 2015, 16:54
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 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. Видимо, провели моделирование какое-то, чтобы подтвердить результаты.
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 27 2015, 05:52
Сообщение #4


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

Группа: Модераторы
Сообщений: 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 бит в метрику накинуть или нелийнейное квантование сделать.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
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
|- - 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 страниц V   1 2 3 >


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

 


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


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