Proteus深入研究(三.3): VSM SDK翻译 (47~72/289)

0.   活动器件

0.1      简介

ISIS独特地提供了活动器件技术,通过该技术,您能自己创建可在仿真器中展现动画效果的新库部件。这极大地增强了电路动画演示效果,因为您不再局限于系统通过硬编码实现的一小部分的动画器件。

如果您已经熟悉在PROTEUS中创建ISIS库部件与仿真模型,则您会觉得创建新的活动器件的原理也很通俗易懂。然而,就象创建一个好的仿真模型一样,为能达到最佳效果,也要求您精通电子学且想象力丰富。

希望您具备以下技能:

l         熟悉ISIS2D图形技术,包括运用图形格式,以及如何调整颜色、线宽、填充方式等。更详细的介绍请参阅ISIS手册

l         能创建普通的库器件。同样,在ISIS文档中有详细说明

l         能创建仿真模型(MDF文件)。本书中的模拟与数字建模教程是最好的学习教材。

一共有两类活动器件

l         指示器:它们通过图形方式响应仿真过程中发生的事件。例如灯泡、LED及逻辑探针。指示器可有n种状态,也可以只有两种状态,它们可以被父器件管脚直接控制,也可被更复杂的仿真模型中的探针所控制。

l         激励器:它们可以响应鼠标操作,其动作将改变电路的电气状态。例如开关、电位计以及逻辑状态输入。激励器可以是瞬态的,也可被锁存起来,它们可以有任意数目的状态。

0.2      指示器举例 - 灯泡

对于初学者而言,LAMP模型是既简单又好的指示器例子。它表示了灯泡元件既可作为一个简单的阻性负载,且其亮度还依赖于其两端电压差值。该电气模型有两个用户参数,一个是值,它表示灯泡的标称电压,另一个是参数为电阻。

示例工程ACTVLAMP.DSN包括后续将讨论的所有特性。

0.2.1               创建活动符号

可通过使用多个ISIS符号来完成活动器件的动画效果。

每一个符号都包含了表示灯泡给定亮度的图符,以及器件基本名称(此处为LAMP),一个下划线字符,以及符号所表示的活动状态。

有关这些符号,请注意以下几点:

l         这些符号没有必要包含元件管脚-对于每个活动状态,系统将自动画出管脚

l         一般地,每个活动符号必须在屏幕上具有相同的像素位置,即使是那些与背景色相同的像素点也要一并保持。例如,符号LAMP_0中也包括发光射线,只不过其颜色与背景色一致,看不到罢了,这样做的好处在于,如果从其它状态切换到LAMP_0,则它可以通过画出该背景色的射线,达到正确显示的效果(不然的话,其它状态的射线仍将显示,不过在这一点,Proteus的软件没有处理好,应该在该区域重画,或采用XOR方式再画一遍达到清除效果,而不应要求用户做这些事。陈斌文注)。这样设计导致的失败将使得在动画过程中图形交叠。

l         我们将假定活动器件图形符号缺省背景色为黑色或暗色,主要原因是这样可以保证灯泡、LED等器件能比较清晰地显示。对于白色背景而言,一个灯泡发出白色光是不可见的。(难道Proteus不能换背景颜色?陈斌文注)

l         如果STATE属性值越界,则不会画出活动符号,而会显示出基本的器件符号。这种处理方式将很容易的让用户发现当前状态是否为正常动画效果。

0.2.2               创建库部件(设备)

下一步将为活动器件创建设备库部件,该过程基本与普通电气模型的创建过程相同。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库中元件的处理方式没有什么不同。在本文中其它地方已有针对建模技术的扩展说明。请注意,在某些情况下,器件将可能被当作为诸如RTSWITCHRTVPROBE等仿真基本元素,此时,应当在PRIMITIVE属性中进行指定。

定义了电气属性后,最后一步操作就是在Make Device对话框中点击Active Model按钮,将弹出以下对话框:

Name Stem编辑框将设置各图形符号名称的公共部分,在此为LAMP,而No. of States字段将设置图形符号数目。Bitwise StatesLink to DLL字段的含义将在其它地方进行说明。

0.2.3               创建原理图模型

就象创建普通器件的模型一样,创建与测试一个模型的最好途径是使用测试环境。它是一个电路,其中的一部分为设计成为多层次结构的模块器件,其子模块包含模型部分。

