Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QPSK: проблема: поворачивается созвездие
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
maxfox2k
уважаемый all,
собственно subj

исходные данные:
carrier: 900-1500 mhz, подстраивается с минимальным шагом 100 hz, не используем цифровой AFC
используем maxim tuner, у него выход сразу baseband

QPSK 128k symb/s (oversampling 4), непрерывный поток без синхронизации (синхронизация производится по данным)

используем tanlock loop как в незами (fig. 3-23, p 3-36), только правильно будет atan2(q/i) и Ki, Kp перепутаны.
Ki 0.04, Kp 0.4
все расчеты производятся с 12 бит integer (достаточная ли точность для этого способа?)

на незашумлённых сигналах (с генератора и реального передатчика по кабелю) работает вообще без ошибок на pn9.
на сигнале с генератора средняя ошибка после timing recovery около 4х градусов
на сигнале от передатчика около 7 градусов
timing recovery примерно как в незами (p 4-6)

при добавлении шума созвездие начинает довольно часто поворачивается.
в чем может быть причина?

еще одна странная особенность. если carrier и local достаточно близки то ошибки происходят гораздо чаще.
поэтому сейчас, используя информацию из dco держим разность около 500hz
fontp
Наверно, если при добавлении шума поворачивается, то происходит потеря синхронизации ФАПЧ. Шумовая полоса правильная?
Точно все К перепутаны? :-)

Как это обнаружилось? Если просто так лучше работает когда шума нет - то это ошибка. Шумовая полоса выбирается, чтобы отслеживать фазу невзирая на шум
maxfox2k
Цитата(fontp @ Jun 7 2008, 10:33) *
Наверно, если при добавлении шума поворачивается, то происходит потеря синхронизации.

я это и написал.
а вот почему?

Цитата(fontp @ Jun 7 2008, 10:33) *
Шумовая полоса правильная?

да

Цитата(fontp @ Jun 7 2008, 10:33) *
Точно все К перепутаны? :-)

p. 3-13
petrov
Не ту схему выбрали, эта схема для синусоидального сигнала без модуляции. Моделировать надо тщательно до железок в том числе и конечные разрядные сетки, вероятность того что теоритические вопросы в железке решите к нулю стремится.
maxfox2k
Цитата(petrov @ Jun 7 2008, 11:39) *
Не ту схему выбрали, эта схема для синусоидального сигнала без модуляции.

чего-чего? smile.gif
petrov
Цитата(maxfox2k @ Jun 7 2008, 13:04) *
чего-чего? smile.gif


Чего-чего, читайте абзац на странице 3-33 сразу под фигурой 3-22.
maxfox2k
Цитата(petrov @ Jun 7 2008, 12:11) *
Чего-чего, читайте абзац на странице 3-33 сразу под фигурой 3-22.

а, понял.
вот точнее что у нас
мы поворачиваем только символы перед демапером.
но принцип такои же, как и в книге. выше я написал, что мы работаем уже с baseband
сорри, если непонятно написал
petrov
Цитата(maxfox2k @ Jun 7 2008, 13:27) *
а, понял.
вот точнее что у нас
мы поворачиваем только символы перед демапером.
но принцип такои же, как и в книге. выше я написал, что мы работаем уже с baseband
сорри, если непонятно написал


Ну так загоните вашу схему в симулинк, промоделируйте воздействия все, конечные разрядные сетки, потом останется только перенести это в FPGA.
maxfox2k
Цитата(petrov @ Jun 7 2008, 13:03) *
Ну так загоните вашу схему в симулинк, промоделируйте воздействия все, конечные разрядные сетки, потом останется только перенести это в FPGA.

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

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

так что если есть какие идеи...
кстати, в среднем +/- 7 градусов ошибка после входного LP фильтра и timing recovery это нормально или много?
maxfox2k
неужели в железе никто не делает, толко симулируете?
petrov
Цитата(maxfox2k @ Jun 9 2008, 18:24) *
неужели в железе никто не делает, толко симулируете?


С чего такие выводы? Откуда нам знать где у вас ошибка, всё что угодно может быть.
maxfox2k
Цитата(petrov @ Jun 9 2008, 18:17) *
С чего такие выводы? Откуда нам знать где у вас ошибка, всё что угодно может быть.

ну а про битность и среднюю ошибку?

по идее ber должен быть как у bpsk, а в практике на 10 snr хуже, используя ту же pll.
да и если бы подобное кто делал, скорее всего сталкивается с подобными проблемами.
petrov
Цитата(maxfox2k @ Jun 9 2008, 20:20) *
ну а про битность и среднюю ошибку?

по идее ber должен быть как у bpsk, а в практике на 10 snr хуже, используя ту же pll.
да и если бы подобное кто делал, скорее всего сталкивается с подобными проблемами.


Для представления коэффициентов ваших достаточно, только сами коэффициенты сомнение вызывают.
У вас там вроде 4 отсчёта на символ было, конечно будет размазано сигнальное созвездие на приёме. Все эти вопросы решаются до железок, в модели будет видно как размазано всё будет из-за ошибок синхронизации. Теоритической BER можно достигнуть только при идеальной синхронизации, на практике конечно хуже получается. Вообще не корректные вопросы, нормально-ненормально, лучше-хуже, относительно чего? Может и нормально для ваших полос в ФАПЧ, в фильтре символьного синхронизатора и прочего. Какой там Eb/N0 с вашего передатчика идёт, какие там наводки у вас на плате и фазовые шумы гетеродинов, чёрт его знает.
maxfox2k
Цитата(petrov @ Jun 9 2008, 19:57) *
Для представления коэффициентов ваших достаточно, только сами коэффициенты сомнение вызывают.
У вас там вроде 4 отсчёта на символ было, конечно будет размазано сигнальное созвездие на приёме. Все эти вопросы решаются до железок, в модели будет видно как размазано всё будет из-за ошибок синхронизации. Теоритической BER можно достигнуть только при идеальной синхронизации, на практике конечно хуже получается. Вообще не корректные вопросы, нормально-ненормально, лучше-хуже, относительно чего? Может и нормально для ваших полос в ФАПЧ, в фильтре символьного синхронизатора и прочего. Какой там Eb/N0 с вашего передатчика идёт, какие там наводки у вас на плате и фазовые шумы гетеродинов, чёрт его знает.

проблема оказалась в symbol timing детекторе. перестает работать при ebn0 9 для qpsk. для bpsk работает до ebn0 7.
какой способ работает лучше при сильных шумах?

не знаю, может в умных книжках где и написано, но pn9 для bpsk и bbpsk одинаковые, только смещены на 129 бит, а я думал генератор поломался...
fontp
Цитата(maxfox2k @ Jun 13 2008, 16:25) *
проблема оказалась в symbol timing детекторе. перестает работать при ebn0 9 для qpsk. для bpsk работает до ebn0 7.
какой способ работает лучше при сильных шумах?

не знаю, может в умных книжках где и написано, но pn9 для bpsk и bbpsk одинаковые, только смещены на 129 бит, а я думал генератор поломался...


да вроде работает символьная для QPSK и не только для 9 но и для 3 дб
лучше использовать для огибающей AVR |I| + |Q| или даже ||I|-|Q||,
a не I*I+Q*Q чтобы не плодить шум
c другой стороны последнее совсем не зависит от смещения несущей, а первые только в небольшом диапазоне
Это если feedforward по Oerder и Meyr.

а если feedback то только Gardner
petrov
Цитата(maxfox2k @ Jun 13 2008, 16:25) *
проблема оказалась в symbol timing детекторе. перестает работать при ebn0 9 для qpsk. для bpsk работает до ebn0 7.
какой способ работает лучше при сильных шумах?


Это вы в модели выяснили? Если в железке то может намеряли не правильно.
При таких шумах любой должен работать, использую приближённую формулу модуля комплексного числа max(|I|,|Q|)+0.25*min(|I|,|Q|).

Цитата(maxfox2k @ Jun 13 2008, 16:25) *
не знаю, может в умных книжках где и написано, но pn9 для bpsk и bbpsk одинаковые, только смещены на 129 бит, а я думал генератор поломался...


чёта не понял ничего
maxfox2k
как правильно практически померять eb/n0?

а то используя разные источники формул и разные спектруманализаторы получается от 14 до -25 для одного и того же цигнала и шума smile.gif
petrov
Цитата(maxfox2k @ Jun 26 2008, 08:58) *
как правильно практически померять eb/n0?

а то используя разные источники формул и разные спектруманализаторы получается от 14 до -25 для одного и того же цигнала и шума smile.gif


С помощью модели снимите зависимость EVM от eb/n0, и в железке EVM считайте, только конечно в EVM будет входить и МСИ и фазовое дрожание гетеродина и т. д.
maxfox2k
Цитата(petrov @ Jun 26 2008, 10:40) *
С помощью модели снимите зависимость EVM от eb/n0, и в железке EVM считайте, только конечно в EVM будет входить и МСИ и фазовое дрожание гетеродина и т. д.

вы наверное не поняли вопрос. я имел ввиду как померять в кабеле?
есть генератор, шумогенератор и спектрум-анализатор.
и какую формулу исползовать?
petrov
Цитата(maxfox2k @ Jun 26 2008, 11:48) *
вы наверное не поняли вопрос. я имел ввиду как померять в кабеле?
есть генератор, шумогенератор и спектрум-анализатор.
и какую формулу исползовать?


Без измерителя мощности наверное не обойтись, для того чтобы мощность сигнала померить . N0 померяете с помощью спектроанализатора. Зная мощность сигнала, длительность символа и количество бит на символ, посчитаете Eb и поделите на N0.

Или вы хотите в кабеле прямо по сумме сигнала и шума оценить? Берёте модель, считаете спектр и смотрите как уровень сигнала и уровень шума вне полосы от Eb/N0 зависит, то же самое смотрите на спектроанализаторе.
maxfox2k
тобиш есть формула
cnr = ebn0 + 10lg(f/b) => ebn0 = cnr - 10lg(f/b)

cnr - разность уровня несущеи и шума. но тут вопрос, несущую надо мерять без шума или с шумом? noize/1Hz?
f - data rate, в нашем случае 256k, но т.к. используется fec 1/2, то будет ли правильно померять для 128k?
b - channel bandwidth, тут тоже непонятки, в одном источнике, для qpsk b=f, для bpsk b=2f, это правильно?

Цитата(petrov @ Jun 26 2008, 11:05) *
Без измерителя мощности наверное не обойтись, для того чтобы мощность сигнала померить . N0 померяете с помощью спектроанализатора. Зная мощность сигнала, длительность символа и количество бит на символ, посчитаете Eb и поделите на N0.

т.е. power meter'ом отдельно померять уровень передатчика, отдельно шумогенератора?
дальше по какой формуле считать?
fontp
Цитата(maxfox2k @ Jun 26 2008, 12:19) *
т.е. power meter'ом отдельно померять уровень передатчика, отдельно шумогенератора?
дальше по какой формуле считать?


Все формулы и таблицы
maxfox2k
Цитата(fontp @ Jun 26 2008, 11:31) *
Все формулы и таблицы

спасибо.

1.не можете ли пояснить расчет (C+N)/N?
например для цифр:
несущая -64.4 dBm
шум -128.5 dBm/1Hz

2. заинтересовали -3dB для qpsk
нужно ли в формуле ebn0 = cnr - 10lg(256к) еще вычесть 3dB для qpsk?
fontp
Цитата(maxfox2k @ Jun 26 2008, 14:17) *
спасибо.

1.не можете ли пояснить расчет (C+N)/N?
например для цифр:
несущая -64.4 dBm
шум -128.5 dBm/1Hz

2. заинтересовали -3dB для qpsk
нужно ли в формуле ebn0 = cnr - 10lg(256к) еще вычесть 3dB для qpsk?


Какие цифры? Они измеряют (С+N) и N линейкой на экране спектроанализатора,
как уровни максимума сигнала и шумовой дорожки. Это величины, измеряемая непосредственно в канале, остальные цифры для наблюдения недоступны.

Именно то, что получается в результате пересчёта светится на дисплее модема и в спецификациях
maxfox2k
Цитата(fontp @ Jun 26 2008, 13:23) *
Какие цифры? Они измеряют (С+N) и N линейкой на экране спектроанализатора,
как уровни максимума сигнала и шумовой дорожки. Это величины, измеряемая непосредственно в канале, остальные цифры для наблюдения недоступны

аналогично.
но после формулы C/N=10*LOG10(10^(((-64.4-128.5)/-128.5)/10)-1)=-3.8 dBm
и если вычесть 3 dbm для qpsk, получается ebn0=-6.8 для демапера
fontp
Цитата(maxfox2k @ Jun 26 2008, 14:48) *
аналогично.
но после формулы C/N=10*LOG10(10^(((-64.4-128.5)/-128.5)/10)-1)=-3.8 dBm
и если вычесть 3 dbm для qpsk, получается ebn0=-6.8 для демапера


Полюбому для модуляции (QPSK) вычесть (сжатие полосы), а для FEС - добавить (расширение полосы).
Вроде так :-)
maxfox2k
Цитата(fontp @ Jun 26 2008, 14:35) *
Полюбому для модуляции (QPSK) вычесть (сжатие полосы), а для FEС - добавить (расширение полосы).
Вроде так :-)

добавлять точно не хочется smile.gif
но вот если для моей формулы еще вычесть и 3 dbm для qpsk то очень даже замечательно в спек укладываемся. попробую в этом направлении похимичить.
но вообще странно, что по разным источникам получаются такие разные значения.
у нас точно ebn0 не может быть отрицательным.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.