功率放大器特性
这个例子展示了如何描述一个功率放大器(PA)使用测量NXP Airfast PA的输入和输出信号。可选地,您可以使用一个硬件测试设置包括一个倪PXI底盘矢量信号收发器(VST)在运行时测量的信号。
您可以使用表征结果模拟巴勒斯坦权力机构使用comm.MemorylessNonlinearity
系统对象™或无记忆非线性块。PA与记忆模型,您可以使用功率放大器(射频Blockset)块。您可以使用这些模型来设计数字预失真(DPD)使用comm.DPD
和comm.DPDCoefficientEstimator
系统对象或DPD和DPD系数估计量块。有关更多信息,请参见数字预失真补偿功率放大器的非线性。
可选硬件和软件
这个例子可以运行在一个倪PXI底盘与威仕特来衡量PA在运行时的输入和输出信号。威仕特是一个高带宽射频仪器相结合的一个矢量信号发生器(VSG)和一个矢量信号分析仪(VSA)。以下倪PXI底盘配置用于捕获保存的信号:
倪pxie - 5840矢量信号收发器(威仕特)
倪pxie - 4139源测量单元(SMU)
倪pxie - 4145型SMU
NI-RFSG软件
测试设备(DUT),这个示例使用一个NXP Airfast LDMOS Doherty PA与工作频率3.6 -3.8 GHz和29分贝增益。这个爸爸需要29 V, 5 V, 3 V, 1.6 V和1.4 V直流偏压,提供使用pxie - 4139和smu pxie - 4145。
在倪PXI控制器上安装MATLAB®硬件设置运行这个例子,下图所示。MATLAB, PXI控制器上运行,生成测试波形和下载VSG的波形。VSG的传送这个测试波形PA和VSA接收受损在PA的输出波形。MATLAB收集问题并执行PA的输出特性。
数据源变量设置为“硬件”
运行测试信号虽然PA使用上面描述的硬件设置。测试信号可以是5 g-like OFDM波形或两个音调,如以下部分所述。数据源变量设置为“来自文件”
使用预先录制的数据。
数据源=“来自文件”;
生成测试信号
如果testSignal
是“OFDM”
这个示例使用5 g-like OFDM波形与64 - qam调制为每个副载波信号。如果testSignal
是“音调”
,这个示例使用两个音调在1.8兆赫和2.6 MHz,测试造成的互调PA。
testSignal =“OFDM”;开关testSignal情况下“OFDM”bw =100年e6;[txWaveform, sampleRate numFrames] = helperPACharGenerateOFDM (bw);情况下“音调”bw = 3 e6;[txWaveform, sampleRate numFrames] = helperPACharGenerateTones ();结束
确定高阶非线性,测试信号必须至少采样过量的预期的非线性。在这个例子中,我们运行一个网格搜索非线性7的顺序。Upsample七覆盖可能的第七阶非线性。同时,规范化的波形振幅。
overSamplingRate = 7;filterLength = 6 * 70;lowpassfilter = firpm (filterLength [0 8/70 10/70 1], [1 1 0 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 * overSamplingRate;
硬件测试
如果数据源
变量设置为“来自文件”
加载预先录制的数据。如果数据源
变量设置为“硬件”
,运行测试信号通过使用威仕特巴勒斯坦权力机构。创建一个helperVSTDriver对象与威仕特通信设备。将资源名称设置为资源名称分配给威仕特设备。这个示例使用“VST_01”
。倪设备,你可以找到资源名称使用镍测量及自动化Explorer (MAX)应用程序。
如果比较字符串(数据源,“硬件”)威仕特= helperVSTDriver (“VST_01”);
设置预期DUT的增益值和衰减器。自从爸爸输出连接到一个30分贝衰减器,设置问题外部衰减到30。设定的预期获得DUT 29分贝增益精度为1 dB。设置采集时间的值将导致大约40 k样本。目标输入功率设置为8 dBm。你可以增加这个值驱动PA进入非线性区域。
威仕特。DUTExpectedGain = 29;% dB威仕特。ExternalAttenuation = 30;% dB威仕特。AcquisitionTime = 0.9 e - 3 * (53.76 e6 / sampleRate);%秒威仕特。DUTTargetInputPower =8;% dBm威仕特。CenterFrequency = 3.7 e9%赫兹
下载测试波形VSG的。测量输出。
writeWaveform (VST, txWaveform sampleRate testSignal)结果= runPAMeasurements (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;
测试信号的频谱使用简介
函数。
saInput = helperPACharPlotInput (paInput, sampleRate testSignal, bw);
情节的AM / AM特征。
helperPACharPlotSpecAnAMAM (referencePower measuredAMToAM)
到一个更好的观点,关注获得与输入功率,而不是输出功率与输入功率和情节。
helperPACharPlotSpecAnGain (referencePower measuredAMToAM)
巴勒斯坦权力机构主要是线性的输入功率范围1到17 dBm,只有约1 db变异范围。收益曲线的宽度是由于记忆效应的。
PA表征
用测量的PA输入和输出数据到模型PA。然后,您可以使用这个模型来模拟一个系统,包含PA和微调参数。这个例子认为三个模型:无记忆非线性、记忆多项式和记忆多项式与交叉项。
无记忆非线性模型
无记忆非线性损伤扭曲了输入信号的振幅和相位。振幅畸变是amplitude-to-amplitude调制(AM / AM)和相位失真amplitude-to-phase调制(AM / PM)。的comm.MemorylessNonlinearity
系统对象和无记忆非线性块实现了几个这样的扭曲。使用PA输入和输出数据来创建一个查找表来使用这个对象或块。
的AM / AM传递函数,计算输入功率的平均输出功率范围值。测量在伏在一个总体的100欧姆阻抗,发射机和接收机之间的分裂。把基带测量样本值dBm。+ 30 dB术语是瓦分贝dBm的-20分贝术语转换和100欧姆阻抗。
paInputdBm = mag2db (abs (paInput)) + 30 - 20;paOutputdBm = mag2db (abs (paOutput)) + 30 - 20;
输入功率值分割成垃圾桶中。的边缘
变量包含箱子边,idx
变量包含本的索引值为每个输入功率值。
[N,边缘,idx] = histcounts (paInputdBm,“BinWidth”,0.5);
对于每一个本,计算箱子的中点,平均输出功率和平均相移。不包括任何输入功率值小于20 dB低于最大输入功率。将结果存储在一个三列的矩阵的第一列是dBm的输入功率,第二列是dBm的输出功率和最后一列是相移。
minInPowerdBm = max (paInputdBm) - 20;minIdx =找到(边缘< minInPowerdBm 1“最后一次”);tableLen =(边缘)-minIdx-1长度;inOutTable = 0 (tableLen, 2);为p = minIdx + 1:长度(边缘)1 inOutTable (p-minIdx 1) =意味着(paInputdBm (idx = = p));当前本%的平均输入功率inOutTable (p-minIdx、2) =意味着(paOutputdBm (idx = = p));当前本%的平均输出功率inOutTable (p-minIdx, 3) =意味着(角(paOutput (idx = = p)。/ paInput (idx = = p)));当前本%平均相移结束
使用的表comm.MemorylessNonlinearity PA系统对象模型。比较估计输出与实际输出。
pa = comm.MemorylessNonlinearity (“方法”,查找表的,“表”inOutTable,“ReferenceImpedance”,100)
pa = comm.MemorylessNonlinearity属性:方法:查找表的表:ReferenceImpedance(40×3双):100
paOutputFitMemless = pa (paInput);呃= abs (paOutput - paOutputFitMemless)。/ abs (paOutput);rmsErrorMemless = rms (err) * 100;disp ([在时域均方根误差百分比的num2str (rmsErrorMemless)“%”])
时域均方根误差百分比是12.1884%
可视化测量输出信号和输出信号,画出实际和安装时域输出电压。
helperPACharPlotTime (paOutput paOutputFitMemless sampleRate)
图的大小。
helperPACharPlotGain (paInput paOutput paOutputFitMemless)
记忆多项式模型
记忆多项式模型包括PA除了记忆效应的非线性增益。使用多功能helper函数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);
警告:等级不足,tol = 1.870573 e-01等级= 24日。
disp (abs (fitCoefMatMem))
0 23.1553 8.8537 17.8394 13.3035 3.2171 11.7672 26.4643 23.1900 5.5468 20.9748 16.8510 25.7272 22.1880 5.0680 32.6202 8.4028 9.4850 10.6958 2.5609 15.3879 2.3640 2.0888 2.9344 0.7371
验证拟合,使用helper函数来计算百分比均方根误差对测量信号。
rmsErrorTimeMem = helperPACharMemPolyModel (“errorMeasure”,…paInput、paOutput fitCoefMatMem modType);disp ([在时域均方根误差百分比的num2str (rmsErrorTimeMem)“%”])
时域均方根误差百分比是6.1057%
可视化测量输出信号和输出信号,画出实际和安装时域输出电压。
paOutputFitMem = helperPACharMemPolyModel (“signalGenerator”,…paInput、fitCoefMatMem modType);helperPACharPlotTime (paOutput paOutputFitMem sampleRate)
图的大小。
helperPACharPlotGain (paInput paOutput paOutputFitMem)
讨论
RMS的时域估计误差百分比无记忆非线性模型,在9%和13%之间,大约是3到4倍的错误记忆多项式模型,在2%和6%之间,对OFDM信号具有不同的带宽。
检查估计误差在频域通过绘制实际的PA的光谱输出的频谱估计PA一起输出这三个模型。无记忆非线性表查找模型不能模拟测量的光谱增长PA输出。PA,记忆多项式模型提供了一个很好的近似PA的特点。
sa = helperPACharPlotSpectrum (…[paOutput paOutputFitMemless paOutputFitMem),…{“实际PA输出”,“无记忆模型输出”,…“记忆多项式输出”},…sampleRate testSignal);
辅助函数helperPACharMemPolyModel还可以使用交叉项的记忆多项式模型,其中包括领先和滞后内存交叉项除了内存PA和非线性增益的影响。设置模型类型“交叉项的记忆”
探索这种模式。
为进一步探索,尝试不同的内存长度和多项式组合程度。修改过采样因素,探索其对PA模型性能的影响。修改helper函数helperPACharMemPolyModel尝试不同的PA模型。
用DPD PA模型测试
保存PA模型的系数矩阵中使用功率放大器(射频Blockset)块的系统级仿真数字预失真补偿功率放大器的非线性。
frameSize =地板(长度(paInput) / numFrames);paIn.signals。值=双(重塑(paInput (1: frameSize * numFrames, 1), numFrames, frameSize));paIn.signals。尺寸= frameSize;疼痛。时间= [];保存(“PAcoefficientsAndInput.mat”,“modType”,“fitCoefMatMem”,“memLen”,“degLen”,“痛苦”,“linearGaindB”)
附录:网格搜索记忆长度和多项式秩序
取消注释以下行来执行网格搜索成本函数时均方根误差百分比。首先选择模型类型。
modType =“memPoly”;% rmsErrorTime = helperPACharGridSearchTime (paInput、paOutput modType, overSamplingRate)
重复的搜索成本函数时的均方根误差百分比频率。
% rmsErrorFreq = helperPACharGridSearchFrequency (paInput、paOutput modType, overSamplingRate)