此外,创建活动器件的模型唯一不同之处在于,一些特殊仿真基本元素可以在ISIS中用来将模型链接回到其父器件。

本例中的活动灯泡的原理图模型如下图所示:

该电路中的关键部分在于RTVPROBE(实时电压探针)VP1。该特殊仿真基本对象可以测量其两端电压之间的电压,并将其传回其父指示器件。MAX属性将设置父器件(灯泡器件)VALUE属性,并决定电压值的量程。

电阻R1表示负载阻抗(它也是一个来自于父器件的参数),而控制源AVS1将取得电阻两端的绝对电压值,并将其施加到电压探针上。使用AVS1的原因在于,无论灯泡以何种方式进行连接,它都必须工作(不懂,陈斌文注)。乘积因子0.9表示灯泡将LAMP_8显示为其标称电压,而白灯状态LAMP_9仅在灯泡过驱动时进行显示(更不懂,陈斌文注)

为完成创建活动灯泡的建模过程,该电路应画在测试电路的子模块上,然后编译生成模型文件LAMP.MDF,即文件名与MODFILE属性值相对应。

0.3      激励器举例 活动开关

我们的第二个例子将考虑一个简单的激励器:活动开关(单刀单掷)

示例工程ACTVSPST.DSN包括后续将讨论的所有特性。

因为开关器件很简单,其电气模型可直接采用RTSWITCH基本元素,因此无需原理图模型。该器件只有两个状态(开与关),因此,仅需两个活动符号:

系统支持两类激励器:静态与瞬态。静态激励器可以有N种状态,其状态切换可通过用鼠标单点其增/减控件(或使用鼠标滚轮,当然前提条件是您的鼠标有这玩意)。瞬态激励器只能为两状态,通过鼠标左键的按下弹起完成状态0与状态1的互相切换。您可以将INCREMENTDECREMENT标识放在图形符号旁边来将定义开关为静态激励器。制作设备之前的图形样式看起来如下图所示:

若要制作一个瞬态开关或按钮,您应当使用一个TOGGLE标识。

0.3.1               活动开关的属性定义

开关器件的其余部分将通过其属性来进行定义:

名称

描述

数据类型

编辑模式

缺省值

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 States2

0.4      位指示器

如果要创建7段数码管或其它包含一个数字元素的器件时,有时将其状态考虑成为一个二进制值还比较有用。否则,对于一个七输入设备,有128种不同的组合,难道您还会画出128种不同的符号来进行表示吗?

我们以7段数码管为例进行说明,可通过Active Component Model对话框中将该模型被定义为一个位指示器,如下图所示:

它同时也指定了符号公共名称,即7SEG,并且设置其共有7种状态。

对于每个状态元素,需要两个符号,以及一个表示背景的公共符号。下图为全套活动符号示意图:

为清楚说明起见,我们将符号分解开,这样各个符号定义都有一个与左上顶的显示区域相应的原始对象。如果状态值中的位00,则画出7SEG_0_0,而如果状态值中的位01,则画出7SEG_0_1。位1也类似地确定7SEG_1_07SEG_1_1画出关系,其余类推可知。

如果需要一个数字7段数码管模型,则可以指定一个RTDPROBE基本元素

PRIMITIVE=DIGITAL,RTDPROBE

所创建的显示器件中,采用7个名称为D0~D6的管脚就足够了。

然而,如果要建立满足模拟特性的模型,则需要使用原理模型:

流经各个二极管的电流可能过一个单独的RTIPROBE来进行测量。各探针的属性ELEMENT用来确定显示图形中的某段是受控制的。

当然,本模型为共阴方式。

0.5      组激励器

有时候,需要在电路图中将两个相似的激励器当成一个来操作,该功能可以通过属性GANG来完成。例如,在下图所示的双向马达电路中,两个SPDT开关通过一个虚拟的机制来完成组操作:它们都有一个相同的赋值语句:

GANG=1

一般地,拥有相同的GANG属性值的所有激励器都将联合操作。

1.   可编程模型

1.1      支持PLD模型

PROSPICE提供一些基本元素模型,以支持设计可编程逻辑器件(PLD)模型。可编程逻辑器件为普通设备,它们可以进行编程,以完成相关的组合与时序功能。该设计周期包括PLD编程,它通过PLD生产厂家或第三方所提供的软件编译成一个JEDEC fuse map文件。该文件列出器件中的保险丝,它们可通过编程方式进行熔断或保持正常。作为一个JEDEC文件,该文件定义了一个标准格式,以便不同用户可以对一个物理器件进行编程规范使用。

为对PLD进行编程建模,所有的DSIM基本元素模型都将在本节中进行说明,并被配置为一个JEDEC文件,赋予相关模型控制属性为保险丝表达式。在仿真分析开始时(不是在模型编译成为MDF文件时),指定的JEDEC文件将被载入,其相应保险丝表达式的布尔结果将用来配置相应的基本元素模型。

请注意,所有支持PLD模型仅提供功能性支持,而没有传播(延迟)属性。您应当对输出端使用缓冲器或延迟对象来进行这方面的建模工作。

在第一次使用这些基本模型之前,提醒一点,PLD ISIS库已包括许多流行的PLD器件的模型,另外,在SAMPLES目录下有两个设计工程文件16L8.DSN22V10.DSN。这两个工程演示了如何将一个PLD库中的PLD器件链接到一个JEDEC文件,以及如何指定器件速度。另外,16L8.DSN工程中,在16L8的子模块中包括一个完整的16L8等价电路模型实例。在着手做您自己的模型之前参考一下应当是一个不错的主意。

1.2      保险丝表达式

一个保险丝表达式是一个由操作符所分隔开的一系列值,它将计算得到一个布尔值。保险丝表达式用于所有的支持PLD的基本模型中,以初始化模型的控制属性,针对FUSE基本模型来说,可以确定模型的输出。

在一个保险丝表达式中,一个值要么为一个常量,要么为一个在括号中的子表达式,如下所示:

T, TRUE

-

TRUE常量。其运算结果为布尔真值

F, FALSE

-

FALSE常量。其运算结果为布尔假值

Dn

-

输入管脚n。如果相应的输入为激活状态,则其值为真,如果相应的输入为非激活状态,则其值为假。请注意,并不是所有的保险丝表达式都允许引用输入管脚进行建模,用于初始化模型控制属性的表达式将不支持这样的引用。

n

-

整数(如,102310919),用于表示保险丝数目。如果保险丝被编程设置为熔断(即在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

其运行效果为一个使用求非保险编程数的41保险编程数,将根据由保险数1024(最高位)1023(最低位)组成的二位二进制数来选择四个输入中的一个(D0~D3),如果保险数1022已编程,则结果为所选出的输入的求非值。

不要担心保险表达式的长度,该表达式计算器也是一个优化过的预编译器,因此,即使一个很长的表达式(计算起来也很慢)其计算结果将会为12项。从根本上来说,JEDEC文件必须为一个ASCII文本文件,而保险数必须按行配置为相应的格式

[[whitespace]] Laddr [0|1] [[whitespace]] 0|1 [[whitespace]] etc *

各行包括空白字符,其后为字母L(大小写均可),紧随其后的是第一个保险数的十进制数。空白字符为任意能在文件中产生空格的字符,包括空格、换行符、TAB等。在此之后为一串01,之后可用多个空白字符进行分隔。序列的结果采用星号字符,它可位于最后的01之后,或者干脆它可以自成一行。以下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值表示相应的保险数被熔断,即该连接为断路。一个断路连接被认为是悬空状态,为逻辑高状态。

1.3      常见基本元素模型

1.3.1               电容模型 – CAPACITOR

这是一个纯的理想化器件。不考虑电阻、电感与泄漏。

电容模型支持以下属性:

属性

缺省值

描述

PRECHARGE

-

电容初始电压。该属性为PROSPICE对标准SPICE的扩展。如果没有指定该属性,则电容的初始电压值将取自工作点。

IC

-

电容初始电压,仅当未计算初始直流解时可用

1.3.2               电流源模型 – CSOURCE

尽管电流源是一个信号发生器,但本文将它在这里进行说明,因为在电路仿真分析时它是一个初等基本元素。

电流源没有什么需要保存的属性。

1.3.3               无损延迟线模型 – TRANLINE

该延迟线模型表示为一个无损传送线的行为。只针对一种传播模式进行了建模。如果在电路中所有4个节点都不相同,则应用两个延迟线来表示两个传播模式。可指定频率与归一化长度或时间延迟量。

无损延迟线模型有以下相应缺省值的属性:

属性

缺省值

描述

Z0

-

阻抗参数

F

1GHz

频率

TD

-

传输延迟

NL

0.25

给定频率的归一化长度

V1

0

1端初始化电压值

V2

0

2端初始化电压值

I1

0

1端初始化电流值

I2

0

2端初始化电流值

1.3.4               有损延迟线模型 – LOSSYLINE

统一的RLC/RC/LC/RG传输线模型(后称LOSSYLINE模型)针对常量分布传输线进行建模。RCLC情况下,也可用TRANLINEURCLINE模型;然而,新的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为一个标志,它针对RLCRC类型可防止基于卷积的缺省时间的限制误差。它可使仿真加速但可能在某些情况下降低结果精度。LININTERP为一个标志,如果该标志为TRUE,则在计算延迟信号时会使用线性插值算法,而不是缺省的二次插值算法。MIXEDINTERP为一个标志,如果该标志为TRUE,则使用米制来判断二次插值算法是否适于应用,如果不行,则会采用线性插值算法;否则,它将采用缺省的二次插值算法。TRUNCDONTCUT为一个标志,它移除缺省时间步长以限制实际数量相关脉冲响应计算误差。COMPACTRELCOMPACTABS为控制所保存历史值的数量指标,值越大,则精度越低,但可提高仿真速度。它们可与TRYTOCOMPACT仿真器选项一同使用。TRUNCNR为一个标志,它采用Newton-Raphson迭代法以在时间步长控制流程中决定适宜的时间步长。其缺省方式为试验性的,通过将上次的步长减半以产生新的差值。RELABS为控制断点设置的数量指标。

提高仿真速度的最值得试验的选项是REL。其缺省值为1,基于准确性的观点来看,它通常是安全的,但偶尔也会增加计算时间。如果使用大于2的值将消除所有的断点,也可一试,但应视电路剩余部分的本质而定。如果期望电路不显示突变,则可消除全部断点。如果期望设置较多的断点,可设置为在01之间的值。

TRYTOCOMPACT选项设置为仿真器的控制选项时,也可试一试COMPACTREL。其合法范围为0~1。值越大通常会降低仿真分析的精度但在某些情况下会提高速度。如果未指定TRYTOCOMPACT,不会压缩数据,并能取得较高精度。NOCONTROLTRUNCDONTCUTNOSTEPLIMIT也可提高精度,但其代价是降低速度。

1.3.5               统一RC传播线模型 – URCLINE

URC模型派生于L. Gertzberrg1974年所提出的模型。该模型将一个扩展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

单位长度的二极管电阻值

1.3.6               电感模型 – INDUCTOR

这是一个纯的理想化器件。不考虑电阻、非线性与饱和特性。通过赋值与命名方式处理互感。在ISIS中互感集合与多部件器件处理方式相同,该集合中所有对象同名,再附加上一个冒号与字母(L1:AL1:B)。互感值由其中一个元素中的MUTUAL_elem属性进行指定。Elem应当为相应的互感对象有元素代号,而该值为这两个元素间的互感值。如:

L1:A, MUTUAL_B=0.5

L1:B

表明两个电感,其间互感值为0.5。互感值必须在01之间取值。

示例工程MUTUAL1.DSNMUTUAL2.DSN演示了更多细节。

您不能并联两个电感,或将一个理想电压源直接作用于电感两端,电感的电阻为0,因此会产生无穷大的电流,或,仿真器将实际报告一个退化矩阵。

电感模型有以下相应缺省值的属性:

属性

缺省值

描述

IC

-

电感中的初始电流。该属性仅在未计算初始直流值时有作用

MUTUAL_elem

-

与相应电感之间的互感系数

1.3.7               模拟电阻模型 – RESISTOR

与电流源一样,电阻也是一个初等基本元素。电阻的温度模型通过两个参数来表示,分别定义一阶与二阶温度系数,如下方程所示:

其中

电阻模型有以下相应缺省值的属性:

属性

缺省值

描述

TC1

0.0

上式中的A

TC2

0.0

上式中的B

TEMP

27

电阻的实际温度值

TNOM

27

测量TC1TC2时的温度值

1.3.8               电压控制电压源模型 – VCVS

电压控制电压源为SPICE中所使用的一个初等基本元素,其输出电压值与输入电压值成比例。

电压控制电压源模型有以下相应缺省值的属性:

属性

缺省值

描述

GAIN

1.0

电压增益值

IC

-

控制源的初始条件

其中,参数GAIN也可由器件的value字段给出。

1.3.9               电压控制电流源模型 – VCCS

电压控制电流源为SPICE中所使用的一个初等基本元素,其输出电流值与输入电压值成比例。

电压控制电流源模型有以下相应缺省值的属性:

属性

缺省值

描述

GAIN

1.0

器件电导值

IC

-

控制源的初始条件

其中,参数GAIN也可由器件的value字段给出。

1.3.10          电流控制电压源模型 – CCVS

电流控制电压源为SPICE中所使用的一个初等基本元素,其输出电压值与输入电流值成比例,该输入电流值有以下几种情况:流经其输入管脚,通过电流探针,或由PROBE属性所指定的电压源。

电流压控制电压源模型有以下相应缺省值的属性:

属性

缺省值

描述

GAIN

1.0

器件电阻值

PROBE

-

电压源或电流探针名称

IC

-

控制源的初始条件

其中,参数GAIN也可由器件的value字段给出。

1.3.11          电流控制电流源模型 – CCCS

电流控制电流源为SPICE中所使用的一个初等基本元素,其输出电流值与输入电流值成比例,该输入电流值有以下几种情况:流经其输入管脚,通过电流探针,或由PROBE属性所指定的电压源。

电流压控制电流源模型有以下相应缺省值的属性:

属性

缺省值

描述

GAIN

1.0

器件电流增益

PROBE

-

电压源或电流探针名称

IC

-

控制源的初始条件

其中,参数GAIN也可由器件的value字段给出。

1.3.12          任意控制源模型 – AVSACS

任意控制电流电压源类型器件具有额外的更强功能。其输出由一个符号表达式所确定,该表达式可用任意数目的输入电压电流值来表示。

ASIMMDLS.LIB中的下列器件依赖于这种模型:

              AVCVS AVCCS ACCVS ACCCS SUMMER MULTIPLIER

可在器件的value字段中录入表达式,如果需要更多的内容,您可以在VALUE属性中使用一个赋值语句。

在表达式中,电压输入值可用V(A)V(B)V(C)等符号表示,这些值为相应管脚ABC的电压值。系统还支持V(A,B)这种形式,表示管脚AB之间的电压差值。

电流管脚值可用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则返回y,如果x>z则返回z,其它情况将返回x

pwr函数有两个参数,它计算|x|y次方。而pwrs带有符号,即当x>=0时,返回|x|^y;而当x<0时返回-|x|^y。这两个函数为标准SPICE3F5的扩展,用以与PSPICT相兼容。

ustp函数为阶跃函数,当其参数值大于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可求得xy次方,也可用pwr函数来达到这个目的。

如果函数loglnsqrt的参数为负值,则会使用其绝对值。如果一个除法运算、lnlog函数参数为0,则会导致出错,使得仿真分析无法继续。

可将一个电容与电流源并联,在零初始条件下即可得到一个时间值(A value for time)

该斜坡电压可用于sincos等函数以构造FM信号发生器、压控振荡器及其它功能模型。

请注意:任意控制源基本元素自身不能提供时间步长控制,这将导致仿真器错过输出函数的快速转换。可采用两个应付措施:

l         设置最大时间步长属性TMAX为一个足够小的值

l         在信号发生器的输出端连接两个串联的背靠背二极管。在这种情况下,因为二极管的存在,会在这部分器件中引入时间步长控制机制,而不会改变电路的功能效果。

我们希望在后续的发布版本中实现适宜的时间步长控制,尽管这些使用Berkeley代码的模型确实很难实现。(陈斌文注:Berkeley,伯克利,提出Spice模型的那位教授,这是我的理解,不知道是否正确)

1.3.13          模拟二极管模型 – DIODE

SPICE3F5二极管模型可用于所有类型的二极管的建模工作,包括ZernerVaractor类型。

二极管模型有以下参数:

属性

缺省值

描述

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

温度测量参数

二极管的直流指标由参数ISN决定,包括体串联电阻RS。充电效果由渡越时间TT及一个由参数CJOVJM所确定的非线性耗散电容(势垒电容)来描述。能量参数EG、饱和电流温度指数XTI可确定饱和电流温度,在这些参数中的温度均可测量。反向击穿效果(Zener)可用反向电流指数函数建模,其中包括BVIBV参数(这两个参数均为正值)

ISRSCJO与面积因子相关。

你可能感兴趣的:(Proteus深入研究(三.3): VSM SDK翻译 (47~72/289))