借助SPICE仿真,设计人员可以使用.MODEL指令创建自定义组件。这种方法允许用户为二极管、晶体管或开关等电子元件定义行为模型,使其适应特定的设计需求。
SPICE中的.MODEL指令允许用户定义自定义电子元件的特性,提供确定其在电子电路中行为的特定参数。定义新元件的能力有利于仿真预定义集合中未包含的设备或准确复制真实元件。换句话说,该指令可以为二极管、晶体管、开关、传输线、RC线等定义模型。一些电路元件具有许多参数,像是晶体管不会定义每个晶体管参数,而是按模型名称分组并具有相似的参数。其一般语法如下:
.model <modname> <type>[(<parameter list>)]
参数列表取决于模型类型。以下是此指令允许的模型类型列表:
描述新电子元件的特性是一项相当困难的任务,需要了解许多技术参数,而这些参数只能在各种设备的数据表中找到。以下段落将举例说明如何使用.MODEL指令,这是了解创建电子元件过程的最有效方法。当然,我们不会对SPICE实现的所有模型都进行研究,而只会研究最重要的和最常用的模型。
二极管需要.MODEL指令来定义其特性。有两种类型的二极管可用,第一种模型是线性模型,其行为类似于理想二极管。以下是其中一些参数:
第二个模型是标准的Berkeley SPICE半导体二极管,但经过扩展,可以更好地处理击穿行为和复合电流。面积因子决定了给定模型的等效并联器件数量。以下是此器件类型的一些二极管模型参数:
图1中显示了自定义二极管建模的一个示例,其中二极管为正向偏置,其电流受电阻限制。仿真研究了0V至48V之间的所有电压值,分析了二极管的相对行为。设置二极管参数的指令如下:
.model MyDiode D (IS=1e-14 N=1.2 BV=100 IBV=10u RS=0.5 CJO=2p M=0.33 VJ=0.7 TT=20n)
二极管值设置为MyDiode。该图生成的SPICE NETLIST如下:
* Model Diode
V1 vcc 0 12V
D1 diode 0 MyDiode
R1 diode vcc 10
.model MyDiode D (IS=1e-14 N=1.2 BV=100 IBV=10u RS=0.5 CJO=2p M=0.33 VJ=0.7 TT=20n)
.dc V1 0 48 0.1
.backanno
.end
图1:创建自定义二极管模型
通过定制二极管的参数,设计人员可以创建快速开关二极管、整流器和肖特基二极管。
双极晶体管也需要.MODEL指令来描述其特性,关键字NPN和PNP表示晶体管的极性。DC模型由确定正向电流增益特性的参数Is、Bf、Nf、Ise、Ikf、Ne,确定反向电流增益特性的Is、Br、Nr、Isc、Ikr和Nc,以及确定正向和反向特性区的输出电导的Vaf和Var定义,其中还包括三个欧姆电阻Rb、Rc和Re。基极电荷存储由正向和反向传输时间Tf和Tr建模,饱和电流Is的温度依赖性由Eg确定。此外,基极电流的温度相关性由XTB温度指数建模。假定指定的值是在TNOM温度下测量的,可以在.OPTIONS控制行上指定,也可以由.MODEL行上的指定值替换。指令参数很多(约80个),下面仅列出其中部分:
图2中可以看到自定义晶体管建模的示例,其中NPN晶体管用作共发射极放大器。在该示例中,设计人员需要晶体管电流增益为70倍。所涉及的参数是“Bf”,它将在“.MODEL”指令行中被指定如下:
.model MyTransistor NPN (Bf=70)
晶体管模型设置为MyTransistor,生成的SPICE NETLIST如下:
* Model Transistor
V1 N001 0 12V
R1 N001 N003 10k
Q1 N002 N003 0 0 MyTransistor
R2 N001 N002 100
.model MyTransistor NPN (Bf=70)
.dc V1 0 50 0.1
.backanno
.end
这个简单的电路图是一个带有自定义NPN晶体管的电路,由增益Bf=70的MyTransistor模型定义。由于.DC指令,电源V1从0V变化到50V。电阻R1限制基极电流,而R2是集电极上的负载。集电极电流由以下公式决定:
Ic = Bf * Ib
它对于电路中预期的所有电源电压几乎都是恒定的,除了低于0.6V的电源电压。当V1的值高于Vbe(约0.7V)时,晶体管开始导通。即使该电路相当简单,它也可用于分析晶体管的行为并验证您的模型。图中的三个图表显示了在直流仿真期间计算出的电气量。顶部的第一个图表显示了集电极电流与基极电流之间的比率,根据以下关系:
gain = I(R2) / I(R1)
此参数是晶体管的电流增益,对应于新创建的晶体管模型的Bf参数。对于较高的值,增益保持不变,表明晶体管完全导电。中间的图表显示的是集电极电流,并且至少在仿真环境中是随V1线性增长的。最后,底部的图表表示流过晶体管基极的电流。如果需要组件的不同增益,只需更改Bf参数即可。
图2:创建晶体管的自定义模型
为了创建有效且可靠的电子元件,需要指定大量参数,其中许多参数取自制造商的数据表。下面的是BC547晶体管的某个型号:
.MODEL BC547 NPN ( IS =1.8E-14 ISE=5.0E-14 NF =.9955 NE =1.46 BF =400 BR =35.5 IKF=.14 IKR=.03 ISC=1.72E-13 NC =1.27 NR =1.005 RB =.56 RE =.6 RC =.25 VAF=80 VAR=12.5 CJE=13E-12 TF =.64E-9 CJC=4E-12 TR =50.72E-9 VJC=.54 MJC=.33 )
对于使用SPICE的用户来说,.MODEL指令是一个非常强大(且不可或缺)的工具,它允许用户自定义电路的电子元件并仿真真实的行为。得益于数据表提供的定义特定参数的有用功能,工程师和设计师可以在他们的设计中忠实地复制真实元件的行为。
尽管使用.MODEL指令相当复杂,但一旦您了解了基本原理和主要参数,它就能成为一种创建自定义模型的通用方法。它的灵活性使您不仅可以定义标准元件(例如二极管和晶体管),还可以定义更复杂的设备(例如电压控制开关等),从而扩展了仿真的可能性。
使用.MODEL的主要优势非常明显。您可以对具有特定特性的元件进行建模,使其完美地适应您的电路,您也可以定义适用于高级应用的非标准或实验模型。此外,它消除了对外部库的依赖,使您可以将模型直接集成到您的仿真文件中。
(原文刊登于EDN姊妹网站Embedded,参考链接:Guide to SPICE Simulation for Circuit Analysis and Design – Part 18: Creating Your Own Component with the .MODEL Directive,由Ricardo Xie编译。)