Этот пример показывает, как использовать backoff для масштабирования сигнала до ввода его в табличный усилитель степени. Это также показывает, как изучить степень распределение сигнала, вход к усилителю, и проверить, что фактическое поведение усилителя соответствует спецификации. В Приложении перечислены вспомогательные функции, используемые в примере.
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);
Создайте Системный объект счетчика степени чтобы измерить степень в нескольких точках в цепь обработки. Установите окно измерения счетчика степени равным 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). Вы можете загрузить электронную таблицу с помощью собственной таблицы характеристики для применения этого метода отката к характеристике PA.
Этот пример продемонстрировал, как применить откат к входному сигналу нелинейного усилителя. Метод был проверен путем сравнения поведение заданных и фактических данных.
Эти вспомогательные файлы используются в примере: