В этом примере показано, как:
Сгенерируйте пользовательские пользовательские модели путем создания объекта RF Toolbox™ в рабочей области MATLAB ® и импорта его в блок Эквивалентного усилителя Baseband.
Создайте нелинейный усилитель с регулируемой кривой 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». Чтобы просмотреть и отредактировать предустановленные значения рабочего пространства модели, щелкните вкладку Моделирование (Modeling) на Панели инструментов (Toolstrip) и выберите Обозреватель модели (Model Explorer).
% 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);
Выходной порт | Input port | Строение | rfckt.amplifier