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

 
 
> Цифровая ФАПЧ с NCO в Симулинк
Acvarif
сообщение Apr 23 2018, 18:34
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Попытался, используя пример, разобраться как устроена цифровая ФАПЧ с NCO в Симулинк.
Прикрепленное изображение

Подключаю осциллограф к выходу NCO а там синусоида. Это как? Там же должна быть шина шириной в 16 бит.
Зачем такая абстракция?
Фазовый детектор вообще непонятно как сделан. Попытка его раскрыть заканчивается полным зависанием Матлаб.
Как устроен цифровой фильтр... Вообще не понятно. Как увидеть его АЧХ? Как вообще он составлен?
Прикрепленный файл  dpll_fixpt.rar ( 13.41 килобайт ) Кол-во скачиваний: 19

Кому не сложно подсобите пожалуйста нормальным примером цифровой ФАПЧ с NCO.

Сообщение отредактировал Acvarif - Apr 23 2018, 18:35
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
PavPro
сообщение Apr 25 2018, 07:39
Сообщение #2


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

Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222



Смотрите. Книга которую я указал первой для Matlab SDR-RTL. Стр. 264. параграф 7.8
Прочтите его очень внимательно, там подробно (по шагам расписан тот алгоритм который Вы взяли из книги Rice).
Там подробно расписано откуда, что берется, как что задается в исходных данных и как считается по шагам,
применительно к цифровой ФАПЧ.
После прочтения все Ваши вопросы должны проясниться.
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Apr 25 2018, 08:24
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Цитата(PavPro @ Apr 25 2018, 10:39) *
Смотрите. Книга которую я указал первой для Matlab SDR-RTL. Стр. 264. параграф 7.8
Прочтите его очень внимательно, там подробно (по шагам расписан тот алгоритм который Вы взяли из книги Rice).
Там подробно расписано откуда, что берется, как что задается в исходных данных и как считается по шагам,
применительно к цифровой ФАПЧ.
После прочтения все Ваши вопросы должны проясниться.

Нашел. Спасибо.

Сообщение отредактировал Acvarif - Apr 25 2018, 08:24
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Apr 25 2018, 15:38
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Модель ФАПЧ
CODE
%% Модель цифровой ФАПЧ

% количество выборок на модель
N= 300000;
% Гц частота сигнала fref
fref = 8e6;
% Гц частота выборок
fs= 96e6;
% начальная ошибка NCO Гц fnco = fref+ferr
ferr = -800;
% натуральная частота Гц
fn = 5000;
% период выборки сек
Ts = 1/fs;
% индексы времени модели
n= 0:N-1;
% матрица времени модели мсек
t= n*Ts*1000;
% циклы начальной фазы опорного сигнала
init_phase = 0.7;
% циклы фазы опорного сигнала
ref_phase = fref*n*Ts + init_phase;
% циклы фазы опорн. сигн. по mod 1
ref_phase = mod(ref_phase,1);
% коэффициент усиления NCO (по факту минимальный шаг соотв. разр. сетке)
Knco= 1/4096;
% коэфф. усил. фазового детектора 1/cycles
KP = 2;
% демпинг фактор
zeta = 1.0;
% круговая натуральная частота rad/s fn = ?n/(2?)
wn = 2*pi*fn;
% пропорциональный коэффициент петлевого фильтра
KL= 2*zeta*wn*Ts/(KP*Knco);
% интегральный коэффициент петлевого фильтра
KI= wn^2*Ts^2/(KP*Knco);
% распечатка
fprintf('Пропорц. коэфф KL %d\n', KL);
fprintf('Интегр. коэфф KI %d\n', KI);

% Расчет коэффициентов передаточной функции с замкнутого контура u / ref_phase
% CL(z) = (b0 + b1z^-1)/(a2Z^-2 + a1z^-1 + 1)
b0= KP*KL*Knco;
b1= KP*Knco*(KI - KL);
a1= KP*KL*Knco - 2;
a2= 1 + KP*Knco*(KI - KL);
% коэффициенты петлевого фильтра (numerator denominator)
b= [b0 b1];
a= [1 a1 a2];

% начальная частота NCO Гц
fnco = fref+ferr;
% распечатка
fprintf('начальная частота NCO Гц %d\n', fnco);

u(1) = 0;
ur(1) = 0;
int(1)= 0;
% начальная фазовая ошибка
phase_error(1) = -init_phase;
% начальная значение на входе NCO
vtune(1) = -init_phase*KL;
% решение разностных уравнений
for n= 2:N;
% NCO
x = fnco*Ts + u(n-1) + vtune(n-1)*Knco; % циклы NCO фазы
u(n) = mod(x,1); % циклы NCO фазы по mod 1
s = sin(2*pi*u(n-1)); % NCO sin выход
y(n)= round(2^15*s)/2^15; % квантованный выход синуса
% фазовый детектор
pe= ref_phase(n-1) - u(n-1); % ошибка фазы
pe= 2*(mod(pe+1/2,1) - 1/2); % обертка, если пересечение фаз +/- 1/2 цикла
phase_error(n) = pe;
% Петлевой фильтр
int(n) = KI*pe + int(n-1); % интегратор
vtune(n) = int(n) + KL*pe; % выход петлевого фильтра

xr = fref*Ts + ur(n-1); % циклы fref
ur(n) = mod(xr,1); % циклы fref фазы по mod 1
sr = sin(2*pi*ur(n-1)); % sin выход fref
yr(n)= round(2^15*sr)/2^15; % квантованный выход fref

end

%% Графика

% фазовая ошибка с фазового детектора
figure
plot(t,phase_error),grid
axis([0 1 -1 1])
xlabel('t (ms)'),ylabel('phase_error'),title('фазовая ошибка с фаз. детектора')

% выход VCO
figure
plot(t,vtune),grid
axis([0 1 -3.5 3])
xlabel('t (ms)'),ylabel('vtune'),title('выходной сигнал петлевого фильтра')

figure
psd(y(11000:end),2^14,fs/1e6)
axis([7.95 8.05 -80 40]),xlabel('MHz'),title('Спектр выхода NCO')

% % Частотная характеристика замкнутого контура
% figure
% u = 0:.1:.9;
% f= 10* 10 .^u;
% f = [f 10*f 100*f 1000*f];
% z = exp(j*2*pi*f/fs);
% CL= (b0 + b1*z.^-1)./(1 + a1*z.^-1 + a2*z.^-2);
% CL_dB= 20*log10(abs(CL));
% semilogx(f,CL_dB),grid
% xlabel('Hz'),ylabel('CL(z) dB'),title('Частотная характеристика замкнутого контура')

% sin NCO и fref
figure;
plot(t, y, 'b-', 'LineWidth', 2);
hold on;
grid on;
plot(t, yr, 'r-', 'LineWidth', 2);
hold on
hold off;

Несущая 8 мГц
Частота выборок в 16 раз больше
Начальная частотная расстройка задана для NCO -800 Гц
Пока нет понимания, что такое натуральная частота.
Не понимаю почему в начале работы модели частоты с выхода NCO и несущая синхронны, а потом начинается их фазовое рассогласование.
Должно быть наоборот. Это значит, что ФАПЧ не работает?
Или не верно отображены частоты NCO и fref?

Сообщение отредактировал Acvarif - Apr 25 2018, 16:10
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 02:40
Рейтинг@Mail.ru


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