acvarif 0 23 апреля, 2018 Опубликовано 23 апреля, 2018 (изменено) · Жалоба Попытался, используя пример, разобраться как устроена цифровая ФАПЧ с NCO в Симулинк. Подключаю осциллограф к выходу NCO а там синусоида. Это как? Там же должна быть шина шириной в 16 бит. Зачем такая абстракция? Фазовый детектор вообще непонятно как сделан. Попытка его раскрыть заканчивается полным зависанием Матлаб. Как устроен цифровой фильтр... Вообще не понятно. Как увидеть его АЧХ? Как вообще он составлен? dpll_fixpt.rar Кому не сложно подсобите пожалуйста нормальным примером цифровой ФАПЧ с NCO. Изменено 23 апреля, 2018 пользователем Acvarif Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pavel Proskura 1 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Попытался, используя пример, разобраться как устроена цифровая ФАПЧ с NCO в Симулинк. Подключаю осциллограф к выходу NCO а там синусоида. Это как? Там же должна быть шина шириной в 16 бит. Зачем такая абстракция? Фазовый детектор вообще непонятно как сделан. Попытка его раскрыть заканчивается полным зависанием Матлаб. Как устроен цифровой фильтр... Вообще не понятно. Как увидеть его АЧХ? Как вообще он составлен? dpll_fixpt.rar Кому не сложно подсобите пожалуйста нормальным примером цифровой ФАПЧ с NCO. На сайте Mathworks есть книга в свободном доступе к скачиванию Software Defined Radio using MATLAB® & Simulink® and the RTL-SDR. В ней есть все ответы на Ваши вопросы с конкретными примерами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба На сайте Mathworks есть книга в свободном доступе к скачиванию Software Defined Radio using MATLAB® & Simulink® and the RTL-SDR. В ней есть все ответы на Ваши вопросы с конкретными примерами. В свободном доступе https://www.mathworks.com/support/books/book106132.html в смысле купить на Амазоне. Если у Вас имеется, то выложите или ссылку, буду признателен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pavel Proskura 1 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба В свободном доступе https://www.mathworks.com/support/books/book106132.html в смысле купить на Амазоне. Если у Вас имеется, то выложите или ссылку, буду признателен. Посмотрите здесь: https://sci.libgen.pw/item/detail/id/59e6ab...a04465a6adf2211 Либо укажите почту, я Вам скину, правда без примеров. Посмотрите здесь: https://sci.libgen.pw/item/detail/id/59e6ab...a04465a6adf2211 Либо укажите почту, я Вам скину, правда без примеров. Кстати книга свободна к скачиванию, на Амазоне ее бумажный вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Спасибо. Нашел http://www.desktopsdr.com/download-files Вроде там и файлы имеются. Сомневаюсь что это выход. Читать не перечитать. Можно-ли из матлаб кода делать компоненты для симулинк? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pavel Proskura 1 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Спасибо. Нашел http://www.desktopsdr.com/download-files Вроде там и файлы имеются. Сомневаюсь что это выход. Читать не перечитать. Можно-ли из матлаб кода делать компоненты для симулинк? Можно. В библиотеке симулинк есть блок с названием Matlab Function. Туда Вы можете прописать свою функцию (предварительно определив входы и выходы), а затем вставить данный блок в свой симулинк-дизайн. Можно. В библиотеке симулинк есть блок с названием Matlab Function. Туда Вы можете прописать свою функцию (предварительно определив входы и выходы), а затем вставить данный блок в свой симулинк-дизайн. Касаемо Ваших вопросов, всю книгу можно не перечитывать, там есть глава посвященная моделированию и расчету контура ФАПЧ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 (изменено) · Жалоба Касаемо Ваших вопросов, всю книгу можно не перечитывать, там есть глава посвященная моделированию и расчету контура ФАПЧ. Понятно. По ходу несколько моментов касательно самой цифровой ФАПЧ. Не совсем понятен порядок расчета цифровой ФАПЧ. В разных букварях все по разному. Пока прослеживается это: 1. Определяются исходные данные для петли... тут везде по разному к примеру так Knco= 1/4096; % NCO gain (разрядность NCO) KP= 2; % 1/cycles phase detector gain wn = 2*pi*400; % rad/s loop natural frequency (очевидно несущая круговая частота) fs = 25e6; % Hz sample rate (частота выборок или семплирования) zeta = 1; % damping factor Ts= 1/fs; % s sample time (время семплирования) В этой части вопросы вызывают KP и zeta 2. На базе исходных данных производится расчет интегрирующего и пропорционального коэффициентов собственно для рачета интегратора или петлевого фильтра. Похоже это одно и то же. KL= 2*zeta*wn*Ts/(KP*Knco); % loop filter proportional gain KI= wn^2*Ts^2/(KP*Knco); % loop filter integral gain fprintf('Пропорц. коэфф KL %d\n', KL); fprintf('Интегр. коэфф KI %d\n', KI); 3. На базе этих расчетов рассчитываются коэффициенты петлевого фильтра a и b b0= KP*KL*Knco; b1= KP*Knco*(KI - KL); a1= KP*KL*Knco - 2; a2= 1 + KP*Knco*(KI - KL); b= [b0 b1]; % numerator coeffs a= [1 a1 a2]; % denominator coeffs 4. Далее можно построить кривую фазовой ошибки N= 100000; n= 1:N; t= n*Ts; x= ones(1,N); % step function y= filter(b,a,x); % step response pe = y - 1; % phase error response plot(t*1e3,pe),grid xlabel('ms'),ylabel('Phase Error = u/ref-phase -1'),figure %plot phase error 5. Очевидно что далее можно строить собственно цифровую ФАПЧ подключив перед петлевым фильтром фазовый детектор, а после него NCO Понятное дело, что это все в основных чертах. Наверняка имеется еще масса всяких нюансов. Хотелось-бы получить комментарии по этому поводу. Что не так в представленной последовательности? Может имеются варианты, вариации? Тут http://www.dsplib.ru/content/dpll/dpll.html например все по другому считается Пропорциональный и интегрирующий коэффициенты зависят от времени T = 1.0/Fs; // интервал дискретизации (сек) Разве это правильно? Изменено 24 апреля, 2018 пользователем Acvarif Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 7 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба В этой части вопросы вызывают KP Чтайте, читайте pll_notes.pdf From this we see that the phase detector gain Kp is A/2 which depends on the amplitude of the sinusoid at the PLL input. This illustrates an important caveat in PLL design: Care must be taken to insure that the input signals levels are controlled. Otherwise, the PLL may not performed as designed. Разве это правильно? Вот и проверьте на модели правильно или нет, посчитать по формулам правильно с первого раза шансов 0. Fixed point рано ещё трогать, сделайте в даблах для начала, и без блоков, содержимое которых не понимаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pavel Proskura 1 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Универсального метода расчета применительно к ФАПЧ, наверное нету. Все зависит от конкретной задачи. Мне ближе всего алгоритм расписанный в книге : DigitaICommunication_s: A Discrete-Time Approach (Michail Rice), там в приложении достаточно толково описана процедура расчета. Но еще раз повторюсь, что некоторые вещи (как коэфф. демпфирования, нормированная полоса, макс. частотная рассторойка при которой еще возможен захват), определяются конкретной задачей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 (изменено) · Жалоба Чтайте, читайте pll_notes.pdf Само-собой. Читаю. Постепенно складывается некоторое представление по теме. Универсального метода расчета применительно к ФАПЧ, наверное нету. Все зависит от конкретной задачи. Мне ближе всего алгоритм расписанный в книге : DigitaICommunication_s: A Discrete-Time Approach (Michail Rice), там в приложении достаточно толково описана процедура расчета. Но еще раз повторюсь, что некоторые вещи (как коэфф. демпфирования, нормированная полоса, макс. частотная рассторойка при которой еще возможен захват), определяются конкретной задачей. Универсального вообще мало. Нашел только на Google https://docs.google.com/file/d/0B7Es-MJ0F4V...b3o4SDQ/preview Поделитесь, если не сложно, ссылкой на .pdf А, все, скачал https://docs.google.com/file/d/0B7Es-MJ0F4V...Ddmb3o4SDQ/view Еще и исправления имеются http://www.et.byu.edu/~mdr/downloads/errata_1April2010.pdf Изменено 24 апреля, 2018 пользователем Acvarif Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба При чтении pll_notes по ходу возникают непонятки 1. по поводу натуральной частоты написано Wn is called the natural frequency Рассчитывается она как корень квадратный из произведений Ko*Kp*K2 Все K это петлевые константы которые связаны с так наз. натуральной частотой - Kp связан с амплитудой входного сигнала - типа коэффициент усиления фазового детектора = 2 - Ko типа коэффициен усиления VCO. Как он определяется? - K2 так и не понятно что это Получается что для расчета петли необходимо определиться с четырьмя коэффициентами которые рассчитываются так Чтобы получить эти коэффициенты необходимы noise bandwidth Bn и дампинг фактор Как они определяются? Загадка. Пока у меня в голове полная путаница. Не складывается пошаговая картинка расчета петли в соответствии с данным документом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pavel Proskura 1 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Смотрите. Книга которую я указал первой для Matlab SDR-RTL. Стр. 264. параграф 7.8 Прочтите его очень внимательно, там подробно (по шагам расписан тот алгоритм который Вы взяли из книги Rice). Там подробно расписано откуда, что берется, как что задается в исходных данных и как считается по шагам, применительно к цифровой ФАПЧ. После прочтения все Ваши вопросы должны проясниться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 25 апреля, 2018 Опубликовано 25 апреля, 2018 (изменено) · Жалоба Смотрите. Книга которую я указал первой для Matlab SDR-RTL. Стр. 264. параграф 7.8 Прочтите его очень внимательно, там подробно (по шагам расписан тот алгоритм который Вы взяли из книги Rice). Там подробно расписано откуда, что берется, как что задается в исходных данных и как считается по шагам, применительно к цифровой ФАПЧ. После прочтения все Ваши вопросы должны проясниться. Нашел. Спасибо. Изменено 25 апреля, 2018 пользователем Acvarif Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 25 апреля, 2018 Опубликовано 25 апреля, 2018 (изменено) · Жалоба Модель ФАПЧ %% Модель цифровой ФАПЧ % количество выборок на модель 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? Изменено 25 апреля, 2018 пользователем Acvarif Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться