Цитата(alexadmin @ Jun 15 2007, 13:19)

Пытаюсь создать цифровую реализацию ФАПЧ. Используется классический ПИ-регулятор. Среди требований к фильтру есть loop bandwidth (как я понимаю, по русски это эквивалентная шумовая полоса). Возникли проблемы с расчетом коэффициентов фильтра. В некой книги нашел следующие формулы, однако в книге много ошибок-опечаток и есть мнение, что формулы не правильные:
$B_l$ - noise loop bandwidth
$T_s$ - период сэмплирования фильтра
$w_n=2*B_l/(\theta+1/(4*\theta))$, где $\theta$ - dampling factor, принятый равным 0.707.
$K_i=4*(w_n*T_s/2)^2$ - интегральный коэф-т
$K_p=4*\theta*(w_n*T_s/2)$ - пропорциональный коэф-т - на счет этой формулы основные подозрения.
Не встречал ли кто-нибудь аналогичных формул для расчета или литературы, в которой они есть (желательно доступной для скачивания). Рекомендовали книгу Шахгильдяна по фазовой подстройке, однако найти ее не удалось. В большинстве литературы, которая встречалась производятся лишь теоретические преобразования в z-области, применить которые на практике затруднительно...
Встерчал и работал вот с такой штукой:
sampling_freq = частота дискретизации;
capture_band = полоса захвата;
AMP = средняя амплитуда входного сигнала (видимо ошибки);
koef = коэффициент, действительно принятый за 0.707;
Вычисляем след. коэффициенты:
T (период) = 1/sampling_freq;
wn = (capture_band*PI)/koef;
g1 = 1 - exp(-2.0*koef*wn*T);
g2 = 1 + exp(-2.0*koef*wn*T) - 2.0*exp(-koef*wn*T)*cos(wn*T*sqrt(1-(koef*koef)) );
G1 = g1/AMP;
G2 = g2/AMP;
Z = 0;
формула фильтрации
out = inp*G1 + (inp+Z)*G2; - выходное значение
Z+=inp; // накопительный регистр
Ведет себя очень здорово.
Использовал для тактовой и фазовой синхронизации:
При частоте входного сигнала 2400 Гц :
полоса захвата 1 Гц - при стабильной работе;
полоса захвата 10 - 100 Гц - когда надо быстро что-нибудь выкрутить;
Кстати, расчитываемые коэффициенты можно менять во время работы, чтобы регулировать скорость реакции системы.