前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是给交流小信号的频域分析设置值,DISTOF1DISTOF2是表示失真分析,这里先省略,在后面的例子中再进行介绍 。
  • 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)的名称,可以通过模型设置更多的参数。 areaareabareac为分别对应发射极、基极和集电极的面积比例因子(参考下图的示意,如果不设置,会默认为都是1.0):

基极(B)、集电极(C)、发射极(E)面积都一样的情况
三个电极面积不一样的情况

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(基极电阻下降到最小值一半时的基极电流),默认情况下,aream都是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.pdf​class.ece.uw.edu

【1.3.1】BJT的在瞬时分析时采用的等效电路模型:

瞬时分析时的横向模型( Lateral )
瞬时分析时的纵向模型(Vertical)

【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-16AAREA是集电极面积系数,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),默认是100BR是 理想反向最大放大倍数(Ideal maximum reverse beta,默认是1.0), NC是基极-集电极之间的漏电流的发射系数(B-C leakage emission coefficient,默认是2.0) ;
  • 是热电压(thermal voltage),其值为:
    ,其中
    是玻尔兹曼常数,
    库伦是电子电量,
    是当前的温度(单位是开氏温度),在常温(ngspice以27℃为基本温度)下,
  • 是基极的电荷,由下面来计算:

时,

否则,

, 同时,

上面公式中,

(ngspice的

.model中的参数记为VAFVA)是正向厄利电压(Forward Early voltage),默认为无穷大(∞),其意义如下图所示(图中VA为厄利电压):

可见,如果VAF为∞,则IC曲线在放大区为水平线,但是一般都不会,所以IC曲线会有一个斜率。

VAR (或 VB)是反向额利电压(Reverse Early voltage),默认也是∞。

ISEeff = ISE * AREA * mISE是 基极和发射极(发射结)之间的饱和漏电流(B-E leakage saturation current),默认为0,同样考虑面积效应和乘积效应;

IKFeff = IKF * AREA * m, IKF是 Corner for forward beta current roll-off,默认是∞;

IKReff = IKR * AREA * mIKR是 Corner for reverse beta high current roll-off,默认是 ∞;

NKF是High current Beta rolloff exponent,默认值是0.5

【b】如果没有给出IS,而是给出了IBEIBC,则IC由下式计算:

  • ·IBEeff = IBE * AREA * mIBE是发射结间的电流强度,计算得到;
  • IBCeff = IBC * AREAx * mIBC是集电结间的电流强度,这里如果是求垂直(vertical)则AREAxAREAB,如果是求横向(lateral)则 AREAxAREAC
  • ISCeff = ISC * AREAx * mISC如上所述在横向和垂直时取不同的AREA
  • ISEeff = ISE * AREA * mISE如上所诉。

以上就是使用BJT在直流分析时的一些重要模型参数的意义和取值,此外,从上面的等效电路可以看到,BJT在使用的时候,还应该考虑其中的等效电容(包括扩散电容diffusion capacitances和耗尽电容 depletion capacitances),这些会在后面的时序瞬态分析的例子时再做说明。

综上所述,我们可以写出型号为2N2222的NPN的BJT的模型描述如下(其模型来源是zetex的Q2N2222A,可以工作在 550Hz ~ 300MHz:

https://www.diyaudio.com/forums/software-tools/30980-2n2222-spice-model.html​www.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-16A, 这里是 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 is areab for vertical devices and areac 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

其输出图形如下:

isis 网络 level 2 iih_ngspice实例介绍2--直流扫描分析相关推荐

  1. linux动态追踪神器——Strace实例介绍【转】

    Strace是Linux下一款通用的进程动态跟踪工具,用来追踪程序执行时的系统调用和所接收的信号.其应用方法如下图(部分). 首先,简单说说它的使用参数,Strace的参数包括输出参数.过滤参数.统计 ...

  2. 公开披露:美国如何联合作战并入侵ISIS网络

    *本公众号禁止一切形式未授权洗稿,窃取创意. 前言:从本文可以窥探老美的网络作战能力,以及一些攻击细节. 『背景研判』 NPR(美国国家公共电台)新闻,是美国最大的公共广播电台,原本26号报道了一篇关 ...

  3. 怎样在两个局域网内共享一台打印机 。常用网络命令及命令实例详解

    怎样在两个局域网内共享一台打印机 怎样在两个局域网内共享一台打印机 我们公司有两间办公室,原先布线的时候用一个路由器延伸出多个接口预埋在墙里并做上插头,IP地址是自动分配的,网关是192.168.0. ...

  4. C++网络:IO复用epoll服务器-附带网络聊天室代码实例

    //! //! C++网络:IO复用epoll服务器-附带网络聊天室代码实例 //! //! ===== IO复用简介 ===== //! 众所周知,在LINUX中有一切皆文件的说法,将文件视为一种I ...

  5. Neo4j官方入门实例介绍

    2.4 官方入门实例介绍 本节的内容不必深入掌握,主要是给大家一个简单的认识,具体的 Cypher 语言在下一章会详细讲解. 为了方便用户入门, Neo4j Web 管理界面提供了一个官方入门实例 & ...

  6. Nginx http和反向代理配置实例介绍

    Nginx  是一个高性能的 HTTP 和反向代理服务器,本节以实际实例介绍如何实现Nginx 反向代理. 1.  安装Nginx 安装Nginx之前,首先安装相关模块的依赖库: 这里安装Pcre和O ...

  7. 实例介绍Cocos2d-x开关菜单

    开关菜单是MenuItemToggle类实现的,它是一种可以进行两种状态切换的菜单.它可以通过下面的函数创建: [html] view plaincopy static MenuItemToggle* ...

  8. linux复制文件夹 实例,linux复制文件夹与文件实例介绍linux操作系统 -电脑资料

    本文章来介绍一下关于linux复制文件夹与文件的一些基础用法,有需要学习的朋友可参考一下本文章, CP命令 格式: CP [选项] 源文件或目录  目的文件或目录 选项说明:-b 同名,备分原来的文件 ...

  9. .NET多线程总结和实例介绍

    摘要:.Net提供了许多多线程编程工具,可能是因为太多了,所以掌握起来总是有一些头疼,我在这里讲讲我总结的一些多线程编程的经验,希望对大家有帮助. 1.多线程的总结 不需要传递参数,也不需要返回参数 ...

最新文章

  1. 高职扩招有计算机专业吗,高职扩招计算机专业
  2. [IE9] 如何让你的网站在IE9和Win7任务栏上更闪亮
  3. redirect_uri参数错误解决方法
  4. jvm 崩溃日志设置_JVM致命错误日志(hs_err_pid.log)分析(转载)
  5. linux 14.04安装方法,Ubuntu 14.04 安装配置GNOME经典界面
  6. 一路风景---我期待的是师生关系
  7. mysql一列数据转为一行_最最完整的 MySQL 规范都在这了
  8. php无法连接远程服务器,php-无法在远程服务器上包含文件
  9. c11语言编译器,GNU C编译器的gnu11和c11
  10. minic 类型声明与变量定义句型处理
  11. 万字Spring框架学习总结(附核心代码详细注释)
  12. 深入了解人工智能的发展现状及前景
  13. Windows常见基本进程八:wuauclt
  14. 短除法(求最大公约数)
  15. uniapp调用高德api
  16. UAF—metasequoia_2020_summon
  17. Composure获取子层级图像:使用变换通道
  18. ​【交通标志识别】基于BP神经网络实现交通标志识别matlab代码
  19. FJUT ACM 1212 集训队的药药切克闹
  20. 获取当前时间戳13位

热门文章

  1. CodeChef Graphcnt:Counting on a directed graph(支配树)
  2. C++ Primer 第5版--练习9.14
  3. .NET之Hangfire快速入门和使用 (定时任务调度的一种解决方案)
  4. 轩小陌的Python笔记-day28 索引、函数及存储过程
  5. 周鸿祎方法论:吊丝如何逆转未来
  6. JAVA小项目(四)—— 贪吃蛇【轻松入门,附源码】
  7. 常见排序算法及其对应的时间复杂度、空间复杂度
  8. Kubernetes HPA 动态弹性扩缩容
  9. ffmpeg 命令行总结
  10. 实验10 人机交互的质量与测评