主要内容

功率放大器特性

这个例子展示了如何使用NXP Airfast放大器的输入和输出信号来描述功率放大器(PA)。可选地,您可以使用硬件测试设置(包括带有矢量信号收发器(VST)的NI PXI机箱)来测量运行时的信号。

您可以使用表征结果来模拟PA使用comm.MemorylessNonlinearity(通信工具箱)系统对象或无记忆非线性(通信工具箱)块。对于带内存的PA模型,可以使用功率放大器块。您可以使用这些模型来设计数字预失真(DPD)使用comm.DPD(通信工具箱)comm.DPDCoefficientEstimator(通信工具箱)系统对象或DPD(通信工具箱)DPD系数估计量(通信工具箱)块。有关更多信息,请参见功率放大器非线性的数字预失真补偿(通信工具箱)

可选硬件和软件

这个示例可以在带有VST的NI PXI机箱上运行,以在运行时测量PA输入和输出信号。VST是一种高带宽射频仪器,它结合了矢量信号发生器(VSG)和矢量信号分析仪(VSA)。以下NI PXI机箱配置用于捕获保存的信号:

作为被测设备(DUT),本例使用NXP Airfast LDMOS Doherty PA,工作频率3.6-3.8 GHz,增益29 dB。该PA需要29V, 5V, 3v, 1.6V和1.4V直流偏置,由PXIe-4139和PXIe-4145 smu提供。

在NI PXI控制器上安装MATLAB®以使用硬件设置运行此示例,如下图所示。MATLAB在PXI控制器上运行,生成测试波形并下载到VSG。VSG将测试波形发送给PA, VSA在PA输出处接收受损波形。MATLAB从VSA收集PA输出并进行PA表征。

设置数据源变量为“硬件”使用上面描述的硬件设置通过PA运行测试信号。测试信号可以是类似5g的OFDM波形,也可以是两个音调,如下节所述。设置数据源变量为“来自文件”使用预先录制的数据。

数据源=“来自文件”

生成测试信号

如果testSignal“OFDM”,本例使用类似5g的OFDM波形,每个子载波带有64-QAM调制信号。如果testSignal“音调”,本例使用1.8 MHz和2.6 MHz的两个音调,测试由PA引起的互调。

testSignal =“OFDM”开关testSignal情况下“OFDM”bw =100年e6;[txWaveform, sampleRate numFrames] = helperPACharGenerateOFDM (bw);情况下“音调”bw = 3 e6;[txWaveform, sampleRate numFrames] = helperPACharGenerateTones ();结束

为了识别高阶非线性,必须对测试信号进行过采样,至少要达到预期的非线性阶数。在这个例子中,我们运行一个非线性为7阶的网格搜索。上采样7,以覆盖可能的七阶非线性。同时,对波形振幅进行归一化处理。

overSamplingRate = 7;filterLength = 6 * 70;lowpassfilter = firpm(filterLength,[0 /70 10/70 1],[1 10 0]); / /输出firInterp = dsp。FIRInterpolator (overSamplingRate lowpassfilter);txWaveform = firInterp ([txWaveform;0 (filterLength / overSamplingRate / 2,1)]);txWaveform = txWaveform ((filterLength / 2) + 1:最终,1);%去除瞬变txWaveform = txWaveform / max (abs (txWaveform));将波形归一化sampleRate = sampleRate *过放大;

硬件测试

如果数据源变量设置为“来自文件”,加载预先录制的数据。如果数据源变量设置为“硬件”,使用VST通过PA运行测试信号。创建一个helperVSTDriver对象来与VST设备通信。资源名称设置为分配给VST设备的资源名称。这个示例使用“VST_01”.对于NI设备,您可以使用NI Measurement & Automation Explorer (MAX)应用程序找到资源名称。

如果比较字符串(数据源,“硬件”) VST = helperVSTDriver(“VST_01”);

设置DUT和衰减器的预期增益值。因为PA输出连接到一个30db衰减器,所以将VSA外部衰减设置为30。设置DUT的期望增益为29 dB,增益精度为1 dB。将采集时间设置为大约40k个样本的值。设置目标输入功率为8dbm。您可以增加这个值,使PA更接近非线性区域。

威仕特。DUTExpectedGain = 29;% dB威仕特。ExternalAttenuation = 30;% dB威仕特。AcquisitionTime = 0.9 e - 3 * (53.76 e6 / sampleRate);%秒威仕特。DUTTargetInputPower =8% dBm威仕特。CenterFrequency = 3.7 e9%赫兹

下载测试波形到VSG。测量输出。

