宽带高效非对称连续J/F-1模式Doherty 功率放大器设计(2023.11 MTT)-从理论到ADS版图

news2025/1/22 6:56:45

宽带高效非对称连续J/F-1模式Doherty 功率放大器设计(2023.11 MTT)-从理论到ADS版图

这个文章实现的效果非常好非常值得大家去阅读复现(见前言介绍)但是我复现出现了一点困难,效果调不到那么好(带宽只是原来的三分之一)。

工程免费下载:https://download.csdn.net/download/weixin_44584198/88831515

原文: Continuous Class-J/F−1 Mode Asymmetrical Doherty Power Amplifier With Extended Bandwidth and Enhanced Efficiency
发表于NOVEMBER 2023,在微波顶刊IEEE T MTT上面,使用的GAN CGH40010F和GAN CGH40025

0、前言

这个文章中实现的效率和回退效果是非常的好,但是我自己的复现非常强差人意,我复现的时候基本搞清楚了文中的理论计算什么的,也基本按照要求实现了阻抗,但是效果还是很差,懂行的朋友可以一起研究下,最上方下载链接有全部的文件

至于为什么不直接使用作者给出的原理图进行复现呢?老问题,原理图画的和实物图对不上,哪怕是另一个基于连续相位负载调制的单输入宽带混合Doherty功率放大器设计我复现的比较好,它原理图和实物图也是对不上的,不知道是不是这些作者喜欢留一手。

这篇文章的后匹配PMN明显是对不上的:
在这里插入图片描述

给大家贴出一下这篇文章实现的效果,哪怕回退9db效率还在55%以上,也是因为这个我对复现这个文章是非常感兴趣的,相信各位朋友也是:
在这里插入图片描述
我自己仿真(自己按照作者理论调的)实现的效果(见笑了,比较差,1.6-2.3GHz,9dB回退效率也能到50%左右吧,峰值效率60%-70%左右,其他频率更加难看就不说了):
在这里插入图片描述

1、文章的核心思路

这是一个非对称的高回退的DPA设计,这种非对称设计对回退dB的改进非常大,非对称的高回退理论可以参考:理想架构的非对称高回退Doherty功率放大器理论与仿真。文中两个管子分别是13W的CGH40010F和25W的CGH40025F。

连续J/F-1模式指的是载波功放工作在回退状态下的工作模式,峰值功放在饱和时的工作模式没有详细介绍(我猜测应该是B类?)。如下图可见,蓝色就是回退时连续B/J类的设计空间、红色的是回退时连续F-1的设计空间,绿色和棕色是作者设计的阻抗控制。

从连续空间来说并不特别,作者的突出贡献是提出了一种结构来实现这样的阻抗控制,从载波功放的连续阻抗要求推导了峰值支路的设计和后匹配网络PMN的阻抗要求。

令我眼前一亮的载波功放的谐波控制(下面图的棕色部分),控制的非常好了,可能是理论推导带来的巨大优势。我DPA看的国外文章不是特别特别多,没见过啥世面,我把这个和史伟民博士毕业论文的连续DPA的谐波控制对比了一下,确实好不少的(当然那个毕业论文都快是十年了都)。
在这里插入图片描述

2、理论推导

2.1、DPA架构

文中考虑了封装参数,直接把载波功放和其匹配电路等效成了微带线ZTC,峰值功放和其匹配电路等效成了微带线ZTP。文中的求解进行了大量的假设,首先是假设峰值功放到合路电的延迟是180°,这样在回退时的中心频率ZP1是由于阻抗变换特性处于开路状态,进而 θ T P \theta_{TP} θTP和延迟线 θ O F \theta_{OF} θOF都被假设成在中心频率处90°。
在这里插入图片描述

2.2、 θ T P \theta_{TP} θTP θ O F \theta_{OF} θOF实现

对于 θ O F \theta_{OF} θOF被假设成在中心频率处90°,直接使用在中心频率为90°电长度的微带线即可,而带有封装参数的 θ T P \theta_{TP} θTP,使用作者给出的电路也可以差不多的仿真出来(原理图OutputMatch_Raw_TP):
在这里插入图片描述
在这里插入图片描述

2.4、连续J/F-1模式的设计空间

重点来了,为了实现连续模式,需要先获得单点的阻抗,如何直接使用现有的连续公式计算连续的基波、谐波阻抗。因此,需要先确定回退dB数,进而确定功率分配比和回退阻抗点,作者也是直接给出了公式:
K = 1 0 ( O P B O − 20 ) α = ∣ I p , max ⁡ I c , max ⁡ ∣ = 1 1 − 1 ZOF = Z T C Z T P R o p t Z p m n = K Z T C 2 R o p t Z C 1 _ O P B O ( f 0 ) = Z T C 2 Z p m n = 1 K R o p t \begin{aligned} & K=10^{\left(\frac{\mathrm{OPBO}}{-20}\right)} \\ \text{}& \alpha=\left|\frac{I_{p,\operatorname*{max}}}{I_{c,\operatorname*{max}}}\right|=\frac{1}{1}-1 \\ \text{ZOF}& =\frac{Z_\mathrm{TC}Z_\mathrm{TP}}{R_\mathrm{opt}} \\ Z_{\mathrm{pmn}}& =\frac{KZ_{\mathrm{TC}}^2}{R_{\mathrm{opt}}} \\ Z_{C1\_\mathrm{OPBO}}(f_0)& =\frac{Z_{\mathrm{TC}}^2}{Z_{\mathrm{pmn}}}=\frac1KR_{\mathrm{opt}} \end{aligned} ZOFZpmnZC1_OPBO(f0)K=10(20OPBO)α= Ic,maxIp,max =111=RoptZTCZTP=RoptKZTC2=ZpmnZTC2=K1Ropt

连续B/J类的拓展也是非常的简单,套现在的公式就行:
{ Z 1 f , C − B / J = ( 1 + j γ ) R o p t Z 2 f , C − B / J = − j 3 π 8 R o p t Z n f , C − B / J = ∞ \begin{cases}Z_{1f,C-B/J}=(1+j\gamma)R_{opt}\\Z_{2f,C-B/J}=-j\frac{3\pi}8R_{opt}\\Z_{nf,C-B/J}=\infty&\end{cases} Z1f,CB/J=(1+)RoptZ2f,CB/J=j83πRoptZnf,CB/J=

因此目标空间就是:
Z J − 1 = ( 1 + γ j ) Z C 1 _ O P B O ( f 0 ) Z J − 2 = − j γ 3 π 8 Z C 1 _ O P B O ( f 0 ) \begin{aligned}Z_{\mathrm{J}_{-1}}&=(1+\gamma j)Z_{\mathrm{C}1\_\mathrm{OPBO}}(f_0)\\Z_{\mathrm{J}_{-2}}&=-j\gamma\frac{3\pi}8Z_{\mathrm{C}1\_\mathrm{OPBO}}(f_0)\end{aligned} ZJ1ZJ2=(1+γj)ZC1_OPBO(f0)=83πZC1_OPBO(f0)

对于IF类,也是类似的操作。但是值得注意,要输出相同的功率,IF类的阻抗是B/J类的两倍(参考浅谈连续逆F类的基础理论-波形、最佳阻抗、输出功率)。由此可以确定IF类的设计空间,那么简单的两者混合的设计空间为:
在这里插入图片描述

2.3、 θ T C \theta_{TC} θTC的推导与实现

对于上面那么多的公式,我们需要首先确定ZTC和ZTP,确定完其他的就都可以算出来了。那么ZTC和ZTP如何确定讷?没有公式,只能随便选,然后选计算出来理论效率最高的(作者分析了Case1,Case2什么的举例)。

作者最终设计选的是ZTC=2.3Ropt,ZTP=0.67Ropt,当然这个理论效率的计算会在附录给出相关代码。ZTC=2.3Ropt,ZTP=0.67Ropt假定之后,我们可以直接算出ZOF、Zpmn,进而计算出ZC2。算出来的ZC2实际上就是一个连续的阻抗点,如:
在这里插入图片描述
但是我们假设的ZC1_OPBO是上图右边的橙黄色和紫色,那么就需要把橙黄色和紫色所代表的连续空间变换到ZC2_OPBO。这两个阻抗之间差的就是一个 θ T C \theta_{TC} θTC,所以我们要争对每个点都找 θ T C \theta_{TC} θTC去将阻抗进行变换。

这个 θ T C \theta_{TC} θTC我无法进行解析计算,因此使用了非线性规划求数值解,简单理解就是争对每个阻抗点遍历 θ T C \theta_{TC} θTC代码见附录),直到找到一个能够完美变换的,计算得出的结果和文中基本一致:
在这里插入图片描述
在这里插入图片描述
这个非线性相位无法实现,作者使用了等效,但是我觉得这个差很大:
在这里插入图片描述
我自己使用ADS和作者提供的原理图对这个 θ T C \theta_{TC} θTC的延迟进行仿真,和作者图片相差不大:
在这里插入图片描述
在这里插入图片描述

2.4、理论效率的计算

作者给出了理论效率的计算公式:
P O U T , C = { 1 2 V D D 2 ∣ Z C 1 _ S A T ∣ 2 / R e ( Z C 1 _ S A T ) , ∣ Z C 1 _ S A T ∣ ≥ R o p t , C 1 8 ∣ I c , max ⁡ ∣ 2 ∣ Z C 1 _ S A T ∣ , ∣ Z C 1 _ S A T ∣ < R o p t , C P_{\mathrm{OUT,C}}=\begin{cases}\frac{1}{2}\frac{V_{\mathrm{DD}}^2}{\left|Z_{C1\_\mathrm{SAT}}\right|^2/\mathrm{Re}(Z_{C1\_\mathrm{SAT}})},&|Z_{C1\_\mathrm{SAT}}|\geq R_{\mathrm{opt,C}}\\\frac{1}{8}|I_{c,\max}|^2|Z_{C1\_\mathrm{SAT}}|,&|Z_{C1\_\mathrm{SAT}}|<R_{\mathrm{opt,C}}\end{cases} POUT,C= 21ZC1_SAT2/Re(ZC1_SAT)VDD2,81Ic,max2ZC1_SAT,ZC1_SATRopt,CZC1_SAT<Ropt,C

P O U T , P = 1 4 ∣ I p , max ⁡ ∣ V D D P_{\mathrm{OUT,P}}=\frac14|I_{p,\max}|V_{\mathrm{DD}} POUT,P=41Ip,maxVDD

P d c = 1 π V D D ( ∣ I p , max ⁡ ∣ + ∣ I c , max ⁡ ∣ ) P_{\mathrm{dc}}=\frac1\pi V_{\mathrm{DD}}(\left|I_{p,\max}\right|+\left|I_{c,\max}\right|) Pdc=π1VDD(Ip,max+Ic,max)
η S A T = P O U T , C + P O U T , P P d c \eta_{\mathrm{SAT}}=\frac{P_{\mathrm{OUT,C}}+P_{\mathrm{OUT,P}}}{P_{\mathrm{dc}}} ηSAT=PdcPOUT,C+POUT,P

我之间写成了Matlab计算,见附录,得到的结果为:
在这里插入图片描述
作者的结果和我不太一致,可能作者点数比较少,然后平滑插值的?但是大差不差:
在这里插入图片描述

2.5、Zpmn的谐波控制设计

基于ZC1_OPBO所需的谐波阻抗,结合微带线推导计算,可以得出Zpmn的理论谐波控制阻抗,如公式(代码见附录):
Z C 2 _ O P B O , 2 ( 2 f J I F ) = Z T C Z C 1 _ O P B O , 2 ( 2 f J I F ) − j Z T C tan ⁡ ( 2 θ T C ) Z T C − j Z C 1 _ O P B O , 2 ( 2 f J I F ) t a n ( 2 θ T C ) Z_{C2\_\mathrm{OPBO},2}(2f_{\mathrm{JIF}})=Z_{\mathrm{TC}}\frac{Z_{C1\_\mathrm{OPBO},2}(2f_{\mathrm{JIF}})-jZ_{\mathrm{TC}}\tan(2\theta_{\mathrm{TC}})}{Z_{\mathrm{TC}-j}Z_{C1\_\mathrm{OPBO},2}(2f_{\mathrm{JIF}})\mathrm{tan}(2\theta_{\mathrm{TC}})} ZC2_OPBO,2(2fJIF)=ZTCZTCjZC1_OPBO,2(2fJIF)tan(2θTC)ZC1_OPBO,2(2fJIF)jZTCtan(2θTC)

Z p m n , 2 ( 2 f J ) = Z C 2 _ OPBO , 2 ( 2 f J ) Z P 1 _ OBPO Z P 1 _ OBPO − Z C 2 _ OPBO , 2 ( 2 f J ) Z p m n , 2 ( 2 f I F ) = Z C 2 _ O P B O , 2 ( 2 f I F ) Z P 1 _ O B P O Z P 1 _ O B P O − Z C 2 _ O P B O , 2 ( 2 f I F ) \begin{gathered} Z_{\mathrm{pmn},2}(2f_{\mathrm{J}}) =\frac{Z_{C2\_\text{OPBO},2}(2f_{\mathrm{J}})Z_{P1\_\text{OBPO}}}{ Z _ { P 1 \_\text{OBPO}} - Z _ { C 2 \_\text{OPBO},2}(2f_{\mathrm{J}})} \\ Z_{\mathrm{pmn},2}(2f_{\mathrm{IF}}) =\frac{Z_{C2\_\mathrm{OPBO},2}(2f_{\mathrm{IF}})Z_{P1\_\mathrm{OBPO}}}{Z_{P1\_\mathrm{OBPO}}-Z_{C2\_\mathrm{OPBO},2}(2f_{\mathrm{IF}})} \end{gathered} Zpmn,2(2fJ)=ZP1_OBPOZC2_OPBO,2(2fJ)ZC2_OPBO,2(2fJ)ZP1_OBPOZpmn,2(2fIF)=ZP1_OBPOZC2_OPBO,2(2fIF)ZC2_OPBO,2(2fIF)ZP1_OBPO

三次谐波也是依次类推了。

2.6、中心频率的理论仿真

对于非中心频率,作者只计算了效率,没有分析电压、电流的具体行为(非中心频率我仿真不出来效果)。因此我只能对中心频率进行理论的仿真(原理图F_100)。当然,里面的参数都是基于作者的计算:
在这里插入图片描述
各个部件的参数如下:
在这里插入图片描述

3、ADS的具体实现

作者的实现和理论的推导有一些差异。

分析的时候回退数设置在了9dB,这样计算出来的分配比 α \alpha α应该是1:2.2左右。但是作者最终设计使用的功分器的分配比为1:1.5,这对应的回退是OPBO=8。如果要设计OPBO=8的,为什么之前分析为什么要设定OPBO=9呢?先不管那么多了

作者的Zpmn设置为1.4Ropt,实际应该使用1.8Ropt左右。1.4Ropt差不多对应OPBO=11.3时候的理论值,一致性比较差。这可能是调谐后的结果(可能是为了谐波控制)。其他一些阻抗上的调谐就不额外说明了。

3.1 Zpmn匹配电路设计

OutputMatch_pmn原理图,Zpmn主要是在谐波和基波有要求,基波匹配到36欧姆附近,作者pmn实物和原理图有差异,我使用我自己优化的。差不太多:
在这里插入图片描述

在这里插入图片描述

3.2 合路电路的优化

OutputMatch_Raw原理图,使用作者原来原理图给出的合路电路仿真结果比较差,可能是精度不够的问题。我自己设置目标进行优化,最后得到的电路和效果如下(此处是原理图的结果,版图没调,之后的整个系统仿真的输出匹配合路也先使用原理图的结果,因为这个和理论要求的一致性比较好):
在这里插入图片描述

在这里插入图片描述

3.3 输入匹配设计

两个管子分别是13W的CGH40010F和25W的CGH40025F,基本上在频段内要匹配到10欧姆附近(源牵引得到),如CGH40025F在1.9GHz的源牵引数据:
在这里插入图片描述
匹配电路的原理图、版图、测试在InputMatch文件夹,效果还可以:
在这里插入图片描述

在这里插入图片描述

3.4 整体的仿真

为了方便调整功分比,我直接使用两个端口来输入(HB1ToneGComp1swp_Doherty_v1原理图,载波功放和峰值功放分开,方便调整功率分配比alpha):

在这里插入图片描述
在这里插入图片描述

运行仿真,效果捉急(1.6-2.3GHz,9dB回退效率也能到50%左右吧,峰值效率60%左右):
在这里插入图片描述
只能复现到这儿了,卡住了,效果有点垃,不知道哪儿有问题。

4 测试运行

运行Test中的HB1ToneGComp1swp_Doherty_v1即可,需要添加Cree公式的GAN的库路径。

附录

Case3的电长度计算:

close all
clear
clc
global ZC2_OPBO ZC1_OPBP_f0 ZTC

OPBO=9;

K=10^(OPBO/-20);% EQN1
alpha=1/K-1;% EQN2
% 单位化Ropt
Ropt=1;
% 归一化化频率
f0=1;
% ZTC使用作者设定的
ZTC=2.3*Ropt;
% %% Case1
% ZTP=Ropt;
% f_arrary_J=f0*0.7:0.1:f0*1.3;
% ZOF=ZTC*ZTP/Ropt;% EQN3
% Zpmn=K*ZTC*ZTC/Ropt;% EQN4
% ZC1_OPBP_f0=Ropt/K;% EQN5
% theta_TP=90*f_arrary_J/f0+1e-9;% theta_TP在中心频率处是90°
% theta_OF=90*f_arrary_J/f0+1e-9;% theta_OF在中心频率处是90°
% ZP2_OPBO=ZTP./(1j*tand(theta_TP));% EQN15
% ZP1_OPBO=ZOF.*(ZP2_OPBO+1j*ZOF.*tand(theta_OF))./(ZOF+1j*ZP2_OPBO.*tand(theta_OF));% EQN16
% ZC2_OPBO=ZP1_OPBO.*Zpmn./(ZP1_OPBO+Zpmn);% EQN17
% 
% theta_TC_tmp=[40 50 60 90 120 130 140]+1e-12;
% A=[];b=[];Aeq=[];beq=[];
% lb=zeros(1,length(ZP2_OPBO));ub=180*ones(1,length(ZP2_OPBO));
% 
% theta_TC_J = fmincon(@theta_TC_cal_J,theta_TC_tmp,A,b,Aeq,beq,lb,ub);
% 
% ZC1_OPBO=ZTC.*(ZC2_OPBO+1j*ZTC.*tand(theta_TC_J))./(ZTC+1j*ZC2_OPBO.*tand(theta_TC_J));
% % 绘图
% S_ZC2_OPBO=(ZC2_OPBO-1)./(ZC2_OPBO+1);
% S_ZC1_OPBO=(ZC1_OPBO-1)./(ZC1_OPBO+1);
% figure(1)
% subplot(1,2,1)
% s = smithplot(S_ZC2_OPBO,'Color','b','LineStyle','-.','LineWidth',1);
% hold on
% s = smithplot(S_ZC1_OPBO,'Color','b','LineStyle','-.','LineWidth',1);
% s.Marker = {'s','o'};
% legend('Z_{C2\_OPBO}','Z_{C1\_OPBO}')
% 
% subplot(1,2,2)
% subplot(1,2,2)
% plot(f_arrary_J,-theta_TC_J);
% legend('\theta_J')
% xlabel('Normalized Frequency')
% ylabel('Required Phase(°)')
% %% Case2
% % J
% ZTP=0.2*Ropt;
% f_arrary_J=f0*0.9:0.03:f0*1.1;
% ZOF=ZTC*ZTP/Ropt;% EQN3
% Zpmn=K*ZTC*ZTC/Ropt;% EQN4
% ZC1_OPBP_f0=Ropt/K;% EQN5
% theta_TP=90*f_arrary_J/f0+1e-9;% theta_TP在中心频率处是90°
% theta_OF=90*f_arrary_J/f0+1e-9;% theta_OF在中心频率处是90°
% ZP2_OPBO=ZTP./(1j*tand(theta_TP));% EQN15
% ZP1_OPBO=ZOF.*(ZP2_OPBO+1j*ZOF.*tand(theta_OF))./(ZOF+1j*ZP2_OPBO.*tand(theta_OF));% EQN16
% ZC2_OPBO=ZP1_OPBO.*Zpmn./(ZP1_OPBO+Zpmn);% EQN17
% 
% theta_TC_tmp=[40 50 60 90 120 130 140]+1e-12;
% A=[];b=[];Aeq=[];beq=[];
% lb=zeros(1,length(ZP2_OPBO));ub=180*ones(1,length(ZP2_OPBO));
% 
% theta_TC_J = fmincon('theta_TC_cal_J',theta_TC_tmp,A,b,Aeq,beq,lb,ub);
% 
% 
% ZC1_OPBO=ZTC.*(ZC2_OPBO+1j*ZTC.*tand(theta_TC_J))./(ZTC+1j*ZC2_OPBO.*tand(theta_TC_J));
% S_ZC2_OPBO=(ZC2_OPBO-1)./(ZC2_OPBO+1);
% S_ZC1_OPBO=(ZC1_OPBO-1)./(ZC1_OPBO+1);
% figure(2)
% subplot(1,2,1)
% s = smithplot(S_ZC2_OPBO,'Color','b','LineStyle','-.','LineWidth',1);
% hold on
% s = smithplot(S_ZC1_OPBO,'Color','b','LineStyle','-.','LineWidth',1);
% hold on
% 
% % IF
% 
% f_arrary_IF=f0*linspace(1.09, 1.11, 7);
% theta_TP=90*f_arrary_IF/f0+1e-9;% theta_TP在中心频率处是90°
% theta_OF=90*f_arrary_IF/f0+1e-9;% theta_OF在中心频率处是90°
% ZP2_OPBO=ZTP./(1j*tand(theta_TP));% EQN15
% ZP1_OPBO=ZOF.*(ZP2_OPBO+1j*ZOF.*tand(theta_OF))./(ZOF+1j*ZP2_OPBO.*tand(theta_OF));% EQN16
% ZC2_OPBO=ZP1_OPBO.*Zpmn./(ZP1_OPBO+Zpmn);% EQN17
% 
% ZIF_1_f0=ZC1_OPBP_f0*2;% EQN12
% theta_TC_tmp=[120 120 120 120 120 120 120]+1e-12;
% A=[];b=[];Aeq=[];beq=[];
% theta_TC_IF = fmincon('theta_TC_cal_IF',theta_TC_tmp,A,b,Aeq,beq,lb,ub);
% 
% ZC1_OPBO=ZTC.*(ZC2_OPBO+1j*ZTC.*tand(theta_TC_IF))./(ZTC+1j*ZC2_OPBO.*tand(theta_TC_IF));
% S_ZC2_OPBO=(ZC2_OPBO-1)./(ZC2_OPBO+1);
% S_ZC1_OPBO=(ZC1_OPBO-1)./(ZC1_OPBO+1);
% 
% s = smithplot(S_ZC2_OPBO,'Color','r','LineStyle','-.','LineWidth',1);
% hold on
% s = smithplot(S_ZC1_OPBO,'Color','r','LineStyle','-.','LineWidth',1);
% s.Marker = {'s','o','s','o'};
% legend('J-Z_{C2\_OPBO}','J-Z_{C1\_OPBO}','IF-Z_{C2\_OPBO}','IF-Z_{C1\_OPBO}')
% 
% subplot(1,2,2)
% plot(f_arrary_J,-theta_TC_J);
% hold on
% plot(f_arrary_IF,-theta_TC_IF);
% legend('\theta_J','\theta_IF')
% xlabel('Normalized Frequency')
% ylabel('Required Phase(°)')
%% Case3
% J
ZTP=0.67*Ropt;
f_arrary_J=f0*linspace(0.7, 1.24, 7);
ZOF=ZTC*ZTP/Ropt;% EQN3
Zpmn=K*ZTC*ZTC/Ropt;% EQN4
ZC1_OPBP_f0=Ropt/K;% EQN5
theta_TP=90*f_arrary_J/f0+1e-9;% theta_TP在中心频率处是90°
theta_OF=90*f_arrary_J/f0+1e-9;% theta_OF在中心频率处是90°
ZP2_OPBO=ZTP./(1j*tand(theta_TP));% EQN15
ZP1_OPBO=ZOF.*(ZP2_OPBO+1j*ZOF.*tand(theta_OF))./(ZOF+1j*ZP2_OPBO.*tand(theta_OF));% EQN16
ZC2_OPBO=ZP1_OPBO.*Zpmn./(ZP1_OPBO+Zpmn);% EQN17

theta_TC_tmp=[40 50 60 90 120 130 140]+1e-12;
A=[];b=[];Aeq=[];beq=[];
lb=zeros(1,length(ZP2_OPBO));ub=180*ones(1,length(ZP2_OPBO));

theta_TC_J = fmincon('theta_TC_cal_J',theta_TC_tmp,A,b,Aeq,beq,lb,ub);


ZC1_OPBO=ZTC.*(ZC2_OPBO+1j*ZTC.*tand(theta_TC_J))./(ZTC+1j*ZC2_OPBO.*tand(theta_TC_J));
S_ZC2_OPBO=(ZC2_OPBO-1)./(ZC2_OPBO+1);
S_ZC1_OPBO=(ZC1_OPBO-1)./(ZC1_OPBO+1);
figure(3)
subplot(1,2,1)
s = smithplot(S_ZC2_OPBO,'Color','b','LineStyle','-.','LineWidth',1);
hold on
s = smithplot(S_ZC1_OPBO,'Color','b','LineStyle','-.','LineWidth',1);
hold on

% IF

f_arrary_IF=f0*linspace(1.25, 1.3, 7);
theta_TP=90*f_arrary_IF/f0+1e-9;% theta_TP在中心频率处是90°
theta_OF=90*f_arrary_IF/f0+1e-9;% theta_OF在中心频率处是90°
ZP2_OPBO=ZTP./(1j*tand(theta_TP));% EQN15
ZP1_OPBO=ZOF.*(ZP2_OPBO+1j*ZOF.*tand(theta_OF))./(ZOF+1j*ZP2_OPBO.*tand(theta_OF));% EQN16
ZC2_OPBO=ZP1_OPBO.*Zpmn./(ZP1_OPBO+Zpmn);% EQN17

ZIF_1_f0=ZC1_OPBP_f0*2;% EQN12
theta_TC_tmp=[120 120 120 120 120 120 120]+1e-12;
A=[];b=[];Aeq=[];beq=[];
theta_TC_IF = fmincon('theta_TC_cal_IF',theta_TC_tmp,A,b,Aeq,beq,lb,ub);

ZC1_OPBO=ZTC.*(ZC2_OPBO+1j*ZTC.*tand(theta_TC_IF))./(ZTC+1j*ZC2_OPBO.*tand(theta_TC_IF));
S_ZC2_OPBO=(ZC2_OPBO-1)./(ZC2_OPBO+1);
S_ZC1_OPBO=(ZC1_OPBO-1)./(ZC1_OPBO+1);

s = smithplot(S_ZC2_OPBO,'Color','r','LineStyle','-.','LineWidth',1);
hold on
s = smithplot(S_ZC1_OPBO,'Color','r','LineStyle','-.','LineWidth',1);
s.Marker = {'s','o','s','o'};
legend('J-Z_{C2\_OPBO}','J-Z_{C1\_OPBO}','IF-Z_{C2\_OPBO}','IF-Z_{C1\_OPBO}')

subplot(1,2,2)
plot(f_arrary_J,-theta_TC_J);
hold on
plot(f_arrary_IF,-theta_TC_IF);
legend('\theta_J','\theta_IF')
xlabel('Normalized Frequency')
ylabel('Required Phase(°)')

效率计算:

close all
clear
clc
global ZC2_OPBO ZC1_OPBP_f0 ZTC

OPBO=9;

K=10^(OPBO/-20);% EQN1
alpha=1/K-1;% EQN2
% 单位化Ropt
Ropt=25;
Ic_max=1;
Ip_max=alpha*Ic_max;
VDD=0.5*Ropt*Ic_max;
% 归一化化频率
f0=1;
% ZTC使用作者设定的
ZTC=2.3*Ropt;


%% Case3 饱和计算
% J
ZTP=0.67*Ropt;
f_arrary_size=80;
f_arrary_J=f0*linspace(0.7, 1.24, f_arrary_size);
ZOF=ZTC*ZTP/Ropt;% EQN3
Zpmn=K*ZTC*ZTC/Ropt;% EQN4
theta=90*f_arrary_J;

% 饱和状态计算,峰值功放负载确定
Ropt_P=Ropt/alpha;
Zp2=ZTP*(Ropt_P+1j*ZTP*tand(theta))./(ZTP+1j*Ropt_P*tand(theta));
Zp1=ZOF*(Zp2+1j*ZOF*tand(theta))./(ZOF+1j*Zp2.*tand(theta));
Zc2=1./(1/Zpmn-1./Zp1);

ZC1_OPBP_f0=Ropt/K;% EQN5
theta_TP=90*f_arrary_J/f0+1e-9;% theta_TP在中心频率处是90°
theta_OF=90*f_arrary_J/f0+1e-9;% theta_OF在中心频率处是90°
ZP2_OPBO=ZTP./(1j*tand(theta_TP));% EQN15
ZP1_OPBO=ZOF.*(ZP2_OPBO+1j*ZOF.*tand(theta_OF))./(ZOF+1j*ZP2_OPBO.*tand(theta_OF));% EQN16
ZC2_OPBO=ZP1_OPBO.*Zpmn./(ZP1_OPBO+Zpmn);% EQN17

theta_TC_tmp1=40*ones(1,(f_arrary_size)/2);
theta_TC_tmp2=140*ones(1,(f_arrary_size)/2);
theta_TC_tmp=[theta_TC_tmp1 theta_TC_tmp2];
clear theta_TC_tmp1 theta_TC_tmp2
A=[];b=[];Aeq=[];beq=[];nonlcon=[];
lb=zeros(1,length(ZP2_OPBO));ub=180*ones(1,length(ZP2_OPBO));

options = optimoptions('fmincon','MaxFunctionEvaluations',60000);
theta_TC_J = fmincon('theta_TC_cal_J',theta_TC_tmp,A,b,Aeq,beq,lb,ub,nonlcon,options);
Zc1_J=ZTC*(Zc2+1j*ZTC*tand(theta_TC_J))./(ZTC+1j*Zc2.*tand(theta_TC_J));
% abs(Zc1_J)
% POUT_C=1/8*Ic_max*Ropt;
POUT_C=0.5*VDD*VDD./(abs(Zc1_J).*abs(Zc1_J)./real(Zc1_J));

POUT_P=0.25*Ip_max*VDD;
Pdc=1/pi*VDD*(Ic_max+Ip_max);
eta_J=(POUT_C+POUT_P)/Pdc;




f_arrary_IF=f0*linspace(1.25, 1.3, f_arrary_size);
theta_TP=90*f_arrary_IF/f0+1e-9;% theta_TP在中心频率处是90°
theta_OF=90*f_arrary_IF/f0+1e-9;% theta_OF在中心频率处是90°
ZP2_OPBO=ZTP./(1j*tand(theta_TP));% EQN15
ZP1_OPBO=ZOF.*(ZP2_OPBO+1j*ZOF.*tand(theta_OF))./(ZOF+1j*ZP2_OPBO.*tand(theta_OF));% EQN16
ZC2_OPBO=ZP1_OPBO.*Zpmn./(ZP1_OPBO+Zpmn);% EQN17

ZIF_1_f0=ZC1_OPBP_f0*2;% EQN12
theta_TC_tmp=120*ones(1,f_arrary_size);
A=[];b=[];Aeq=[];beq=[];nonlcon=[];
options = optimoptions('fmincon','MaxFunctionEvaluations',60000);
theta_TC_IF = fmincon('theta_TC_cal_IF',theta_TC_tmp,A,b,Aeq,beq,lb,ub,nonlcon,options);
Zc1_F=ZTC*(Zc2+1j*ZTC*tand(theta_TC_IF))./(ZTC+1j*Zc2.*tand(theta_TC_IF));

% POUT_C=1/8*Ic_max*Ropt;
POUT_C=0.5*VDD*VDD./(abs(Zc1_F).*abs(Zc1_F)./real(Zc1_F));
POUT_P=0.25*Ip_max*VDD;
Pdc=1/pi*VDD*(Ic_max+Ip_max);
eta_F=(POUT_C+POUT_P)/Pdc;



plot([f_arrary_J f_arrary_IF],[eta_J eta_F])
xlabel('Normalized Frequency')
ylabel('Drain Efficiency(%)')
title('Efficiency')


ZPMN谐波阻抗计算:

close all
clear
clc
global ZC2_OPBO ZC1_OPBP_f0 ZTC

OPBO=11;

K=10^(OPBO/-20);% EQN1
alpha=1/K-1;% EQN2
% 单位化Ropt
Ropt=1;
Ic_max=1;
Ip_max=alpha*Ic_max;
VDD=0.5*Ropt*Ic_max;
% 归一化化频率
f0=1;
% ZTC使用作者设定的
ZTC=2.3*Ropt;


%% Case3 饱和计算
% J
ZTP=0.67*Ropt;
f_arrary_size=12;
f_arrary_J=f0*linspace(0.7, 1.24, f_arrary_size);
ZOF=ZTC*ZTP/Ropt;% EQN3
Zpmn=K*ZTC*ZTC/Ropt;% EQN4
theta=90*f_arrary_J;

ZC1_OPBP_f0=Ropt/K;% EQN5
theta_TP=90*f_arrary_J/f0+1e-9;% theta_TP在中心频率处是90°
theta_OF=90*f_arrary_J/f0+1e-9;% theta_OF在中心频率处是90°
ZP2_OPBO=ZTP./(1j*tand(theta_TP));% EQN15
ZP1_OPBO=ZOF.*(ZP2_OPBO+1j*ZOF.*tand(theta_OF))./(ZOF+1j*ZP2_OPBO.*tand(theta_OF));% EQN16
ZC2_OPBO=ZP1_OPBO.*Zpmn./(ZP1_OPBO+Zpmn);% EQN17

theta_TC_tmp1=40*ones(1,(f_arrary_size)/2);
theta_TC_tmp2=140*ones(1,(f_arrary_size)/2);
theta_TC_tmp=[theta_TC_tmp1 theta_TC_tmp2];
clear theta_TC_tmp1 theta_TC_tmp2
A=[];b=[];Aeq=[];beq=[];nonlcon=[];
lb=zeros(1,length(ZP2_OPBO));ub=180*ones(1,length(ZP2_OPBO));

options = optimoptions('fmincon','MaxFunctionEvaluations',60000);
theta_TC_J = fmincon('theta_TC_cal_J',theta_TC_tmp,A,b,Aeq,beq,lb,ub,nonlcon,options);

ZC1_OPBO=ZTC.*(ZC2_OPBO+1j*ZTC.*tand(theta_TC_J))./(ZTC+1j*ZC2_OPBO.*tand(theta_TC_J));
figure
plot(f_arrary_J,theta_TC_J)
ZC1_OPBO_2f=-1j*imag(ZC1_OPBO)*3*pi/8;
ZC2_OPBO_2f=ZTC*(ZC1_OPBO_2f-1j*ZTC*tand(2*theta_TC_J))./(ZTC-1j*ZC1_OPBO_2f.*tand(2*theta_TC_J));
Zpmn_2f_J=ZC2_OPBO_2f.*ZP1_OPBO./(ZP1_OPBO-ZC2_OPBO_2f);

ZC1_OPBO_3f=1e99;
ZC2_OPBO_3f=ZTC*(ZC1_OPBO_3f-1j*ZTC*tand(3*theta_TC_J))./(ZTC-1j*ZC1_OPBO_3f.*tand(3*theta_TC_J));
Zpmn_3f_J=ZC2_OPBO_3f.*ZP1_OPBO./(ZP1_OPBO-ZC2_OPBO_3f);



f_arrary_IF=f0*linspace(1.25, 1.3, f_arrary_size);
theta_TP=90*f_arrary_IF/f0+1e-9;% theta_TP在中心频率处是90°
theta_OF=90*f_arrary_IF/f0+1e-9;% theta_OF在中心频率处是90°
ZP2_OPBO=ZTP./(1j*tand(theta_TP));% EQN15
ZP1_OPBO=ZOF.*(ZP2_OPBO+1j*ZOF.*tand(theta_OF))./(ZOF+1j*ZP2_OPBO.*tand(theta_OF));% EQN16
ZC2_OPBO=ZP1_OPBO.*Zpmn./(ZP1_OPBO+Zpmn);% EQN17

ZIF_1_f0=ZC1_OPBP_f0*2;% EQN12
theta_TC_tmp=120*ones(1,f_arrary_size);
A=[];b=[];Aeq=[];beq=[];nonlcon=[];
options = optimoptions('fmincon','MaxFunctionEvaluations',60000);
theta_TC_IF = fmincon('theta_TC_cal_IF',theta_TC_tmp,A,b,Aeq,beq,lb,ub,nonlcon,options);



ZC1_OPBO=ZTC.*(ZC2_OPBO+1j*ZTC.*tand(theta_TC_IF))./(ZTC+1j*ZC2_OPBO.*tand(theta_TC_IF));

gamma=real((ZIF_1_f0/1.644-0.43*sqrt(2)*ZC1_OPBO)./(1j*0.37*sqrt(2)*ZC1_OPBO));
ZC1_OPBO_2f=(1j*ZIF_1_f0/1.644)./(0.98*gamma);
ZC2_OPBO_2f=ZTC*(ZC1_OPBO_2f-1j*ZTC*tand(2*theta_TC_IF))./(ZTC-1j*ZC1_OPBO_2f.*tand(2*theta_TC_IF));
Zpmn_2f_IF=ZC2_OPBO_2f.*ZP1_OPBO./(ZP1_OPBO-ZC2_OPBO_2f);

figure
plot(f_arrary_IF,theta_TC_IF)


% % S_Zpmn_2f_J=(Zpmn_2f_J-1)./(Zpmn_2f_J+1);
% % s = smithplot(S_Zpmn_2f_J,'Color','r','LineStyle','-.','LineWidth',1);
% % 
% % S_Zpmn_2f_IF=(Zpmn_2f_IF-1)./(Zpmn_2f_IF+1);
% % hold on
% % s = smithplot(S_Zpmn_2f_IF,'Color','r','LineStyle','-.','LineWidth',1);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1446735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

家政小程序系统源码开发:引领智能生活新篇章

随着科技的飞速发展&#xff0c;小程序作为一种便捷的应用形态&#xff0c;已经深入到我们生活的方方面面。尤其在家庭服务领域&#xff0c;家政小程序的出现为人们带来了前所未有的便利。它不仅简化了家政服务的流程&#xff0c;提升了服务质量&#xff0c;还为家政服务行业注…

Linux--常用命令(详解)

详细目录 一、终端命令格式二、显示文件列表命令-ls2.1作用2.2格式2.3 ls常用选项2.3.1 ls -a2.3.2 ls -l(等价于 ll)2.3.2 ls -h 三、相对路径与绝对路径3.1绝对路径3.2相对路径 四、目录操作命令 -cd4.1作用4.2格式4.3案例4.3.1 cd -&#xff1a; 返回上一次所在目录4.3.2 cd…

Agile Initiative, Epic, and Story/Task

Stories, also called “user stories,” are short requirements or requests written from the perspective of an end user. stories are something the team can commit to finish within a one- or two-week sprint.Epics are large bodies of work that can be broken do…

Linux_进程间通信

管道 System V 共享内存 System V IPC 接口介绍 由于进程地址空间的存在&#xff0c;所以进程间有具有独立性&#xff0c;一个进程看不到另一个进程的数据。那么如果我们想让进程间通信&#xff0c;就必须先让它们先看到同一份资源。常见的进程间通信的方法有管道&#xff0c;…

ChatGpt报错:Your authentication token is no longer valid解决办法

今天打开ChatGpt突然提示Oops&#xff01;,Your authentication token is no longer valid.&#xff0c;之前还好好的&#xff0c;环境也没变啊&#xff0c;结果弄了好久终于解决&#xff0c;于是记录一下解决过程&#xff0c;顺便总结一下关于OpenAI各种报错的解决办法。 完整…

比较6*6范围内8个点425个结构的顺序

( A, B )---6*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有6个节点&#xff0c;训练集AB各由6张二值化的图片组成&#xff0c;让A中有8个点&#xff0c;让B全是0&#xff0c;收敛误差7e-4&#xff0c;收敛199次&#xff0c;统计迭代次数平均值并排序。 假设这个6*6的结构的行和列都…

JavaWeb:SpingBoot原理 --黑马笔记

1. 配置优先级 在我们前面的课程当中&#xff0c;我们已经讲解了SpringBoot项目当中支持的三类配置文件&#xff1a; application.properties application.yml application.yaml 在SpringBoot项目当中&#xff0c;我们要想配置一个属性&#xff0c;可以通过这三种方式当中…

每日一练:LeeCode-617、合并二叉树【二叉树+DFS】

本文是力扣LeeCode-617、合并二叉树【二叉树DFS】 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两…

力扣面试题 16.21. 交换和(哈希表)

Problem: 面试题 16.21. 交换和 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.分别求取array1与array2数组每一个元素的和&#xff08;sum1与sum2&#xff09;并同时将array2的元素存入一个set集合中&#xff1b; 2.如果sum1和sum2的和为奇数&#xff0c;则不…

深度学习基础之《深度学习介绍》

一、深度学习与机器学习的区别 1、特征提取方面 机器学习&#xff1a;人工特征提取 分类算法 深度学习&#xff1a;没有人工特征提取&#xff0c;直接将特征值传进去 &#xff08;1&#xff09;机器学习的特征工程步骤是要靠手工完成的&#xff0c;而且需要大量领域专业知识…

浅谈进制的转换

本文创作灵感来自CSDN咸鱼WCY 的 咸鱼小白学嵌入式之C语言&#xff08;2.进制&#xff09; 博主更完就没更了&#xff0c;决定书接上回&#xff08;喜 进制是个啥 要理解进制&#xff0c;首先哈&#xff0c;咱得知道不同进制的含义 说到底&#xff0c;各个进制其实有点像在…

Hive SQL编译成MapReduce任务的过程

一、 Hive 底层执行架构 1&#xff09; Hive简介 Hive是Facebook实现的一个开源的数据仓库工具。将结构化的数据文件映射为数据库表&#xff0c;并提供HQL查询功能&#xff0c;将HQL语句转化为MapReduce任务运行 2&#xff09; Hive本质&#xff1a;将 HQL 转化成 MapReduce 程…

Java 基于 SpringBoot+Vue 的社区医院系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

26. 可变参数和Collection集合工具类

可变参数与Collections 1. 可变参数1. 概述2. 格式3. 代码示例4. 注意事项 2. Collections集合工具类2.1 概述2.2 方法2.3 代码示例2.4 注意事项 1. 可变参数 1. 概述 可变参数&#xff08;Variable Arguments&#xff09;是指在参数列表中允许传入不定个数的参数。在许多编程…

多模态论文串讲·上【论文精读·46】只用 Transformer encoder 的一些方法viLT、clip、ALBEF、VLMO

目录 简单回顾一下 viLT 简单回顾CLIP 总结后提出改进 1 ALBEF 1.1 主体方法 1.1.1 模型结构 1.1.2 目标函数 1 ITCloss&#xff1a;align before fuse的align 2 ITM loss 3 MLM loss 1.1.3 动量蒸馏 1.2 预训练数据集 1.3 下游任务描述 1.4 实验结果 1 消融实验…

洛谷: [CSP-J 2023] 小苹果

题目描述 小 Y 的桌子上放着 n n n 个苹果从左到右排成一列&#xff0c;编号为从 1 1 1 到 n n n。 小苞是小 Y 的好朋友&#xff0c;每天她都会从中拿走一些苹果。 每天在拿的时候&#xff0c;小苞都是从左侧第 1 1 1 个苹果开始、每隔 2 2 2 个苹果拿走 1 1 1 个苹果…

【JAVA WEB】JavaScript--函数 作用域 对象

目录 函数 语法格式 示例 定义没有参数列表&#xff0c;也没有返回值的一个函数 定义一个有参数列表 &#xff0c;有返回值的函数 关于参数个数 函数表达式 作用域 作用域链 对象 基本概念 创建对象 1.使用 字面量 创建对象 2.使用new Object()创建对象 3.使…

在huggingface中如何使用 google/flan-t5-large

参考&#xff1a; https://huggingface.co/google/flan-t5-large 1&#xff1a; from huggingface_hub.hf_api import HfFolder HfFolder.save_token(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) from transformers import pipeline from transformers import T5Tokenizer, T5F…

【selenium】

selenium是一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的。Selenium可以直接调用浏览器&#xff0c;它支持所有主流的浏览器。其本质是通过驱动浏览器&#xff0c;完成模拟浏览器操作&#xff0c;比如挑战&#xff0c;输入&#xff0c;点击等。 下载与打…

以谷歌浏览器为例 讲述 JavaScript 断点调试操作用法

今天来说个比较实用的东西 用浏览器开发者工具 对 javaScript代码进行调试 我们先创建一个index.html 编写代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&…