В этом примере показано, как:
Создание пользовательских пользовательских моделей путем создания объекта 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');

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

sim('rfb_user_defined_amp_mdl');

Чтобы увеличить мощность источника от 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