В этом примере показано, как использовать возврат, чтобы масштабировать сигнал до введения его к основанному на таблице усилителю мощности. Это также показывает, как исследовать распределение электроэнергии входа сигнала к усилителю, и проверять, что фактическое поведение усилителя совпадает со спецификацией. Приложение перечисляет функции помощника, используемые в примере.
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, считайте выходную мощность по сравнению с входной мощностью и фазовый переход по сравнению с входной мощностью. Степени даны в dBm и фазовом переходе в градусах. Ссылочный импеданс используется, чтобы преобразовать значения напряжения сигнала, чтобы привести в действие значения.
table = table2array(readtable("PACharacteristic.xlsx", ... "PreserveVariableNames",true)); ac = helperAmpConfig("Model","AM/AM - AM/PM", ... "Table",table,"ReferenceImpedance",1);
Определите входную мощность, которая приводит к пиковой выходной мощности. Та входная мощность является точкой, от которой будет замедлен сигнал. Используйте входной возврат, чтобы определить необходимую степень сигнала во входе к усилителю.
[pkOpPwr, idxPk] = max(ac.Table(:,2)); % dBm ipPwrAtPkOut = ac.Table(idxPk,1); % dBm IBO = 6; % input backoff set point, dB rqdIpPwr = ipPwrAtPkOut - IBO; % dBm
Постройте AM и характеристики усилителя AM/PM. Нанесенные на график значения совпадают с теми в электронной таблице.
visualize(ac);
Создайте повышенную Систему фильтра передачи косинуса object™ для импульсного формирования.
txFilt = comm.RaisedCosineTransmitFilter(... 'Shape','Square root', ... 'RolloffFactor',0.2, ... 'FilterSpanInSymbols',10, ... 'OutputSamplesPerSymbol',4);
Создайте Системный объект метра степени, чтобы измерить степень в нескольких точках в цепи обработки. Установите окно измерения метра степени к 10 мс.
pm = HelperPowerMeter(... 'MeasurementInterval',round(sigDuration*fs), ... 'ReferenceImpedance',ac.ReferenceImpedance, ... 'Unit','dBm');
Сгенерируйте модулируемый сигнал, отфильтруйте его, масштабируйте его к-10 dBm и степеням меры. Отфильтрованный сигнал является примерно постоянной амплитудой в своей длительности, таким образом, окно измерения мощности может расширить по целой длительности.
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)/20); filtOut = scaleFactor * filtOut; PFiltOutdBm = pm(filtOut); fprintf('The filtered, scaled signal power is %4.2f dBm.\n',PFiltOutdBm)
The filtered, scaled signal power is -10.00 dBm.
PFiltOutdBW = PFiltOutdBm - 30;
Масштабируйте входную мощность усилителя к желаемому возврату. Измеренная степень замедленного сигнала должна быть равна входной мощности при пиковом выходе (5 dBm) меньше входной возврат (6 дБ). Метр степени проверяет, что сигнал был правильно замедлен.
gain = helperBackoffGain(ipPwrAtPkOut,PFiltOutdBm,IBO);
ampIn = gain * filtOut;
PAmpIndBm = pm(ampIn);
fprintf('The backed off signal power is %4.2f dBm.\n',PAmpIndBm)
The backed off signal power is -1.00 dBm.
Постройте гистограмму мгновенной входной мощности в усилитель. Следующий рисунок показывает, что значительный процент входных выборок усилителя имеет силу, которая должна вызвать сжатие усиления в усилителе выход. Много выборок сигнала имеют степени выше 0 dBm, где усилитель ведет себя нелинейно.
PAmpInInst = abs(ampIn).^2 / ac.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]);
Передайте сигнал через усилитель. Измеренная средняя степень в усилителе выход тесно соответствует ожидаемой мгновенной степени, проиллюстрированной предыдущей фигурой.
ampOut = helperAmplify(ampIn,ac);
PAmpOutdBm = pm(ampOut);
fprintf('The amplifier output power is %4.2f dBm.\n',PAmpOutdBm)
The amplifier output power is 40.63 dBm.
Вычислите среднее усиление усилителя.
ampGaindB = PAmpOutdBm - PAmpIndBm;
fprintf('The amplifier gain is %4.2f dB.\n',ampGaindB)
The amplifier gain is 41.63 dB.
Постройте заданное и мгновенное фактическое по сравнению с. показать, что фактическое поведение усилителя совпадает с поведением, заданным основанным на таблице объектом.
figure; hFig = helperPlotAMAM(ac); % Specified Pout vs. Pin hold on; pAmpOutInst = abs(ampOut).^2 / ac.ReferenceImpedance; pAmpOutInstdBm = 10*log10(pAmpOutInst) + 30; % Actual Pout vs Pin plot(PAmpInInstdBm,pAmpOutInstdBm,'r*'); lines = hFig.Children.Children; legend(lines([2 1]),"Specified","Actual","Location","Northwest");
Создайте схему созвездия, чтобы проиллюстрировать сигналы ввода и вывода усилителя. Схема созвездия 16QAM созвездие показывает усилитель, выход немного вращался (искажение AM/PM), и угловые точки подверглись некоторому сжатию усиления (искажение 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
Можно экспериментировать с примером путем попытки различных уровней возврата или модулируемых сигналов (e.g. 64QAM или OFDM). Можно загрузить электронную таблицу с собственным основанным на таблице характеристики, чтобы применить этот метод возврата к вашей характеристике PA.
Этот пример продемонстрировал, как применить возврат к входному сигналу нелинейного усилителя. Метод был проверен путем сравнения поведение заданных и фактических данных.
Эти файлы помощника используются в примере: