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

 
 
13 страниц V  « < 8 9 10 11 12 > »   
Reply to this topicStart new topic
> модель 8PSK модема
petrov
сообщение Oct 3 2010, 09:10
Сообщение #136


Гуру
******

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



GMSK suboptimal coherent demodulation feedback phase sync feedback timing sync


simulink matlab R2010a


Прикрепленный файл  gmsk_coherent_demodulation_2010_10_03.rar ( 23.91 килобайт ) Кол-во скачиваний: 1068
Go to the top of the page
 
+Quote Post
Sleepin' Cat...
сообщение Oct 14 2010, 09:26
Сообщение #137


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 22-12-09
Из: SPb
Пользователь №: 54 402



Всем прывет!

Возник вопрос по поводу модели qam_fb_gardner_symbol_farrow_sync_fb_phase_sync_agc_2007_06_18.mdl, может кто подскажет.
Проектирую демодулятор QAM-16, пока в исследовательско-учебных целях; сигнал - типичный для телефонного модема, несущая 1800 Гц,
символьная скорость 2400 Бод. Есть несколько записей отсчетов оцифрованного сигнала, частота дискретизации 8000 Гц. После преобразования частоты с несущей на нулевую и выделения квадратур с помощью согласованной фильтрации восстанавливается тактовая частота. Пока сделал двумя способами. Первый: передискретизация квадратур, чтобы получить 4 отсчета на символ, вычисление квадратов модулей отсчетов, DFFT по 4 отсчетам и т.п. (из книжки Meyr'а). Второй: сделал как в указанной модели petrov'а, предварительно передискретизировав квадратуры, чтобы получить 8 отсчетов на символ. Первый способ дал вполне приемлемые для дальнейшей работы результаты. Второй после долгих попыток пока не увенчался успехом: созвездия почти не видно. Есть несколько мыслей на этот счет:

1) либо у меня где-то ошибки в реализации (ищу, пока не нашел);
2) символьная синхронизация в модели petrov'а полностью невозможна без восстановления несущей и АРУ (их я пока не трогал), но это вряд ли, ведь из литературы => схема Гарднера не зависит от проблем с несущей + в моей тестовой записи сигнал имеет постоянную амплитуду, без искажений и др.
3) самое вероятное, на мой взгляд: схема в модели petrov'a требует больше отсчетов на символ, а я не могу повысить частоту дискретизации в записи, могу только передискретизировать, из-за этого результаты получаются хуже?

Подскажите, плиз, если есть идеи. Заранее, спасибо, если где-то сказал глупость, прошу сильно не бить rolleyes.gif
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 14 2010, 10:16
Сообщение #138


Гуру
******

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



В модели ведь работает? Покажите на модели условия при которых синхронизация не работает. И с 4-мя отсчётами есть модели. Для Гарднера нужно всего 2 отсчёта, 4-8 отсчётов для простоты интерполяции сделано.


Go to the top of the page
 
+Quote Post
Sleepin' Cat...
сообщение Oct 14 2010, 10:27
Сообщение #139


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 22-12-09
Из: SPb
Пользователь №: 54 402



Цитата(petrov @ Oct 14 2010, 14:16) *
В модели ведь работает? Покажите на модели условия при которых синхронизация не работает. И с 4-мя отсчётами есть модели. Для Гарднера нужно всего 2 отсчёта, 4-8 отсчётов для простоты интерполяции сделано.


Спасибо, да я уж и сам догадался, для Гарднера, действительно, не важно, не стал последнее предположение из поста стирать не стал.
Кстати, пробовал свои квадратуры скинуть в mat-файл, и подать в Simulink на вход интерполятора Фарроу и т.д. по Вашей схеме, к сожалению, не прокатило. Разбираюсь сейчас почему. ??? Попытки подстроить фильтр петли: пересчитать или подобрать коэффициенты пока не помогли.
Go to the top of the page
 
+Quote Post
thermit
сообщение Oct 14 2010, 13:10
Сообщение #140


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Тут еще такая штука может быть:

В телефонных модемах для ограничения полосы используется фильтр с довольно крутой х-кой (большая крутизна ската).
И характеристика его - не корень из приподнятого косинуса. В моделях уважаемого Петрова на входе приемника стоит фильтр корень из приподнятого косинуса с альфа=1. В таких условиях детектор гарднера работать будет плохо...
Go to the top of the page
 
+Quote Post
Sleepin' Cat...
сообщение Oct 15 2010, 03:52
Сообщение #141


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 22-12-09
Из: SPb
Пользователь №: 54 402



Цитата(thermit @ Oct 14 2010, 17:10) *
Тут еще такая штука может быть:

В телефонных модемах для ограничения полосы используется фильтр с довольно крутой х-кой (большая крутизна ската).
И характеристика его - не корень из приподнятого косинуса. В моделях уважаемого Петрова на входе приемника стоит фильтр корень из приподнятого косинуса с альфа=1. В таких условиях детектор гарднера работать будет плохо...


Спс. Удалось несколько улучшить результаты изменив характеристику согласованного фильтра, но по ходу еще где-то у меня ошибка, буду дальше работать...
Go to the top of the page
 
+Quote Post
Sleepin' Cat...
сообщение Oct 20 2010, 14:57
Сообщение #142


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 22-12-09
Из: SPb
Пользователь №: 54 402



Цитата(petrov @ Oct 14 2010, 14:16) *
В модели ведь работает? Покажите на модели условия при которых синхронизация не работает. И с 4-мя отсчётами есть модели. Для Гарднера нужно всего 2 отсчёта, 4-8 отсчётов для простоты интерполяции сделано.


Моя программа демодуляции QAM-16, созданная по алгоритму, предложенному в Вашей модели qam_fb_symbol_sync_fb_phase_sync_agc_var_ch_delay_2007_07_10, после обезвреживания всех багов заработала на реальной записи, все три петли (по тактовой, несущей и АРУ) отслеживают изменения соответствующих параметров синхронизации. Но у меня осталась неясность с парой моментов, хотел бы задать Вам вопросы unsure.gif

1. Интерполятор Фарроу (ИФ). Для получения интерполированного отсчета x_interp[nT] (выходной сигнал ИФ на n-ом такте) используются отсчеты x[(n-1)T], x[nT], x[(n+1)T] и x[(n+2)T]. Другими словами, для получения интерполянта на текущем такте нужны входные отсчеты в следующие моменты времени: на предыдущем такте, на текущем и на 2-ух последующих тактах. То есть получается алгоритмическая задержка на 2 такта, если так можно выразиться. Однако, это НЕ требует задерживать сигнал overflow на 2 такта, так как NCO/TCU (timing control unit) формирует сигнал overflow по выходным отсчетам интерполятора, оптимальный момент для взятия значений квадратур соответствует моменту сброса NCO/TCU, когда вырабатывается строб-сигнал overflow. Задержка на 2 такта в ИФ не влияет на работу NCO/TCU. Вроде бы такая логика... Расписываю так подробно такие вещи, потому что просто столкнулся с примером в хелпе MatLab, которые ввели меня в заблуждение относительно этой задержки ИФ, видимо, в этом примере задержка сигнала overflow на 2 такта имела какой-то другой смысл и не связана с ИФ + я не силен в Simulink, привык работать в m-языке.

2. Вы используете блок Downsample в данных моделях, чтобы понизить частоту следования квадратур с 1/8 (частота дискретизации) до 1 (символьная скорость) перед выводом точек на блок просмотра созвездия. Было бы справедливо следующее: запихнуть Discrete-Time Scatter Plot Scope в Subsystem с блоком Enabled и "включать" эту подсистему стробом overflow, а на вход ей подавать квадратуры с выхода ИФ. Такой блок выводил бы интерполированные квадратуры в оптимальный момент для взятия отсчета. У меня вроде бы так работает, но хотел понять почему Вы сделали по другому smile.gif

Вроде все. Теперь, когда согласованная фильтрация и системы синхронизации готовы, возьмусь за эквалайзер, начну с Ваших моделей, так что новые вопросы, наверное, скоро появятся, если, конечно, Вас не напрягает отвечать rolleyes.gif

Спасибо!

PS. Кстати, еще по поводу согласованной фильтрации. Если неизвестны параметры SRRC-фильтра применявшегося в модуляторе в моей тестовой записи, можно ли как-то оценить их (частота среза, rolloff-фактор, порядок), чтобы добиться оптимальных результатов. Методом поиска я какие-то подобрал, но...правильный ли это путь?
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 20 2010, 17:55
Сообщение #143


Гуру
******

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



Цитата(Sleepin' Cat Smile @ Oct 20 2010, 18:57) *
Моя программа демодуляции QAM-16, созданная по алгоритму, предложенному в Вашей модели qam_fb_symbol_sync_fb_phase_sync_agc_var_ch_delay_2007_07_10, после обезвреживания всех багов заработала на реальной записи, все три петли (по тактовой, несущей и АРУ) отслеживают изменения соответствующих параметров синхронизации. Но у меня осталась неясность с парой моментов, хотел бы задать Вам вопросы unsure.gif

1. Интерполятор Фарроу (ИФ). Для получения интерполированного отсчета x_interp[nT] (выходной сигнал ИФ на n-ом такте) используются отсчеты x[(n-1)T], x[nT], x[(n+1)T] и x[(n+2)T]. Другими словами, для получения интерполянта на текущем такте нужны входные отсчеты в следующие моменты времени: на предыдущем такте, на текущем и на 2-ух последующих тактах. То есть получается алгоритмическая задержка на 2 такта, если так можно выразиться. Однако, это НЕ требует задерживать сигнал overflow на 2 такта, так как NCO/TCU (timing control unit) формирует сигнал overflow по выходным отсчетам интерполятора, оптимальный момент для взятия значений квадратур соответствует моменту сброса NCO/TCU, когда вырабатывается строб-сигнал overflow. Задержка на 2 такта в ИФ не влияет на работу NCO/TCU. Вроде бы такая логика... Расписываю так подробно такие вещи, потому что просто столкнулся с примером в хелпе MatLab, которые ввели меня в заблуждение относительно этой задержки ИФ, видимо, в этом примере задержка сигнала overflow на 2 такта имела какой-то другой смысл и не связана с ИФ + я не силен в Simulink, привык работать в m-языке.


Здесь не нужно никак эту задержку учитывать, хоть по 1000 отсчётам интерполятор работал бы, путь сигнала по mu не задержан относительно enable. Не забывайте что комбинационную часть интерполятора можно внести в домен двух отсчётов на символ. Есть ошибки в этой модели, исправленные в последующих, интерполятор работает не в оптимальном диапазоне mu, при 8 отсчётах на символ это незаметно, здесь и линейного интерполятора хватит. Ещё временная ошибка на NCO должна действовать в домене одного отсчёта на символ.


Цитата(Sleepin' Cat Smile @ Oct 20 2010, 18:57) *
2. Вы используете блок Downsample в данных моделях, чтобы понизить частоту следования квадратур с 1/8 (частота дискретизации) до 1 (символьная скорость) перед выводом точек на блок просмотра созвездия. Было бы справедливо следующее: запихнуть Discrete-Time Scatter Plot Scope в Subsystem с блоком Enabled и "включать" эту подсистему стробом overflow, а на вход ей подавать квадратуры с выхода ИФ. Такой блок выводил бы интерполированные квадратуры в оптимальный момент для взятия отсчета. У меня вроде бы так работает, но хотел понять почему Вы сделали по другому smile.gif


Всё верно, правильно располагать в домене одного отсчёта на символ, где-то давно читал рекомендацию не размещать графики внутри Subsystem, не помню с чем это связано, в данном случае нет большой разницы.

Цитата(Sleepin' Cat Smile @ Oct 20 2010, 18:57) *
Вроде все. Теперь, когда согласованная фильтрация и системы синхронизации готовы, возьмусь за эквалайзер, начну с Ваших моделей, так что новые вопросы, наверное, скоро появятся, если, конечно, Вас не напрягает отвечать rolleyes.gif


Спасибо!


На здоровье! С эквалайзерами тема мутная, вопрос много раз поднимался, но так никто и не написал как делать правильно.


Цитата(Sleepin' Cat Smile @ Oct 20 2010, 18:57) *
PS. Кстати, еще по поводу согласованной фильтрации. Если неизвестны параметры SRRC-фильтра применявшегося в модуляторе в моей тестовой записи, можно ли как-то оценить их (частота среза, rolloff-фактор, порядок), чтобы добиться оптимальных результатов. Методом поиска я какие-то подобрал, но...правильный ли это путь?


С помощью эквалайзера можно оценить при условии что в вашей записи канал искажений не вносит.

Go to the top of the page
 
+Quote Post
Sleepin' Cat...
сообщение Oct 21 2010, 06:13
Сообщение #144


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 22-12-09
Из: SPb
Пользователь №: 54 402



Цитата(petrov @ Oct 20 2010, 21:55) *
Здесь не нужно никак эту задержку учитывать, хоть по 1000 отсчётам интерполятор работал бы, путь сигнала по mu не задержан относительно enable. Не забывайте что комбинационную часть интерполятора можно внести в домен двух отсчётов на символ.


Ага. Так примерно и думал, теперь все встало на свои места.

Цитата(petrov @ Oct 20 2010, 21:55) *
интерполятор работает не в оптимальном диапазоне mu


??? 07.gif А что здесь можно изменить? В каком-то другом масштабе считать mu?

Цитата(petrov @ Oct 20 2010, 21:55) *
Ещё временная ошибка на NCO должна действовать в домене одного отсчёта на символ.


Кстати, как раз заинтересовал этот момент. Я вижу два варианта реализации подачи временной ошибки (выходного сигнала фильтра петли) на вход NCO:

1) На каждом такте из текущего значения NCO вычитается 1 (номинальное изменение) и сигнал ошибки, который обновляется 1 раз за символ.

Код
...
NCO = NCO - 1 - timing_pll_signal;
...


2) На каждом такте из текущего значения NCO вычитается 1 (номинальное изменение) и, при наличие сигнала overflow, сигнал ошибки (1 раз за символ), если нет сигнала overflow, то 0.

Код
...
if (overflow)
   NCO = NCO - 1 - timing_pll_signal;
else
   NCO = NCO - 1; % timing_pll_signal = 0
end;
...


По сути получается просто разные способы upsample-инга выходного сигнала фильтра петли: либо повторять на каждом такте в течение символа значение timing_pll_signal до следующего строба overflow, после которого значение timing_pll_signal обновится; либо между двумя значениями timing_pll_signal вставляем нули. Система символьной синхронизации является multirate-системой, фильтр петли выполняет еще и роль "интерполирующего" фильтра, между блоками TED (обновляет выходной сигнал 1 раз за символ) и NCO (выдает выходной сигнал 1*OSR раз за символ, OSR - коэффициент передискретизации).

Вы имели в виду 2-ой вариант smile.gif ?


Цитата(petrov @ Oct 20 2010, 21:55) *
С эквалайзерами тема мутная, вопрос много раз поднимался, но так никто и не написал как делать правильно.


Точно. Нашел теорию у Скляра, вроде у Прокиса тоже есть + Ваши модели, чтобы связать эту теорию с практикой + IEEE.
К сожалению, Майкл Райс этой темы в своей книге "Digital Communications. A Discrete-Time Approach" не касался. Очень хорошая книга по цифровой связи, про петли синхронизации в ней здорово написано.

Сообщение отредактировал Sleepin' Cat Smile - Oct 21 2010, 06:16
Go to the top of the page
 
+Quote Post
petrov
сообщение Oct 21 2010, 15:57
Сообщение #145


Гуру
******

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



Цитата(Sleepin' Cat Smile @ Oct 21 2010, 10:13) *
Вы имели в виду 2-ой вариант smile.gif ?


Посвежее модели посмотрите...
Go to the top of the page
 
+Quote Post
Sleepin' Cat...
сообщение Oct 22 2010, 06:01
Сообщение #146


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 22-12-09
Из: SPb
Пользователь №: 54 402



Цитата(petrov @ Oct 21 2010, 19:57) *
Посвежее модели посмотрите...


Данке шон)
Go to the top of the page
 
+Quote Post
rrr345
сообщение Nov 2 2010, 17:26
Сообщение #147





Группа: Новичок
Сообщений: 2
Регистрация: 2-11-10
Пользователь №: 60 594



Разбираюсь с моделью psk8_fast_ff_nda_symbol_sync_fast_ff_nda_phase_sync_2006_11_15 и возникают вопросы.
1 Какое назначение phase_unwrap в блоке фазовой синхронизации?
2 Приведенная схема отличается от аналогичной у Прокиса отсутствием петли после полосового фильтра. Насколько петля очищает несущую, или достаточно узкополосного фильтра? Понятно что полоса фильтра ограничена всеми суммарными нестабильностями.
3 Пытаюсь перевести приведенную модель на си, и не знаю как поделить частоту несущей на 8. Не могу найти описания реализации. Не ужели частоту делят как в классических синтезаторах(обычный бинарный сигнал и счетчик)? Или существует другие решения?
Go to the top of the page
 
+Quote Post
petrov
сообщение Nov 2 2010, 17:54
Сообщение #148


Гуру
******

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



Там же показано как фаза на 8 делится, phase_unwrap нужен чтобы после этого деления фазу развернуть до 2pi устойчиво, здесь усреднение фильтром осуществляется дополнительная ФАПЧ не нужна.
Go to the top of the page
 
+Quote Post
rrr345
сообщение Nov 3 2010, 15:40
Сообщение #149





Группа: Новичок
Сообщений: 2
Регистрация: 2-11-10
Пользователь №: 60 594



Цитата(petrov @ Nov 2 2010, 20:54) *
Там же показано как фаза на 8 делится, phase_unwrap нужен чтобы после этого деления фазу развернуть до 2pi устойчиво, здесь усреднение фильтром осуществляется дополнительная ФАПЧ не нужна.

Сапсибо, все понятно.
Go to the top of the page
 
+Quote Post
MKS
сообщение Feb 15 2011, 16:00
Сообщение #150


Местный
***

Группа: Свой
Сообщений: 469
Регистрация: 13-03-05
Пользователь №: 3 315



Цитата(petrov @ Dec 8 2008, 15:25) *
Filtered Multitone (FMT) Modulation, noncritically sampled filter bank, timing frequency phase tracking primer
simulink matlab 7.0
Здравствуйте, начал разбираться с FMT и наткнулся на вашу модель. Не могли бы вы объяснить каким образом у вас в блоке полифазного фильтра после фурье получается 36 подканалов? Такое ощущение что вы как то на 32-х точечьном ДПФ получили коэфициент интерполяции 36 (в пользу этого говорит и частота среза опорного фильтра) но как это получилось не понятно. В той информации которую удалось найти в интернете обычно коэффициент интерполяции == числу отсчётов ДПФ и если у нас 32 точечное ДПФ то соответственно будет интерполяция в 32 раза и опорный фильтр надо считать на 32 отсчёта на символ. Но если так делать и распологать поднесущие в плотную то они начинают сильно перекрыватся и мешать друг другу, если ставить через один то большие зазоры остаются. У вас похоже как то получилось "плавненько" их сдвинуть. Если не трудно хотелось бы про это поподробней узнать.
Заранее спасибо.
Go to the top of the page
 
+Quote Post

13 страниц V  « < 8 9 10 11 12 > » 
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


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


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