В этом примере показано, как настроить компоненты пассивного контурного фильтра, чтобы улучшить полосу пропускания контура системы фазовой подстройки частоты (PLL). Чтобы получить желаемую частотную характеристику цикла, этот пример вычисляет параметры контурного фильтра с помощью настраивающих методов фиксированной структуры, предоставленных в программном обеспечении Control System Toolbox™. Система PLL моделируется с помощью блока эталонной архитектуры из библиотеки Mixed-Signal Blockset™.
PLL является системой с обратной связью, которая производит выходной сигнал, фаза которого зависит от фазы своего входного сигнала. Следующая схема показывает простую модель с блоком эталонной архитектуры PLL (Целое число N PLL с Одним Делителем частоты Модуля) и блоком PLL Testbench.
Архитектура с обратной связью в блоке PLL состоит из детектора частоты фазы (PFD), насоса заряда, контурного фильтра, управляемого напряжением генератора (VCO) и делителя частоты.
Библиотека Mixed-Signal Blockset обеспечивает несколько блоков эталонной архитектуры, чтобы спроектировать и симулировать системы PLL в Simulink®. Можно настроить компоненты блока Loop Filter, который является пассивным фильтром, чтобы получить желаемую полосу пропускания разомкнутого контура и запас по фазе.
Используя программное обеспечение Control System Toolbox, можно задать форму желаемого ответа цикла и настроить параметры контроллера фиксированной структуры, чтобы аппроксимировать ту форму цикла. Для получения дополнительной информации об определении желаемой формы цикла см. Технические требования Формы и Запаса устойчивости Цикла (Control System Toolbox). В предыдущей модели архитектуры PLL контурный фильтр задан как фиксированный порядок, контроллер фиксированной структуры. Чтобы достигнуть целевой формы цикла, значения сопротивлений и емкости контурного фильтра настраиваются. Выполнение так улучшает полосу пропускания разомкнутого контура системы и, в результате уменьшает измеренное время блокировки.
Откройте модель.
model = 'PLL_TuneLoopFilter';
open_system(model)
Блок PLL использует настройку, заданную в Проекте, и Оцените Простую Модель PLL для PFD, насоса Заряда, VCO и Предскалярных вкладок в параметрах блоков. Вкладка Loop Filter задает тип как фильтр четвертого порядка и устанавливает полосу пропускания контура на 100 кГц и запас по фазе до 60 градусов. Значения для сопротивлений и емкостей автоматически вычисляются.
Чтобы наблюдать текущую динамику цикла PLL, в параметрах блоков, на вкладке Analysis, выбирают Open Loop Analysis и Closed Loop Analysis. Частота усиления единицы составляет 100 кГц. Система с обратной связью устойчива, и полоса пропускания на 3 дБ составляет 128,94 кГц.
Симулируйте модель. Блок PLL Testbench отображает время блокировки PLL и метрики шума фазы. Построить и анализировать профиль шума фазы, в параметрах блоков Испытательного стенда PLL, на вкладке Stimulus, избранном шуме фазы Plot. Измеренное время блокировки составляет 2,30 микросекунды.
open_system([model,'/Scope'])
sim(model);
Задайте параметры PLL, должен был создать систему с обратной связью в MATLAB®.
PllKphi = 5e-3; % Charge pump output current PllKvco = 1e8; % VCO sensitivity PllN = 70; % Prescaler ratio PllR2 = 88.3; % Loop filter resistance for second-order response (ohms) PllR3 = 253; % Loop filter resistance for third-order response (ohms) PllR4 = 642; % Loop filter resistance for fourth-order response (ohms) PllC1 = 8.13e-10; % Loop filter direct capacitance (F) PllC2 = 1.48e-7; % Loop filter capacitance for second-order response (F) PllC3 = 1.59e-10; % Loop filter capacitance for third-order response (F) PllC4 = 9.21e-11; % Loop filter capacitance for fourth-order response (F)
Чтобы смоделировать контурный фильтр как настраиваемый элемент, сначала создайте настраиваемые скалярные действительные параметры (см. realp
(Control System Toolbox)), чтобы представлять каждый компонент фильтра. Для каждого параметра задайте начальное значение и границы. Кроме того, задайте, свободен ли параметр быть настроенным.
Используйте текущие значения сопротивления и емкости контурного фильтра в качестве начального числового значения настраиваемых параметров.
% Resistances R2 = realp('R2',PllR2); R2.Minimum = 50; R2.Maximum = 2000; R2.Free = true; R3 = realp('R3',PllR3); R3.Minimum = 50; R3.Maximum = 2000; R3.Free = true; R4 = realp('R4',PllR4); R4.Minimum = 50; R4.Maximum = 2000; R4.Free = true; % Capacitances C1 = realp('C1',PllC1); C1.Minimum = 1e-12; C1.Maximum = 1e-7; C1.Free = true; C2 = realp('C2',PllC2); C2.Minimum = 1e-12; C2.Maximum = 1e-7; C2.Free = true; C3 = realp('C3',PllC3); C3.Minimum = 1e-12; C3.Maximum = 1e-7; C3.Free = true; C4 = realp('C4',PllC4); C4.Minimum = 1e-12; C4.Maximum = 1e-7; C4.Free = true;
Используя эти настраиваемые параметры, создайте пользовательское настраиваемое основанное на модели на уравнении передаточной функции контурного фильтра, заданном в разделе More About страницы с описанием блока Loop Filter. loopFilterSys
genss
Модель (Control System Toolbox) параметрируется R2
, R3
, R4
C1
C2
, C3
, and
C4
.
A4 = C1*C2*C3*C4*R2*R3*R4; A3 = C1*C2*R2*R3*(C3+C4)+C4*R4*(C2*C3*R3+C1*C3*R3+C1*C2*R2+C2*C3*R2); A2 = C2*R2*(C1+C3+C4)+R3*(C1+C2)*(C3+C4)+C4*R4*(C1+C2+C3); A1 = C1+C2+C3+C4; loopFilterSys = tf([R2*C2, 1],[A4, A3, A2, A1, 0]);
Используйте представления передаточной функции, чтобы задать фиксированные блоки в архитектуре (насос заряда, VCO и делитель частоты), на основе их соответствующих характеристик частотной характеристики [1].
chargePumpSys = tf(PllKphi,1); % Linearized as a static gain vcoSys = tf(PllKvco,[1 0]); % Linearized as an integrator prescalerSys = tf(1/PllN,1); % Linearized as a static gain
Задайте имена ввода и вывода для каждого блока. Соедините элементы на основе имен сигнала (см. connect
(Control System Toolbox)), чтобы создать настраиваемую систему с обратной связью (см. genss
) представление архитектуры PLL как показано.
chargePumpSys.InputName = 'pfd_out'; % Charge pump (fixed block) chargePumpSys.OutputName = 'cp_out'; loopFilterSys.InputName = 'cp_out'; % Loop filter (tunable block) loopFilterSys.OutputName = 'lf_x'; AP = AnalysisPoint('X'); % Analysis point does not change the architecture of closed-loop system AP.InputName = 'lf_x'; AP.OutputName = 'lf_out'; vcoSys.InputName = 'lf_out'; % VCO (fixed block) vcoSys.OutputName = 'vco_out'; prescalerSys.InputName = 'vco_out'; % Prescaler (fixed block) prescalerSys.OutputName = 'prescaler_out'; pfd = sumblk('pfd_out = ref - prescaler_out'); % Phase-frequency detector (sum block) % Create a genss model for the closed-loop architecture CL0 = connect(chargePumpSys,loopFilterSys,AP,vcoSys,prescalerSys,pfd,'ref','vco_out');
Задайте усиление цикла как модель данных частотной характеристики путем обеспечения целевых усилений в течение по крайней мере двух десятилетий ниже и двух десятилетий выше желаемой полосы пропускания разомкнутого контура. Желаемый спад обычно выше, который приводит к более высокому затуханию шума фазы.
Определение соответствующей целевой формы цикла является критическим аспектом этого проекта. Настраиваемый компенсатор является системой четвертого порядка с одним интегратором и одним нулем, и объект представляет интегратор. Усиления цикла должны быть выполнимой целью для структуры разомкнутого контура.
Для настройки контурного фильтра создайте настраивающуюся цель на основе целевой формы цикла, задающей интегральное действие, перекрестное соединение на 3 МГц и требование спада 40 дБ/десятилетие. Цель осуществляется в течение трех десятилетий ниже и выше желаемой полосы пропускания разомкнутого контура.
LoopGain = frd([100,10,1,1e-2,1e-4],2*pi*[1e4,1e5,3e6,3e7,3e8]); % frd uses response data and corresponding frequencies in rad/s LoopShapeGoal = TuningGoal.LoopShape('X',LoopGain); % Use AnalysisPoint as location where open-loop response shape is measured LoopShapeGoal.Focus = 2*pi*[1e3, 1e9]; % Enforce goal in frequency range (use rad/s) LoopShapeGoal.Name = 'Loop Shape Goal'; % Tuning goal name MarginsGoal = TuningGoal.Margins('X',7.6,60); MarginsGoal.Focus = [0 Inf]; MarginsGoal.Openings = {'X'}; MarginsGoal.Name = 'Margins Goal';
Наблюдайте текущую форму разомкнутого контура системы PLL со ссылкой на целевую форму цикла. S представляет обратную функцию чувствительности, и T представляет дополнительную функцию чувствительности. По умолчанию графики Control System Toolbox используют rad/s в качестве единицы частоты. Для получения дополнительной информации о том, как изменить единицу частоты в Гц, см. Редактор Настроек Тулбокса (Control System Toolbox).
figure viewGoal(LoopShapeGoal,CL0)
Используйте systune
настроить обратную связь фиксированной структуры. Выполнение так вычисляет значения сопротивления и емкости, чтобы удовлетворить мягкой цели проекта на основе целевой формы цикла. Запустите настраивающийся алгоритм с пятью различными наборами начального значения в дополнение к начальным значениям, заданным во время создания настраиваемых скалярных действительных параметров.
Options = systuneOptions(); Options.SoftTol = 1e-5; % Relative tolerance for termination Options.MinDecay = 1e-12; % Minimum decay rate for closed-loop poles Options.MaxRadius = 1e12; % Maximum spectral radius for stabilized dynamics Options.RandomStart = 5; % Number of different random starting points [CL,fSoft,gHard,Info] = systune(CL0,[LoopShapeGoal; MarginsGoal],[],Options);
Final: Soft = 3.16, Hard = -Inf, Iterations = 79 Final: Failed to enforce closed-loop stability (max Re(s) = 3.1e+04) Final: Failed to enforce closed-loop stability (max Re(s) = 6.7e+04) Final: Failed to enforce closed-loop stability (max Re(s) = 6.3e+04) Final: Failed to enforce closed-loop stability (max Re(s) = 7.5e+04) Final: Failed to enforce closed-loop stability (max Re(s) = 4.9e+04)
systune
возвращает настроенную систему с обратной связью CL
в обобщенной форме пространства состояний.
Алгоритм не удается сходиться для случайных начальных значений и обеспечивает возможное решение только, когда текущие значения компонента контурного фильтра выбраны в качестве начальных условий. Для настройки проблем, которые являются менее комплексными, такими как контурный фильтр третьего порядка, алгоритм менее чувствителен к начальным условиям, и рандомизированный запускается, эффективный метод для исследования пространства параметров и схождения к возможному решению.
Исследуйте настроенную форму разомкнутого контура со ссылкой на целевую форму цикла. Заметьте что, в то время как настроенная форма цикла не достигает цели, увеличения полосы пропускания разомкнутого контура, в то время как цикл сохраняет то же высокочастотное затухание.
figure viewGoal(LoopShapeGoal,CL)
Извлеките настроенные значения компонента контурного фильтра.
Rtuned = [getBlockValue(CL,'R2'),... getBlockValue(CL,'R3'),... getBlockValue(CL,'R4')]; Ctuned = [getBlockValue(CL,'C1'),... getBlockValue(CL,'C2'),... getBlockValue(CL,'C3'),... getBlockValue(CL,'C4')];
Запишите настроенные значения компонента контурного фильтра в блок PLL с помощью setLoopFilterValue
функции помощника предоставляют пример.
blk = [model,'/Integer N PLL with Single Modulus Prescaler'];
setLoopFilterValue(blk,Rtuned,Ctuned);
Наблюдайте Графики для анализа Анализа и Замкнутого цикла Разомкнутого контура от вкладки Analysis в Целом числе N PLL с Одними параметрами блоков Делителя частоты Модуля. Частота усиления единицы и полоса пропускания на 3 дБ показывают улучшение и - теперь 341,4 кГц и 511,72 кГц, соответственно, в то время как цикл сохраняет тот же профиль шума фазы.
Симулируйте модель и получите измерения Испытательного стенда PLL и контурный фильтр выход с настроенными компонентами.
sim(model);
[1] Бэнерджи, декан. Эффективность PLL, симуляция и проект. Индианаполис, IN: Dog Ear Publishing, 2006.