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

Подсчет LLR двух бит данных с учетом третьего контрольного

34 minutes ago, gegel said:

Это именно то, что мне нужно. Но, если можно, дайте ссылку или скажите, как это сделать в данном конкретном случае (с тремя битами).

вроде указал в какой книге по кодированию это рассмотрено и какой алгоритм. Алгоритм распространения доверия используется для декодирования LDPC.

С атачами проблема на форуме, поищите статью Iterative  Decoding  of  Binary Block  and  Convlutional  Codes Joachim  Hagenauer,  Fellow,  ZEEE,  Elke  Offer,  and  Lutz  Papke

там рассмотрен 2D турбокод на основе кодов проверки на четность на 2 бита данных и 1 бит четности.

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


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

Обдумал посты Милливольта о подсчете 4-х суммарных корреляционных коэффициентов для возможных комбинаций бит с учетом XOR, и des00 о передачей доверия. Получается где-то так:

k0, k1, kс - входные корреляционные коэффициенты для двух информационных и контрольного битов
LLR0, LLR1 - искомые выходные LLR двух информационных битов

Возможные варианты комбинаций битов с учетом XOR и их суммарные коэффициенты (это не совсем идеально, как в варианте с полной корреляцией в предложении Милливольта, но по сути то же):

00 0    a=-k0-k1-kc     
10 1    b=k0-k1+kc
01 1   c=-k0+k1+kc
11 0   d=k0+k1-kc

Позитивные (бит входит в комбинацию) и негативные (бит не входит в комбинацию)  вероятности для информационных битов 0 и 1:

p1 = MAX(c,d)
n1 = MAX(a,b)
p0 = MAX(b,d)
n0 = MAX(a,c)

где MAX - функция Max-log апроксимации через Якобиановский логарифм (или в крайнем случае просто максимальное значение из двух аргументов с учетом знака)

LLR0 = p0-n0
LLR1 = p1-n1
 

Вопрос больше к des00:  вы это имели в виду?

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


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

19 hours ago, gegel said:

Вопрос больше к des00:  вы это имели в виду?

Не совсем это. Если я правильно понял указанный вывод, вы учли только "внешнюю" (extrinsic) информацию, накладываему кодом. Но не учли канальную метрику самого бита. Название статьи я привел, вторая ссылка с яндекса http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=1754371172EC5911DAFDF1176130A4B5?doi=10.1.1.65.7007&rep=rep1&type=pdf  раздел C.  Principle  of  Iterative  Decoding  Algorithms -> Tutorial  Example  with  the  (3,2,2)  Single  Parity  Check Code  as  Component  Code:

там есть пример как вычислить метрику битов, с учетом канальной метрики и метрики кода (extrinsic)

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


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

Спасибо, просмотрел. Но, как Вы верно заметили в предыдущем посту, у меня предполагалось что-то типа каскадного кода. На сколько я понял, статья относится к вашему замечанию о возможности уточнить метрику пары в самом турбодекодере, и для этого нужно немного поправить калькулятор расчета метрик в декодере. Исходники турбо-декодера есть, но нету соответствующего скилла и, главное, времени его нарабатывать. Поэтому выбор и пал на каскадный вариант с готовым турбокодом. 

Но интересно другое: базируясь на моих вышеприведенных рассуждениях и школьной арифметике, вывел простые формулы получения LLR информационных бит (без  MAX-log аппроксимации, используя максимальное значение):

LLR0 = 2*k0+abs(k1-kc)-abs(k1+kc);   LLR1 = 2*k1+abs(k2-kc)-abs(k2+kc);

На первый взгляд выглядит идеально, возвращая скорректированные LLR при ошибке четности, и нулевые в неопределенной ситуации (когда две входящие метрики совпадают при ошибке четности).

Но на практике при подаче на турбодекодер дает результат хуже, чем способ, предложенный в самом начале Grizzly: просто инвертировать метрику информационного бита при ошибке четности. Так что в моих рассуждениях где-то фундаментальная ошибка.

 

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


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

Во-первых, хочу признать, что был неправ по поводу коррекции LLR :dash2:

@gegel а как вы получили такие аппроксимации, как в последнем сообщении? В предыдущих ваших выкладках всё правильно. Произведение вероятностей заменяются на суммы при работе с LLR, а дальше Якобиан или max-аппроксимация. Не совсем понял, откуда появились модули.

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


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

