主要内容

功率放大器特性

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

您可以使用表征结果模拟巴勒斯坦权力机构使用comm.MemorylessNonlinearity系统对象™或无记忆非线性块。PA与记忆模型,您可以使用功率放大器(射频Blockset)块。您可以使用这些模型来设计数字预失真(DPD)使用comm.DPDcomm.DPDCoefficientEstimator系统对象或DPDDPD系数估计量块。有关更多信息,请参见数字预失真补偿功率放大器的非线性

可选硬件和软件

这个例子可以运行在一个倪PXI底盘与威仕特来衡量PA在运行时的输入和输出信号。威仕特是一个高带宽射频仪器相结合的一个矢量信号发生器(VSG)和一个矢量信号分析仪(VSA)。以下倪PXI底盘配置用于捕获保存的信号:

测试设备(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的输出特性。

paChar_hardware_setup (2) . png”height=

数据源变量设置为“硬件”运行测试信号虽然PA使用上面描述的硬件设置。测试信号可以是5 g-like OFDM波形或两个音调,如以下部分所述。数据源变量设置为“来自文件”使用预先录制的数据。

数据源=“来自文件”;

生成测试信号

生成一个测试信号,指定测试信号的类型为“OFDM”或“音调”。指定testSignal为“OFDM“使用5 g-like OFDM波形与64 - qam调制为每个副载波信号。”音调“使用两个音调在1.8兆赫和2.6 MHz,测试造成的互调PA。

示例将使用一个过采样因子7运行网格搜索到一个预期seventh-order非线性、和规范化的波形振幅。

testSignal =“OFDM”;开关testSignal情况下“OFDM”bw =100年e6;[txWaveform, sampleRate numFrames] = helperPACharGenerateOFDM (bw);情况下“音调”bw = 3 e6;[txWaveform, sampleRate numFrames] = helperPACharGenerateTones ();结束txWaveform = txWaveform / max (abs (txWaveform));%正常化的波形

硬件测试

如果数据源变量设置为“来自文件”加载预先录制的数据。如果数据源变量设置为“硬件”,运行测试信号通过使用威仕特巴勒斯坦权力机构。创建一个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.870608 e-01等级= 24日。
disp (abs (fitCoefMatMem))
0 23.1549 8.8540 17.8385 13.3026 3.2168 11.7686 26.4685 23.1937 5.5476 20.9745 16.8531 25.7336 22.1925 5.0688 32.6199 8.4042 9.4903 10.6984 2.5613 15.3875 2.3630 2.0867 2.9339 0.7370

验证拟合,使用helper函数来计算百分比均方根误差对测量信号。

rmsErrorTimeMem = helperPACharMemPolyModel (“errorMeasure”,paInput、paOutput fitCoefMatMem modType);disp ([在时域均方根误差百分比的num2str (rmsErrorTimeMem)“%”])
时域均方根误差百分比是6.1056%

可视化测量输出信号和输出信号,画出实际和安装时域输出电压。

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)