功率器件仿真基本方法对于微波大功率有源器件来说,其输入输出阻抗是一个关键的参数,且不易测量。而在设计中,没有这些参数,设计将无从下手。目前微波大功率的有源器件大多采用金属氧化物半导体场效应晶体管(LDMOSFET-LateralDiffusedmetallicoxidesemiconductorfieldeffecttransistor),因此本文以LDMOS功率管的仿真为例探讨微波有源器件仿真。由于大家所公认的大功率器件仿真的难度,特别是在器件模型建立方面的难度,使得这一工作较其他电路如小信号电路仿真做的晚,且精度也较小信号电路低。目前公司内部在这方面所作的工作也相对较少。随着技术的发展,目前的很多仿真软件已经做的很完善,如ADS,它可以提供各种数字和模拟系统及电路的仿真平台,用户的主要任务就是给目标器件建模和搭建电路。而目前我们使用的主流LDMOS器件即Motorola的大部分器件均提供ADS仿真的模型,我们只要直接使用,这给我们的仿真工作带来了极大的方便,极大的减小了工作量,并提高了准确度。本文主要探讨使用ADS2002仿真计算大功率LDMOS器件的工作点、输入输出阻抗及其对应的线性指标、电流、增益等电参数。1LDMOS器件模型首先我们了解一下Motorola的LDMOS器件库的情况。图1.1是其在原理图中的符号。图1.1MotorolaLDMOS器件模型它的器件分为两类:单管(MRF_MET_MODEL&MRF_ROOT_MODEL)和对管(MRF_MET_PP_MODEL&MRF_ROOT_PP_MODEL)。从上面的名称我们可以看出,每一个管子有两个模型,即MET模型和ROOT模型。METLDMOS模型(MotoElectroThermalModel)是一个经验大信号模型,它可以精确的描述在任意的偏置点和环境温度下的电流电压特性。其大信号和小信号模型分别如图1.2和图1.3所示[1]。ROOT模型是一种基于HPRootFETModelgenerator产生的数据库模型,该模型生成器根据小信号的S参数和测量得到的直流数据生成大信号模型。ROOT模型给出的器件特性是偏置点、频率和功率电平的函数。该模型适用于已经有测量数据但是物理的或经验的模型还没有建立的器件的仿真[2]。图1.2大信号等效电路METLDMOS模型图1.3小信号等效电路METLDMOS模型根据上面对MotorolaLDMOS器件库的认识,在下面的讨论中,我们首先选用目前使用比较多的中等功率管MRF9045的MET模型。下面我们按照设计的一般步骤,对MRF9045进行仿真、设计。2直流工作点仿真直流偏置仿真电路如图2.1所示,该电路使用了ADS内置的场效应管的直流仿真模块FETCurveTracer,使得该电路十分的简洁明了。该电路仿真常温(25℃)下漏级电流随栅源电压VGS和漏源电压VDS的变化情况。图中,MotorolaLDMOS管有三个参数:TSNK-HeatSinkTemp,RTH-ThermalResistancecoeff.,CTH-ThermalCapacitance,该电路均使用默认值。图2.1常温直流偏置仿真电路仿真结果如图2.2所示:m1indep(m1)=27.000SIM1.VGS=3.600000vs(IDS.i,VDS)=0.376m1indep(m1)=27.000SIM1.VGS=3.600000vs(IDS.i,VDS)=0.376102030400500.51.01.52.00.02.5SIM1.VGS=3.200SIM1.VGS=3.300SIM1.VGS=3.400SIM1.VGS=3.500SIM1.VGS=3.600SIM1.VGS=3.700SIM1.VGS=3.800SIM1.VGS=3.900SIM1.VGS=4.000VDSIDS.im127.00010.150VDSDevicePowerConsumptionatm1biaspoint,WattsMoveMarkerm1toupdatevaluesbelow:DrainCurrentversusBiasCurves图2.2常温直流偏置仿真结果在Motorola的MET模型中,可以模拟环境温度的变化。下面固定漏源电压为27V,仿真漏级电流随温度和栅源电压的变化情况,电路如图2.3,结果如图2.4所示。图2.3漏级电流随温度和栅源电压变化的仿真电路-200204060-40800.20.40.60.81.01.21.40.01.6VGS=3.200VGS=3.300VGS=3.400VGS=3.500VGS=3.600VGS=3.700VGS=3.800VGS=3.900VGS=4.000TempIDS.i,A图2.4漏级电流随温度和栅源电压变化的仿真结果从图2.4中,我们可以明显得看见固定VGS的情况下,漏级电流随环境温度的变化情况。工作点是用漏级电流来衡量的,因此上图也体现了工作点随温度的漂移,在实际的电路中必须采取措施进行补偿,即使VGS随温度变化,使得静态漏级电流为一常数。图2.5的电路用于仿真在给定的漏级静态电流(350mA)的情况下,栅源电压和温度的关系曲线(图2.6)。图2.5给定漏极电流计算栅源电压随温度的变化-200204060-40803.503.553.603.653.703.453.75TempVGS图2.6栅源电压随温度的变化(Vds=27V,Id=350mA)通过直线拟合,可以得到温度补偿系数为-1.98mV/℃。补偿后静态电流如图2.7所示,其工作点漏级电流的漂移量为5.5mA,相对漂移量为1.59%(在-40℃~80℃范围内)。-200204060-40800.3450.3460.3470.3480.3490.3500.3440.351TempIDS.i图2.7采取温补措施后漏极电流随温度的变化对于不同的固定静态电流,其栅源电压随温度的变化如图2.8所示(为了方便比较其变化率,对其25℃时的电压归一)。图中给出了IDQ=200,350,500,800mA四个工作点VGS随温度的变化情况。图中明显看出,不同的工作点其变化斜率有微小的变化。静态电流越大,其随温度的变化就越小。-40-200204060800.960.970.980.991.001.011.021.031.041.05(NormalizedtoGateSourceVoltage@25oC)200mA,k=-2.06mV/oC350mA,k=-1.98mV/oC800mA,k=-1.73mV/oC500mA,k=-1.9mV/oCVGSTemp(oC)图2.8归一化IV曲线随温度的变化3LoadPull仿真计算输入输出阻抗从微波理论的角度看,有源器件实际上可以看着一个双端口网络,只是其端口阻抗不是我们平时习惯运用的50Ω,而是一个很小的带有虚部的阻抗,如1.5-j1.3Ω,不同的厂家,不同的功率水平,该值必定有所不同。如果我们可以使它的输出端口匹配,则根据二端口微波网络理论,根据其输入端的反射系数可以直接导出输入阻抗。而输出端所接的负载的共轭值为其输出阻抗。正是基于这一原理,Load-Pull的基本思想就是按照一定的原则,让输出端的负载在一个给定的范围内变化,得到这些负载阻抗对应的各种指标(功率,增益,线性度等等),根据设计的需要从中选择所需的输出阻抗,并按此设计匹配输出电路。而输入阻抗则直接从源与器件之间的反射得到。3.1ADS中可变阻抗的实现设输出负载阻抗的变化范围在标准50Ω系统Smith圆图上如图3.1所示,其中心点反射系数为S11,其圆半径为ρ,设一二维变量,即可遍历园中所有的点。ΓReΓImρS11图3.1负载阻抗在50Ω系统Smith圆上的位置仿真时我们希望得到在某一个给定的阻抗范围内,在给定的工作点和输出功率水平上,任意输出负载阻抗对应管子的工作电流、效率、增益、线性指标、输入阻抗。对应不同的信号源,线性指标还有不同的表示方法。下面给出的是Motorola的LDMOS管MRF9045应用于465MHz频段时,应用单音和双音分析选取其输出阻抗。3.2单音LoadPull仿真单音LoadPull仿真原理图如图3.2所示:图3.2单音LoadPull电路原理图电路中主要应该注意的是要区分交流和直流通道。该电路只计算常温(25℃)的电路参数。仿真变量设置如图3.3所示,参数扫描和仿真器设置见图3.4。图3.3单音LoadPull变量设置图3.4单音LoadPull参数扫描和仿真器设置仿真结束后,我们得到的是一些电路的基本数据如电压、电流等。这时候需要使用ADS强大的数据后处理功能,从这些基本的电路数据中提取我们感兴趣的电路参数如谐波、输入输出阻抗、增益、电源效率等。后处理公式如图3.5所示。EqnPavs_Watts=10**((Pavs1-30)/10)EqnPAE=100*(Pdel_W[0]-Pavs_Watts)/PdcEqnPAEmax=max(max(PAE))EqnPAE_contours=contour(PAE,PAEmax-0.1-[0::(NumPAE_lines-1)]*PAE_step)EqnIs_h=exists(real(Is_high.i[0,0]))EqnIs_l=exists(real(Is_low.i[0,0]))EqnVs_l=exists(real(Vs_low[0,0]))EqnVs_h=exists(real(Vs_high[0,0]))EqnPdc=Is_h*Vs_h+Is_l*Vs_l+1e-20Eqnsurface_samples=real_indexs12+j*expand(imag_indexs12)Eqnimag_index=find_index(imag_indexs12,imag(m1))Eqnreal_index=find_index(real_indexs12[imag_index,::],real(m1))EqnZ_at_m1=[Z0[0,0,0,0]*(1+m1)/(1-m1)]Eqns1=(Z_in-Zs)/(Z_in+Zs)EqnZ_in=vin[0,1]/Iin.i[0,1]EqnGain=Pdel_dBm[0]-Pavs1-(10*log(mag(1-mag(s1*s1))))EqnH_2rd_min=min(min(H_2rd_dB))EqnH_3rd_min=min(min(H_3rd_dB))EqnH_2rd_dB=10*log10(real(0.5*vload[0,2]*conj(Iload.i[0,2])))+30-Pdel_dBm[0]EqnH_3rd_dB=10*log10(real(0.5*vload[0,3]*conj(Iload.i[0,3])))+30-Pdel_dBm[0]Eqnimag_indexs12=HB.imag_indexs11Eqnreal_indexs12=HB.real_indexs11EqnPavs1=OPTSOLNVALS.Pavs[0]EqnH_2rd_contours=contour(H_2rd_dB,H_2rd_max+0.5-[0::(NumPAE_lines)]*(H_2rd_max-H_2rd_min)/NumPAE_lines)EqnH_3rd_max=max(max(H_3rd_dB))EqnH_2rd_max=max(max(H_2rd_dB))EqnH_3rd_contours=contour(H_3rd_dB,H_3rd_max+0.5-[0::(NumPAE_lines)]*(H_3rd_max-H_3rd_min)/NumPAE_lines)EqnPAE_contours_p=[indep(PAE_contours)+j*PAE_contours]EqnH_2rd_contours_p=[indep(H_2rd_contours)+j*H_2rd_contours]EqnH_3rd_contours