浅谈连续逆F类的基础理论
各种逆类型的功放好像都少引人关注,因为很多人学完正的连续B/J类和连续F类,想当然的类推到了连续逆F类上面去。貌似连续逆F类就是连续F类的电压电流交换一下而已,无需额外的注意,实际并非那么简单的。
1、连续逆F类的波形
貌似连续逆F类就是连续F类的电压电流交换一下而已,实际并非那么简单,对于功率放大器,电流和电压波形都有着不同的约束条件。一般来说,我们十分熟悉连续F类的波形表达式(The continuous class-f mode power amplifier):
V
C
F
=
(
1
−
2
3
cos
θ
)
2
⋅
(
1
+
1
3
cos
θ
)
⋅
(
1
−
γ
sin
θ
)
I
C
F
=
1
π
+
1
2
cos
θ
+
2
3
π
cos
(
2
θ
)
\begin{aligned} &\begin{aligned}V_{CF}&=\left(1-\frac{2}{\sqrt{3}}\cos\theta\right)^2\cdot\left(1+\frac{1}{\sqrt{3}}\cos\theta\right)\cdot(1-\gamma\sin\theta)\end{aligned} \\ &\begin{aligned}I_{CF}&=\frac1\pi+\frac12\cos\theta+\frac2{3\pi}\cos(2\theta)\end{aligned} \end{aligned}
VCF=(1−32cosθ)2⋅(1+31cosθ)⋅(1−γsinθ)ICF=π1+21cosθ+3π2cos(2θ)
画出来一个特例,此处选F类画出来:
对于这样的波形,其电压、电流都有一定的特点。
1、电压波形必须大于等于0,这是由于晶体管的固有限制
2、电流波形一般可以小于0
3、F类电流波形应为理想的峰值归一化半正弦波,其峰值为1、最小值为0;但是由于此处考虑到三次谐波,峰值略大于1,最小值略小于0。
使用代码观察连续F类的特点:
v_CF=(1-2/sqrt(3)*cosd(theta)).^2.*(1+1/sqrt(3)*cosd(theta));
i_CF=1/pi+1/2*cosd(theta)+2/(3*pi)*cosd(2*theta);
figure
plot(theta,v_CF)
hold on
plot(theta,i_CF)
legend('v','i')
title('Class-F')
disp(['三次谐波C-F类电压最小值为',num2str(min(v_CF))])
disp(['三次谐波C-F类电流最小值为',num2str(min(i_CF))])
disp(['三次谐波C-F类电流最大值为',num2str(max(i_CF))])
那么显然,连续逆F无法简单使用连续F类的电流波形作为其电压波形,因为PA的电压波形一定要大于0的。事实上,逆F自从提出时就有自己的电压电流公式(Exploring the Design Space for Broadband PAs using the Novel “Continuous Inverse Class-F Mode”、“Design of Broadband Highly Efficient Harmonic-Tuned Power Amplifier Using In-Band Continuous Class-F F-1 Mode Transferring” ):
连续逆F是在其基础上乘以了一个连续因子:
因此,连续逆F类的电压波形不是连续F类的电流波形,连续逆F类的电流波形也不是连续F类的电压波形,大家需要进行区分。当然,逆F的电压波形也满足最小值大于等于0的条件,可以使用下面代码进行验证:
theta=0:1:719;
iDC=0.37;i1=0.43;i2=0;i3=0.06;
deta=-1:0.2:1;
for ind=1:1:length(deta)
i_IF(ind,:)=(iDC-i1*cosd(theta)+i2*cosd(2*theta)+i3*cosd(3*theta)).*(1-deta(ind)*sind(theta));
end
v_IF=1+2/sqrt(2)*cosd(theta)+1/2*cosd(2*theta);
eta=2*i1*2/sqrt(2)/(2*iDC*2);
disp(['三次谐波C-IF类电压最小值为',num2str(min(v_IF'))])
disp(['三次谐波C-IF类电流最小值为',num2str(min(i_IF'))])
disp(['三次谐波C-IF类电流最大值为',num2str(max(i_IF'))])
2、连续逆F类和最佳B类阻抗Ropt的复杂关联
大家在研究各种功放模式的时候一定避不开最佳基本阻抗Ropt,实际上这是管子工作在B类饱和时的最佳阻抗,一般选这个作为参考标准,Ropt的计算公式为:
R
o
p
t
=
V
d
c
−
V
k
n
e
e
I
p
e
a
k
2
R_\mathrm{opt}=\frac{V_\mathrm{dc}-V_\mathrm{knee}}{\frac{I_\mathrm{peak}}2}
Ropt=2IpeakVdc−Vknee
为什么要使用这个参考呢,其中的重要因素在于
I
p
e
a
k
I_\mathrm{peak}
Ipeak,是为了让晶体管工作在电流饱和的状态,使得电流达到晶体管的标称峰值。为了方便计算各种模式关于Ropt的阻抗,经常对电流使用峰值归一化,如B类、F类等等,他们的电流的直流分量不是1,但是峰值是1。
例如C-B/J类的:
I
B
(
θ
)
=
I
J
(
θ
)
=
1
π
+
1
2
cos
(
θ
)
+
2
3
π
cos
(
2
θ
)
V
B
(
θ
)
=
(
1
−
cos
(
θ
)
)
\begin{aligned}&I_B(\theta)=I_J(\theta)=\frac1\pi+\frac12\cos(\theta)+\frac2{3\pi}\cos(2\theta)\\&V_B(\theta)=(1-\cos(\theta))\end{aligned}
IB(θ)=IJ(θ)=π1+21cos(θ)+3π2cos(2θ)VB(θ)=(1−cos(θ))
那么对于连续逆F类,其如何使用最佳基波阻抗Ropt(或其倒数Gopt)对其进行表述呢?一个大的问题是其电流波形的峰值并不固定:
实际上,作者在提出逆F的时候就考虑了这一点,因此连续逆F类的电流波形的峰值是在1附近波动,而不是强行峰值归一化到1,这也是无奈之举,谁叫拓展的就是电流呢。。。
使用Matlab编程也可以得到其电流峰值随自由因子的变化关系:
全部的逆F类的波形(参考Exploring the design space for broadband pas using the novel “continuous inverse class-F mode”):
很巧,如果对各个自由度下的电流波形的最大值求均值,那么结果约等于1,这也是连续逆F类的电流波形系数确定的原因之一。
结论就是,虽然连续逆F类电流波形峰值变化,但是其均值是在1附近,因此直接使用原式子进行计算Gopt的系数即可(默认已经电流峰值归一化了)。上面的画图和数据显示代码:
close all
clear
clc
theta=0:1:719;
iDC=0.37;i1=0.43;i2=0;i3=0.06;
deta=-1:0.2:1;
for ind=1:1:length(deta)
i_IF(ind,:)=(iDC-i1*cosd(theta)+i2*cosd(2*theta)+i3*cosd(3*theta)).*(1-deta(ind)*sind(theta));
end
v_IF=1+2/sqrt(2)*cosd(theta)+1/2*cosd(2*theta);
eta=2*i1*2/sqrt(2)/(2*iDC*2);
disp(['三次谐波C-IF类电压最小值为',num2str(min(v_IF'))])
disp(['三次谐波C-IF类电流最小值为',num2str(min(i_IF'))])
disp(['三次谐波C-IF类电流最大值为',num2str(max(i_IF'))])
disp(['IF的效率',num2str(eta)])
figure
plot(theta,v_IF)
hold on
plot(theta,i_IF)
legend('v');
title('Class-IF')
众所周知,连续逆F类的基波阻抗空间的导纳不变,使用Gopt进行表述(左边是C-F,右边是C-IF):
{
Z
1
f
,
C
−
F
=
(
2
3
+
j
γ
)
R
o
p
t
Z
2
f
,
C
−
F
=
−
j
7
3
π
24
R
o
p
t
Z
3
f
,
C
−
F
=
∞
{
Y
1
f
,
C
−
F
−
1
=
(
0.43
2
+
j
0.37
2
γ
)
G
o
p
t
Y
2
f
,
C
−
F
−
1
=
−
j
0.98
γ
G
o
p
t
Y
3
f
,
C
−
F
−
1
=
∞
G
o
p
t
=
1
/
R
o
p
t
\left\{ \begin{aligned} &{Z_{1f,C - F}} = \left( {\frac{2}{{\sqrt 3 }} + j\gamma } \right){R_{opt}}\\ &{Z_{2f,C - F}} = - j\frac{{7\sqrt 3 \pi }}{{24}}{R_{opt}}\\ &{Z_{3f,C - F}} = \infty \end{aligned} \right.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \left\{ \begin{aligned} &{Y_{1f,C - {F^{ - 1}}}} = \left( {0.43\sqrt 2 + j0.37\sqrt 2 \gamma } \right){G_{opt}}\\ &{Y_{2f,C - {F^{ - 1}}}} = - j0.98 \gamma {G_{opt}}\\ &{Y_{3f,C - {F^{ - 1}}}} = \infty \\ &{G_{opt}} = 1/{R_{opt}} \end{aligned} \right.
⎩
⎨
⎧Z1f,C−F=(32+jγ)RoptZ2f,C−F=−j2473πRoptZ3f,C−F=∞⎩
⎨
⎧Y1f,C−F−1=(0.432+j0.372γ)GoptY2f,C−F−1=−j0.98γGoptY3f,C−F−1=∞Gopt=1/Ropt
在归一化导纳为Gopt的图中,其曲线为:
可以使用下面的代码直接得到计算的结果:
clear all
close all
clc
syms theta gamma
% v_theta=(1-2/(sqrt(3))*cos(theta))^2*(1+1/(sqrt(3))*cos(theta))*(1-gamma*sin(theta));
% i_theta=1/pi+1/2*cos(theta)+2/(3*pi)*cos(2*theta);
iDC=0.37;i1=0.43;i2=0;i3=0.06;
v_theta=1+2/sqrt(2)*cos(theta)+1/2*cos(2*theta);
i_theta=(iDC-i1*cos(theta)+i2*cos(2*theta)+i3*cos(3*theta)).*(1-gamma*sin(theta));
order=3;
int_i_low=0;
int_i_high=2*pi;
int_v_low=0;
int_v_high=2*pi;
disp('开始求取电流傅里叶分解数值');
I_A0=int(i_theta/pi,theta,int_i_low,int_i_high);
Fouier=I_A0/2;
for n=1:order
I_A(n)=(int(i_theta*cos(n*theta)/pi,theta,int_i_low,int_i_high));
I_B(n)=(int(i_theta*sin(n*theta)/pi,theta,int_i_low,int_i_high));
Fouier=Fouier+I_A(n)*cos(n*theta)+I_B(n)*sin(n*theta);
end
disp(Fouier)
disp('开始求取电压傅里叶分解数值');
V_A0=int(v_theta/pi,theta,int_v_low,int_v_high);
Fouier=V_A0/2;
for n=1:order
V_A(n)=(int(v_theta*cos(n*theta)/pi,theta,int_v_low,int_v_high));
V_B(n)=(int(v_theta*sin(n*theta)/pi,theta,int_v_low,int_v_high));
Fouier=Fouier+V_A(n)*cos(n*theta)+V_B(n)*sin(n*theta);
end
disp(Fouier)
% 阻抗参考Ropt,因此要乘以0.5
disp('最佳阻抗');
for n=1:order
disp(simplify(-0.5*(V_A(n)+1j*V_B(n))/(I_A(n)+1j*I_B(n))));
end
disp('最佳导纳');
for n=1:order
disp(simplify(1/(-0.5*(V_A(n)+1j*V_B(n))/(I_A(n)+1j*I_B(n)))));
end
3、同输出功率下的连续逆F类(在中心处)和B类阻抗关系
Continuous Class-J/F−1 Mode Asymmetrical Doherty Power Amplifier With Extended Bandwidth and Enhanced Efficiency中有这么一个式子:
就是如果要输出同样的功率,逆F类的阻抗要是B类的两倍。当时一直不清楚如何得来。要假定输出同样的功率,我们可以先进行直流的归一化,这样可以让输入的功率相等。然后再次使用阻抗的计算公式进行计算:
Z
1
f
=
−
a
V
,
1
+
j
b
V
,
1
a
I
,
1
+
j
b
I
,
1
Z_{1f}=-\frac{a_{V,1}+jb_{V,1}}{a_{I,1}+jb_{I,1}}
Z1f=−aI,1+jbI,1aV,1+jbV,1
计算得出的B类直流归一化阻抗和逆F类直流归一化阻抗为(计算代码之后给出):
但是,直流归一化下其输入功率相等,输出功率却不一致,B类效率为78.54%,但是逆F类的理论效率是81.85%。因此,如果要让B类输出与逆F类相同,B类需要提供更大的电流,因此B类阻抗需要减少一定值,在原来的基础上乘以78.54/81.85即可,最终得到结果为:
可以看到,确实近似是两倍的关系。
也就是,如果连续逆F和连续B/J要输出同样的功率,其在Smith的曲线应该是这样的(中心阻抗差两倍,具体位置和直流量相关):
代码:
close all
clear
clc
theta=0:1:719;
iDC=0.37;i1=0.43;i2=0;i3=0.06;
deta=-1:0.2:1;
for ind=1:1:length(deta)
i_IF(ind,:)=(iDC-i1*cosd(theta)+i2*cosd(2*theta)+i3*cosd(3*theta)).*(1-deta(ind)*sind(theta));
end
v_IF=1+2/sqrt(2)*cosd(theta)+1/2*cosd(2*theta);
eta=2*i1*2/sqrt(2)/(2*iDC*2);
disp(['三次谐波C-IF类电压最小值为',num2str(min(v_IF'))])
disp(['三次谐波C-IF类电流最小值为',num2str(min(i_IF'))])
disp(['三次谐波C-IF类电流最大值为',num2str(max(i_IF'))])
disp(['IF的效率',num2str(eta)])
figure
plot(theta,v_IF)
hold on
plot(theta,i_IF)
legend('v');
title('Class-IF')
i_B=1/pi+1/2*cosd(theta)+2/(3*pi)*cosd(2*theta);
v_B=1-cosd(theta);
figure
plot(theta,v_B)
hold on
plot(theta,i_B)
legend('v','i')
title('Class-B')
% 2/sqrt(2)是IF类电压波形的基波傅里叶分量,i1是IF类的峰值归一化电流波形的基波傅里叶分量,忽略正负
Ropt_IF=0.5*2/sqrt(2)/i1;
% 1是B类电压波形的基波傅里叶分量,1/2是B类的峰值归一化电流波形的基波傅里叶分量,忽略正负
Ropt_B=0.5*1/(1/2);
disp(['IF的Ropt阻抗系数',num2str(Ropt_IF)])
disp(['B的Ropt阻抗系数',num2str(Ropt_B)])
% 2/sqrt(2)是IF类电压波形的基波傅里叶分量,i1/iDC是IF类直流归一化的电流波形的基波傅里叶分量,忽略正负
Rdc_IF=2/sqrt(2)/(i1/iDC);
% 1是B类电压波形的基波傅里叶分量,(1/2)/(1/pi)是B类直流归一化的电流波形的基波傅里叶分量,忽略正负
Rdc_B=1/((1/2)/(1/pi));
disp(['IF的直流归一化Rdc阻抗系数',num2str(Rdc_IF)])
disp(['B的直流归一化Rdc阻抗系数',num2str(Rdc_B)])
% pi/4是B类的理论效率,eta是IF的理论效率
disp(['同功率输出下B类系数',num2str(pi/4/eta*Rdc_B)])