Шум фазы в PLL Выход

В этом примере показано, как предсказать шум фазы при выходе фазовой подстройки частоты (PLL), симулируйте PLL с помощью Испытательного стенда PLL и сравните результаты симуляции с теоретическими предсказаниями.

Этот пример демонстрирует три эффекта шума фазы, индивидуально или объединенный, в зависимости от настройки, которую вы выбираете:

  1. Ссылочная модуляция или шум фазы

  2. Шум фазы VCO

  3. Шум фазы VCO подпроизводится делителем частоты обратной связи

Откройте модель PllPhaseNoiseExample.slx.

open_system('PllPhaseNoiseExample.slx');

Этот пример использует Целое число N PLL с Одним Делителем частоты Модуля от Смешанного Blockset™ Сигнала.

Испытательный стенд PLL генерирует ссылочный входной сигнал для PLL и измеряет фазу спектральная плотность при выходе PLL.

Дополнительная ссылочная фазовая модуляция PRBS6 в этой модели используется, чтобы контрастировать ответ на ссылочное изменение фазы с ответом на шум фазы VCO.

Низкая передача resamplers во входных параметрах к средствам оценки спектра является фильтрами сглаживания. Эти фильтры преобразуют переменный шаг дискретные сигналы в фиксированный шаг дискретные сигналы, требуемые средствами оценки спектра.

Спектры сигналов ввода и вывода PLL оцениваются и вошли в систему базовое рабочее пространство так, чтобы можно было сравнить результаты симуляции с результатами теоретических вычислений.

Осциллограф в модели в качестве примера обеспечивает индикатор хода выполнения для симуляции.

Чтобы оценить поведение PLL под множеством условий, используйте отдельный файл рабочей области для каждого различного набора условий. Этот пример обеспечивает пять таких поддержек .mat файлы. Все они производят тот же переходный процесс цикла.

  1. Baseline.mat - Максимально близко к идеалу. Используйте, чтобы оценить числовой шум, введенный моделью и средством моделирования.

  2. ReferenceModulation.mat - Введите ссылочную фазовую модуляцию. Используйте, чтобы оценить передаточную функцию фазы PLL.

  3. VCOPhaseNoise.mat - Введите шум фазы VCO и отношение делителя частоты, равное одному. Используйте, чтобы оценить функцию ошибок цикла управления PLL.

  4. InbandPhaseNoise.mat - Введите шум фазы VCO и отношение делителя частоты, больше, чем одно. Используйте, чтобы оценить эффект отношения делителя частоты на функции ошибок цикла управления PLL.

  5. TotalPhaseNoise.mat - Все источники шума фазы включены, и отношение делителя частоты больше того.

Теоретические вычисления

Этот раздел показывает, как вычислить ожидаемый ответ PLL.

Целевая полоса пропускания контура PLL составляет 2 МГц с 45 запасами по фазе степени. Компоненты контурного фильтра масштабируются к практическому уровню, и текущий выход насоса заряда масштабируется тем же фактором, чтобы обеспечить ту же динамику цикла.

Функциональный getPllLoopResponse вычисляет усиление цикла в зависимости от частоты и затем вычисляет ожидаемый ответ на сигналы снаружи или в PLL. Задайте входные параметры, такие как текущий выход насоса заряда, чувствительность VCO, отношение делителя частоты и пассивные значения компонента контурного фильтра для getPllLoopResponse функционируйте, чтобы использовать.

PllKphi = 5e-3;     % Charge Pump output current
PllKvco = 100e6;    % VCO sensitivity
PllN    = 70;       % Prescaler ratio
PllR2   = 1.33e3;   % Loop filter resistance for second order response (ohms)
PllR3   = 1.7e4;    % Loop filter resistance for third order response (ohms)
PllR4   = 0;        % Loop filter resistance for fourth order response (ohms)
PllC1   = 1.31e-11; % Loop filter direct capacitance (F)
PllC2   = 1.44e-10; % Loop filter capacitance for second order response (F)
PllC3   = 9.41e-13; % Loop filter capacitance for third order response (F)
PllC4   = 0;        % Loop filter capacitance for fourth order response (F)

Скрипт prepareExpectedSpectra вычисляет спектральную плотность ссылочной фазовой модуляции и VCO шум фазы выхода. Скрипт затем также комбинирует результат с ответом цикла PLL, чтобы получить шум фазы спектральная плотность при выходе PLL. Ссылочная фазовая модуляция является детерминированным процессом, для которого амплитуда спектральных компонентов описывается как часть амплитуды несущей (дБн). В отличие от этого шум фазы VCO является стохастическим процессом, для которого спектральная плотность описывается в дБн/Гц.

Задайте входные параметры для prepareExpectedSpectra скрипт, такой как ссылочная входная частота, количество ссылочных циклов на символ шаблона данных о фазовой модуляции PRBS6, амплитуду одного спектрального компонента ссылочной фазовой модуляции PRBS6, полоса пропускания разрешения, чтобы оценить спектры с шумом фазы, вектором смещения частоты и шумом фазы спектральная плотность при заданном смещении частоты.

PllAddPhaseNoise = 'on'; % Enable VCO phase noise
PllFoffset    = [30e3 100e3 1e6 3e6 10e6]; % VCO offset frequencies (Hz)
PllPhaseNoise = [-56 -106 -132 -143 -152]; % VCO output phase noise (dBc/Hz)
CfgSelectRefMod = '0';   % Enable reference phase noise modulation
CfgRef  = 30e6;          % Reference frequency
CfgCyclesPerSymbol = 2;  % Reference cycles per PRBS6 modulation symbol
CfgModLevel   = -110;    % Reference phase modulation level (dBc/Hz)
CfgResBandwidth = 100e3; % PLL Testbench resolution bandwidth
CfgTargetSpectrum = [100e3 -145;1e6 -135;3e6 -140;10e6 -150];
                         % PLL Testbench target phase noise (dBc/Hz)

Если переменная WorkspaceFile существует и указывает на файл, который может загрузиться, загрузить тот файл в рабочую область. Чтобы использовать настройку, предоставленную этим примером, установите значение WorkspaceFile к имени файла для той настройки.

if exist('WorkspaceFile','var') && exist(WorkspaceFile,'file')
    load(WorkspaceFile);
end

Анализируйте цикл управления PLL с помощью getPllLoopResponse функция. Выходные параметры этой функции:

  • LoopFrequency - Частота указывает, в котором ожидаемые ответы вычисляется.

  • LoopZofs - Импеданс передачи контурного фильтра в зависимости от частоты.

  • LoopGofs - Усиление цикла от выхода делителя частоты к входу VCO, включая чувствительность напряжения VCO. Обратите внимание на то, что отношение делителя частоты не включено в этот выход, но включено в передаточные функции замкнутого цикла.

  • LoopHofs - Передаточная функция фазы замкнутого цикла выходит на вход ссылки PLL к PLL выход.

  • LoopEofs - Ошибочная передаточная функция фазы замкнутого цикла относительно VCO выход.

[LoopFrequency, LoopZofs, LoopGofs, LoopHofs, LoopEofs, LoopPhStep] = ...
    getPllLoopResponse([0,PllR2,PllR3,PllR4],[PllC1,PllC2,PllC3,PllC4], ...
                        PllKphi,PllKvco,PllN);

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

Переменные рабочей области для ожидаемой спектральной плотности:

  • ExpInputFrequency - Вектор из частот, для которых ожидаемый входной спектр вычисляется (Гц).

  • ExpInputSpectrum - Вектор из ожидаемых значений спектра в ссылочном входе к PLL (dBm в загрузку на один Ом в полосе пропускания разрешения CfgResBandwidth).

  • ExpOutputFrequency - Вектор из частот, для которых ожидаемый выходной спектр вычисляется (Гц).

  • ExpOutputSpectrum - Вектор из ожидаемых значений спектра в PLL выход (dBm в загрузку на один Ом в полосе пропускания разрешения CfgResBandwidth).

prepareExpectedSpectra;

Исследуйте ожидаемые результаты

В этом разделе исследуйте ожидаемое поведение PLL.

Запустите путем рассмотрения ответа замкнутого цикла PLL. Рассмотрите три основных ответа: переходный процесс, передаточная функция и функция ошибок.

Переходный процесс

В большинстве приложений PLL переходный процесс цикла является самым важным, когда цикл первоначально получает блокировку фазы. Для очень маленьких начальных смещений частоты или для относительно высокой полосы пропускания замкнутого цикла, переходный процесс предсказывает время захвата цикла обоснованно точно. Однако во многих случаях переходный процесс цикла только представляет ответ во время захвата фазы, после того, как захват частоты уже произошел. Этот пример только обращается ко времени захвата фазы.

Постройте переходный процесс цикла в PLL.

figure(1);
plot(LoopPhStep.Time,LoopPhStep.Data);
title({'PLL Loop Transient Response';'To Unit Input Phase Step'});
xlabel('Seconds');
ylabel('Output Phase');

Передаточная функция

Передаточная функция от ссылочного входа до PLL, выход может быть важным или когда PLL, как ожидают, отследит модулируемый вход очень точно или когда это, как будут ожидать, отфильтрует шум от шумного входа.

Создайте график логарифмического журнала передаточной функции PLL.

figure(2);
semilogx(LoopFrequency,20*log10(abs(LoopHofs)));
title('PLL Transfer Function');
xlabel('Hz');
ylabel('dB');

Функция ошибок

Цикл управления PLL, как ожидают, отклонит шум фазы, сгенерированный в самом PLL, таком как шум фазы VCO. Передаточная функция между шумом фазы VCO и PLL выход иногда называется функцией ошибок цикла. Исследование этой передаточной функции помогает компенсировать ошибку цикла, прежде чем это будет применено к другому источнику шума.

Создайте график логарифмического журнала функции ошибок цикла PLL.

figure(3);
semilogx(LoopFrequency,20*log10(abs(LoopEofs)));
title('PLL Loop Error Function');
xlabel('Hz');
ylabel('dB');

Постройте общий ожидаемый шум фазы в PLL выход.

figure(4);
plot(ExpOutputFrequency,ExpOutputSpectrum);
title('PLL Output Spectrum');
xlabel('Hz');
ylabel('dBm into 1 ohm');
xlim([PllN*CfgRef-2*PllFoffset(end), PllN*CfgRef+2*PllFoffset(end)]);

phaseNoiseMeasure функция является функцией обратного вызова, используемой Испытательным стендом PLL. Это отображает целевой выходной шум фазы спектральная плотность наряду с симулированным или ожидаемым шумом фазы спектральная плотность.

Чтобы сравнить ожидаемый выходной шум фазы с определенной целью проекта, задайте переменную CfgTargetSpectrum рабочей области. CfgTargetSpectrum состоит из двух массивов столбца, которые задают целевой шум фазы при выходе PLL. Первый столбец задает смещения частоты в Гц, и второй столбец задает соответствующий шум фазы спектральная плотность если дБн/Гц. Испытательный стенд PLL использует функцию обратного вызова phaseNoiseMeasure отобразить ожидаемый и симулированный шум фазы спектральная плотность.

Просмотрите ожидаемый PLL шум фазы выхода в модулях дБн/Гц.

[~] = phaseNoiseMeasure(ExpOutputFrequency,ExpOutputSpectrum,...
    CfgResBandwidth, CfgTargetSpectrum(:,1).','on','5', ...
    CfgTargetSpectrum(:,2).');

Если ответ цикла не является удовлетворительным, вы можете посмотреть на более подробные результаты, такие как трансимпеданс контурного фильтра (LoopZofs) получить дополнительное понимание, которое могло помочь вам улучшить проект PLL.

Запустите симуляцию

В то время как процесс настройки является прямым, существует много параметров, которые будут сконфигурированы. Используйте configureExamplePLL скрипт, чтобы сконфигурировать модель PLL Simulink®, затем выполните модель.

configureExamplePll;
SimOut = sim('PllPhaseNoiseExample');

Чтобы сделать графический вывод легче, преобразуйте результаты в следующие четыре переменные рабочей области:

  • SimInputFrequency - Вектор из частот, для которых входной спектр симуляции хранится (Гц).

  • SimInputSpectrum - Вектор из значений спектра в ссылочном входе к PLL (dBm в загрузку на один Ом в полосе пропускания разрешения CfgResBandwidth).

  • SimOutputFrequency - Вектор из частот, для которых выходной спектр симуляции вычисляется (Гц).

  • SimOutputSpectrum - Вектор из симулированных значений спектра в PLL выход (dBm в загрузку на один Ом в полосе пропускания разрешения CfgResBandwidth).

Сделайте результаты легче построить из рабочей области.

SimInputFrequency = reshape(SimOut.InputFrequency.Data(:,end),1,[]);
SimInputSpectrum = reshape(SimOut.InputSpectrum.Data(:,end),1,[]);
SimOutputFrequency = reshape(SimOut.OutputFrequency.Data(:,end),1,[]);
SimOutputSpectrum = reshape(SimOut.OutputSpectrum.Data(:,end),1,[]);

Сравните ожидаемые и симулированные результаты

Сравните ожидаемый и симулированный шум фазы в PLL выход.

figure(4);
plot(ExpOutputFrequency,ExpOutputSpectrum);
title('PLL Output Spectrum');
xlabel('Hz');
ylabel('dBm into 1 ohm');
xlim([PllN*CfgRef-2*PllFoffset(end), PllN*CfgRef+2*PllFoffset(end)]);
hold on;
plot(SimOutputFrequency,SimOutputSpectrum);
hold off;

Просмотрите ожидаемый PLL шум фазы выхода в модулях дБн/Гц.

[~] = phaseNoiseMeasure(SimOutputFrequency,SimOutputSpectrum,...
    SimOutputFrequency(2)-SimOutputFrequency(1),...
    CfgTargetSpectrum(:,1).','on','5',CfgTargetSpectrum(:,2).');

Сохраните настройку и результаты

Сохраните целую рабочую область, включая конфигурацию системы в ее текущем состоянии и результатах, к файлу. Если WorkspaceFile переменная уже существует, можно повторно сохранить текущее состояние в тот файл. Чтобы сохранить в новый файл, измените значение WorkspaceFile.

if exist('WorkspaceFile','var')
    save(WorkspaceFile);
end

Смотрите также

| |

Похожие темы