В этом примере показано, как использовать обратное переключение для масштабирования сигнала перед вводом его в табличный усилитель мощности. Он также показывает, как исследовать распределение мощности сигнала, поступающего на вход усилителя, и проверить, что фактическое поведение усилителя соответствует спецификации. В приложении перечислены вспомогательные функции, используемые в примере.
totalTime = 0; M = 16; % Modulation order fs = 1e6; % Sample rate, in Hz (also used for measurement bandwidth) sigDuration = 0.01; % sec msgLen = round(sigDuration*fs); % samples
Укажите усилитель как табличный объект. Используя данные измеренного усилителя, хранящиеся в электронной таблице Excel, считывайте выходную мощность по сравнению с входной мощностью и изменение фазы по сравнению с входной мощностью. Мощности даны в дБм, а фазовое изменение в градусах. Опорный импеданс используется для преобразования значений напряжения сигнала в значения мощности.
table = table2array(readtable("PACharacteristic.xlsx", ... "PreserveVariableNames",true)); mnl = comm.MemorylessNonlinearity("Method","Lookup table", ... "Table",table,"ReferenceImpedance",1);
Определите входную мощность, которая приводит к пиковой выходной мощности. Та входная мощность - пункт, от которого будет замедлен сигнал. Используйте входной возврат, чтобы определить необходимую власть сигнала во входе к усилителю.
[pkOpPwr, idxPk] = max(mnl.Table(:,2)); % dBm ipPwrAtPkOut = mnl.Table(idxPk,1); % dBm IBO = 6; % input backoff set point, dB rqdIpPwr = ipPwrAtPkOut - IBO; % dBm
Постройте график характеристик усилителей AM/AM и AM/PM. Значения, выводимые на печать, соответствуют значениям в электронной таблице.
plot(mnl);

Создайте приподнятый косинусный фильтр передачи System object™ для формирования импульсов.
txFilt = comm.RaisedCosineTransmitFilter(... 'Shape','Square root', ... 'RolloffFactor',0.2, ... 'FilterSpanInSymbols',10, ... 'OutputSamplesPerSymbol',4);
Создайте объект System для измерения мощности в нескольких точках цепочки обработки. Установите в окне измерения измерителя мощности значение 10 мс.
pm = powermeter(... "Measurement","Average power", ... "WindowLength",round(sigDuration*fs), ... "ReferenceLoad",mnl.ReferenceImpedance, ... "PowerUnits","dBm");
Генерировать модулированный сигнал, фильтровать его, масштабировать до -10 дБм и измерять мощности. Отфильтрованный сигнал имеет приблизительно постоянную амплитуду на протяжении всей его длительности, поэтому окно измерения мощности может продолжаться на протяжении всей длительности.
filtTransient = txFilt.FilterSpanInSymbols*txFilt.OutputSamplesPerSymbol; msg = randi([0 M-1],msgLen+filtTransient,1); modOut = qammod(msg,M,'UnitAveragePower',true); % 0 dBW (30 dBm) filtOut = txFilt(modOut); filtOut = filtOut(1+filtTransient:end); % Truncate beginning transient PFiltOutdBm = pm(filtOut); Pdesired = -10; % dBm scaleFactor = 10.^((Pdesired - PFiltOutdBm(end))/20); filtOut = scaleFactor * filtOut; reset(pm); PFiltOutdBm = pm(filtOut); fprintf('The filtered, scaled signal power is %4.2f dBm.\n',PFiltOutdBm(end))
The filtered, scaled signal power is -10.00 dBm.
PFiltOutdBW = PFiltOutdBm(end) - 30;
Масштабируйте входную мощность усилителя до требуемого значения. Измеренная мощность отраженного сигнала должна быть равна входной мощности на пиковом выходе (5 дБм) за вычетом входного отката (6 дБ). Измеритель мощности проверяет правильность отключения сигнала.
gain = helperBackoffGain(ipPwrAtPkOut,PFiltOutdBm(end),IBO);
ampIn = gain * filtOut;
reset(pm);
PAmpIndBm = pm(ampIn);
fprintf('The backed off signal power is %4.2f dBm.\n',PAmpIndBm(end))The backed off signal power is -1.00 dBm.
Постройте гистограмму мгновенной входной мощности в усилитель. Следующий рисунок показывает, что значительный процент входных выборок усилителя имеет мощность, которая должна вызывать сжатие усиления на выходе усилителя. Многие выборки сигнала имеют мощность выше 0 дБм, где усилитель ведет себя нелинейно.
PAmpInInst = abs(ampIn).^2 / mnl.ReferenceImpedance; PAmpInInstdBm = 10*log10(PAmpInInst) + 30; edges = -29:9; histogram(PAmpInInstdBm,edges,"Normalization","probability") title("Instantaneous Power Probability"); xlabel("Instantaneous P_i_n (dBm)"); ylabel("Probability"); xlim([-30 10]); grid on;

Пропустите сигнал через усилитель. Измеренная средняя мощность на выходе усилителя близко соответствует ожидаемой мгновенной мощности, показанной на предыдущем рисунке.
ampOut = mnl(ampIn);
PAmpOutdBm = pm(ampOut);
fprintf('The amplifier output power is %4.2f dBm.\n',PAmpOutdBm(end))The amplifier output power is 40.63 dBm.
Вычислите средний коэффициент усиления усилителя.
ampGaindB = PAmpOutdBm(end) - PAmpIndBm(end);
fprintf('The amplifier gain is %4.2f dB.\n',ampGaindB)The amplifier gain is 41.63 dB.
Постройте график указанных и фактических мгновенных и , чтобы показать, что фактическое поведение усилителя соответствует поведению, заданному объектом на основе таблицы.
figure; hFig = helperPlotAMAM(mnl); % Specified Pout vs. Pin hold on; pAmpOutInst = abs(ampOut).^2 / mnl.ReferenceImpedance; pAmpOutInstdBm = 10*log10(pAmpOutInst) + 30; % Actual Pout vs Pin plot(PAmpInInstdBm,pAmpOutInstdBm,'r*'); grid on; lines = hFig.Children.Children; legend(lines([2 1]),"Specified","Actual","Location","Northwest");

Создайте диаграмму совокупности для иллюстрации входных и выходных сигналов усилителя. Диаграмма созвездия 16QAM созвездия показывает, что выходной сигнал усилителя слегка повернут (искажение AM/PM), и угловые точки испытывают некоторое сжатие усиления (искажение AM/AM).
constDiag = comm.ConstellationDiagram(... 'ShowReferenceConstellation',false, ... 'SamplesPerSymbol',txFilt.OutputSamplesPerSymbol, ... 'ShowLegend',true, ... 'ChannelNames',{'Amp Input','Amp Output'}); % Set plot limits maxLim = 2 * max(real(filtOut)); constDiag.XLimits = [-maxLim maxLim]; constDiag.YLimits = [-maxLim maxLim]; magFiltOut = sqrt(mean(abs(filtOut).^2)); magAmpOut = sqrt(mean(abs(ampOut).^2)); gain = magAmpOut / magFiltOut; constDiag([filtOut,ampOut/gain]); % Scale amp output for plotting ease

Можно поэкспериментировать с примером, пробуя различные уровни отката или модулированные сигналы (например, 64QAM или OFDM). Вы можете загрузить электронную таблицу с собственными табличными Pincharacteristics, чтобы применить этот метод задержки к характеристике PA.
В этом примере показано, как применить обратную связь к входному сигналу нелинейного усилителя. Метод был проверен путем сравнения поведения Pout и Pin указанных и фактических данных.
Эти вспомогательные файлы используются в примере: