前言:
由于现在需要找实习,还啥也不会呢,不知道咋地就对模拟有点感兴趣,就去图书馆借了本模拟集成电路的书,看了一两章,感觉东西不少于是想整理下来,虽然现在常用的SPICE仿真软件都有很好的GUI界面例如Cadence,在用仿真库中的元器件连成原理图后就可以进行仿真(当然要设置必要的仿真参数),但实际上只是用原理图自动产生了SPICE的格式语句,还是要通过读取语句来进行仿真,这是历史的遗留问题。
在spice早期研究的技术条件下,无法用图形方式输入电路结构,只能通过文本文件来描述,也就是所谓网表。SPICE软件的设计者规范了要进行仿真的电路对应的SPICE网表文件格式,还定义了许多仿真描述语句和分析控制语句等,使仿真软件能通过读取这些特殊信息来进行相关计算和运行,最后获得要求的结果。
因为技术的进步,虽然现在已经不需要手工书写并输入网表了,但了解一些基本语句还是很有用的,不仅可以理解仿真时要设置的那些参数的含义,而且在出错时还易于通过网表来排错。
SPICE仿真软件基础
SPICE网表文件是文本文件,默认的输入文件名为:*_.cir_
因为目前各个版本的SPICE软件都已图形化,并增加了很多功能,所以产生的语句顺序和格式有了一些变化,但主要是以*开头的注释语句的不同变化,便于阅读和模块化,而基本的语句变化不大,包括以下几种:
标题语句:网表文件第一行为标题语句,由任意字符串和字母组成,软件并不处理,而是直接在输出文件中作为第一行打印出来
注释语句:由*开头的字符串,为文件的说明部分,为方便阅读而在自动产生的SPICE网表文件中大量存在
电路描述语句:定义电路拓扑结构和元器件参数的语句,由元器件描述语句、模型描述语句、电源语句等组成
电路特性分析和控制语句:以.开头的语句,描述要分析的电路特性及控制命令
结束语句:即.END ,标志电路描述语句的结束,在文件最后一行(最后将会给出SPICE网表文件的例子)
电路描述语句:
是SPICE网表文件中最多也最复杂的,有以下一些规定:
名称:为字符串,只有前8个字符有效,其中第一个字符必须为A–Z的字符,且有固定含义,对应不同类型的元件。
符号 元件名 符号 Table 符号 Cool 符号 Cool B GaAs场效应晶体管 C 电容 D 二极管 X 子电路 E 电压控制电压源 F 电流控制电压源 G 电压控制电流源 H 电流控制电压源 I 独立电流源 J 结型场效应晶体管 K 互感和磁芯 L 电感 M MOS场效应晶体管 Q 双极性晶体管 R 电阻 S 电压控制开关 T 传输线 U 数字电路器件 V 独立电压源 W 电流控制开关 数字:有几种形式,整数、浮点数、整数或浮点数加上整数指数、浮点数或整数后面加上比例因子,常用的比例因子:有T、G、MEG、K、M、U、N、P、F、MIL等,不分大小写
T=10E12 G=10E9 MEG=10E6 K=10E3 MIL=25.4E-6 M=10E-3 U=10E-6 N=10E-9 P=10E-12 F=10E-15 分隔符:有空格、逗号、等号、左括号、右括号等
续行号:“+”,一行最多只能有80字符,如一行无法表达完全,可在第二行起始加+号,表示是前一行的继续
单位:使用国际标准单位制,语句中缺省
规定支路电流的正方向和支路电压的正方向一致
节点编号:可以是任意的数字或字符串,节点0规定为地,不允许有悬浮的节点,即每个节点对0节点都必须有直流的通路。当实际电路不满足这个要求时,可在悬浮节点与地之间接一个大电阻(如1G)
不能分析的问题:电压源回路、电感回路、电压源和电感组成的回路、隔断的电流源和(或)电容
无源元件描述语句
电阻描述语句
RXXXXXXX N+ N- <(MODEL)NAME> VALUE <TC=TC1>
1 | RXXXXXXX //元件名称 |
例句:R4 0 3 RMOD 100
.MODEL RMOD RES(R=2 TC1=0.1 TC2=0.01)
电容电感描述语句
CXXXXXXX N+ N- <(MODEL)NAME> VALUE <IC=INCOND>
LXXXXXXX N+ N- <(MODEL)NAME> VALUE <IC=INCOND>
1 | VALUE //电容电感的值,不能为零 |
互感描述语句
KXXXXXXX LYYYYYYY LZZZZZZZ … VALUE <(MODEL)NAME> <(SIZE)VALUE>
1 | KXXXXXXX、LYYYYYYY //是两个耦合电感的名称,也可以多个耦合电感按顺序写 |
磁芯模型关键字 | 磁芯模型关键字 | 单位 | 缺省值 |
---|---|---|---|
AREA | 平均磁通横截面积 | cm2 | 0.1 |
PATH | 平均磁路长度 | cm | 1 |
GAP | 有效气隙长度 | cm | 0 |
PACK | 叠层系数 | - | 1 |
MS | 磁饱和电流 | A/m | 1.00E+06 |
ALPHA | 平均磁场系数 | - | 1.00E-03 |
A | 形状参数 | A/m | 1.00E+03 |
C | 磁畴壁的挠曲常数 | - | 0.2 |
K | 磁畴壁的销连常数 | - | 500 |
无损传输线描述语句
TXXXXXXX N1 N2 N3 N4 Z0-VALUE <TD=VALUE> <F=FREQ <NL=NRMLEN>>+<IC=V1,I1,V2,I2>
1 | N1、N2 //端口1的正负节点 |
电压控制开关描述语句
SXXXXXXX N+ N- NC+ NC- <(MODEL)NAME>
1 | N+ N- //分别是开关的正负节点 |
电流控制开关的描述语句
WXXXXXXX N+ N- VNAME <(MODEL)NAME>
1 | N+ N- //分别是开关的正负节点 |
有源元件描述语句
二极管描述语句
DXXXXXXX N+ N- MNAME <IC=VD>
1 | N+ N- //为二极管的正负节点 |
半导体二极管参数表(其中带*的受面积参数影响) | ||||
---|---|---|---|---|
符号 | 名称 | 默认值 | 典型值 | 单位 |
IS | 饱和电流* | 1.00E-14 | 1.00E-14 | A |
RS | 寄生串联电阻* | 0 | 10 | ohm |
N | 发射系数 | 1 | ||
TT | 渡越时间 | 0 | 0.1 | ns |
CJO | 零偏PN结电容 | 0 | 2 | pF |
VJ | PN结电势 | 1 | 0.6 | V |
M | PN结梯度因子 | 0.5 | 0.5 | |
EG | 禁带宽度 | 1.11 | 1.11 | eV |
XT1 | IS的温度系数 | 3 | 3 | |
KF | 闪烁噪声系数 | 0 | ||
AF | 闪烁噪声指数 | 1 | ||
FC | 正偏耗尽层电容系数 | 0.5 | ||
BV | 反向击穿电压 | 无穷大 | 50 | V |
IBV | 反向击穿电流* | 1.00E-10 | A |
双极型晶体管描述语句
QXXXXXXX NC NB NE MNAME <IC=VBE,VCE>
1 | NC NB NE NS //分别是双极型晶体管的集电极、基极、发射极以及衬底所在节点,NS缺省表示衬底接地 |
双极型晶体管模型的参数表(带*的受面积参数影响) | ||||
---|---|---|---|---|
符号 | 名称 | 默认值 | 典型值 | 单位 |
IS | 饱和电流* | 1.00E-16 | ||
BF | 理想最大正向电流放大系数 | 100 | 100 | |
NF | 发射系数 | 1 | 1 | |
VAF(VA) | 正向BTEA电压 | 无穷大 | 100 | V |
IKF(IK) | 正向BTEA大电流下降点,正向膝点电流 | 无穷大 | 1.00E-02 | A |
ISE(C2) | 基极-发射极漏饱和电流 | 0 | 1000 | A |
NE | 基极-发射极漏发射系数 | 1.5 | 2 | |
BR | 理想最大反向电流放大系数 | 1 | 0.1 | |
NR | 反向电流发射系数 | 1 | ||
VAR(VB) | 反向ERALY电压 | 无穷大 | 100 | V |
IKR | 反向BETA大电流下降点,正向膝点电流* | 无穷大 | 0.1 | A |
ISC(C4) | 基极-集电极漏饱和电流 | 0 | 1 | A |
NC | 基极-集电极漏发射系数 | 2 | 2 | |
RB | 零偏基极电阻* | 0 | 100 | ohm |
RBM | 大电流时最小基极电阻 | RB | 100 | ohm |
IRB | 基极电阻下降为Rb-Rbmin/2时的电流 | 无穷大 | A | |
RE | 发射极电阻* | 0 | 1 | ohm |
RC | 集电极电阻* | 0 | 10 | ohm |
CJE | 零偏集电极PV结电容* | 0 | 2 | pF |
VJE | 发射结内建电势 | 0.75 | 0.7 | V |
MJE(ME) | 发射结梯度因子 | 0.33 | 0.33 | |
CJC | 零偏集电极PN结电容* | 0 | 1 | pF |
VJC(PC) | 集电结内建电势 | 0.75 | 0.5 | V |
MJC(MC) | 集电结梯度因子 | 0.33 | 0.33 | |
XCJC | Cbc与Rb内连接部分 | 1 | ||
CJS(CCS) | 零偏集电极-衬底PN结电容 | 0 | 2 | pF |
VJS(PS) | 衬底结内建电势 | 0.75 | V | |
MJS(MS) | 衬底结梯度因子 | 0 | ||
FC | 正偏势垒电容参数 | 0.5 | ||
TF | 理想正向渡越时间(tf) | 0 | 0.1 | s |
XTF | tf随偏置变化系数 | 0 | ||
VTF | tf随偏置Vbe变化的电压参数 | 无穷大 | V | |
ITF | 影响tf的大电流参数 | 0 | A | |
PTF | 在1/(2PIt)Hz时的超前相移 | 0 | PI/6 | RAD |
TR | 反向渡越时间 | 0 | 10 | ns |
EG | 禁带宽度 | 1.11 | 1.11 | eV |
XTB | BR、BF的温度系数 | 0 | ||
XT1(PT) | IS的温度效应指数 | 3 | ||
KF | 闪烁噪声系数 | 0 | 6.60E-16 | |
AF | 闪烁噪声指数 | 1 | 1 |
MOS场效应晶体管描述语句
MXXXXXXX ND NG NS NB MNAME <L=VAL> <W=VAL> <AD=VAL> <AS=VAL> <PD=VAL> <PS=VAL>+<NRD=VAL> <NRS=VAL>
1 | ND NG NS NB //分别是MOS场效应晶体管的漏极、栅极、源极和衬底所在的节点 |
结型场效应晶体管描述语句
JXXXXXXX ND NG NS MNAME
1 | ND NG NS //分别是结型场效应晶体管的漏极、栅极、源极所在的节点 |
GaAs场效应晶体管描述语句
BXXXXXXX ND NG NS MNAME
1 | ND NG NS //分别是GaAs场效应晶体管漏极、栅极、源极所在的节点 |
数字电路器件描述语句
UXXXXXXX
UXXXXXXX <STIM (WIDTH)VALUE,(FORMAT)VALUE>
1 | 前一种表示数字电路,名称后是类型、参数值、节点、定时模型名、输入输出模型名 |
元器件库调用语句
.LIB
//filename为库文件名,必须带扩展名.lib,缺省名为nom.lib,列出所有库文件
电源描述语句
独立电源描述语句
独立电压源描述语句:
VXXXXXXX N+ N- <(DC)DC/TRAN VALUE> <AC (ACMAG (ACPHASE))>
独立电流源描述语句:
IXXXXXXX N+ N- <(DC)DC/TRAN VALUE> <AC (ACMAG (ACPHASE))>
1 | //N+ N-为电源的正负节点,电流源的电流正方向为使电流从N+节点流出并流入N-节点 |
独立电源按直流、交流、瞬态源等可细分为如下几种:
直流电源
直流电压源:VXXXXXXX N+ N- [DC] VALUE
直流电流源:IXXXXXXX N+ N- [DC] VALUE
交流电源
交流电压源:VXXXXXXX N+ N- AC <ACMEG
交流电流源:IXXXXXXX N+ N- AC <ACMEG
1 | //ACMEG为正弦波幅值,缺省值为1 |
瞬态电源
脉冲电压源:VXXXXXXX N+ N- PULSE (V1 V2 TR TF PW PER)
脉冲电流源:IXXXXXXX N+ N- PULSE (I1 I2 TR TF PW PER)
1 | V1 I1 //为起始值 |
瞬态正弦电源
瞬态正弦电压源:VXXXXXXX N+ N- SIN (V0 VA F TD THETA)
瞬态正弦电流源:IXXXXXXX N+ N- SIN (I0 IA F TD THETA)
1 | //V0 I0为偏置值 |
瞬态指数电源
瞬态指数电压源:VXXXXXXX N+ N- EXP(V1 V2 TD1 TAU1 TD2 TAU2)
瞬态指数电流源:IXXXXXXX N+ N- EXP(I1 I2 TD1 TAU1 TD2 TAU2)
1 | //V1 I1为初始值 |
分段线性电源
分段线性电压源:VXXXXXXX N+ N- PWL (T1 V1 <T2 V2 T3 V3 T4 V4 …>)
分段线性电流源:IXXXXXXX N+ N- PWL (T1 I1 <T2 I2 T3 I3 T4 I4 …>)
瞬态单调调频电源
瞬态单调调频电压源:VXXXXXXX N+ N- SEFM (V0 VA FC MDI FS)
瞬态单调调频电流源:IXXXXXXX N+ N- SEFM (I0 IA FC MDI FS)
1 | //V0 I0为偏置 |
线性受控源描述语句
压控电压源:EXXXXXXX N+ N- NC+ NC- VALUE
压控电流源:GXXXXXXX N+ N- NC+ NC- VALUE
流控电流源:HXXXXXXX N+ N- VNAME VALUE
流控电流源:FXXXXXXX N+ N- VNAME VALUE
1 | //NC+ NC-为控制电压支路的正负节点 |
分析语句
直流分析
直流工作点分析: .OP
直流扫描分析:**.DC
VAR START STOP INC ** 1
2
3
4
5//TYPE为扫描类型,线性为LIN、数量级为DEC、倍频程为OCT、列表为LIST
//VAR为扫描变量
//START STOP为扫描变化范围
//INC是扫描步长或者点数,必须为正数
//VAR2是第二个扫描变量(外循环),可选项直流小信号传输函数分析:**.TF OUTVAR INSRC**
1
2//OUTVAR为输出变量
//INSRC为小信号输入源名称直流小信号灵敏度分析:**.SENS**
节点电压设置:**.NODESET**
交流分析
交流小信号分析:**.AC TYPE Nx FSTART FSTOP**
1
2
3
4
5
6线性 .AC LIN NP FSTART FSTOP
数量级 .AC DEC ND FSTART FSTOP
倍频程 .AC OCT NO FSTART FSTOP
//NP为步长
//ND为变化点数
//NO为变化点数噪声分析:**.NOISE OUTV INSRC NUMS**
1
2
3OUTV为某节点上总的噪声输出电压
INSRC为作噪声输入基准的独立电压源或独立电流源名
NUMS为频率间隔点数,在每个频率处打印出电路中每个噪声源的贡献瞬态分析
时域波形分析:**.TRAN TSTART TSTOP DISPSTART STEPMAX**
1
2
3
4//TSTART为起点时间
//TSTOP为终点时间
//DISPSTART为显示起点
//STEPMAX为瞬态分析最大步长,可缺省而由系统选傅立叶分析:**.FOUR FREQ OV1 <OV2 OV3 …>**
1
2//FREQ为基频
//OV1 OV2 OV3为要求的输出变量瞬态初始条件设置:**.IC**
综合分析
最坏情况分析:**.WCASE (ANALYSIS) (OUTVAR)
1
2
3
4//ANALYSIS为DC/AC/TRAN中的一种
//OUTVAR为输出变量,电压、电流等
//FUNCTION为求值函数,有多种选择
//OPTION为输出形式,LIST列每次运行模型参考值,OUTPUT输出文件或图形蒙特卡罗分析:**.MC (RUNSVAL) (ANALYSIS)
1
2//RUNSVAL为运行次数
//OUTPUTVAR为输出变量,电压、电流等参数扫描分析:**.STEP**
1
2
3
4
5线性扫描 .STEP (LIN) VAR START STOP INC
数量级倍频程扫描 .STEP <DEC> <OCT> VAR START STOP ND
列表扫描 .STEP VAR LIST VAL1 <VAL2 ...>
//INC为步长
//ND为变化点数温度分析:**.TEMP**
控制语句
别名设置语句:**.ALIASES和.ENDALIAS**,中间为设置内容
文本输出文件中打印:**.PRINT**
文本输出文件中绘图:**.PLOT**
绘图软件包调用:**.PROBE**
参数及表达式设置:**.PARAM (NAME1=VALUE1) <NAME2=VALUE2> …**
//其中的VALUE也可用表达式EXPR
选择项设置:**.OPTION**
函数定义:**.FUNC**
1
2
3
4
5PSPICE中的PROBE控制语句:
当输入文件中加入了.PROBE控制语句后,扫描计算结果存入*.dat文件中,可直观观察扫描结果
PROBE自动将横坐标设为扫描变量,纵坐标需手动添加
PROBE提供Cursor工具,方便使用鼠标的左右键控制两个光标,
沿选定曲线进行测量,还有小窗口显示光标对应的值还有两光标间的差值变量扫描
对一些仿真参数,PSPICE可设置为变量,通过设置其变化范围,仿真出不同的结果,以便进行对照以选择最佳值
如:可把双极型晶体管的偏置电阻设为变量,仿真出不同偏置电阻值时的放大系数及集电极电流等参数,最终可选择最佳的偏置电阻值
可进行变量扫描的参数如下:
- 独立源类:任何独立电压源和独立电流源都可以作为扫描变量
- 模型参数类:任何一个.MODEL中描述的模型参数都可作为扫描变量,如温度系数、场效应管的沟道长度和宽度等
- 温度变量:以TEMP作为扫描变量,可以观察在不同温度下的电路特性
- 总体参数:对元器件值扫描,必须通过模型的设置来实现
熟练使用参数的变量扫描,可大大提高仿真效率
SPICE软件的适用范围及缺点
- SPICE是进行元器件级的仿真,对含元器件少的功能较单一的电路进行仿真较合适和准确,比如放大器、调制器等,但对结构复杂且器件较多的电路进行分析则比较费时,结果也可能偏离较大。
- Spice采用变步长算法,对于周期性开关状态变化的电力电子电路而言,将造成把大量的时间耗费在寻求合适的步长上面,从而导致计算时间的延长。
- SPICE的器件模型都是针对小功率电子器件的,而对于电力电子电路中所用的大功率器件存在的高电压、大注入现象不尽适用,有时甚至可能导致错误的结果。
- SPICE的另一问题是仿真的收敛性问题,在对复杂电路进行仿真时,有时数据的准确性较低,甚至常出现不能收敛而导致仿真失败。SPICE软件更适合模拟电路仿真,可以做一些简单的数字电路仿真,但用于数模混合电路时很容易出问题。
- SPICE模型的分析精度主要取决于模型参数的来源(即数据的精确性),以及模型方程式的适用范围,而模型方程式与各种不同的数字仿真器相结合时也可能会影响分析的精度。
- SPICE对元器件模型的依赖性很大,但这些参数通常都属于设计者和制造商的知识产权和机密,常因缺乏模型导致仿真无法实现。目前美国、欧洲的半导体厂商的分立元件的SPICE模型较多,特别是著名厂商网站上都可下载,但日本生产的元件就很少有模型,而IC的模型更是少得多,通常还要购买。
- SPICE最早主要是为集成电路设计开发的,半导体模型参数设计太多工艺参数和材料特性,而不是用户手册上的使用参数,使用非常不便,在遇到模型库中未有的元件时,就难以仿真。虽然一些公司的SPICE软件也有新建元器件模型的界面,如PSPICE,但因参数涉及很多微电子专业的术语,使用者不容易理解和转换。
- 因各方面原因,仿真结果与实际调试出的电路的测试结果都有一些误差,而且常常在50%以上。
- SPICE在应用于一些脉冲电路时,如方波发生器、多谐振荡器、单稳触发器、迟滞比较器等,也常常无法得到正确结果。
- 许多谐振器和振荡器电路都难以仿真。
- RF电路仿真能力较差,阻抗匹配和阻抗园图等都难以使用,各种端口参数也难以实现。
- 在磁性元件的模型方面Spice也有待加强。
SPICE网表文件的实例
是软件AIM-Spice附带的实例,而直观的原理图却没有提供,可自己试着画出来
(AIM-Spice是一个文本输入的Spice软件,功能单一且原始,但可免费下载,便于学习Spice。)其电路原理图及交流小信号分析和瞬态分析波形如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45difpair ckt - simple differential pair
vin 1 0 sin(0 0.1 5meg) ac 1
vcc 8 0 12
vee 9 0 -12
q1 4 2 6 qnl
q2 5 3 6 qnl
rs1 1 2 1k
rs2 3 0 1k
rc1 4 8 10k
rc2 5 8 10k
q3 6 7 9 qnl
q4 7 7 9 qnl
rbias 7 8 20k
.model qnl npn(bf=80 rb="100" ccs="2pf" tf="0".3ns tr="6ns" cje="3pf" cjc="2pf"
+ va="50")
2. 用ORCAD10中附带的PSPICE模块自动产生的网表文件的实例(删去了空行):
**** 11/15/08 16:12:15 ******* PSpice 10.0.0 (Jan 2003) ******* ID# 1111111111
** Profile: "SCHEMATIC1-bias" [ D:\My Documents\orcad\transistor-pspicefiles\schematic1\bias.sim ]
**** CIRCUIT DESCRIPTION
******************************************************************************
** Creating circuit file "bias.cir"
** WARNING: THIS AUTOMATICALLY GENERATED FILE MAY BE OVERWRITTEN BY SUBSEQUENT SIMULATIONS
*Libraries:
* Profile Libraries :
* Local Libraries :
* From [PSPICE NETLIST] section of e:\OrCAD\OrCAD_10.0\tools\PSpice\PSpice.ini file:
.lib "nom.lib"
*Analysis directives:
.TRAN 0 20ms 10ms
.PROBE V(alias(*)) I(alias(*)) W(alias(*)) D(alias(*)) NOISE(alias(*))
.INC "..\SCHEMATIC1.net"
**** INCLUDING SCHEMATIC1.net ****
* source TRANSISTOR
Q_Q1 N00286 N00312 N00298 Q2N3904
R_R1 N00312 N00256 470k
R_R2 N00286 N00256 2.2k
R_R3 0 N00298 47
R_R5 0 N00374 10k
C_C1 N00423 N00312 100n
C_C2 N00286 N00374 100n
V_V1 N00256 0 6Vdc
V_V2 N00423 0 DC 0 AC 1
+SIN 0 1m 1k 0 0 0
**** RESUMING bias.cir ****
.END