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

 
 
> Синхронизация методом передискретизации, Фильтры Фарроу, ФАПЧ
ToR_TDA
сообщение Jan 11 2012, 12:34
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796



Здравствуйте, форумчане!
Есть синусоидальный сигнал частотой 125кГц, который цифруется с частотой 2МГц. Необходимо петлей ФАПЧ засинхронизировать отсчеты при условии возможной отстройки частоты на 100Гц и случайной начальной фазе. Использую фильтр Фарроу, моделирую в Матлабе. Опираюсь на модели Petrova и ссылку Synchronization
Прикрепляю две модели: первая "farrow_2" основана на моделях Petrova и дает положительный результат, вторая "farrow_pll_2" основана на ссылке выше и отказывается работать.
В чем ошибка(и) во второй модели?
P.S. В моделях частота синусоиды 125,1 кГц. Алгоритм будет писаться для DSP.



Прикрепленные файлы
Прикрепленный файл  Farrow.rar ( 18.48 килобайт ) Кол-во скачиваний: 55
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ToR_TDA
сообщение Jan 12 2012, 11:30
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796



У меня еще вопрос: в моделях товарища petrov в NCO используется операция вычисления остатка от деления по модулю, например частный случай по модулю 4, как это может выглядеть в assembler для DSP, при том, что выполнить честное деление двух 16-ти разрядных чисел, затруднительно? Или как-то не так делают?
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 12 2012, 12:09
Сообщение #3


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

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(ToR_TDA @ Jan 12 2012, 05:30) *
У меня еще вопрос: в моделях товарища petrov в NCO используется операция вычисления остатка от деления по модулю, например частный случай по модулю 4, как это может выглядеть в assembler для DSP, при том, что выполнить честное деление двух 16-ти разрядных чисел, затруднительно? Или как-то не так делают?

хмм, ну вообще то операции по модулю 2^N делаются элементарно и без делителей wink.gif это же математика 7го класса

Цитата(des00 @ Jan 12 2012, 03:54) *
Ошибка кроется где-то здесь и в физике работы этой схемы восстановления. С одной стороны в моделях petrov просто подкручивается фаза NCO и частота регулируется в небольших пределах. А в документе подкручивается частота NCO. что лучше, мне и самому интересно.


Что-то сдается мне что в статье ошибка. Сделал модельку восстановления тактовой частоты с двумя типами обратной связи : классически как у petrov и как в этой статье (с интерполяцией сигнала ошибки за счет вставки нулей на входе петлевого фильтра). При нулевых н.у. обе петли работают одинаково. Но если промоделировать уход петли в сторону, за счет содержимого интегральной части (в модели переменная acc) то видно что диапазон захвата классической петли выше %)
Прикрепленные файлы
Прикрепленный файл  modem_qpsk_gardner_other_loop_R14.zip ( 13.44 килобайт ) Кол-во скачиваний: 46
 


--------------------
Go to the top of the page
 
+Quote Post
ToR_TDA
сообщение Jan 18 2012, 15:30
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 133
Регистрация: 7-08-10
Из: Мурманск
Пользователь №: 58 796



Цитата(des00 @ Jan 12 2012, 15:09) *
Что-то сдается мне что в статье ошибка. Сделал модельку восстановления тактовой частоты с двумя типами обратной связи : классически как у petrov и как в этой статье (с интерполяцией сигнала ошибки за счет вставки нулей на входе петлевого фильтра). При нулевых н.у. обе петли работают одинаково. Но если промоделировать уход петли в сторону, за счет содержимого интегральной части (в модели переменная acc) то видно что диапазон захвата классической петли выше %)

Не берусь пока судить по работе таких петель в составе модели модема, поэтому для понимания я начал с попыток освоить цифровую ФАПЧ на простом сигнале типа синус. По ссылке Synchronization и предложенной там петли некоторые вопросы прояснились, и модель в итоге стала работоспособна (прикрепил). Но тут начинаются свои проблемы. Алгоритм примерно такой (без интерполятора):
Код
// N - samples/symbol
NCO = 0;
mu_temp = 0;

///////////ЦИКЛ//////////
if NCO < 0
underflow = 1;
else
underflow = 0;
end

if underflow == 1
mu = mu_temp;    // for Farrow interpolator
end

if underflow == 1
e = TEDBuff(2) * (TEDBuff(3) - TEDBuff(1)); // Gardner TED
else
e = 0;
end

vp = K1*e;     // proportional component of loop filter
vi = vi + K2*e;      // integrator component of loop filter
v = vp + vi;     // loop filter output
W = 1/N + v;     // NCO control word

// update registers
mu_temp = NCO/W;

if underflow == 1
NCO = NCO + 1 - W;
else
NCO = NCO - W;
end

И в нем, к моему разочарованию, есть деление: mu_temp = NCO/W; Как бы его обойти?

И еще вопрос: где бы так же подробно можно было бы посмотреть про классическую петлю обратной связи? С примерами алгоритмов.

Сообщение отредактировал ToR_TDA - Jan 19 2012, 08:22
Прикрепленные файлы
Прикрепленный файл  farrow_pll_2.rar ( 9.71 килобайт ) Кол-во скачиваний: 30
 
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:51
Рейтинг@Mail.ru


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