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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> bit log-likelihood ratio, Вычислить LLR каждого бита DQPSK
sergvks
сообщение Jul 15 2008, 06:24
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117



На входе имеется DQPSK сигнал, как правильно посчитать log-likelihood ratio для каждого бита в символе ?
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jul 15 2008, 10:20
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(sergvks @ Jul 15 2008, 10:24) *
На входе имеется DQPSK сигнал, как правильно посчитать log-likelihood ratio для каждого бита в символе ?

Не знаю что такое DQPSK, для QPSK с созвездием вида
00 01

10 11

llr битов кажется пропорционален вещественной (мнимой) части принятого символа.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
sergvks
сообщение Jul 15 2008, 18:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117



Цитата(alex_os @ Jul 15 2008, 14:20) *
Не знаю что такое DQPSK


Имеется ввиду pi/4 dqpsk.

В случае BPSK если не ошибаюсь

для Binary Symmetric Channel (BSC):
lratio = bsc_data==1 ? (1-error_prob) / error_prob : error_prob / (1-error_prob);

для Additive White Gaussian Noise (AWGN) :
lratio = exp(2*awn_data/(NoiseDev*NoiseDev));

А вот как быть с pi/4 dqpsk и с реальным сигналом, когда заранее при приёме символа неизвестна ни вероятность ошибки, ни уровень шума в канале не совсем понятно.

ЗЫ
В более общем случае нужна функция, которая по точкам на комплексной плоскости будет вычислять LLR для отдельных битов КАМ-созвездия.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jul 16 2008, 06:09
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(sergvks @ Jul 15 2008, 22:05) *
для Additive White Gaussian Noise (AWGN) :
lratio = exp(2*awn_data/(NoiseDev*NoiseDev));

Похоже тут exp лишняя. Для BPSK, если мы приняли символ y, llr есть отношение условных вероятностей:
Код

          llr = ln{ P(bit==1| y) /  P(bit==0| y) } = ln{ p(y|bit==1) / p(y|bit==0) } = 2*y/NoiseDisp  
          где
          p(y|bit==1) = exp(- (y - 1)^2/(2*NoiseDisp) ) - условная плотность вероятности, т.е.
          распределение   y при условии что была передана 1 (подразумевается, что при отсутствии
          шума  при     передаче бита '1' мы видим y=1 при передаче,  при '0' y = -1   )
  
           NoiseDisp - дисперсия шума.
          
            P(bit==1| y) =  P(bit==1)*p(y|bit==0) / P(y) - известная формула Байеса.


Цитата(sergvks @ Jul 15 2008, 22:05) *
А вот как быть с pi/4 dqpsk и с реальным сигналом, когда заранее при приёме символа неизвестна ни вероятность ошибки, ни уровень шума в канале не совсем понятно.



из формулы выше видно что llr пропорционален сигналу на выходе согласованного фильтра и обратно пропорционален отношению сигнал \шум (snr), здесь подразумевается что мощность сигнала = 1. Т.е
snr это общий масштабный множитель который ни на что не влияет. В практических приложениях важно знать какой бит был передан (т.е знак llr) а не вероятности нуля или единицы. Кормите этими
llr например декодер витерби или там max-log-map декодер внутри которых llr просто суммируются, т.е.
snr можно вынести за скобки smile.gif. В dqpsk меня смущает букофка d которая часто обозначает дифференциальное кодирование, можно конечно вывести формулу для llr qpsk c дифф кодированием, и llr будет зависеть еще от предидущего принятого символа, но ИМХО практической ценности это не
представляет..

Цитата(sergvks @ Jul 15 2008, 22:05) *
В более общем случае нужна функция, которая по точкам на комплексной плоскости будет вычислять LLR для отдельных битов КАМ-созвездия.

Для кам точно выражение для llr будет весьма громоздкое, и от snr так легко отделаться не удастся,
в некотором приближении для кам можно считать
llr = abs(y - C0)^2 - abs(y-C1)^2,
C0 - ближайшая точка созвездия где нужный бит=0,
C1 - ближайшая точка созвездия где нужный бит=1

зы где-то у меня валяется кусок классной книжки от Hanzo про FEc, попозже поищу и выложу на фтп.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
petrov
сообщение Jul 16 2008, 06:54
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(alex_os @ Jul 16 2008, 10:09) *
зы где-то у меня валяется кусок классной книжки от Hanzo про FEc, попозже поищу и выложу на фтп.


Полная:

Turbo Coding, Turbo Equalisation and Space-Time Coding for Transmission over Wireless Channels
L. Hanzo, T. H. Liew, B. L. Yeap

http://mihd.net/fbrz90/__cf34f7c__via_gigapedia.info__.html
Go to the top of the page
 
+Quote Post
sergvks
сообщение Jul 16 2008, 07:15
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117



Сейчас жёсткое декодирование осуществляется дифференциальным методом:
bit0 = (I[n-1]*Q[n]-Q[n-1]*I[n])>0;
bit1 = (I[n-1]*I[n]+Q[n-1]*Q[n])>0;
Т.е. значение бита определяется знаком выражения в скобках. Поэтому вопрос сводится к тому что надо сделать с этими выражениями, чтобы правильно работали эти самые декодер витерби или там max-log-map декодер.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jul 16 2008, 09:39
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(sergvks @ Jul 16 2008, 11:15) *
Сейчас жёсткое декодирование осуществляется дифференциальным методом:
bit0 = (I[n-1]*Q[n]-Q[n-1]*I[n])>0;
bit1 = (I[n-1]*I[n]+Q[n-1]*Q[n])>0;
Т.е. значение бита определяется знаком выражения в скобках. Поэтому вопрос сводится к тому что надо сделать с этими выражениями, чтобы правильно работали эти самые декодер витерби или там max-log-map декодер.

Вообще в правильных системах дифференциальное декодирование делают после FEC декодера а еще лучше чтобы вообще не было дифференциального. В конкретно случае Вы можете вполне честно считать
что
llr_bit0 = (I[n-1]*Q[n]-Q[n-1]*I[n]), llr_bit1 = (I[n-1]*I[n]+Q[n-1]*Q[n]);
Интересно что за протокол такой передачи данных?
Еще можно попытаться восстановить несущую + 1.5 дб.. 2 дб это даст.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
sergvks
сообщение Jul 17 2008, 05:49
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117



Вообще то я немного неправильно написал - это не декодирование, а демодуляция (это не протокол, а вид модуляции используется в системах связи TETRA, APCO25, DAMPS). То что когерентный приём даёт выигрыш в 1-2 дб я в курсе. Т.к. в TDMA системах размер кадра сравнительно мал, когерентный практически не используется.

Цитата(alex_os @ Jul 16 2008, 13:39) *
В конкретно случае Вы можете вполне честно считать что
llr_bit0 = (I[n-1]*Q[n]-Q[n-1]*I[n]), llr_bit1 = (I[n-1]*I[n]+Q[n-1]*Q[n]);


В данный момент я так и делаю, просто мне необходимо знать насколько это корректно.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jul 17 2008, 17:33
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(sergvks @ Jul 17 2008, 09:49) *
Вообще то я немного неправильно написал - это не декодирование, а демодуляция (это не протокол, а вид модуляции используется в системах связи TETRA, APCO25, DAMPS). То что когерентный приём даёт выигрыш в 1-2 дб я в курсе. Т.к. в TDMA системах размер кадра сравнительно мал, когерентный практически не используется.
В данный момент я так и делаю, просто мне необходимо знать насколько это корректно.

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


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
furymaxx
сообщение Jul 17 2008, 17:40
Сообщение #10


Участник
*

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



Цитата(alex_os @ Jul 17 2008, 21:33) *
Ну наверняка есть или пилоты или преамбула, ловите их и используете когерентный. Еще раньше попадалось куча статей , где для демодуляции дифференциальной psk решение принималось на по двум символам а по нескольким, я сам правда не пробовал такое делать, может кто-нибудь здесь скажет что-нибудь умное по этому поводу...


Можно хотя бы примерные названия статей?
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jul 17 2008, 19:37
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(furymaxx @ Jul 17 2008, 21:40) *
Можно хотя бы примерные названия статей?

примерно
искать гуглом DQPSK detection multiple symbol


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
sergvks
сообщение Jul 18 2008, 06:00
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117



Цитата(alex_os @ Jul 17 2008, 21:33) *
Ну наверняка есть или пилоты или преамбула, ловите их и используете когерентный. Еще раньше попадалось куча статей , где для демодуляции дифференциальной psk решение принималось на по двум символам а по нескольким, я сам правда не пробовал такое делать, может кто-нибудь здесь скажет что-нибудь умное по этому поводу...

Дело в том что это радиоканал и для когерентного приёма необходимо подстраивать гетеродин приёмника, например, в спутниковом канале идёт сплошной поток данных и подстроить фазу нет проблем, а здесь время передачи кадра порядка десятка мс и как в этом случае сделать когерентный приём на AD9874 лично я не представляю, если кто научит, буду очень рад.
Go to the top of the page
 
+Quote Post
petrov
сообщение Jul 18 2008, 08:36
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(sergvks @ Jul 18 2008, 10:00) *
Дело в том что это радиоканал и для когерентного приёма необходимо подстраивать гетеродин приёмника, например, в спутниковом канале идёт сплошной поток данных и подстроить фазу нет проблем, а здесь время передачи кадра порядка десятка мс и как в этом случае сделать когерентный приём на AD9874 лично я не представляю, если кто научит, буду очень рад.


Используйте feed-forward методы синхронизации, примеры здесь:
http://electronix.ru/forum/index.php?showtopic=23652
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jul 18 2008, 09:51
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(sergvks @ Jul 18 2008, 10:00) *
Дело в том что это радиоканал и для когерентного приёма необходимо подстраивать гетеродин приёмника, например, в спутниковом канале идёт сплошной поток данных и подстроить фазу нет проблем, а здесь время передачи кадра порядка десятка мс и как в этом случае сделать когерентный приём на AD9874 лично я не представляю, если кто научит, буду очень рад.

А зачем Вам гетеродин дергать? В цифре фазу несущей и доворачивайте, как нужно. Главное чтобы сигнал в полосу приемника пролез без искажений и при оцифровке наложений не было...


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
furymaxx
сообщение Jul 18 2008, 16:16
Сообщение #15


Участник
*

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



Цитата(alex_os @ Jul 17 2008, 23:37) *

Спасибо.
Еще вопрос: является ли это
llr_bit0 = (I[n-1]*Q[n]-Q[n-1]*I[n]), llr_bit1 = (I[n-1]*I[n]+Q[n-1]*Q[n])
именно логарифмическим отношением правдоподобия?
Go to the top of the page
 
+Quote Post

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

 


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


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