写入波形(VST,txWaveform,sampleRate,testSignal)结果= runpammeasurements (VST);发行版(威仕特)其他的%从VST加载预先录制的结果开关testSignal情况下“OFDM”dataFileName = sprintf (“helperPACharSavedData % dMHz”1、bw / e6);情况下“音调”dataFileName =“helperPACharSavedDataTones”结束负载(dataFileName“结果”“sampleRate”“overSamplingRate”“testSignal”“numFrames”结束

将结果映射到局部变量中。

referencePower = results.ReferencePower;measuredAMToAM = results.MeasuredAMToAM;paInput = results.InputWaveform;paOutput = results.OutputWaveform;linearGaindB = results.LinearGain;

使用。绘制测试信号的频谱dsp。简介(DSP系统工具箱)系统对象。

saInput = helperPACharPlotInput(paInput, sampleRate, testSignal, bw);

图频谱分析仪包含一个轴对象和其他类型的对象uiflowcontainer, uimenu, uitoolbar。axis对象包含6个类型为patch, line的对象。该节点表示PA输入。

绘制PA的AM/AM特性。

helperPACharPlotSpecAnAMAM (referencePower measuredAMToAM)

图中包含一个轴对象。标题为AM/AM的axis对象包含一个类型为line的对象。

为了更好地查看,请关注增益与输入功率的比值,而不是输出功率与输入功率的比值,然后再次绘图。

helperPACharPlotSpecAnGain (referencePower measuredAMToAM)

图中包含一个轴对象。标题为“增益vs输入功率”的axis对象包含一个类型为line的对象。

PA在-1到17 dBm的输入功率范围内基本上是线性的,在这个范围内只有大约1dB的变化。增益曲线的宽度是由于PA的记忆效应。

PA表征

使用测量的PA输入和输出数据来模拟PA。然后,您可以使用此模型来模拟包含此PA的系统,并对参数进行微调。这个例子考虑了三种模型:无记忆非线性、记忆多项式和带交叉项的记忆多项式。

无记忆非线性模型

无记忆的非线性损害使输入信号的幅度和相位失真。振幅失真为幅相调制(AM/AM),相位失真为幅相调制(AM/PM)。的comm.MemorylessNonlinearity(通信工具箱)系统对象和无记忆非线性(通信工具箱)Block实现了几种这样的扭曲。使用PA输入和输出数据创建一个查找表,用于此对象或块。

为了描述AM/AM传递函数,计算输入功率值范围的平均输出功率。在发射机和接收机之间分割的100欧姆阻抗上测量的是伏特。将测量的基带样本转换为dBm中的功率值。+30 dB是指dBW到dBm的转换,-20 dB是指100欧姆阻抗。

paInputdBm = mag2db(abs(paInput)) + 30 - 20;paOutputdBm = mag2db(abs(paOutput)) + 30 - 20;

将输入功率值划分到不同的容器中。的边缘变量包含箱子边,而idx变量包含每个输入功率值的bin值的索引。

[N,边缘,idx] = histcounts (paInputdBm,“BinWidth”, 0.5);

对于每个仓,计算仓的中点,平均输出功率和平均相移。输入功率不应小于最大输入功率20db。将结果存储在一个三列矩阵中,其中第一列是dBm的输入功率,第二列是dBm的输出功率,最后一列是相移。

minInPowerdBm = max(paInputdBm) - 20;minIdx = find(edges < minInPowerdBm, 1,“最后一次”);tableLen =(边缘)-minIdx-1长度;inOutTable = 0 (tableLen, 2);inOutTable(p-minIdx,1) = mean(paInputdBm(idx == p));当前料仓的平均输入功率inOutTable(p- minidx,2) = mean(paOutputdBm(idx == p));%当前料仓平均输出功率inOutTable(p- minidx,3) = mean(角度(paOutput(idx == p)./paInput(idx == p)));%电流仓平均相移结束

使用comm. memorynonlinear System对象中的表对PA进行建模。将估计的产量与实际产量进行比较。

pa = comm.MemorylessNonlinearity (“方法”查找表的“表”inOutTable,“ReferenceImpedance”, 100)
pa = com . memorylessnonlinear with properties: Method: 'Lookup table' table: [40x3 double] ReferenceImpedance: 100
paOutputFitMemless = pa (paInput);err = abs(paOutput - paOutputFitMemless)./abs(paOutput);rmsErrorMemless = rms (err) * 100;disp ([时域RMS误差百分比为num2str (rmsErrorMemless)“%”])
时域RMS误差百分比为12.1884%

为了可视化测量的输出信号和拟合的输出信号,绘制实际的和拟合的时域输出电压。

helperPACharPlotTime (paOutput paOutputFitMemless sampleRate)

图中包含一个轴对象。标题为“实际输出信号和估计输出信号的比较”的轴对象包含两个类型为line的对象。这些对象代表实际的,估计的。

画出增益的大小。

helperPACharPlotGain (paInput paOutput paOutputFitMemless)

图中包含一个轴对象。标题为“实际增益和估计增益比较”的轴对象包含两个类型为line的对象。这些对象代表实际增益,估计增益。

记忆多项式模型

记忆多项式模型除了非线性增益外,还包括PA的记忆效应。使用多功能助手功能helperPACharMemPolyModel为放大器特性确定一个记忆多项式模型的复系数。将模型类型设置为记忆多项式的

modType =“memPoly”

执行如下所示的网格搜索附录网格搜索内存长度和多项式顺序.根据网格搜索结果,当存储长度与多项式次值为:

memLen = 5;degLen = 5;

对这些值进行拟合和均方根误差计算。只有一半的数据被用来计算拟合系数,因为整个数据集将被用来计算相对误差。辅助函数helperPACharMemPolyModel计算模型的系数。

numDataPts =长度(paInput);halfDataPts =圆(numDataPts / 2);

辅助函数helperPACharMemPolyModel可编辑以进行自定义修改,并返回所需的矩阵。PA模型具有一些零值系数,导致秩亏矩阵。

fitCoefMatMem = helperPACharMemPolyModel (“coefficientFinder”...paInput (1: halfDataPts) paOutput (1: halfDataPts) memLen, degLen, modType);
警告:Rank deficient, Rank = 24, tol = 1.870573e-01。
disp (abs (fitCoefMatMem))
23.1553 8.8537 17.8400 13.3040 3.2173 0 11.7662 26.4614 23.1879 5.5464 20.9748 16.8494 25.7229 22.1851 5.0674 32.6203 8.4017 9.4816 10.6938 2.5605 15.3880 2.3641 2.0891 2.9341 0.7370

为了验证拟合,使用辅助函数计算相对于测量信号的RMS误差百分比。

rmsErrorTimeMem = helperPACharMemPolyModel (“errorMeasure”...paInput, paOutput, fitCoefMatMem, modType);disp ([时域RMS误差百分比为num2str (rmsErrorTimeMem)“%”])
时域均方根误差百分比为6.1057%

为了可视化测量的输出信号和拟合的输出信号,绘制实际的和拟合的时域输出电压。

paOutputFitMem = helperPACharMemPolyModel (“signalGenerator”...paInput、fitCoefMatMem modType);helperPACharPlotTime (paOutput paOutputFitMem sampleRate)

图中包含一个轴对象。标题为“实际输出信号和估计输出信号的比较”的轴对象包含两个类型为line的对象。这些对象代表实际的,估计的。

画出增益的大小。

helperPACharPlotGain (paInput paOutput paOutputFitMem)

图中包含一个轴对象。标题为“实际增益和估计增益比较”的轴对象包含两个类型为line的对象。这些对象代表实际增益,估计增益。

讨论

对于不同带宽的OFDM信号,无记忆非线性模型的时域RMS估计误差在9% ~ 13%之间,是记忆多项式模型误差在2% ~ 6%之间的3 ~ 4倍。

通过绘制三种模型的实际PA输出的频谱和估计PA输出的频谱,在频域检查估计误差。无记忆非线性查表模型无法模拟实测PA输出中的频谱增长。对于这个PA,记忆多项式模型提供了PA特性的一个很好的近似。

sa = helperPACharPlotSpectrum (...[paOutput paOutputFitMemless paOutputFitMem),...“实际PA输出”“无记忆模型输出”...“记忆多项式输出”},...sampleRate testSignal);

