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

ФАПЧ на целочисленной арифметике

С горем пополам удалось реализовать модель ФАПЧ (кстати прекрасно описанной на dsplib.ru) для простой, как мне казалось задачи - просто "схватиться" за фазу входной медленой (30Гц) синусойды и сихронизировать с ней NCO на той же частоте (другими словами просто "скопировать сигнал"). Удачно подобрал коэффициенты для моей задачи, получившийся ФАПЧ устраивает всем, кроме одного - модель используют double тип данных, а моя конечная цель - реализовать ФАПЧ на полностью целочисленной арифметике. На данный момент, все мои попытки конвертировать получившиюся модель на integer математику, как и ожидалось, неудачны. Проблема в том, что коэффициенты петлевого фильтра нещадно малы - я отчаяно пытаюсь их маштабировать, но на выходе ФАПЧ выходит каша... Хотел узнать, ведь наверняка кто-то сталкивался с подобной проблемой, может подтолкнете меня в нужное направление? Ведь каким-то образом данная задача реализовывалась на ПЛИС?

 

Спасибо

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

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


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

Насколько малы коэффициенты? Про fixed point в курсе? https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%...%82%D0%BE%D0%B9

 

 

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


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

в чем проблема коэффициенты умножить на, скажем 10 в 9 или около того, а результат на выходу петлевого фильтра затем разделить?

 

И коэффициенты не подбирать надо, а расчитывать.

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


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

 

Насчет подбора, я полностью соглашусь. Однако я должен признать свою полную несостоятельность на этом поприще. Я перерыл много материала по теме, везде подробно описано как устроена ФАПЧ, приведена передаточная хар-ка петли, выведены основные параметры (резонансная частота петли, коэффициенты фазового детектора, коэффициент ГНУ, демпинг фактор и др.), мне даже стали понятны критерии стабильности всей ФАПЧ - однако как расчитать коэффициенты я так и не понял. Они все связаны между собой, и никак не получается систематизировать их отношения и рассматривать как отдельно взятую еденицу. Я ищу этот рецепт, но пока результат никакой, рецепта найти не удалось. Повсеместно гоняю ФАПЧ в симуляторе, однако уже становится понятным что результат этой затеи плачевен...

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

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


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

В курсе, но вот незадача: ki = 5.9164e-009, kp = 1.5384e-005.

 

А что Вас смущает? Fixed point 1.31 позволяет представить ki в виде числа 13 (13 * 1/(2^31) = 6.053597e-009), если такая точность не устраивает, возьмите побольше разрядность, 1.63 позволит представить точнее чем double :)))

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


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

А посмотрите вот этот Матлаб пример для HDL кодера. Здесь в модуле Fine Frequency Compensation - PLL как раз реализована в fixed point.

 

HDL Optimized QPSK Receiver with Captured Data

https://www.mathworks.com/help/comm/example...ommqpskrxhdl-25

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


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

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

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

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

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

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

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

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

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

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