简介:来自Keysight的官方应用笔记,面向通信系统与无线射频电路设计人员,系统介绍如何用ADS中的Ptolemy协同仿真,对功率放大器开展ACPR、EVM、PAE关键指标计算,同时覆盖输入功率扫描、增益压缩以及蒙特卡洛统计变化分析,帮助读者在项目早期验证设计余量与合规性。整套资源非常精简,只包含1个PDF技术文档,压缩包体积约1.8MB,便于离线阅读和快速检索。文档内容从仿真背景和理论原理展开,逐步给出EDGE信号源配置、被测功放子电路搭建、规范兼容的接收端测量方法,以及自动验证建模(AVM)加速技巧;另外还提供了Keysight EDA Knowledge Center中完整示例工程的下载入口,读者可对照动手复现整套仿真流程。目前这份文档已吸引2759人学习,适合希望通过协同仿真与统计参数扫描,来评估功放线性度、效率和调制质量的射频工程师。
1. 用ADS算ACPR、EVM、PAE,为什么把三个指标放一个链路里
之前调一个功放项目时,我连续两天被同一个现象困住:小信号增益、回波损耗都贴着目标,一给上载波聚合信号,ACPR直接超了十几dB,EVM更是涨到不能看。后来才明白,把ACPR、EVM、PAE放在三个仿真里单独看的做法,本身就是坑。用ADS做这类指标,它们必须共享同一个“工作点、负载、失真模型”链路:PAE回答能量效率,ACPR和EVM回答数字信号在非线性功放里被污染了多少。这篇笔记先从仿真器分工讲起,再给一套可抄的HB+包络配置流程,最后把仿真和测试对不上的常见原因挑开。适合做前端功放设计的工程师,也适合刚用ADS做射频验证的新手。
2. 仿真器选型:HB与包络各自负责什么
2.1 谐波平衡(HB)算PAE和输出功率:扫描方式与谐波阶数
ADS里算PAE,最常用的不是瞬态仿真,而是谐波平衡仿真。HB把电路里每个节点电压展开成基波和各次谐波的频域分量,在一组周期性大信号条件下求稳态解。这个思路很适合连续波输入:功放被一个固定频率、固定功率的CW信号驱动,输出频谱就是基波加上若干谐波,HB能快速给出稳态值。
我一般会在HB控制器里这样设:单音频率放在工作频段,比如 3.5GHz,谐波阶数先给3阶。为什么先给3阶?因为PAE主要取决于基波输出功率和直流功耗,三阶谐波已经能覆盖最常见的效率计算;但后面做ACPR收敛性检查时,阶数还要往上加,这是后话。
HB控制器里需要扫输入功率。可以把Pin设为扫描变量,从回退区一路扫到饱和区,比如从-20dBm到5dBm,步进0.5dB。这样能同时得到小信号增益、P1dB压缩点、饱和功率和PAE曲线。扫描方式可以选择线性列表扫描,也可以选“功率添加扫描”,后者更贴近测试台按功率步进测曲线的习惯。
在ADS的HB结果里,PAE通常不会直接以一个控件输出,它是由后处理表达式算出来的。测试台常见的定义是:
PAE = (Pdel - Pavs) / Pdc × 100%
这里Pdel是功放交付到负载的功率,Pavs是信号源可用的输入功率,Pdc是直流供电功率。用这个公式,HB仿真结果里要能取到两个关键量:负载上的传递功率和电源支路的平均电流。
有一个细节容易搞反:Pdel一定是传递功率,不是负载上电压乘电流的视在功率。如果匹配网络有反射,电压电流算出来的功率会比真正传到负载的能量大,PAE也会跟着偏高。在HB仿真里直接读Pdel比手动算更稳妥。
HB计算PAE时,谐波阶数的影响主要体现在输出功率的精度上。阶数太低,谐波能量被截断,基波功率可能估小或估大;阶数太高,某些模型在高阶频点上数值不稳,仿真时间也成倍增加。我的习惯是先固定工作点和负载,用3阶、5阶、7阶各跑一遍,看PAE变化在0.5个百分点以内,就认为该点收敛了。
2.2 电路包络(Envelope)算ACPR和EVM:调制信号怎么过功放
PAE能用HB搞定,是因为CW信号是稳态周期信号。可ACPR和EVM来自数字调制信号,信号本身是宽带的,包络在随机变化,功放的非线性会把频谱重新“涂开”。如果继续用单一频率的HB去算,就看不到邻道是怎么长出来的。
这时候要做的是电路包络仿真。ADS里的Envelope仿真把问题拆成两个域:高频载波部分用谐波平衡类的方法处理,而调制包络用时域步进。载波仍然有稳态解,但包络每个时间点的幅度和相位是变化的,非线性电容、非线性电感和记忆效应就能在包络时间轴上体现出来。
包络仿真里最关键的两个设置是包络带宽和时域点数。20MHz带宽的LTE信号,包络带宽至少要有30MHz以上,给邻道留出余量;采样率则要覆盖这个带宽的4到5倍。很多新手第一把就把采样率设成和载波频率一个量级,比如几个GHz,结果仿真慢到没法等,其实没必要。
包络仿真得到的输出是时域包络波形,后续ACPR和EVM都需要对这个波形做信号处理。ACPR本质上是输出频谱的积分比,EVM则是解调后的星座误差统计。所以在ADS里跑包络仿真,不光是看仿真器结果,还要把波形引用到测量表达式里做计算。
用包络仿真跑ACPR有一个好处:可以直接用标准信号源,比如LTE向量信号源模型,也可以从测试台导出真实波形文件送到仿真输入。这样仿真里看到的邻道增长规律,和实测台上看到的更接近。如果只想看趋势,用ADS内置的调制源就够;如果要把绝对值当作设计规格,最好把测试台的波形文件也扔进去,避免源本身的噪声底不对。
2.3 用CW稳态硬算ACPR,为什么结果不可信
这里要泼一盆冷水:有人图省事,用HB跑几个CW频点,把输出频谱旁边几个离散互调分量测出来,再按带宽积分折算成ACPR。这种做法在简单的AB类功放、弱压缩条件下能看个大概趋势,但到了实际调制信号,基本都会翻车。
原因是ACPR的原始驱动因素不止是静态非线性,还有调制包络的峰均比和记忆效应。CW信号只有一个幅度,没有包络变化,激励不到晶体管内部的动态偏置和温度记忆;而LTE或5G NR信号的峰值因子动辄8到10dB,功放在峰值附近被压缩、在低谷时回到线性区,整个过程是动态的,这恰恰是CW无法复现的。
有一个很容易踩的坑:用HB跑一个所谓的“多音信号”来近似调制信号。多音确实有包络起伏,但音数和相位分布跟真实的OFDM差太远。用四音或八音算出来的ACPR,只能用来验证仿真链路通不通,不能当作设计余量依据。真正要对外承诺ACPR,路径只有两条:一是包络仿真直接跑调制信号,二是包络仿真读取实测信号文件。其他方案都只能作为内部参考。
所以我在项目里的分工非常明确:HB负责静态能量效率,也就是PAE;包络仿真负责动态失真,也就是ACPR和EVM。两者共用同一套原理图、同一份晶体管模型和同一个负载阻抗。顺序上先做HB把PAE和输出功率调到目标区间,再做包络仿真正式评估ACPR和EVM,而不是反过来。先跑包络再回头调偏置,等于拿着一个没收敛的放大器去测失真,浪费时间。
3. ADS配置流程:包络仿真与测量表达式的落地操作
3.1 信号源和调制格式设置:以20MHz LTE信号为例
在ADS里搭一个用来评估ACPR/EVM的功放链路,输入侧有两种常见方案:一种是用内置的调制信号源,直接在原理图里配置LTE或5G NR;另一种是从测试台导出波形文件,用文件源读进来。内置源方便做参数扫描,文件源更贴近实测,我一般会两个都建:快速验证用内置源,最终判定用文件源。
以20MHz LTE信号为例,调制源参数卡大致可以写成下面这个形式。注意这里的写法只是把ADS里对应的配置项列出来,不同版本界面名称略有区别,但概念一致:
LTE_SignalSource: Standard = "3GPP LTE" Duplex_Mode = "FDD" Channel_BW = 20 MHz Carrier_Freq = 3.5 GHz Modulation = "64QAM" Test_Model = "ETM3.1a" PeakAvgPwr = 9.6 dB Num_Symbols = 14 * 4这段配置里,Channel_BW决定信号带宽容纳多少子载波,这个值必须要和包络仿真的Envelope带宽匹配。Carrier_Freq是包络仿真里的中心频率,它不参与包络时间步长,但决定谐波平衡部分的求解频率。Modulation用64QAM,是因为EVM对高阶调制更敏感,如果用QPSK测出来EVM非常好看,但实际项目跑256QAM时指标会差很多。
Num_Symbols最少要覆盖一个子帧,我是习惯取4个子帧以上,也就是大约 14×4 个OFDM符号。时域长度太短,信号的统计特性不稳,ACPR和EVM会出现抖动;太长则仿真时间成倍增加。实际项目里我会先取短序列跑通链路,最后用长序列做最终验证。
PAPR参数很重要。ETM3.1a是LTE测试模型里峰均比较高的一档,如果手头仿真源没有这个选项,至少要保证信号的CCDF曲线在0.01%概率点处有8dB以上的PAPR。否则功放的非线性被激励得不够,ACPR会好看得失真。
3.2 PAE的测量表达式与直流功耗计算
HB仿真跑完后,PAE不会自己出现在列表里,需要写测量表达式。我习惯在ADS的Measurement Expression里写成一个可复用的变量,这样功率扫描的每条Pin都能自动算出一行PAE。
下面是谐波平衡结果后处理的示意表达式,单位上做了明确换算:
; 谐波平衡结果后处理 Pdel_W = Pdel ; 负载得到的传递功率,单位 W Pin_W = 10 ** ((Pin_dBm - 30) / 10) Pdc_W = Vdc * I_Probe.i[0] ; 电源电压 * 静态电流直流分量 PAE_pct = 100 * (Pdel_W - Pin_W) / Pdc_W逻辑上,PAE衡量的是一个放大器把直流能量转成射频能量时,扣掉输入驱动功率后还剩多少净增益效率。所以分子必须用Pdel减Pin,而不是直接用输出功率除以直流功耗,否则在小信号高增益区会算出超过实际水平的效率。
参数上,Vdc就是漏极电源电压,比如28V;I_Probe.i[0]是电流探针在0频分量的值,也就是直流平均电流。用i[0]而不是瞬态值,这是HB仿真特有的取法,它能避开射频大信号造成的电流摆动,只保留直流工作点。
还有一个常见误用:把PAE定义里的Pin当成输入功率电平,直接把设置里的Pin_dBm套进公式,这样也可以,但要注意输入匹配的反射。如果输入端有明显失配,实际进入晶体管的有用功率并不是源可用功率Pavs。这时候我会额外测一下输入阻抗,用Pavs扣除反射后的功率作为Pin,否则PAE会偏乐观。ADS表达式里可以直接引用仿真器的源可用功率变量,避免手算反射系数。
3.3 ACPR/EVM测量控件参数与结果判读
包络仿真跑完后,输出波形是基带包络信号,要用测量表达式或ACS提供的测量控件来计算ACPR和EVM。ACPR的测量控件通常需要告诉你“信道带宽”和“邻道偏移”,比如3GPP里对20MHz LTE,主信道带宽约18MHz,邻道带宽约1MHz,偏移20MHz和40MHz,其实严格要和测试台设置的滤波器一致。
以下是一个ACPR测量参数的示意配置:
ACPR_measurement: Main_Bandwidth = 18 MHz Adjacent_Bandwidth = 1 MHz Offset_1 = 20 MHz Offset_2 = 40 MHz Method = "integrated_power" Sweep_State = "final"这里的关键在Method,积分功率法是把指定频带里的功率谱密度积分,然后取邻道和主信道的比值。有些初学者把Method设成“peak”只看频谱峰,那会把ACPR带偏,因为邻道的功率分布不是单根谱线,积分才是测试台的做法。
EVM的计算稍微绕一点。包络仿真输出的符号星座点,要先经过匹配滤波和符号定时恢复,才能和理想参考星座点比较。ADS里通常会提供载波恢复、定时恢复的测量模块,或者允许你直接把参考信号源输出作为参考波形。示意表达式如下:
; Envelope 测量后计算 EVM error_vec = complex(out_sample - ref_sample) EVM_pct = 100 * sqrt( mean( mag(error_vec)^2 ) / mean( mag(ref_sample)^2 ) )这段表达式的意思是,逐符号把输出判决点和理想参考点做复数差,误差矢量的RMS值除以参考星座点的RMS值,就是百分比EVM。它和规格书里的EVM定义一致,区别只是参考点怎么取。我会取每个符号最近的有效星座点做参考,这种方法对相位噪声和幅度失真都很敏感。
EVM要稳定,必须保证out_sample和ref_sample时间对齐。差半个符号周期,EVM可能从1.5%跳到6%。所以在包络仿真里我会先跑一个小的时延扫描,看EVM随时间偏移的变化曲线,找到最低点所在的时间偏移,再用这个偏移量标注最终结果。这个操作不建议省,它也是后面排查EVM固定偏置的主要解药。
4. 三个指标的调参顺序:从偏置点、负载到回退量
4.1 固定偏置,先跑Pin扫描找到增益压缩点
三个指标一起看的时候,最容易犯错是直接拿满功率去算ACPR和EVM。真实功放不会工作在最大输出点,通常要回退到某个压缩深度,ACPR和EVM才达标。所以我习惯先把偏置固定,做一次输入功率扫描,画出增益和相位随功率的轨迹。
固定偏置的意思是:先选定静态工作点,比如AB类功放,静态漏极电流设为饱和区电流的10%到20%。然后用HB扫Pin,从-20dBm到饱和,记录每个点的小信号增益、P1dB压缩点和增益下降曲线。P1dB是从线性增益下降1dB的那个输入功率点,它是后续所有回退量的参照原点。
ADS里找P1dB不用人眼盯曲线,可以写表达式自动算:
Comp_dB = gain(Pin) - gain(Pin_at_low_level) P1dB_Pin = x_where(Comp_dB == -1)这里的gain(Pin)是HB扫描结果得到的功率增益,x_where是ADS表达式中用来寻找自变量达到某个条件的工具函数。如果版本不支持x_where,也可以直接读列表数据。我只知道不同ADS版本函数名有差异,关键是逻辑:以低功率点增益为基准,找增益下降正好1dB的地方。
有了P1dB之后,再来回退。比如项目要求EVM小于2.5%,我通常先从P3dB回退开始测ACPR和EVM,也就是把输入功率放在P1dB之后3dB的位置。但要注意,P1dB是用CW单音测的,调到调制信号后,由于PAPR高,实际峰值已经进一步压缩了,所以很多设计会用到P6dB甚至P8dB回退。先用CW扫出压缩轨迹,再用包络仿真看调制信号下的表现,顺序才不会乱。
4.2 负载阻抗在PAE和ACPR之间的取舍
偏置定了以后,负载阻抗会同时改变PAE和失真特性。最大输出功率对应的负载阻抗和最小交调失真的负载阻抗往往不一样,做项目时要用负载牵引把这两个目标都摆到桌面上看。
在ADS里可以用负载牵引仿真模板,在晶体管输出口扫一组阻抗点,每个点下跑HB,得到Pout、PAE、增益,也能在同一次扫描里算三阶互调产物。操作起来就是放一个负载牵引控制器,设定反射系数扫描范围,比如VSWR 1.5:1 到 5:1,相位覆盖全史密斯圆图,然后跑谐波平衡。
我一般会把结果整理成一张对照表,方便在效率与失真之间找妥协,比如:
| 负载点 | PAE (%) | Pout (dBm) | ACPR@20MHz (dBc) |
|---|---|---|---|
| 点A | 48 | 39.8 | -36.2 |
| 点B | 44 | 39.6 | -40.8 |
| 点C | 41 | 39.4 | -44.1 |
这一小步很有用。点A效率最高,但ACPR离指标差一截;点B效率损失在可接受范围内,ACPR就达标了;点C过于保守,效率掉太多,发热和供电压力都上来。最终我通常选点B,除非系统里还有额外的线性化手段,比如DPD,那才会回到点A附近。
这里有个边界要留意:负载牵引扫描得到的ACPR值,如果是在CW或双音激励下算的,只能作为相对趋势;真正的ACPR判据还是要用调制信号包络仿真来定。所以负载牵引阶段我只看趋势,等到负载候选点确定了,再切到包络仿真做正式评估。
4.3 保留线性化余量:用仿真数据看AM-AM和AM-PM
ACPR和EVM不仅取决于增益压缩,还取决于相位失真。所以光看P1dB不够,还要看AM-PM曲线,也就是输出相位随输入功率的变化。ADS的HB扫描结果里可以直接把每个Pin点的输出相位取出来,减去小信号时的相位,就能得到AM-PM。
判断口径我一般用这个经验:在功放实际回退点,AM-PM最好控制在2到3度以内。超过这个范围,EVM会明显上扬,即使ACPR勉强合格,星座图也会出现外圈旋转的迹象。而AM-AM则看增益压缩量,回退点处增益相对小信号增益最多下降1到2dB,具体取决于调制方式和系统是否允许DPD。
在ADS里可以这样提取:
AMPM_deg = phase(S21_large) - phase(S21_small) AMAM_dB = mag(gain_large) - mag(gain_small)这里的S21_large指大信号状态下的正向传输函数,S21_small指小信号参考状态。两个曲线放在同一张图里,能直观看到“压缩发生在增益曲线哪个区段”,以及“相位旋转是否同步恶化”。
如果AM-PM斜率在回退区已经很大,说明晶体管工作在强非线性区,再往后加DPD也只能部分补偿。这时我会回头调负载或偏置,而不是硬扛。这四个字“保留余量”是线性功放设计的核心:PAE不能顶着极限取,ACPR和EVM也要给环境温度和各种源误差留出空间。
5. 仿真与实测对不上的排查清单:五个典型现象
5.1 ACPR在仿真里好看,测试时超限
现象是仿真ACPR做到-42dBc,板子打样回来实测只有-33dBc,差了将近10dB。
原因排查下来,十有八九出在激励信号上。仿真里用的调制源峰均比只有6dB,而测试台信号源实际生成的信号峰均比8.5dB以上。峰均比越高,相同平均功率下的峰值越高,功放压缩得更深,ACPR自然更差。另一个原因是仿真链路里没加输出滤波器或隔离器,测试台却带了额外的滤波损耗或反射,等效失真有变化。
解决方法是把测试台用的信号波形导出成文件,直接送进包络仿真里重跑。这一步治本。如果暂时没有波形文件,至少先把内置源的PAPR调到和实测接近,再用加一个简单带通滤波器观察邻道变化。这样能筛掉一大半“仿真好、实测差”的误会。
5.2 EVM始终有一个固定偏置
现象是EVM压不下去,星座图整体围绕原点有一个固定角度旋转或者固定偏移,无论怎么调回退功率都消不掉。
原因通常是解调参考点的时间延迟没对齐。包络仿真里,参考符号都是从理想源直接取的,但经过功放和测量链路后,波形会有群时延和载波相位偏移。如果参考波形直接从源端引出而不做对齐,误差矢量里就混进了一个系统性延迟。
解决方法是做一次时延扫描,把EVM关于时间偏移的关系画出来,找EVM最低点,再把这个偏移量写进EVM表达式或测量控件。有时还需要在输入端额外加一个“时间偏移”变量,引入群时延。做完对齐后,EVM通常会从3%掉回1.5%以下。这个操作必须放在第一次包络仿真后就做,不要拖到最后。
5.3 PAE高到超过器件理论值
现象是PAE仿真出来的值比模型的最大理论效率还高,比如某个GaN模型标称饱和效率55%,仿真却写出75%。
原因一般是直流功耗算小了。最常见的情况是没有计算输入驱动功率,直接用输出功率除以直流功耗,相当于把定义里的Pin忽略了;或者电流探针取的是瞬时电流而不是直流平均电流,把高效点瞬时值当平均值用,导致Pdc偏小。
解决方法是严格按PAE = (Pdel - Pin) / Pdc来,并且检查电流探针的方向。探针的“+”“-”极接反,直流电流符号是负的,算出来的Pdc接近零,PAE就会爆表。我会在HB结果里直接打印IProbe.i[0]的值,看看它是否符合工作点预估值,比如静态电流0.15A,扫到-10dBm时涨到0.62A,这才是合理量级。
5.4 包络仿真时间过长,项目等不起
现象是ACPR跑一次要十几个小时,项目节奏完全拖不住。
原因是把包络采样率设得过高。很多新手沿用瞬态仿真的习惯,把包络时间步长取到载波周期的十分之一,等于在20MHz带宽信号里跑3.5GHz采样,一小时只跑完几个符号,不慢才怪。
解决办法是把包络采样率降到信号带宽的4到5倍,比如20MHz信号取100MHz采样率。包络仿真不要求看到载波本身的边沿,它关心的是每个载波周期内的包络变化,奈奎斯特判据只对包络带宽负责。另一个可省的点是仿真时间长度:先跑一个子帧看趋势,稳定后再用4子帧做最终结果,不必一开始就跑整帧。
5.5 谐波阶数一改,ACPR就乱跳
现象是HB里谐波阶数从3阶改成5阶,ACPR从-38dBc变成-43dBc,再改成7阶又变到-40dBc,结果定不下来。
原因是晶体管模型的高阶互调分量没有被正确收敛,或者模型本身对高频谐波的描述精度不够。阶数增加后,更多高阶交调项被纳入,ACPR自然变化。如果变化量超过1dB,说明当前阶数下结果不可信。
解决方法是做一个收敛性扫描,从3阶到9阶,观察ACPR和PAE随阶数变化是否进入平台期。如果5阶到7阶指标变化小于0.5dB,就采用7阶作为最终设置;如果一直震荡,问题更可能在模型层面,要检查模型里是否有快速的数学非线性,或者考虑用更高精度的谐波平衡设置。这个坑在宽带信号里尤其明显,所以我一般会先花半小时跑收敛性,避免后面十二小时的仿真都在算一个假值。
6. 进阶验证技巧:用双音IMD3交叉检查ACPR趋势
我现在的习惯是,包络仿真正式结果之前,先在同一原理图里跑一个双音HB仿真。双音间距按实际信道带宽设置,比如20MHz LTE信号,就选两个音间隔20MHz,观察三阶互调产物落在邻道的位置。
这个技巧的核心逻辑是:ACPR大部分能量来自三阶和五阶互调,双音IMD3可以快速评估模型在该偏置点、该负载下是否产生了正确的高阶非线性。把双音HB扫Pin,得到IMD3随功率的斜率;理论上低功率区是3倍斜率,进入压缩区斜率会变缓。如果斜率从一开始就不是3,说明模型参数或者仿真阶数设置有问题。
再把包络仿真得到的ACPR随平均功率的曲线和双音IMD3曲线放在同一张图里看趋势。两者不需要数值重叠,但变化方向应该一致:平均功率每增加1dB,ACPR应同步恶化;如果ACPR出现平台甚至改善,而IMD3仍在恶化,多半是包络信号里的PAPR不够,或者是测量频段积分设置出了问题。
我踩过这个坑:有一版设计包络ACPR看起来很好,换了双音一测,IMD3异常高,最后查出来是包络仿真里信号源内部滤波器引入了限带,把邻道谱削掉了一部分。从那以后,双音检查变成了我投板前的固定动作,它不替代替包络仿真,但能在几十分钟内给出一个非线性趋势的“锚点”。
如果你刚开始做这个方向,建议先不要追求一次把所有指标跑完,而是按PAE → 压缩点 → IMD3 → ACPR/EVM的顺序递进。每一步的结果都记录下来,等积累到足够数据后,你会发现仿真里的问题大多能提前暴露出来。希望帮到你。
本文还有配套的精品资源,点击获取