图频谱分析仪包含一个轴对象和其他类型的对象uiflowcontainer, uimenu, uitoolbar。轴对象包含3个类型为line的对象。这些对象代表实际PA输出,无记忆模型输出,记忆多项式输出。

辅助函数helperPACharMemPolyModel也可以使用带有交叉项的记忆多项式模型,除了PA和非线性增益的记忆效应外,还包括超前和滞后的记忆交叉项。将模型类型设置为“交叉项的记忆”来探索这个模型。

为了进一步的探索,尝试不同的记忆长度和多项式次数组合。修正过采样因子,探讨过采样因子对PA模型性能的影响。修改helper函数helperPACharMemPolyModel尝试不同的PA模型。

用PA模型进行DPD测试

将PA模型的系数矩阵保存在功率放大器块,用于在系统级进行仿真功率放大器非线性的数字预失真补偿(通信工具箱)

frameSize =地板(长度(paInput) / numFrames);paIn.signals.values =双(重塑(paInput (1: frameSize * numFrames, 1), numFrames, frameSize));paIn.signals.dimensions = frameSize;疼痛。时间= [];保存(“PAcoefficientsAndInput.mat”“modType”“fitCoefMatMem”“memLen”“degLen”“痛苦”“linearGaindB”

附录:网格搜索内存长度和多项式顺序

当代价函数是RMS错误的百分比时,取消注释下面的行来执行网格搜索。首先选择模型类型。

modType =“memPoly”% rmsErrorTime = helperPACharGridSearchTime(paInput,paOutput,modType, overamplingrate)

当代价函数是频率中均方根误差的百分比时,重复搜索。

% rmsErrorFreq = helperPACharGridSearchFrequency(paInput,paOutput,modType, overamplingrate)

相关的话题