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

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

  • Сгенерируйте пользовательские пользовательские модели путем создания объекта 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

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

Создайте объект усилителя 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». Чтобы просмотреть и отредактировать предустановленные значения рабочего пространства модели, щелкните вкладку Моделирование (Modeling) на Панели инструментов (Toolstrip) и выберите Обозреватель модели (Model Explorer).

%

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);

См. также

Выходной порт | Input port | Строение | rfckt.amplifier

Похожие темы

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