exponenta event banner

Пользовательская модель нелинейного усилителя

В этом примере показано, как:

  • Создание пользовательских пользовательских моделей путем создания объекта RF- Toolbox™ в рабочей области MATLAB ® и его импорта в блок усилителя эквивалентной полосы частот.

  • Создайте нелинейный усилитель с регулируемой кривой Pin-Pout.

  • Моделирование интермодуляционных продуктов в двухтонной тестовой модели.

В примере отношение Vin-Vout для усилителя является простым многочленом. В примере эта зависимость напряжения используется для формирования кривой Pin-Pout, которая включена в модель усилителя. Хотя в примере используется конкретная полиномиальная функция, тот же подход может быть использован для создания произвольных функций мощности и фазы в зависимости от мощности в и частоты. Действительно, он может быть использован для установки любых пригодных для записи свойств компонента, таких как S-параметры или шумовые свойства.

Определение зависимости напряжения от напряжения

Используйте команды MATLAB для создания вектора полиномиальных коэффициентов, которые определяют требуемое отношение Vin-Vout. Соглашение MATLAB заключается в сохранении многочленовых коэффициентов n-го порядка в векторе строк длиной n + 1 с n-й степенью в первом элементе и нулевой степенью (константой) в последнем (n + 1-м) элементе. Серия питания здесь приведена для иллюстрации и может быть легко изменена. Можно распознать значения как первые двенадцать членов полиномиального ряда расширения гиперболической касательной функции.

TanhSeries = [-1382/155925 0 62/2835 0 -17/315 0 2/15 0 -1/3 0 1 0];

Затем выберите диапазон для независимой переменной Vin и определите вектор значений входного напряжения для этого диапазона. Нижний конец (1 мВ здесь) должен быть достаточно низким, чтобы линейный член доминировал над Vout. Верхний предел должен быть выбран таким образом, чтобы Vout только достиг своего локального максимального значения. Полученный Vout будет экстраполирован для всех Vin, превышающих 1,23. Затем вычислите вектор значений выходного напряжения Vout, используя последовательность мощностей.

Vin = linspace(0.001,1.23,100);     % volts
Vout = polyval(TanhSeries, Vin);    % volts

Создание нелинейного усилителя и создание кривой контакта-контакта

Создайте объект усилителя RF Toolbox со значениями свойств по умолчанию. Затем генерируют данные Pin-Pout (в ваттах) для усилителя путем деления квадрата входного и выходного векторов напряжения на опорный импеданс усилителя. Используйте данные Pin-Pout для указания нелинейности объекта усилителя. В этом примере кривая Pin-Pout определяется для одной точки частоты (2,1 ГГц) и используется (путем экстраполяции) во всех точках частоты. Для получения информации о создании компонента с отдельно определенными кривыми для любого числа частотных точек см. документацию по RF Toolbox.

amp = rfckt.amplifier;
amp.NonlinearData.Freq = 2.1e9;             % Hz
Zref = 50;                                  % ohm
amp.NonlinearData.Pin  = {(Vin.^2)./Zref};  % watts
amp.NonlinearData.Pout = {(Vout.^2)./Zref}; % watts

В этом примере мы определяем изменение фазы как нулевое для всех контактов и всех частот, но RF Toolbox позволяет задать его как функцию контактов и частот.

amp.NonlinearData.Phase = {zeros(size(Vin))};

Приведение коэффициента усиления малого сигнала в соответствие с наклоном коэффициента усиления мощности при низкой мощности

Определите параметр S21 усилителя в точке частоты, для которой заданы данные мощности. Параметр S21 сети должен соответствовать наклону усиления на конце низкой мощности кривой Pin-Pout в этой точке частоты. Если эти значения противоречивы, программное обеспечение RF Blockset попытается согласовать данные и выдаст соответствующее предупреждение. Для обеспечения согласованности определите параметр S21 как линейный член степенного ряда, который определяет отношение Vin-Vout. Линейный член является следующим за последним элементом вектора. Постройте график кривой Контакт (Pin) - Выгрузка (Pout).

amp.NetworkData.Freq = amp.NonlinearData.Freq;
amp.NetworkData.Data = [0 0; TanhSeries(end-1) 0];
fig = figure;
plot(amp,'Pout');

Запуск тестового кабеля с входной мощностью 7 дБм на тональный сигнал

На следующем рисунке показан тестовый жгут для нового усилителя. Входной сигнал состоит из суммы двух тонов, один 10kHz ниже центральной частоты, и один 10kHz выше нее. Область спектра показывает различные интермодуляционные продукты на более высоких и низких частотах, чем два тестовых тона. Подсистема EVM вычисляет величину вектора ошибки. Откройте и запустите модель «rfb_user_defined_amp_mdl». Для просмотра и редактирования предустановленных значений рабочего пространства модели щелкните вкладку «Моделирование» на панели инструментов и выберите «Обозреватель моделей».

%

open('rfb_user_defined_amp_mdl.slx');

sim('rfb_user_defined_amp_mdl');

Повторный запуск моделирования с использованием входного уровня мощности 8 дБм на тональный сигнал

Чтобы увеличить мощность источника от 7dBm до 8 дБм из сценария MATLAB, сначала получите дескриптор для текущей рабочей области модели Simulink ®. Затем задайте для соответствующей переменной рабочей области (power_in_dBm в этом примере) значение 8. Повторно запустите моделирование. Обратите внимание, что интермоды 11-го порядка (самые внешние тона в области спектра) увеличиваются примерно на 11 дБ.

hws=get_param(bdroot, 'modelworkspace');
hws.assignin('power_in_dBm', 8);
sim('rfb_user_defined_amp_mdl');

Усечение гиперболического касательного ряда только до первых четырех членов

Сбросьте входное питание на 7 дБм. Затем задайте степенной ряд для гиперболической касательной, используя только первые четыре члена ряда. Пересчитайте значения выходного напряжения и данные Pin-Pout усилителя. Повторно запустите моделирование. Объем спектра показывает, что производятся только третьи интермодуляционные продукты. Можно также установить время остановки на inf, повторно запустить моделирование и поэкспериментировать, чтобы увидеть эффект усиления ползунка (синяя рамка на модели Simulink).

hws.assignin('power_in_dBm', 7);
TanhSeries = [-1/3 0 1 0];
Vin = linspace(0.001,1,100);                % volts
Vout = polyval(TanhSeries, Vin);            % volts
amp.NonlinearData.Pin  = {(Vin.^2)./Zref};  % watts
amp.NonlinearData.Pout = {(Vout.^2)./Zref}; % watts
sim('rfb_user_defined_amp_mdl');

bdclose('rfb_user_defined_amp_mdl');
close(fig);

См. также

Выходной порт | Входной порт | Конфигурация | rfckt.amplifier

Связанные темы

Влияние нелинейного усилителя на модуляцию 16-QAM