ISIS独特地提供了活动器件技术,通过该技术,您能自己创建可在仿真器中展现动画效果的新库部件。这极大地增强了电路动画演示效果,因为您不再局限于系统通过硬编码实现的一小部分的动画器件。
如果您已经熟悉在PROTEUS中创建ISIS库部件与仿真模型,则您会觉得创建新的活动器件的原理也很通俗易懂。然而,就象创建一个好的仿真模型一样,为能达到最佳效果,也要求您精通电子学且想象力丰富。
希望您具备以下技能:
l 熟悉ISIS的2D图形技术,包括运用图形格式,以及如何调整颜色、线宽、填充方式等。更详细的介绍请参阅ISIS手册
l 能创建普通的库器件。同样,在ISIS文档中有详细说明
l 能创建仿真模型(MDF文件)。本书中的模拟与数字建模教程是最好的学习教材。
一共有两类活动器件
l 指示器:它们通过图形方式响应仿真过程中发生的事件。例如灯泡、LED及逻辑探针。指示器可有n种状态,也可以只有两种状态,它们可以被父器件管脚直接控制,也可被更复杂的仿真模型中的探针所控制。
l 激励器:它们可以响应鼠标操作,其动作将改变电路的电气状态。例如开关、电位计以及逻辑状态输入。激励器可以是瞬态的,也可被锁存起来,它们可以有任意数目的状态。
对于初学者而言,LAMP模型是既简单又好的指示器例子。它表示了灯泡元件既可作为一个简单的阻性负载,且其亮度还依赖于其两端电压差值。该电气模型有两个用户参数,一个是值,它表示灯泡的标称电压,另一个是参数为电阻。
示例工程ACTVLAMP.DSN包括后续将讨论的所有特性。
可通过使用多个ISIS符号来完成活动器件的动画效果。
每一个符号都包含了表示灯泡给定亮度的图符,以及器件基本名称(此处为LAMP),一个下划线字符,以及符号所表示的活动状态。
有关这些符号,请注意以下几点:
l 这些符号没有必要包含元件管脚-对于每个活动状态,系统将自动画出管脚
l 一般地,每个活动符号必须在屏幕上具有相同的像素位置,即使是那些与背景色相同的像素点也要一并保持。例如,符号LAMP_0中也包括发光射线,只不过其颜色与背景色一致,看不到罢了,这样做的好处在于,如果从其它状态切换到LAMP_0,则它可以通过画出该背景色的射线,达到正确显示的效果(不然的话,其它状态的射线仍将显示,不过在这一点,Proteus的软件没有处理好,应该在该区域重画,或采用XOR方式再画一遍达到清除效果,而不应要求用户做这些事。陈斌文注)。这样设计导致的失败将使得在动画过程中图形交叠。
l 我们将假定活动器件图形符号缺省背景色为黑色或暗色,主要原因是这样可以保证灯泡、LED等器件能比较清晰地显示。对于白色背景而言,一个灯泡发出白色光是不可见的。(难道Proteus不能换背景颜色?陈斌文注)
l 如果STATE属性值越界,则不会画出活动符号,而会显示出基本的器件符号。这种处理方式将很容易的让用户发现当前状态是否为正常动画效果。
下一步将为活动器件创建设备库部件,该过程基本与普通电气模型的创建过程相同。ACTIVE.LIB中的LAMP器件有以下属性定义:
名称 |
描述 |
数据类型 |
编辑模式 |
缺省值 |
LOAD |
Load Resistance |
FLOAT (PNZ) |
NORMAL |
100 |
MODFILE |
模型文件 |
STRING |
HIDDEN |
LAMP.MDF |
LAMP器件还有一个缺省为12V额定电压值,其类型为字符串类型。
l LOAD属性为一个普通模型参数定义,它允许用户在edit Component对话框中输入一个正值作为负载电阻。这种属性定义的使用方法已在ISIS手册中进行了详细说明。
l MODFILE属性说明灯泡的分析模型保存在文件LAMP.MDF中。这与其它已建模的ISIS库中元件的处理方式没有什么不同。在本文中其它地方已有针对建模技术的扩展说明。请注意,在某些情况下,器件将可能被当作为诸如RTSWITCH或RTVPROBE等仿真基本元素,此时,应当在PRIMITIVE属性中进行指定。
定义了电气属性后,最后一步操作就是在Make Device对话框中点击Active Model按钮,将弹出以下对话框:
Name Stem编辑框将设置各图形符号名称的公共部分,在此为LAMP,而No. of States字段将设置图形符号数目。Bitwise States与Link to DLL字段的含义将在其它地方进行说明。
就象创建普通器件的模型一样,创建与测试一个模型的最好途径是使用测试环境。它是一个电路,其中的一部分为设计成为多层次结构的模块器件,其子模块包含模型部分。
此外,创建活动器件的模型唯一不同之处在于,一些特殊仿真基本元素可以在ISIS中用来将模型链接回到其父器件。
本例中的活动灯泡的原理图模型如下图所示:
该电路中的关键部分在于RTVPROBE(实时电压探针)VP1。该特殊仿真基本对象可以测量其两端电压之间的电压,并将其传回其父指示器件。MAX属性将设置父器件(灯泡器件)的VALUE属性,并决定电压值的量程。
电阻R1表示负载阻抗(它也是一个来自于父器件的参数),而控制源AVS1将取得电阻两端的绝对电压值,并将其施加到电压探针上。使用AVS1的原因在于,无论灯泡以何种方式进行连接,它都必须工作(不懂,陈斌文注)。乘积因子0.9表示灯泡将LAMP_8显示为其标称电压,而白灯状态LAMP_9仅在灯泡过驱动时进行显示(更不懂,陈斌文注)。
为完成创建活动灯泡的建模过程,该电路应画在测试电路的子模块上,然后编译生成模型文件LAMP.MDF,即文件名与MODFILE属性值相对应。
我们的第二个例子将考虑一个简单的激励器:活动开关(单刀单掷)
示例工程ACTVSPST.DSN包括后续将讨论的所有特性。
因为开关器件很简单,其电气模型可直接采用RTSWITCH基本元素,因此无需原理图模型。该器件只有两个状态(开与关),因此,仅需两个活动符号:
系统支持两类激励器:静态与瞬态。静态激励器可以有N种状态,其状态切换可通过用鼠标单点其增/减控件(或使用鼠标滚轮,当然前提条件是您的鼠标有这玩意)。瞬态激励器只能为两状态,通过鼠标左键的按下弹起完成状态0与状态1的互相切换。您可以将INCREMENT与DECREMENT标识放在图形符号旁边来将定义开关为静态激励器。制作设备之前的图形样式看起来如下图所示:
若要制作一个瞬态开关或按钮,您应当使用一个TOGGLE标识。
开关器件的其余部分将通过其属性来进行定义:
名称 |
描述 |
数据类型 |
编辑模式 |
缺省值 |
R(0) |
关断阻抗 |
FLOAT (PNZ) |
NORMAL |
100M |
R(1) |
接通阻抗 |
FLOAT (PNZ) |
NORMAL |
0.1R |
TSWITCH |
开关时间 |
FLOAT (PNZ) |
NORMAL |
0.1ms |
PRIMITIVE |
基本对象类型 |
STRING |
HIDDEN |
PASSIVE, RTSWITCH |
STATE |
活动状态 |
INTEGER |
HIDDEN |
0 |
l 属性R(0)、R(1)与TSWITCH将控制RTSWITCH仿真器的行为。该器件为一个N状态可变电阻,而其STATE属性将选择其N种可能的电阻值中的一个。因此它在对活动电位计与多状态开关等进行建模时非常有用,多极开关可通过使用GANG属性来进行建模,而多掷开关可通过在原理图中采用多个RTSWITCH基本元素这种途径来建模。在本例中,原理模型中的RTSWITCH部件应当有以下的属性赋值
PARENT=
TSWITCH属性确保开关阻抗中,没有不连续段,否则将导致SPICE仿真分析过程中的收敛性问题。
l 通过PRIMITIVE属性,可以使得在电路进行了仿真时生成网络表过程中,活动开关将由一个RTSWITCH基本元素来代替。该仿真类型被指定为PASSIVE,因为RTSWITCH是一个混合模型的基本元素对象。
l 属性STATE表示激励器的缺省状态,即当创建该类型对象时会采用的状态。与指示器不同之处在于,即使在仿真停止的情况下,它也不会被复位设置为-1,激励器将保持在您所离开时的状态。
与LAMP模型中一样,最后一步操作就是点击Active Model按钮。在本例中,Name Stem内容为SWITCH,而No. of States为2。
如果要创建7段数码管或其它包含一个数字元素的器件时,有时将其状态考虑成为一个二进制值还比较有用。否则,对于一个七输入设备,有128种不同的组合,难道您还会画出128种不同的符号来进行表示吗?
我们以7段数码管为例进行说明,可通过Active Component Model对话框中将该模型被定义为一个位指示器,如下图所示:
它同时也指定了符号公共名称,即7SEG,并且设置其共有7种状态。
对于每个状态元素,需要两个符号,以及一个表示背景的公共符号。下图为全套活动符号示意图:
为清楚说明起见,我们将符号分解开,这样各个符号定义都有一个与左上顶的显示区域相应的原始对象。如果状态值中的位0为0,则画出7SEG_0_0,而如果状态值中的位0为1,则画出7SEG_0_1。位1也类似地确定7SEG_1_0与7SEG_1_1画出关系,其余类推可知。
如果需要一个数字7段数码管模型,则可以指定一个RTDPROBE基本元素
PRIMITIVE=DIGITAL,RTDPROBE
所创建的显示器件中,采用7个名称为D0~D6的管脚就足够了。
然而,如果要建立满足模拟特性的模型,则需要使用原理模型:
流经各个二极管的电流可能过一个单独的RTIPROBE来进行测量。各探针的属性ELEMENT用来确定显示图形中的某段是受控制的。
当然,本模型为共阴方式。
有时候,需要在电路图中将两个相似的激励器当成一个来操作,该功能可以通过属性GANG来完成。例如,在下图所示的双向马达电路中,两个SPDT开关通过一个虚拟的机制来完成组操作:它们都有一个相同的赋值语句:
GANG=1
一般地,拥有相同的GANG属性值的所有激励器都将联合操作。
PROSPICE提供一些基本元素模型,以支持设计可编程逻辑器件(PLD)模型。可编程逻辑器件为普通设备,它们可以进行编程,以完成相关的组合与时序功能。该设计周期包括PLD编程,它通过PLD生产厂家或第三方所提供的软件编译成一个JEDEC fuse map文件。该文件列出器件中的保险丝,它们可通过编程方式进行熔断或保持正常。作为一个JEDEC文件,该文件定义了一个标准格式,以便不同用户可以对一个物理器件进行编程规范使用。
为对PLD进行编程建模,所有的DSIM基本元素模型都将在本节中进行说明,并被配置为一个JEDEC文件,赋予相关模型控制属性为保险丝表达式。在仿真分析开始时(不是在模型编译成为MDF文件时),指定的JEDEC文件将被载入,其相应保险丝表达式的布尔结果将用来配置相应的基本元素模型。
请注意,所有支持PLD模型仅提供功能性支持,而没有传播(延迟)属性。您应当对输出端使用缓冲器或延迟对象来进行这方面的建模工作。
在第一次使用这些基本模型之前,提醒一点,PLD ISIS库已包括许多流行的PLD器件的模型,另外,在SAMPLES目录下有两个设计工程文件16L8.DSN与22V10.DSN。这两个工程演示了如何将一个PLD库中的PLD器件链接到一个JEDEC文件,以及如何指定器件速度。另外,16L8.DSN工程中,在16L8的子模块中包括一个完整的16L8等价电路模型实例。在着手做您自己的模型之前参考一下应当是一个不错的主意。
一个保险丝表达式是一个由操作符所分隔开的一系列值,它将计算得到一个布尔值。保险丝表达式用于所有的支持PLD的基本模型中,以初始化模型的控制属性,针对FUSE基本模型来说,可以确定模型的输出。
在一个保险丝表达式中,一个值要么为一个常量,要么为一个在括号中的子表达式,如下所示:
T, TRUE |
- |
TRUE常量。其运算结果为布尔真值 |
F, FALSE |
- |
FALSE常量。其运算结果为布尔假值 |
Dn |
- |
输入管脚n。如果相应的输入为激活状态,则其值为真,如果相应的输入为非激活状态,则其值为假。请注意,并不是所有的保险丝表达式都允许引用输入管脚进行建模,用于初始化模型控制属性的表达式将不支持这样的引用。 |
n |
- |
整数(如,1023,10919等),用于表示保险丝数目。如果保险丝被编程设置为熔断(即在JEDEC文件中为1),则其结果为真;如果保险丝被编程设置为正常(即在JEDEC文件中为0),则其结果为假 |
(…) |
- |
子表达式,用于计算子表达式的布尔值 |
这些值有可能受一元求非操作符”!”的作用。如果求非操作符的数目为奇数,则其结果将为原始值的求非值。这种运算策略可以允许采用如下形式:一个表达式包括一个求非运算符所作用的映射属性,然后该映射属性本身包含一个求非的值。因为ISIS用直接代替法处理映射属性,这将导致一个包含两个一元求非操作符的表达式,然后再进行正确的运算。
EXPR=...!
...
FUSE=!1024
其结果为
EXPR=...!!1024
保险数可以通过以下操作符进行组合,而不用使用括号:
+ |
- |
左右表达式相加 |
- |
- |
从左边减去右边 |
就象一个保险数那样,其结果值将计算得到一个布尔值。如果你希望求得结果的求非后的值,则须将求非操作符置于第一个保险数之前。例如,表达式
!1021+5+6
将计算得到FALSE值,如果1032保险数被编程设计为熔断(在JEDEC文件中值为1);相应地,如果并没有对其进行编程(在JEDEC文件中为0),则其结果为TRUE。
很明显,一个保险数的解释有赖于PLD电路。几乎所有的PLD都使用一个保险以将管脚连接到地,正如左侧所示。因此,一个含未编程保险数的输入在电气上为低逻辑,而含一个编程保险数的输入为电气高逻辑。因为,一个未编程保险对应于JEDEC文件中的0值,而编程保险对应于JEDEC文件中的1值,可以这样认为:JEDEC文件中的值直接等价于输入的电气值,也即是输入的布尔值(0=low=FALSE, 1=high=TRUE).
布尔值可以通过以下操作符进行组合:
& |
- |
左右布尔值进行逻辑与操作 |
| |
- |
左右布尔值进行逻辑或操作 |
^ |
- |
左右布尔值进行逻辑异或操作 |
保险数操作符比布尔操作符的优先级更高,但在各个操作符组内部没有优先级的不同,其操作顺序都是由左至右顺序执行。例如,表达式
D0&10+20|D3
其计算过程为(使用括号来表示顺序):
(D0&30)|D3
因此,如果保险数30是编程过的(即,熔断值,在相关联的JEDEC文件中其值为1),则表达式为“D0|D3”,同样,如果险数30是未编程过的(即,非熔断值,在相关联的JEDEC文件中其值为0),则表达式为“D3”
举另一个例子,表达式
D0^!1024+6
如果在JEDEC文件中,保险数1030=1,则其计算结果为“D0”(因为FALSE与任意数进行异或操作,其结果为该任意数);如果在JEDEC文件中,保险数1030=0,则其计算结果为“!D0”(因为TRUE与任意数进行异或操作,其结果为该任意数的求非值)。最后再举一个例子,如表达式:
((D0&!1024&!1023)|(D1&!1024&1023)|
(D2& 1024&!1023)|(D3& 1024&1023))^1022
其运行效果为一个使用求非保险编程数的4选1保险编程数,将根据由保险数1024(最高位)与1023(最低位)组成的二位二进制数来选择四个输入中的一个(D0~D3),如果保险数1022已编程,则结果为所选出的输入的求非值。
不要担心保险表达式的长度,该表达式计算器也是一个优化过的预编译器,因此,即使一个很长的表达式(计算起来也很慢)其计算结果将会为1到2项。从根本上来说,JEDEC文件必须为一个ASCII文本文件,而保险数必须按行配置为相应的格式
[[whitespace]] Laddr [0|1] [[whitespace]] 0|1 [[whitespace]] etc *
各行包括空白字符,其后为字母L(大小写均可),紧随其后的是第一个保险数的十进制数。空白字符为任意能在文件中产生空格的字符,包括空格、换行符、TAB等。在此之后为一串01码,之后可用多个空白字符进行分隔。序列的结果采用星号字符,它可位于最后的0或1之后,或者干脆它可以自成一行。以下JEDEC文件中所有的保险数所在的行都将被DSIM正确解析(将忽略注释与校验和)
BUS CONTROLLER PAL
(C) ACME RESEARCH
24 JUN 1993*
102A*1200*1232*
L000 0 0 0 0 0 0 0 0 0 1 0 1 1000 *
L128 1010 0000 1010 0000
*L
256 101010100000101
010101101010010*
CF2A*
DSIM认为,PLD中所有保险数的缺省状态都将被连接,JEDEC文件中的0值表示相应的保险数不被处理(即保持连接),而其1值表示相应的保险数被熔断,即该连接为断路。一个断路连接被认为是悬空状态,为逻辑高状态。
这是一个纯的理想化器件。不考虑电阻、电感与泄漏。
电容模型支持以下属性:
属性 |
缺省值 |
描述 |
PRECHARGE |
- |
电容初始电压。该属性为PROSPICE对标准SPICE的扩展。如果没有指定该属性,则电容的初始电压值将取自工作点。 |
IC |
- |
电容初始电压,仅当未计算初始直流解时可用 |
尽管电流源是一个信号发生器,但本文将它在这里进行说明,因为在电路仿真分析时它是一个初等基本元素。
电流源没有什么需要保存的属性。
该延迟线模型表示为一个无损传送线的行为。只针对一种传播模式进行了建模。如果在电路中所有4个节点都不相同,则应用两个延迟线来表示两个传播模式。可指定频率与归一化长度或时间延迟量。
无损延迟线模型有以下相应缺省值的属性:
属性 |
缺省值 |
描述 |
Z0 |
- |
阻抗参数 |
F |
1GHz |
频率 |
TD |
- |
传输延迟 |
NL |
0.25 |
给定频率的归一化长度 |
V1 |
0 |
1端初始化电压值 |
V2 |
0 |
2端初始化电压值 |
I1 |
0 |
1端初始化电流值 |
I2 |
0 |
2端初始化电流值 |
统一的RLC/RC/LC/RG传输线模型(后称LOSSYLINE模型)针对常量分布传输线进行建模。RC与LC情况下,也可用TRANLINE与URCLINE模型;然而,新的LOSSYLINE模型在通常情况下都比其它模型更快,还更精确。该模式模型的操作基于传输线对输入的脉冲响应为回旋状的。
有损延迟线模型有以下相应缺省值的属性:
属性 |
缺省值 |
描述 |
V1 |
- |
1端初始化电压值 |
V2 |
- |
2端初始化电压值 |
I1 |
- |
1端初始化电流值 |
I2 |
- |
2端初始化电流值 |
R |
- |
每米电阻值 |
L |
- |
每米电感值 |
G |
- |
每米电导值 |
C |
- |
每米电容值 |
LEN |
- |
线长 |
REL |
1.0 |
断点处相对导数 |
ABS |
1.0 |
断点处绝对导线 |
NOCONTROL |
TRUE |
无时间步长控制 |
STEPLIMIT |
TRUE |
始终限制时间步长为0.8*(线延迟) |
NOSTEPLIMIT |
TRUE |
非始终限制时间步长为0.8*(线延迟) |
LININTERP |
TRUE |
使用线性插值算法 |
QUADINTERP |
TRUE |
使用二次插值算法 |
MIXEDINTERP |
TRUE |
如果不能接受二次插值,则用一次插值算法 |
TRUNCNR |
FALSE |
循环计算时使用N-R抚今迭代 |
TRUNCDONTCUT |
FALSE |
不限制时间步长以保持脉冲响应错误率较低 |
COMPACTREL |
RELTOL |
直线检查时的特殊相对容差 |
COMPACTABS |
ABSTOL |
直线检查时的特殊绝对容差 |
已经实现线的下列类型:RLC(只有串行损失的统一传输线)、RC(统一RC线)、LC(无损传输线)及RG(只有分布式串行电阻与并行电导)。其它类型的组合还会产生错误的结果,不要试图使用它们。必须指定线长度LEN。
NOSTEPLIMIT为一个标志,它将移除时间的缺省限制,以在RLC类型情况下减少线延迟。NOCONTROL为一个标志,它针对RLC与RC类型可防止基于卷积的缺省时间的限制误差。它可使仿真加速但可能在某些情况下降低结果精度。LININTERP为一个标志,如果该标志为TRUE,则在计算延迟信号时会使用线性插值算法,而不是缺省的二次插值算法。MIXEDINTERP为一个标志,如果该标志为TRUE,则使用米制来判断二次插值算法是否适于应用,如果不行,则会采用线性插值算法;否则,它将采用缺省的二次插值算法。TRUNCDONTCUT为一个标志,它移除缺省时间步长以限制实际数量相关脉冲响应计算误差。COMPACTREL与COMPACTABS为控制所保存历史值的数量指标,值越大,则精度越低,但可提高仿真速度。它们可与TRYTOCOMPACT仿真器选项一同使用。TRUNCNR为一个标志,它采用Newton-Raphson迭代法以在时间步长控制流程中决定适宜的时间步长。其缺省方式为试验性的,通过将上次的步长减半以产生新的差值。REL与ABS为控制断点设置的数量指标。
提高仿真速度的最值得试验的选项是REL。其缺省值为1,基于准确性的观点来看,它通常是安全的,但偶尔也会增加计算时间。如果使用大于2的值将消除所有的断点,也可一试,但应视电路剩余部分的本质而定。如果期望电路不显示突变,则可消除全部断点。如果期望设置较多的断点,可设置为在0与1之间的值。
在TRYTOCOMPACT选项设置为仿真器的控制选项时,也可试一试COMPACTREL。其合法范围为0~1。值越大通常会降低仿真分析的精度但在某些情况下会提高速度。如果未指定TRYTOCOMPACT,不会压缩数据,并能取得较高精度。NOCONTROL、TRUNCDONTCUT与NOSTEPLIMIT也可提高精度,但其代价是降低速度。
URC模型派生于L. Gertzberrg于1974年所提出的模型。该模型将一个扩展URC线的子电路类型连同其内部生成的节点一起加入到集总RC段的网络中。RC段为几何表示方式,它向着URC线的中间增加,其K为一个比例常数。如果集总段使用的数目没有指定为URC线器件,则它由下式所决定:
URL线严格由电阻与电容所组成,除非ISPERL参数为一个给定的非零值,在此情况下,电容将用带有零偏PN结反相偏置二极管所代替,它们的电容值相等,且传输线饱和电流为ISPERL安培/米,其可选的串行电阻为RSPERL欧姆/米。
URCLINE模型有以下相应缺省值的属性:
属性 |
缺省值 |
描述 |
L |
- |
传输线长度 |
N |
见上 |
数目 |
K |
1.5 |
传输常数 |
FMAX |
1e+009 |
最大频率 |
RPERL |
1000 |
单位长度的电阻值 |
CPERL |
1e-012 |
单位长度的电容值 |
ISPERL |
0 |
单位长度的饱和电流值 |
RSPERL |
0 |
单位长度的二极管电阻值 |
这是一个纯的理想化器件。不考虑电阻、非线性与饱和特性。通过赋值与命名方式处理互感。在ISIS中互感集合与多部件器件处理方式相同,该集合中所有对象同名,再附加上一个冒号与字母(如L1:A与L1:B)。互感值由其中一个元素中的MUTUAL_elem属性进行指定。Elem应当为相应的互感对象有元素代号,而该值为这两个元素间的互感值。如:
L1:A, MUTUAL_B=0.5
L1:B
表明两个电感,其间互感值为0.5。互感值必须在0到1之间取值。
示例工程MUTUAL1.DSN与MUTUAL2.DSN演示了更多细节。
您不能并联两个电感,或将一个理想电压源直接作用于电感两端,电感的电阻为0,因此会产生无穷大的电流,或,仿真器将实际报告一个退化矩阵。
电感模型有以下相应缺省值的属性:
属性 |
缺省值 |
描述 |
IC |
- |
电感中的初始电流。该属性仅在未计算初始直流值时有作用 |
MUTUAL_elem |
- |
与相应电感之间的互感系数 |
与电流源一样,电阻也是一个初等基本元素。电阻的温度模型通过两个参数来表示,分别定义一阶与二阶温度系数,如下方程所示:
其中
电阻模型有以下相应缺省值的属性:
属性 |
缺省值 |
描述 |
TC1 |
0.0 |
上式中的A值 |
TC2 |
0.0 |
上式中的B值 |
TEMP |
27 |
电阻的实际温度值 |
TNOM |
27 |
测量TC1与TC2时的温度值 |
电压控制电压源为SPICE中所使用的一个初等基本元素,其输出电压值与输入电压值成比例。
电压控制电压源模型有以下相应缺省值的属性:
属性 |
缺省值 |
描述 |
GAIN |
1.0 |
电压增益值 |
IC |
- |
控制源的初始条件 |
其中,参数GAIN也可由器件的value字段给出。
电压控制电流源为SPICE中所使用的一个初等基本元素,其输出电流值与输入电压值成比例。
电压控制电流源模型有以下相应缺省值的属性:
属性 |
缺省值 |
描述 |
GAIN |
1.0 |
器件电导值 |
IC |
- |
控制源的初始条件 |
其中,参数GAIN也可由器件的value字段给出。
电流控制电压源为SPICE中所使用的一个初等基本元素,其输出电压值与输入电流值成比例,该输入电流值有以下几种情况:流经其输入管脚,通过电流探针,或由PROBE属性所指定的电压源。
电流压控制电压源模型有以下相应缺省值的属性:
属性 |
缺省值 |
描述 |
GAIN |
1.0 |
器件电阻值 |
PROBE |
- |
电压源或电流探针名称 |
IC |
- |
控制源的初始条件 |
其中,参数GAIN也可由器件的value字段给出。
电流控制电流源为SPICE中所使用的一个初等基本元素,其输出电流值与输入电流值成比例,该输入电流值有以下几种情况:流经其输入管脚,通过电流探针,或由PROBE属性所指定的电压源。
电流压控制电流源模型有以下相应缺省值的属性:
属性 |
缺省值 |
描述 |
GAIN |
1.0 |
器件电流增益 |
PROBE |
- |
电压源或电流探针名称 |
IC |
- |
控制源的初始条件 |
其中,参数GAIN也可由器件的value字段给出。
任意控制电流电压源类型器件具有额外的更强功能。其输出由一个符号表达式所确定,该表达式可用任意数目的输入电压电流值来表示。
ASIMMDLS.LIB中的下列器件依赖于这种模型:
AVCVS AVCCS ACCVS ACCCS SUMMER MULTIPLIER
可在器件的value字段中录入表达式,如果需要更多的内容,您可以在VALUE属性中使用一个赋值语句。
在表达式中,电压输入值可用V(A)、V(B)、V(C)等符号表示,这些值为相应管脚A、B、C的电压值。系统还支持V(A,B)这种形式,表示管脚A、B之间的电压差值。
电流管脚值可用I(A,B)表示,即为流入A、流出B的电流值。一旦在电流表达式中出现管脚对形式,则它们之间的阻抗值为0。
表达式计算过程中还支持以下数学函数:
abs acos acosh asin asinh atan atanh cos
cosh exp limit ln log pwr pwrs sgn
sin sinh sqrt stp tan u uramp
limit函数有三个参数x, y, z,如果x
pwr函数有两个参数,它计算|x|的y次方。而pwrs带有符号,即当x>=0时,返回|x|^y;而当x<0时返回-|x|^y。这两个函数为标准SPICE3F5的扩展,用以与PSPICT相兼容。
u或stp函数为阶跃函数,当其参数值大于1时值为1,而参数值小于0时值为0(这是阶跃函数吗?原文The u or stp function is the unit step function, with a value of one for arguments greater than one and a value of zero for arguments less than zero.)
uramp函数为阶跃函数的积分,当x>0时,uramp(x)的值为x,而当x<0时,uramp(x)的值为0。这些函数可用于处理分段非线性传递函数,当然,在开关点时可能会发生收敛性问题。
表达式中还支持以下标准操作运算:
+ - * / ^
用表达式x^y可求得x的y次方,也可用pwr函数来达到这个目的。
如果函数log、ln或sqrt的参数为负值,则会使用其绝对值。如果一个除法运算、ln或log函数参数为0,则会导致出错,使得仿真分析无法继续。
可将一个电容与电流源并联,在零初始条件下即可得到一个时间值(A value for time)。
该斜坡电压可用于sin、cos等函数以构造FM信号发生器、压控振荡器及其它功能模型。
请注意:任意控制源基本元素自身不能提供时间步长控制,这将导致仿真器错过输出函数的快速转换。可采用两个应付措施:
l 设置最大时间步长属性TMAX为一个足够小的值
l 在信号发生器的输出端连接两个串联的背靠背二极管。在这种情况下,因为二极管的存在,会在这部分器件中引入时间步长控制机制,而不会改变电路的功能效果。
我们希望在后续的发布版本中实现适宜的时间步长控制,尽管这些使用Berkeley代码的模型确实很难实现。(陈斌文注:Berkeley,伯克利,提出Spice模型的那位教授,这是我的理解,不知道是否正确)
SPICE3F5二极管模型可用于所有类型的二极管的建模工作,包括Zerner与Varactor类型。
二极管模型有以下参数:
属性 |
缺省值 |
描述 |
OFF |
- |
初始关断 |
IC |
- |
初始电压 |
TEMP |
27 |
器件温度 |
AREA |
1 |
面积因子 |
IS |
1e-014 |
饱和电流 |
RS |
0 |
电阻值 |
N |
1 |
发射系数 |
TT |
0 |
渡越时间 (陈斌文注:扩散电容 CT=TT(dIfwd/dVA)=TT*Gd) |
CJO |
0 |
零偏势垒电容 |
VJ |
1 |
势垒内建电势 |
M |
0.5 |
结两侧杂质分布情况有关的系数 (陈斌文注:反偏情况下,势垒电容:CD=Cj0(1-VA/VJ)-M) |
EG |
1.11 |
激活能量 |
XTI |
3 |
饱和电流温度指数 |
KF |
0 |
噪声系数 |
AF |
1 |
噪声指数 |
FC |
0.5 |
势垒电容正偏系数 (陈斌文注:正偏情况下,势垒电容: CD=Cj0(1-FC)-(1+M)(1-FC(1+M)+MVA/VJ)) |
BV |
¥ |
膝点电压 (陈斌文注:当反向电压达到击穿电压时,流过二极管的反向电流除了由基本电流方程决定的反向电流外,还有以下由击穿机理决定的电流项: IDBV=IBV[exp(-q(VA+BV)/NBVkt)-1]) |
IBV |
1mA |
膝点电流 |
TNOM |
27 |
温度测量参数 |
二极管的直流指标由参数IS与N决定,包括体串联电阻RS。充电效果由渡越时间TT及一个由参数CJO、VJ与M所确定的非线性耗散电容(势垒电容)来描述。能量参数EG、饱和电流温度指数XTI可确定饱和电流温度,在这些参数中的温度均可测量。反向击穿效果(如Zener)可用反向电流指数函数建模,其中包括BV与IBV参数(这两个参数均为正值)。
IS、RS与CJO与面积因子相关。