3 hours ago, gegel said:

 

Но на практике при подаче на турбодекодер дает результат хуже, чем способ, предложенный в самом начале Grizzly: просто инвертировать метрику информационного бита при ошибке четности. Так что в моих рассуждениях где-то фундаментальная ошибка.

 

А проверяли ли Вы коррелятор? Может быть, не фундаментальная. а обычная ошибка?

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

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


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

6 hours ago, Grizzly said:

Во-первых, хочу признать, что был неправ по поводу коррекции LLR :dash2:

@gegel а как вы получили такие аппроксимации, как в последнем сообщении? В предыдущих ваших выкладках всё правильно. Произведение вероятностей заменяются на суммы при работе с LLR, а дальше Якобиан или max-аппроксимация. Не совсем понял, откуда появились модули.

Так вот в том и проблема, что теоретически неверно, но на практике работает лучше, чем то, что верно. Но всему есть причина, буду копать глубже.

Формулы получил, рассуждая следующим образом (с самого начала):
четыре верных варианта комбинации двух информационных и контрольного бита и их общие корреляционные коэффициенты как сумма коэффициентов индивидуальных бит, взятая с соответствующим знаком:

k0 k1 kc
0    0    0      a=-k0-k1-kc
0    1    1      b=-k0+k1+kc
1    0    1      c=k0-k1+kc
1    1    0      d=k0+k1-kc

Если искомый бит входит в комбинацию, добавляем его в положительную вероятность, если не входит, то в отрицательную. Самой грубым вариантом сложения вероятностей есть MAX, т.е. выбор большего значения из двух с учетом знака: 

p0 = MAX(c,d)     n0 = MAX(a,b)     llr0 = p0-n0
p1 = MAX(b,d)     n0 = MAX(a,c)     llr1 = p1-n1

Распишем, например, для бита 0:

p0 = k0-k1+kc или k0+k1-kc (большее).     Вынесем k0:  k0-(k1-kc) или k0+(k1-kc)
n0 = -k0-k1-kc или -k0+k1+kc (большее).   Вынесем -k0: -k0-(k1+kc) или -k0+(k1+kc)

Как видно, выражения справа отличаются знаком части в скобках. Поэтому максимальным из двух будет то, у которого велична в скобках максимальная. А так как она отличается знаком, то, соответственно, максимальным будет то выражение, у которого величина в скобках положительная. (функция MAX сравнивает с учетом знака!).

Т.е. можно переписать так:

p0 = k0+abs(k1-kc)  n0=-k0+abs(k1+kc),      откуда LLR0 = p0-n0 = 2*k0+abs(k1-kc)-abs(k1+kc)

Аналогично для LLR1. Возможно, где-то я и ошибся, может, поправят добрые люди...

4 hours ago, Милливольт said:

А проверяли ли Вы коррелятор? Может быть, не фундаментальная. а обычная ошибка?

Скажите - как, проверю :)   Коррелирую, конечно, не с  наработанным паттерном сигнала, а с чистым синусом (для когерентной BPSK). Т.к. синус симметричный, то все сводится к k = s0+2*s1+s2-s3-2*s4-s5 ( у меня для облегчения жизни используется точно 6 АЦП сэмплов на период несущей, и они кодируют один бит). Именно это k и используется в формулах выше.

Это верно?

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


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

1 hour ago, gegel said:

Коррелирую, конечно, не с  наработанным паттерном сигнала, а с чистым синусом (для когерентной BPSK). Т.к. синус симметричный, то все сводится к k = s0+2*s1+s2-s3-2*s4-s5 ( у меня для облегчения жизни используется точно 6 АЦП сэмплов на период несущей, и они кодируют один бит). Именно это k и используется в формулах выше.

Это верно?

Ну да, для нормированной R синус с синусом должен дать +1,0, синус с противофазным синусом -1,0, синус с косинусом - 0. Реальные, понятно, около 0.98 или что-то вроде.

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


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

@gegel то есть даже формулы, которые с MAX, а не abs, дают худший результат по сравнению со сменой знака менее надёжного решения?

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

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


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

Кстати, а что происходит с "жёсткими" решениями после разных коррекций LLR? И какая модель канала?

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


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

21 hours ago, gegel said:

Спасибо, просмотрел. Но, как Вы верно заметили в предыдущем посту, у меня предполагалось что-то типа каскадного кода. На сколько я понял, статья относится к вашему замечанию о возможности уточнить метрику пары в самом турбодекодере, и для этого нужно немного поправить калькулятор расчета метрик в декодере. Исходники турбо-декодера есть, но нету соответствующего скилла и, главное, времени его нарабатывать. Поэтому выбор и пал на каскадный вариант с готовым турбокодом. 

Хммм.....В статье указан пример двух кодов проверки на четность. Рассмотрим эту статью. Рассмотрим ту строку, которая с ошибкой. Правило кодирования из статьи 0/1 -> +1/-1.

Кодирование: данные 01 -> четность 1 -> кодовое слово 011

Канальные метрики на входе декодера проверки на четность: 4.0, 1.0, -1.5. Т.е. ошибка во втором бите данных. Вероятность говорит что это слабый ноль. 

Используем сложение вероятностей, получем внешние метрики(экстринсики) для битов данных -1,0, -1.5. Формула приведена в статье Lextr(u XOR p) = sign(u)*sign(p)*min(|u|,|p|).

Используем то что дал код и уточняем метрики битов : 3.0, -0.5. Т.е. метрика второго бита, стала очень слабая единица (положим дискрет метрики 0.5). Метрика первого бита, была очень сильный ноль, стала сильный ноль. (т.е. ошибка уже тут исправилась).

И вот это, уже подать на вход турбодекодера.

ЗЫ. Как вы заметили, произошло перераспределение вероятностей метрик, та что была очень сильной стала слабее, но та что была слабой, стала сильнее. Это однопроходное декодирование. в 2Д декодерах потом уточняют другими проходами и метрики там растут в очень сильные, если декодер сходится)

ЗЗЫ.Кстати это аналог инверсии жесткого решения слабого бита, что у вас работает лучше). Турбодекодеру не сильно принципиально это) можно даже попробовать стирать слабые метрики в словах, где четность не совпадает. Декодер это прожует)

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


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

Grizzly

И какая модель канала?

Хороший вопрос. Насколько я понял, канал - речевой кодек с потерей пакетов типа GSM. Т. е. все эти методы модуляции и кодирования для традиционных модемов для каналов с линейными искажениями и АБГШ бессмысленно использовать. Нужно кумекать над ансамблем сигналов, которые хорошо на выходе кодека разделяются, над кодированием и синхронизацией которые устойчивы к вырезанию части сигнала во времени т. п.

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


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

1 hour ago, petrov said:

Grizzly

И какая модель канала?

Хороший вопрос. Насколько я понял, канал - речевой кодек с потерей пакетов типа GSM. Т. е. все эти методы модуляции и кодирования для традиционных модемов для каналов с линейными искажениями и АБГШ бессмысленно использовать. Нужно кумекать над ансамблем сигналов, которые хорошо на выходе кодека разделяются, над кодированием и синхронизацией которые устойчивы к вырезанию части сигнала во времени т. п.

Вы совершенно, т.е. абсолютно правы! Этот канал никак гауссовыми моделями не описывается (и непонятно, какими может быть строго описан вообще). Наша фирма имеет 16 летний опыт передачи через этот канал собственным кодеком, передается около 100000 (NB!) цифровых электрокардиограмм в год. Дело шло очень тяжело, в процессе разработки два раза меняли тип модуляции, бессчетно - кодирование. Но у ув. gegel свой модем, который имеет (на мой взгляд) хорошие перспективы, однако у него и требования к выходному BER несколько выше. И именно ансамбль сигналов, как Вы выражаетесь, действительно определяет успех/неуспех.

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


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

2 часа назад, Милливольт сказал:

Вы совершенно, т.е. абсолютно правы! Этот канал никак гауссовыми моделями не описывается (и непонятно, какими может быть строго описан вообще). Наша фирма имеет 16 летний опыт передачи через этот канал собственным кодеком, передается около 100000 (NB!) цифровых электрокардиограмм в год. Дело шло очень тяжело, в процессе разработки два раза меняли тип модуляции, бессчетно - кодирование. Но у ув. gegel свой модем, который имеет (на мой взгляд) хорошие перспективы, однако у него и требования к выходному BER несколько выше. И именно ансамбль сигналов, как Вы выражаетесь, действительно определяет успех/неуспех.

Дык, есть же практически готовые решения. Ecall, например.

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


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

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

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

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

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

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

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

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

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

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