资讯动态

宽带高回退Doherty放大器ADS仿真与效率优化实战

发布时间:2026/10/26 19:11:23 来源:尧图企业网站定制
简介面向射频微波功率放大器与Doherty架构的学习者和工程验证人员这份宽带对称式高回退功放ADS仿真工程提供了可复现的完整参考重点解决从原理图搭建、偏置与匹配调试到版图联合仿真的衔接问题。其工作在1.82.2GHz、带宽0.4GHz饱和增益7.59dB回退增益11dB饱和效率高于65%9dB回退效率高于40%便于对照指标理解负载调制、效率提升与回退性能之间的折中。压缩包共1003个文件、约510.7MB涵盖ADS工作区与工程配置、原理图与版图相关数据、仿真与优化记录以及参数、模型和结果文件目录结构较完整适合按模块检索并复现实验。已有1810人学习可作为Doherty功放课程设计、课题验证和版图联合仿真的实操素材帮助读者核对偏置与匹配参数、复现效率曲线并积累从原理图到版图的调试思路。1. 从一次 8 dB 回退效率塌方说起这套宽带对称式高回退 Doherty 放大器 ADS 仿真源文件能解决什么A 同学拿着一份宽带对称式高回退 Doherty 放大器的 ADS 仿真工程来找我指标写的是 3.3~3.8 GHz、8 dB 回退效率目标 45%他照着自己以前做单管 PA 的习惯改了改匹配HB 跑出来回退点只有 31%饱和点倒是勉强够。问题不在管子也不在偏置而是他把 Doherty 当成两个功放并起来在调offset line 和合路点的阻抗调制整个没对上。这份源文件的价值就在这儿它把宽带对称式 Doherty 从等分功分、载波支路、峰值支路、offset line、合路网络到后匹配再到 Momentum 版图联合仿真这条链路完整摆在一个 ADS workspace 里不是零散几张原理图。适合已经会跑单管 HB、想往 Doherty 和宽带匹配走一步的射频功放开发者也适合带学生做毕设、做课程设计的人拿它当骨架。功率放大器这个圈子里的坑基本都在这份工程的参数里埋过一遍。2. 工程解构ADS workspace 里的原理图分层与版图组织2.1 目录结构与 Design 分层拿到压缩包先别急着双击打开跑仿真先看目录。这类带版图的 ADS 工程通常是一个 workspace 目录里面按networks/、data/、layout/、mom/、substrate/分块每一块承担的角色不一样混着看很容易把仿真结果对不上误判成模型问题。我一般按下面的顺序过一遍doherty_wb_wrk/ workspace 根目录 ├── networks/ 原理图与 symbol 库 │ ├── doherty_top/ 顶层 testbench偏置功分两支路合路后匹配 │ ├── carrier_amp/ 载波支路输入匹配 管芯 输出匹配 offset line │ ├── peaking_amp/ 峰值支路输入匹配 管芯 输出匹配 offset line │ ├── splitter/ 输入等分功分Wilkinson 或 Lange 形式 │ ├── combiner/ 合路节点T 型或集总 │ ├── post_match/ 后匹配网络合路低阻到 50 欧 │ └── bias_network/ 栅极/漏极偏置馈电含去耦 ├── data/ datasetDC、SP、HB、LSSP 结果 ├── layout/ 版图单元与顶层装配 ├── mom/ Momentum 工程与 EM 模型 └── substrate/ 层叠定义介电常数、厚度、金属电导率这个分层的好处是每张原理图只负责一件事。carrier_amp和peaking_amp是同一套匹配拓扑差别在 offset line 的电长度和管子偏置顶层doherty_top只做装配和测试激励不放任何匹配元件。改频段的时候你只需要动carrier_amp、peaking_amp和post_match三处顶层几乎不用碰这是后续二次开发能跑得快的前提。需要提醒一句不同版本的 ADS 对 workspace 目录的命名不完全一致打开时如果提示库路径缺失多半是networks/下的 symbol 引用了外部库在Options Technology里重新指一下工艺文件就行不用重建工程。2.2 三条链路的原理图走读与顶层装配Doherty 的原理图看着元件多逻辑其实只有三条链路输入功分到两支路、两支路各自匹配后经 offset line 到合路点、合路点经后匹配到 50 欧负载。顶层装配在 ADS 里体现为网表连接下面这段是从顶层 testbench 抽出来的简化网表元件名按工程实际命名语法是 ADS netlist 风格* doherty_top 顶层装配简化示意非完整网表 PORT1 in 0 Num1 Z50 Ohm PORT2 out 0 Num2 Z50 Ohm * 输入等分 SPLIT1 in p1 p2 SPLITTER2 Z50 Ohm * 载波支路偏置 - 输入匹配 - 管芯 - 输出匹配 - offset BIAS_C p1 vg_c VdcVG_CARRIER IMN_C p1 c_in MATCH_CARRIER DUT_C c_in c_out vg_c vd_c MODELGaN_HEMT_W OMN_C c_out c_off MATCH_CARRIER_OUT OFF_C c_off c_j TLIN ZZ_OFF_C EE_OFF_C FF0 * 峰值支路 BIAS_P p2 vg_p VdcVG_PEAK IMN_P p2 p_in MATCH_PEAKING DUT_P p_in p_out vg_p vd_p MODELGaN_HEMT_W OMN_P p_out p_off MATCH_PEAKING_OUT OFF_P p_off p_j TLIN ZZ_OFF_P EE_OFF_P FF0 * 合路与后匹配 COMB c_j p_j j_node COMBINER_T POST j_node out MATCH_POST_BROADBAND看这段网表重点不在元件名而在三处参数VG_CARRIER和VG_PEAK决定两支路的工作类别E_OFF_C、E_OFF_P是两支路 offset line 的电长度MATCH_POST_BROADBAND是后匹配网络的 symbol。回退效率上不去九成出在这三处中的一处。载波管一般偏在 Class AB峰值管偏在 Class C 甚至更深让它在回退区彻底关断否则载波支路的负载调制会被提前泄掉。提示E_OFF_C和E_OFF_P不要直接照抄 90 度。宽带工程里这两个数是在中心频点算出来的等效电长度实际用多节低通或带通网络逼近具体值要看data/目录下 load-pull 和 S 参数的结果反推。2.3 版图单元与 EM 模型的组织方式layout/下的版图和原理图是一一对应的但不是简单复制。载波支路、峰值支路、功分器、后匹配各有一个版图 cell顶层doherty_layout把它们按原理图的连接关系拼起来。每个 cell 在进 Momentum 之前都要确认三件事端口位置是否落在实际焊接/探针位置、参考地是否完整、金属层是否与substrate/里的层叠定义匹配。mom/目录里是已经建好的 Momentum 工程和导出的 S2P 模型。工程里通常会给每个子网络设一组 port跑完 EM 后把 S 参数模型替换回原理图的对应 symbol形成 co-simulation。这一步是整份源文件里最值钱的部分之一因为宽带 Doherty 的匹配网络在低频和高频的寄生差异很大纯 schematic 仿真和 EM 联合仿真的增益能差 1~2 dB效率差 5 个点以上。3. 把仿真跑起来从直流工作点到 HB 功率扫描的完整流程3.1 打开工程先确认模型库与工艺角工程能打开不代表能跑。第一步永远是确认管芯模型库加载正常。在 ADS 里打开doherty_top看DUT_C和DUT_P这两个 symbol 是否显示为正常元件而不是红叉。红叉说明模型库路径失效去Options Technology Library Definition重新指向工艺库目录。确认模型后先别跑 HB跑一次 DC 注解。DC 注解里同时扫描VG_CARRIER和VG_PEAK看两支路的静态电流。载波管在 Class AB 下应该有几十 mA 量级的静态电流峰值管在 Class C 下静态电流接近零或者只有几 mA。如果两支路静态电流差不多说明峰值管偏置没设对后面回退效率一定不对。* DC 注解简化 DC1 DC SweepVarVG_PEAK Start-3.5 Stop-1.5 Step0.1 * 同时用 ParamSweep 扫 VG_CARRIER 的几组取值这段注解的意思是把峰值管栅压从深夹断往开启方向扫同时观察DUT_P的漏极电流。理想情况下电流曲线在VG_PEAK接近某一点时才开始明显抬升那个点就是峰值管的开启门限。把VG_PEAK设在门限以下 0.2~0.4 V峰值管才能在回退区保持关断。3.2 Load-pull 定输出阻抗与 Offset Line 电长度载波支路的输出匹配不是拍脑袋做的。工程里data/目录下一般有一组 load-pull 结果或者至少有一张LSSP扫描。我一般用 Python 把 load-pull 的等效率圆和等功率圆读出来找Z_opt的位置再结合 Doherty 的阻抗调制关系反推 offset line 需要的变换比。# 从 ADS 导出的 load-pull CSV 里找最佳阻抗 import numpy as np import pandas as pd df pd.read_csv(loadpull_carrier_3p55GHz.csv) # 列gamma_real, gamma_imag, pout_dbm, pae_pct z0 50.0 gamma df[gamma_real] 1j * df[gamma_imag] z_load z0 * (1 gamma) / (1 - gamma) # 按 PAE 排序取前 5% 的功率点再在其中挑功率最大的 pae_th np.percentile(df[pae_pct], 95) cand df[df[pae_pct] pae_th] best cand.loc[cand[pout_dbm].idxmax()] z_opt z0 * (1 (best[gamma_real] 1j * best[gamma_imag])) / \ (1 - (best[gamma_real] 1j * best[gamma_imag])) print(Z_opt %.2f j%.2f ohm % (z_opt.real, z_opt.imag))这段脚本干的事很直白把 Γ 转成阻抗按 PAE 取高分位再从中挑输出功率最大的点。得到Z_opt之后按对称 Doherty 的关系载波支路在回退点的负载阻抗应该是Z_opt的 2.8 倍左右对应 8~9 dB 回退饱和点回到Z_opt。offset line 的作用就是在峰值管关断时把这 2.8 倍的阻抗呈现给载波管在峰值管导通时又不额外增加损耗。注意load-pull 的参考面一定要和 offset line 的参考面对齐。很多人 load-pull 是在管芯输出端做的offset line 却画在匹配网络之后中间隔了一段传输线参考面一错算出来的E_OFF_C就完全跑偏。3.3 HB 功率扫描与效率、AM-PM 提取DC 和 load-pull 都没问题再上 HB。HB 控制器里扫输入功率同时扫频率把Pout、PAE、Gain、AM-PM都存进 dataset。这一段建议用 AEL 脚本批量跑手动改参数太容易漏。// ADS AEL批量跑 HB 功率扫描并写 dataset decl designs list(HB_3p3G, HB_3p5G, HB_3p8G); decl pin_start -10; decl pin_stop 30; decl pin_step 1; foreach (design_name in designs) { decl d getDesign(design_name); // 设置功率扫描变量 Pin单位 dBm setVarValue(d, Pin, pin_start); // HB 控制器里 SweepVar 指向 Pin simulate(); // 把结果对话框挂到 dataset方便后处理 decl ds getDataSet(design_name); writeDataset(ds, sprintf(%s_pae.ds, design_name)); }这段 AEL 的写法是一个频点一个 design的组织方式每个 design 里放一个 HB 控制器扫Pin。setVarValue改的是原理图变量simulate()触发仿真writeDataset把结果落盘否则 dataset 会被下一次仿真覆盖。三个频点跑完回退点效率、饱和功率、增益压缩曲线就都有了。后处理我一般用 Python 读 dataset 导出的 CSV按回退量算效率# 按饱和功率回退 N dB找对应 PAE def pae_at_backoff(pin, pout, pae, backoff_db8.0): psat pout.max() target psat - backoff_db idx np.argmin(np.abs(pout - target)) return pin[idx], pout[idx], pae[idx] for f in [3p3G, 3p5G, 3p8G]: d pd.read_csv(fhb_{f}.csv) pin, pout, pae pae_at_backoff(d[Pin], d[Pout], d[PAE]) print(f{f}: 回退 8 dB 时 Pin{pin:.1f} dBm, PAE{pae:.1f}%)pout.max()是饱和功率target是回退 8 dB 对应的功率点argmin找到最接近该功率的索引。三个频点的回退效率拉出来一对比宽带一致性好不好一眼就能看出来。如果中心频点 45%、边频掉到 35%问题多半在后匹配网络的带宽上不在管子。4. 宽带与高回退的实现细节阻抗调制比、Offset Line 与后匹配怎么定4.1 对称式 Doherty 的回退量与阻抗调制比对称式 Doherty 的意思是载波管和峰值管用同尺寸器件经典架构下回退 6 dB 时效率最高。要把回退点推到 8~10 dB靠的不是换更大的峰值管而是提高阻抗调制比 α。载波管在回退点的负载阻抗按Z_c_bo Z_opt * (1 α)走α 越大回退越深但载波管看到的驻波也越恶劣。# 由目标回退量反推所需调制比 def alpha_from_backoff(backoff_db): return 10 ** (backoff_db / 20.0) - 1 for bo in [6, 8, 9, 10]: a alpha_from_backoff(bo) print(f回退 {bo} dB - 调制比 alpha {a:.2f}, 载波管回退负载 {1a:.2f} * Z_opt)跑出来的结果6 dB 对应 α1.0也就是经典 Doherty9 dB 对应 α≈1.82载波管回退时负载接近 2.8 倍Z_opt。这意味着载波管在回退点的电压摆幅已经接近击穿边界选管的时候要留足余量。对称器件做 9 dB 回退本质是在用载波管的电压裕量换效率这是这份工程最需要小心的地方。峰值管的偏置也要配合。回退越深峰值管开启点越晚VG_PEAK要设得更负Class C 导通角更小。但压得太深会导致峰值管在大功率区增益不足AM-PM 恶化。工程里VG_PEAK那组参数是折中过的二次开发时不要单改一个数要和 offset line 一起动。4.2 宽带合成网络Offset Line 与后匹配的联合设计窄带 Doherty 用 λ/4 微带线做 offset 和阻抗变换带宽撑死 10%。这份工程要覆盖 3.3~3.8 GHz相对带宽约 14%必须把 λ/4 换成宽带等效网络。常见做法是用多节低通或者带通结构逼近 90 度相移同时把变换比做进去。* 宽带 offset line 的等效网络三节低通示意 OFF_C_BROADBAND L1 c_off n1 LL_OFF1 C1 n1 0 CC_OFF1 L2 n1 n2 LL_OFF2 C2 n2 0 CC_OFF2 L3 n2 c_j LL_OFF3三节低通的L、C值不是随便凑的要满足两个约束中心频点相移接近 90 度带内插损尽量平坦。工程里这组值一般是用 ADS 的Filter DesignGuide或者Smith Chart工具反推出来的改频段时最稳的办法是把中心频点改掉重新跑一遍综合不要手工微调。后匹配网络的任务是把合路点的低阻抗对称结构下大约是Z_opt/2变换到 50 欧。如果Z_opt是 25 欧合路点就是 12.5 欧变换比 1:4单节 λ/4 做不出来宽带实现通常是两到三节。这里有个血泪经验后匹配的带宽往往比两支路的匹配带宽更窄是整个 Doherty 的瓶颈。调宽带的时候先看后匹配的 S11 和插损再回头调支路顺序反了会做很多无用功。4.3 版图联合仿真从 Schematic 到 Momentum 的闭环原理图跑通只是第一步带版图的工程要过 EM。流程是layout/里画好各 cellmom/里建 substrate、设 port、跑 S 参数再把 S2P 模型替换回原理图 symbol重跑 HB。这一步在 ADS 里叫 co-simulation工程里通常已经配好了EM Model的 symbol。* Momentum 关键设置示意 Substrate: 4 层介质厚度与 Er 按工艺文件填 Frequency Plan: 1.0 GHz ~ 12.0 GHz覆盖到三次谐波 Ports: 每个 cell 的输入输出各一个 TML port参考地就近 Mesh: 边缘网格密度调高细线宽处单独加密频率上限一定要覆盖到三次谐波。功放在大信号下二次、三次谐波分量不小如果 EM 只跑到基波回填后的 HB 结果和实际差很多尤其是效率。Mesh 密度不够会导致细线宽的匹配枝节阻抗偏移表现为增益掉、带宽变窄。EM 跑完回填重跑 HB对比纯 schematic 和 EM 联合仿真的回退效率。我一般要求两者差距在 3 个点以内超过就说明版图上有寄生没控住回去查过孔、耦合间距和地平面完整性。5. 避坑与排查HB 不收敛、效率对不上、版图结果漂移的常见现场5.1 现象HB 报 convergence failure扫到一半就停现象很典型功率扫描到某个Pin值仿真器报HB convergence failuredataset 里只有前面几个点。原因通常有三个一是峰值管偏置太深Class C 导通角极小HB 的谐波截断阶数不够迭代发散二是输入功率太大管子进入强非线性区牛顿迭代初值给得不好三是 offset line 的等效网络里有接近谐振的节点阻抗突变。解决办法按顺序试先把 HB 的Order从 3 提到 5 甚至 7谐波数不够是最常见的再把MaxIterations调大Solver从Newton换成Kylov如果还不行用Sweep的Continuation模式让仿真器沿着上一点的解往下扫别每次都从冷启动开始。最后检查 offset line 的 L、C 值有没有哪一节的谐振频率正好落在扫描频段内。5.2 现象回退点效率比预期低 5~10 个点这是最高频的现场。A 同学那份工程就是这个毛病。原因拆开看一是峰值管在回退区没真正关断VG_PEAK设得不够负载波管的负载调制被提前泄放阻抗升不到 2.8 倍Z_opt二是 offset line 电长度不对回退时没能把峰值支路的开路变换到合路点载波管看到的还是低阻三是后匹配网络在回退点的插损偏大。排查顺序反过来先看回退点的Z_c实际是多少在 HB 里加一个Zin注解扫Pin看载波管输出端阻抗随功率的变化曲线。理想曲线应该从高阻单调降到Z_opt如果一开始就是低阻说明 offset line 或峰值管偏置有问题。确认阻抗调制对了再查后匹配插损。5.3 现象EM 联合仿真后增益掉 2 dB、带宽明显变窄纯 schematic 跑出来好好的回填 EM 模型之后增益掉了、边频效率塌了。原因一般是版图寄生匹配枝节之间的耦合没考虑、过孔电感偏大、地平面被分割导致回流路径变长。宽带匹配网络对寄生特别敏感尤其是后匹配那几节线宽和间距一变阻抗就偏。解决方法是分段回填不要一次性把所有 cell 都换成 EM 模型。先换后匹配跑一次 HB看差多少再换载波支路再跑最后换峰值支路。哪一段换上去之后指标掉得最多问题就在那一段的版图上。定位到具体 cell 之后回 Momentum 看电流分布找耦合最严重的位置加间距或者改地孔。5.4 现象原理图变量名和 dataset 对不上后处理脚本报 KeyError这类工程经常被不同人改过原理图里的变量名从VG_C改成VG_CARRIERdataset 里的列名还是旧的。Python 后处理脚本按列名取数据直接KeyError。看着是小问题排查起来能耗掉半天。养成习惯每次改完原理图变量同步在data/目录下重新导出一份 CSV列名以导出文件为准脚本里用一个映射字典做兼容。另外 HB 控制器里的SweepVar名字和ParamSweep的变量名要一致ADS 不会帮你校验这个扫出来是一条直线的时候先查这里。6. 二次开发把这份工程改成你自己的频段和回退量拿到这份源文件之后最常见的改造需求就两类换频段、换回退量。换频段相对简单把post_match、carrier_amp、peaking_amp三处的中心频点改掉重新跑Filter DesignGuide综合匹配网络offset line 的等效网络按新频点重算然后走一遍 EM。换回退量麻烦一些要动VG_PEAK、offset line 电长度和调制比三者是耦合的单改一个必然翻车。我一般用下面这种参数扫描的方式找折中点而不是手工试# 扫描峰值管偏置和 offset 电长度找回退效率最优组合 import itertools, subprocess vg_list [-3.2, -3.0, -2.8, -2.6] eoff_list [70, 80, 90, 100] results [] for vg, eoff in itertools.product(vg_list, eoff_list): # 调 ADS 命令行批处理改变量后跑 HB cmd fads -p doherty_wb_wrk -c \setVar VG_PEAK{vg}; setVar E_OFF_P{eoff}; simulate HB_3p5G\ subprocess.run(cmd, shellTrue, checkTrue) # 读结果记录回退 8 dB 的 PAE pae read_backoff_pae(hb_3p5G.csv, 8.0) results.append((vg, eoff, pae)) results.sort(keylambda x: x[2], reverseTrue) print(Top3:, results[:3])这段脚本的逻辑是把两个强耦合的参数做二维网格扫描每个组合跑一次 HB按回退 8 dB 的 PAE 排序。setVar改的是原理图变量simulate HB_3p5G触发指定 design 的仿真read_backoff_pae复用前面那段后处理。实际跑起来一个组合几十秒十六个组合十几分钟比手工调快得多。几点经验一是扫描范围不要开太宽VG_PEAK偏离 0.5 V 以上效率就会明显掉先粗扫再细扫二是 offset line 的电长度在宽带工程里不是单一值扫的时候要同时看三个频点别只盯中心频点否则中心频点最优、边频塌了三是每次跑完把 dataset 单独存一份命名带上参数组合否则很容易被覆盖后悔药没得吃。还有一点容易被忽略这份工程是纯模拟域的没有留数字预失真DPD的接口。如果你后续要接 DPD 做线性化记得在顶层 testbench 里预留AM-PM和AM-AM的导出节点别等做到一半再回头加那时候匹配网络已经定型改起来很麻烦。我现在的习惯是任何一个功放工程第一次打开先把 DC、load-pull、HB、EM 四步的检查项列一遍走完再动参数从那以后没再出现过跑了三天发现偏置设错这种事。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