主要内容

功率放大器表征

此示例显示如何使用NXP AIRFAST PA的测量输入和输出信号来表征功率放大器(PA)。可选地,您可以使用包含NI PXI机箱的硬件测试设置,其中带有矢量信号收发器(VST)以在运行时测量信号。

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

可选的硬件和软件

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

作为DUT的设备(DUT),此示例使用NXP AIRFAST LDMOS DOHERTY PA,其工作频率为3.6-3.8 GHz和29 dB增益。该PA需要使用PXIE-4139和PXIE-4145 SMU提供的29V,5V,3 V,1.6V和1.4V直流偏置。

在NI PXI控制器上安装MATLAB®以使用硬件设置运行该示例,如下图所示。在PXI控制器上运行的MATLAB生成测试波形并将波形下载到VSG。VSG将该测试波形传输到PA,VSA在PA输出处接收受损波形。MATLAB从VSA收集PA输出并执行PA特性描述。

将DataSource变量设置为“硬件”使用上述硬件设置运行测试信号,但是使用上述硬件设置。如下部分所述,测试信号可以是5g的OFDM波形或两个音调。将DataSource变量设置为“从文件”使用预先记录的数据。

datasource =“从文件”;

生成测试信号

如果是estignal.“OFDM”,此示例使用具有64-QAM调制信号的5G类似的OFDM波形,用于每个子载波。如果是estignal.“音调”,此示例使用1.8 MHz和2.6 MHz的两个音调,以测试由PA引起的互调。

testsignal =“OFDM”;转换testsignal.案件“OFDM”BW =100e6.;[txwaveform,samplerate,numframes] = helperpachargeneryofdm(bw);案件“音调”bw=3e6;[txWaveform,sampleRate,numFrames]=helperPACharGenerateTones();结尾

为了识别高阶非线性,必须至少通过非线性的预期顺序量过采样。在此示例中,我们运行网格搜索到七的非线性顺序。七个七个以涵盖可能的第七个订单非线性。另外,标准化波形幅度。

过度采购= 7;filterlength = 6 * 70;lowpassfilter = firpm(filterlength,[0 8/70 10/70 1],[1 1 0 0]);firinterp = dsp.firinterpolator(过度采样,低通链液);txwaveform = firintep([txwaveform; zeros(filterlength / hissamplingrate / 2,1)]);txwaveform = txwaveform((filterlength / 2)+1:结束,1);%删除瞬态txwaveform = txwaveform / max(abs(txwaveform));%使波形正常化Samplere = Samplege *过度采样;

硬件测试

如果数据源变量设置为“从文件”,加载预先录制的数据。If数据源变量设置为“硬件”,r使用VST通过PA通过测试信号。创建一个HelperVstdriver对象以与VST设备通信。将资源名称设置为分配给VST设备的资源名称。这个例子用途'vst_01'。对于NI设备,您可以使用NI测量和Automation Explorer(MAX)应用程序找到资源名称。

如果Strcmp(DataSource,“硬件”)VST = HelperVstdriver('vst_01');

设置DUT和衰减器的预期增益值。由于PA输出连接到30 dB衰减器,因此将VSA外部衰减设置为30.将DUT的预期增益设置为29 dB,并获得1 dB的准确性。将获取时间设置为将导致约40k示例的值。将目标输入电源设置为8 dBm。您可以增加此值以将PA更多驱动到非线性区域。

vst.dutexpectedgain = 29;% D bvst.externalattenuation = 30;% D bvst.acquisitiontime = 0.9e-3 *(53.76e6 / samplerge);%秒vst.duttargetInputpower =8.;%dbm.vst.centerfrequency = 3.7e9.%Hz.

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

WriteWaveForm(VST,TXWAVEFORM,SAPPLEDE,TESTISIGNAL)结果= RUNPAMEASUREMENT(VST);释放(VST)别的%加载VST的预先录制结果转换testsignal.案件“OFDM”datafilename = sprintf(“helperPACharSavedData%dMHz”,bw / 1e6);案件“音调”数据文件名=“HelperpacharsavedDataTones”;结尾load(datafileName,“结果”“采样率”“过采样率”“testsignal”“numframes”结尾

将结果映射到局部变量。

ReferenctPower =结果。推断力;MotodationAmtoam =结果.MeasuredamToam;eactput =结果.PutwaveForm;paOtput =结果.OutputWaveForm;lineargaindb =结果.LineArgain;

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

sainpul = helperpacharplotinput(诱捕,sampleate,testsignal,bw);

图谱分析仪包含轴和其他对象的UiflowContainer,Uimenu,UIToolbar。轴包含6个类型的贴片物体,线。此对象表示PA输入。

绘制PA的AM / AM特征。

Helperpacharplotspecanamam(ReferentPower,MotodationAmtoam)

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

为了更好的视图,专注于增益VS输入功率而不是再次输出功率VS输入功率和绘图。

Helperpacharplotspecangain(ReferentPower,MotodationAmtoam)

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

功率放大器在输入功率范围-1到17 dBm之间基本呈线性,在该范围内只有约1dB的变化。增益曲线的宽度是由于功率放大器的记忆效应造成的。

PA表征

使用测量的PA输入和输出数据来模拟PA。然后,您可以使用此模型来模拟包含此PA的系统并进行微调参数。此示例考虑了三种型号:记忆非线性,内存多项式和内存多项式,具有串扰。

记忆非线性模型

记忆非线性损伤扭曲输入信号幅度和相位。幅度失真是幅度到幅度调制(AM / AM),并且相位失真是幅度到相位调制(AM / PM)。这Comm.MemoryLessnoninearity.(通讯工具箱)系统对象和记忆非线性(通讯工具箱)块实现若干这样的扭曲。使用PA输入和输出数据创建要与此对象或块一起使用的查找表。

为了表征AM / AM传递函数,计算一系列输入功率值的平均输出功率。测量在整个100欧姆阻抗的伏特中,在发射器和接收器之间分开。将测量的基带样本转换为DBM中的功率值。+30 dB项是DBW转换的DBW转换,-20 dB项是100欧姆阻抗。

PAILPUTDBM = MAG2DB(ABS(止吐))+ 30  -  20;PaOutputdBm = Mag2DB(ABS(PAOUTPUT))+ 30  -  20;

将输入功率值划分到存储箱中。这个边缘变量包含bin边缘,以及idx.变量包含每个输入功率值的BIN值的索引。

[N,edges,idx]=历史计数(paInputdBm,'binwidth',0.5);

对于每个垃圾箱,计算箱的中点,平均输出功率和平均相移。请勿在最大输入电源以下小于20 dB的任何输入功率值。将结果存储在三列矩阵中,其中第一列是DBM中的输入功率,第二列是DBM中的输出功率,最后一列是相移。

MininPowerDBM = Max(PAILPUTDBM) -  20;minidx = find(边缘'最后的');表格=长度(边缘)-minidx-1;Inuttable =零(表格,2);为了p=minIdx+1:长度(边)-1不可输出(p-minIdx,1)=平均值(paInputdBm(idx==p));%当前存储箱的平均输入功率inuttable(p-minidx,2)=均值(PaOutputdBm(Idx == p));当前箱的%平均输出功率intttable(p-minidx,3)=平均值(角度(paoutput(idx == p)./诱捕(idx == p)));当前箱的%平均相移结尾

使用comm.memorylesninarity system对象中的表来模拟pa。将估计的输出与实际输出进行比较。

Pa = Comm.MemoryLessNonlineAR度('方法''查找表''桌子',intttable,'参章',100)
pa = comm.memorylessnoninarity with properties:方法:'查找表'表:[40x3 double]参考标准:100
PaOtputfitmemless = PA(诱捕);err = abs(paoutput  -  paoutputfitmembless)./ abs(paoutput);RMSERROMEMLESS = RMS(ERR)* 100;DISP([“时域中的百分比率为”num2str(Rmserrormemless)'%'])
时域中的百分比率为12.1884%

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

Helperpacharplottime(PAOUTPUT,PAOUTPUTFITMEMLESS,SAMPLERE)

图包含轴。具有实际和估计输出信号的标题比较的轴包含2个类型的类型。这些对象代表实际,估计。

绘制增益的幅度。

Helperpacharplotgain(止吐,Paoutput,PaOtputfitmem.s

图包含轴。具有实际和估计增益的标题比较的轴包含2个类型的线。这些对象代表实际增益,估计增益。

内存多项式模型

存储器多项式模型包括除非非线性增益之外的PA的存储器效果。使用多功能辅助功能Helperpacharmempolymodel.确定放大器特性的存储器多项式模型的复数系数。将模型类型设置为“记忆多项式”

modtype ='Mempoly';

执行网格搜索,如图所示附录:内存长度和多项式顺序的网格搜索。根据该网格搜索结果,当存储器长度和多项式值如下,获得最佳拟合:

memlen = 5;DEGLEN = 5;

对这些值执行拟合和RMS错误计算。只有一半的数据用于计算拟合系数,因为整个数据集将用于计算相对误差。辅助功能Helperpacharmempolymodel.计算模型的系数。

numdatapts =长度(诱捕);halfdatapts =圆形(numdatapts / 2);

辅助功能Helperpacharmempolymodel.可编辑用于自定义修改,并返回所需的矩阵。PA模型具有一些零值系数,这导致级别缺陷矩阵。

fitCoefMatMem=helperPACharMemPolyModel('CoeffITEFINDER'......止药(1:halfdatapts),Paoutput(1:Halfdatapts),Memlen,Deglen,Modtype);
警告:排名缺陷,等级= 24,tol = 1.870573e-01。
DISP(ABS(FITCOEFMATMEM))
23.1553 8.8539 17.8403 13.3042 3.2174 0 11.7661 26.4612 23.1878 5.5464 20.9748 16.8495 25.7229 22.1851 5.0674 32.6203 8.49.6203 8.4817 10.6939 2.5605 15.3880 2.3642 2.9342 0.7370

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

RMSERRORTIMEMEM = HELPERPACHARMEMPOLYMODEL('errormeasure'......paInput、paOutput、fitCoefMatMem、modType);disp([“时域中的百分比率为”num2str(rmserrortimemem)'%'])
时域中的均方根误差百分比为6.1056%

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

Paoutputfitmem = Helperpacharmempolymodel('signalgenerator'......诱捕,FITCOEFMATMEM,MODTYPE);Helperpacharplottime(Paoutput,Paoutputfitmem,Samplere)

图包含轴。具有实际和估计输出信号的标题比较的轴包含2个类型的类型。这些对象代表实际,估计。

绘制增益的幅度。

Helperpacharplotgain(止吐,Paoutput,Paoutputfitmem)

图包含轴。具有实际和估计增益的标题比较的轴包含2个类型的线。这些对象代表实际增益,估计增益。

讨论

记忆非线性模型的时域中的RMS估计误差率为9%和13%,比存储器多项式模型的误差大约3到4倍,这在2%和6%之间,为具有不同带宽的OFDM信号。

通过将实际PA输出的频谱与所有三个模型的估计PA输出的频谱一起绘制实际PA输出的频谱来检查频域中的估计误差。无记忆非线性表查找模型无法模拟测量PA输出中看到的光谱增长。对于该PA,内存多项式模型提供了PA特性的良好近似。

sa = helperpacharplotspectrum(......[paoutput paoutputfitmemless paoutputfitmem],......{'实际PA输出''记忆型号输出'......'内存多项式输出'},......采样器,测试信号);

图谱分析仪包含轴和其他对象的UiflowContainer,Uimenu,UIToolbar。轴包含3个类型的线。这些对象代表实际的PA输出,内存模型输出,内存多项式输出。

辅助功能Helperpacharmempolymodel.还可以使用内存多项式与交叉术语模型,包括除了PA的内存效果和非线性增益的内存效果之外的领先和滞后的存储器杂交术语。将模型类型设置为'交叉记忆'探索此模型。

为了进一步探索,尝试不同的记忆长度和多项式的组合。修改过采样因子并探讨其对PA模型性能的影响。修改辅助功能Helperpacharmempolymodel.尝试不同的PA型号。

用PA模型进行DPD测试

保存PA模型的系数矩阵以用于功率放大器用于在系统级的模拟数字预失真以补偿功率放大器非线性(通讯工具箱)

框架=楼层(长度(诱捕)/数字);PAIL.SIGNALS.VALUES = DOUBLE(REPAPE(诱捕(1:FRAMESIZE * NUMFRAMES,1),NUMFRAMES,FRAMESIZE));痛苦。标志物。二司=框架;痛苦.Time = [];节省('pacoefficientandinput.mat'“modType”'fitcoefmatmem'“梅伦”'deglen''疼痛''lineargaindb'

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

当成本函数是RMS错误百分比时,在执行网格搜索时取消注释。首先选择模型类型。

modtype ='Mempoly';%rmsErrorTime=helperPACharGridSearchTime(paInput、paOutput、modType、过采样率)

当成本函数是频率的百分比误差百分比时,重复搜索。

%rmserrorfreq = helperpachargridsearchfruquency(诱捕,paoutput,modtype,过度采样)

相关话题