前2篇文章介绍ngspice的安装,以及在直流工作点分析,这篇文章介绍直流扫描分析(DC sweep analysis),所谓直流扫描,是指某些电路参数(主要是电压源、电流源或者电阻器)的值在某一个范围内发生变化,每一个递进变化可以视为一个稳定的直流状态,就对其电路进行仿真分析提取其电路参数,最后汇总所有的每一次递进的值,可以对结果进行打印或者绘图。
同样,我们以实例来进行讲解。
【例1】如下电路,绘制三极管(双极型晶体管,BJT)2N2222的电流电压特性曲线(voltage current characteristics),其中:Ib
的范围从0--100mA
,递进值为10mA
,而Vce
的范围为0--30V
,递进值为1V
。
解:本题主要是解决几个问题,一个是引入一个新的信号源:独立电流源,介绍其描述方法,另外,还介绍一个新的元器件:npn型的BJT,也就是俗称的三极管,如何进行描述。第三个是如何实现直流的扫描分析。
【1-1】,独立电流源的描述,其基本语句如下:
IYYYYYYY N+ N- <<DC> DC/TRAN VALUE> <AC <ACMAG <ACPHASE>>>
+ <DISTOF1 <F1MAG <F1PHASE>>> <DISTOF2 <F2MAG <F2PHASE>>>
上面IYYYYYY
是电流源的名称,I
表示电流源,后面可以是任何字母和数字的组合,n+
,n-
是电流源的正负节点,电流方向总是从 n+
流向 n-
, 后面的参数是指定电流源的类型:
<DC> DC/TRAN VALUE
: 这组是设置直流电流源的数值,或者瞬态分析时的初始电流值,若是value
是常数值,则DC
可以被省略。 后面的AC
是给交流小信号的频域分析设置值,DISTOF1
、DISTOF2
是表示失真分析,这里先省略,在后面的例子中再进行介绍 。VALUE
除了是 常数外,还可以是以时间为变量的函数,可以取下面的类型:- 脉冲信号(pulse)
- 指数函数信号(exponential)
- 正弦信号(sinusoidal)
- 分段函数信号(piece-wise linear,PWL)
- single-frequency FM
- AM
- 时域瞬时噪声(transient noise)
- 随机电压或电流(random voltages or currents)
- 外部数据
以上的我们在后继的时域分析的例子中再进行介绍,可以看到,除了电流源,电压源也是如此的。
了解了以后,我们就可以给上面电路图的电流源和电压源写出以下的描述语句,注意,我们直接给出一个直流的电压和电流值,作为单独的静态直流工作点的取值,在实际的扫描分析的时候其值并没有什么意义。
Ib 0 b 1mA
Vce c 0 1v
这里尤其要注意电流源的正负极节点的设置,和电压源的正负极节点的设置,前者指定了电流源的电流的方向(从正-->负),后者指定了电压源的正负极。
【1-2】对BJT三极管的使用
本例子使用的器件是双极型晶体管,全称双极性结型晶体管(bipolar junction transistor, BJT),俗称三极管。其使用的描述语句的一般形式如下:
QXXXXXXX nc nb ne <ns> <tj> mname <area=val> <areac=val>
+ <areab=val> <m=value> <off> <ic=vbe,vce> <temp=val>
+ <dtemp=val>
这里,Q
是表示BJT的首字母,nc
, nb
, ne
分别是对应三极管的集电极(collector)、基极(base)、发射极(emitter)的三个节点,ns
是衬底连接节点(可以省略)。tj
是pn结结温(可以不设置,默认为室温),tj
主要用于VBIC模型,下面会介绍。 mname
是所使用的模型(model)的名称,可以通过模型设置更多的参数。 area
,areab
,areac
为分别对应发射极、基极和集电极的面积比例因子(参考下图的示意,如果不设置,会默认为都是1.0
):
m
是针对多个BJT的级联效应的乘积因子,默认为1
。
这几个的参数的影响是:
若电流是I
,则最后的等效电流是:Ieff = area * m * I
,这里的电流I
可以是基极和发射极间电流Ibe
, (集电极)正向饱和电流Is
, B-E间饱和漏电流Ise
, Ikf
(Corner for reverse beta high current roll-off), 正向拐点电流Ikr
, or Irb
(基极电阻下降到最小值一半时的基极电流),默认情况下,area
和m
都是1.0
;
而对于电阻,则影响是:Reff = R / ( area * m )
,这里的Reff
包括了 Rb
(Zero bias base resistance,零偏置时的基极电阻), Rbm
(Minimum base resistance at high currents, 基极在高电流的最小电阻 ), Re
( Emitter resistance,发射极电阻 ), or Rc
( Collector resistance, 集电极电阻 ),默认情况下,area和m都是1.0 。
off
是指器件在直流分析时的初始条件不使用,不设置的话,可以通过ic=vbe, vce
来设置三极管在瞬态分析时的初始时候的发射结间电压(vbe
)和集电极和发射极之间的电压(vce
),这个在后面的瞬态分析的例子时再细作说明。
temp
是设置器件操作时的温度,可以不设置,默认使用全局的温度,设置后会覆盖在.option
指令行中指定的温度,dtemp
是单独设置每个实例的温度相对temp
的温度差值,注意和temp
不同,temp
是整个电路都是一样的,dtemp
则可以不同。
【1.3】BJT模型及其参数的设置:
以上是设置了几个描述的参数,但是,对于实际的BJT来说,还是不够的,一般都要通过模型(model)来设置更详尽的数据来描述 。ngspice提供3种BJT的器件模型,通过.model
指令卡来设置,例如,下面分别创建了两个模型,QMOD1
选择第一类的npn模型,QMOD3
选择了第二类的pnp模型:
.model QMOD1 NPN
.model QMOD3 PNP level=2
ngspice对每一个模型的所有参数都设置了默认值,你可以创建一个模型,设置特定的一些参数值,其他的默认,可以不用设置。下面是3种模型的区别:
level=1
:这是最初的SPICE BJT模型,也是默认的模型;level=2
:修正的模型,对BJT的垂直和侧向的几何进行建模,也包含了B、C、E三极level=4
: 高级VBIC模型
模型参数分作几个部分,分别对应不同的模型结构,这部分资料来自:
https://class.ece.uw.edu/cadta/hspice/chapter_14.pdfclass.ece.uw.edu【1.3.1】BJT的在瞬时分析时采用的等效电路模型:
【1.3.2】DC直流分析时主要影响的模型参数:
直流分析时主要的几个模型参数是:
is
,bf
,nf
,ise
,ikf
,ne
, 主要影响是正向电流放大倍数(the forward current gain characteristics),is
,br
,nr
,isc
,ikr
,nc
, 影响了反向电流放大倍数(reverse current gain characteristics),vaf
,var
, 影响正向和反向区域的输出电容( the output conductance for forward and reverse regions)。
在直流分析时,最重要的是计算集电极的电流(collector current, ic),基极电流(base current, ib),其公式如下:
【a】当只指定 IS
(传输饱和电流 Transport saturation current.)时:
ngspice由下式来计算集电极电流IC
:
- 其中,
,
IS
是 传输饱和电流,默认是1.0e-16A
,AREA
是集电极面积系数,m
是放大系数,后两者默认都是1
; -
, 其中
ISC
是 基极-集电极之间的(也就是集电结)的反向饱和漏电流(B-C leakage saturation current ),默认是0.0
,注意,AREA
当计算横向器件(lateral)时应该用areac
参数,计算垂直器件(vertical devices)时应该用areac
; -
是基极和发射极之间的电位差,是基极和集电极之间的电位差,这个由求解得到;
NF
是正向电流发射系数(Forward current emission coefficient,默认为1.0
),NR
是反向电流发射系数(Reverse current emission coefficient, 默认为1.0
),BF
是理想正向电流最大放大倍数(Ideal maximum forward beta),默认是100
,BR
是 理想反向最大放大倍数(Ideal maximum reverse beta,默认是1.0
),NC
是基极-集电极之间的漏电流的发射系数(B-C leakage emission coefficient,默认是2.0
) ;-
是热电压(thermal voltage),其值为:,其中是玻尔兹曼常数,库伦是电子电量,是当前的温度(单位是开氏温度),在常温(ngspice以27℃为基本温度)下,。
-
是基极的电荷,由下面来计算:
当
否则,
上面公式中,
.model
中的参数记为
VAF
或
VA
)是正向厄利电压(Forward Early voltage),默认为无穷大(∞),其意义如下图所示(图中
VA
为厄利电压):
可见,如果VAF
为∞,则IC
曲线在放大区为水平线,但是一般都不会,所以IC
曲线会有一个斜率。
VAR
(或 VB
)是反向额利电压(Reverse Early voltage),默认也是∞。
ISEeff = ISE * AREA * m
,ISE
是 基极和发射极(发射结)之间的饱和漏电流(B-E leakage saturation current),默认为0
,同样考虑面积效应和乘积效应;
IKFeff = IKF * AREA * m
, IKF
是 Corner for forward beta current roll-off,默认是∞;
IKReff = IKR * AREA * m
,IKR
是 Corner for reverse beta high current roll-off,默认是 ∞;
NKF
是High current Beta rolloff exponent,默认值是0.5
;
【b】如果没有给出IS
,而是给出了IBE
和 IBC
,则IC
由下式计算:
- ·
IBEeff = IBE * AREA * m
,IBE
是发射结间的电流强度,计算得到; IBCeff = IBC * AREAx * m
,IBC
是集电结间的电流强度,这里如果是求垂直(vertical)则AREAx
是AREAB
,如果是求横向(lateral)则AREAx
是AREAC
;ISCeff = ISC * AREAx * m
,ISC
如上所述在横向和垂直时取不同的AREA
;ISEeff = ISE * AREA * m
,ISE
如上所诉。
以上就是使用BJT在直流分析时的一些重要模型参数的意义和取值,此外,从上面的等效电路可以看到,BJT在使用的时候,还应该考虑其中的等效电容(包括扩散电容diffusion capacitances和耗尽电容 depletion capacitances),这些会在后面的时序瞬态分析的例子时再做说明。
综上所述,我们可以写出型号为2N2222的NPN的BJT的模型描述如下(其模型来源是zetex的Q2N2222A,可以工作在 550Hz ~ 300MHz:
https://www.diyaudio.com/forums/software-tools/30980-2n2222-spice-model.htmlwww.diyaudio.com):
* ZETEX 2N2222A Spice model Last revision 9/12/92 *
.MODEL Q2N2222A/ZTX NPN IS =3.0611E-14 NF =1.00124 BF =220 IKF=0.52
+ VAF=104 ISE=7.5E-15 NE =1.41 NR =1.005 BR =4 IKR=0.24
+ VAR=28 ISC=1.06525E-11 NC =1.3728 RB =0.13 RE =0.22
+ RC =0.12 CJC=9.12E-12 MJC=0.3508 VJC=0.4089
+ CJE=27.01E-12 TF =0.325E-9 TR =100E-9
上面定义模型的名称是Q2N2222A/ZTX
,类型是 NPN
,ngspice中所有的模型都要设置模型类型,其类型如下表所示:
上面的参数包括2个层面:
【a】涉及直流分析的:
IS
: Transport saturation current, 默认1.0e-16
A, 这里是3.0611E-14A
;IKF
: Corner for forward beta current roll-off, 默认是 ∞,这里是:0.52
;ISE
: B-E leakage saturation current,默认是0.0
,这里是:7.5E-15 A
;IKR
: Corner for reverse beta high current roll-off,默认是:∞,这里是:0.24
;ISC
: B-C leakage saturation current (area is areab for vertical devices and areac for lateral),默认是0.0
,这里是:1.06525E-11 A
;BF
: Ideal maximum forward beta ( β ), 默认是100
,这里是:220
;BR
: Ideal maximum reverse beta,默认是:1
,这里是:4
;VAF
: Forward Early voltage, 默认是 ∞,这里是:104
;VAR
: Reverse Early voltage,默认是:∞,这里是:28
;NF
: Forward current emission coefficient, 默认1.0
,这里是:1.00124
;NE
: B-E leakage emission coefficient,默认是1.5
,这里是:1.41
;NR
: Reverse current emission coefficient,默认是1
,这里是:1.005
;NC
: B-C leakage emission coefficient, 默认是:2
,这里是:1.3728
;RB
: Zero bias base resistance,默认是:0
,这里设置为:0.13 Ω
;RE
: Emitter resistance,默认是:0
,这里设置为:0.22 Ω
;RC
: Collector resistance,默认是:0
,这里设置为:0.12 Ω
;
【b】涉及到瞬时分析 的参数:
CJC=9.12E-12
,B-C zero-bias depletion capacitance耗尽层电容 (area isareab
for vertical devices andareac
for lateral),单位法拉,默认是:0
;MJC=0.3508
,B-C junction exponential factor,默认是0.33
;VJC=0.4089
, B-C built-in potential,单位伏特,默认是:0.75V
;CJE=27.01E-12
,B-E zero-bias depletion capacitance 耗尽层电容,单位法拉,默认是:0
;TF =0.325E-9
,Ideal forward transit time 理想正向传输时间,单位秒,默认:0
;TR =100E-9
,Ideal reverse transit time,单位秒,默认:0
。
【1-4】直流扫描分析(DC sweep)
直流扫描分析,是可以设置多个直流源(电流或电压)来进行递进分析(设置开始值,结束值和递增值),其一般格式如下:
.dc srcnam vstart vstop vincr [src2 start2 stop2 incr2]
这里.dc
是直流扫描分析指令,scrname
是第一个源(电流或电压)的名字,vstart
是开始值,vstop
是结束值,vincr
是递增值,scr2
是第二个源的名字,可以一直加多个源,另外,除了电流和电压源,也可以指定电阻值,我们在本文的第二个例子可以看到其用法。
直流扫描的例子如下:
.dc VIN 0.25 5.0 0.25
.dc VDS 0 10 .5 VGS 0 5 1
.dc VCE 0 10 .25 IB 0 10u 1u
.dc RLoad 1k 2k 100
.dc TEMP -15 75 5
【1-5】最终的描述文件及其显示图:
程序:
*** exam2-1 dc sweep ***
Ib 0 b 1mA
Vce c 0 1v
Q1 c b 0 Q2N2222A/ZTX
.MODEL Q2N2222A/ZTX NPN IS =3.0611E-14 NF =1.00124 BF =220 IKF=0.52
+ VAF=104 ISE=7.5E-15 NE =1.41 NR =1.005 BR =4 IKR=0.24
+ VAR=28 ISC=1.06525E-11 NC =1.3728 RB =0.13 RE =0.22
+ RC =0.12 CJC=9.12E-12 MJC=0.3508 VJC=0.4089
+ CJE=27.01E-12 TF =0.325E-9 TR =100E-9
.dc Vce 0V 30V 1V Ib 0 100mA 10mA
.control
run
plot -i(Vce)
.endc
.end
其输出图形如下: