本文仅记录了可用于LTspice
的部分SPICE语法,更多的命令语句可以查阅LTspice中的help(默认的快捷键为F1
)。
元件的命名必须以指定的字母为开头,各种元件名称首字母规定如下:
元件名 | 首字母 |
---|---|
砷化镓场效应晶体管 | B |
电容 | C |
二极管 | D |
电压控制电压源 | E |
电流控制电流源 | F |
电压控制电流源 | G |
电流控制电压源 | H |
独立电流源 | I |
结型场效应晶体管 | J |
耦合电感(变压器) | K |
电感 | L |
MOS场效应晶体管 | M |
双极型晶体管 | Q |
电阻 | R |
电压控制开关 | S |
传输线 | T |
独立电压源 | V |
子电路 | X |
Rname N+ N- value [TC=TC1, TC2]
N+
和N-
是节点名称,电流方向从N+
流向N-
,value
为电阻值,单位为 Ω \Omega Ω,值可正可负但不能为0。TC1
和TC2
是电阻的温度系数,满足
R v a l u e = v a l u e [ 1 + T C 1 ( T − T N O M ) + T C 2 ( T − T N O M ) 2 ] R_{value}=\mathrm{value}[1+\mathrm{TC1(T-T_{NOM})+TC2(T-T_{NOM})^{2}}] Rvalue=value[1+TC1(T−TNOM)+TC2(T−TNOM)2]
式中 T N O M \mathrm{T_{NOM}} TNOM为室温,可在选项中设置,默认值为27℃。
Lname N+ N- value [IC = initial_current]
IC = initial_vurrent
是起始电流值,value
的单位是H。方括号内的部分是可选的。
Cname N+ N- value [IC = initial_voltage]
IC = initial_voltage
是起始电压值,value
的单位是F。方括号内的部分是可选的。
Vname N+ N- [DC value] [AC magnitude phase]
[PULSE V1 V2 td tr tf pw per]
[SIN VO Va freq td df phase]
[EXP V1 V2 td1 t1 td2 t2]
[PWL t1 V1 t2 V2 ... tn Vn]
[SFFM VO Va freq md fs]
Iname N+ N- [DC value] [AC magnitude phase]
[PULSE I1 I2 td tr tf pw per]
[SIN IO Ia freq td df phase]
[EXP I1 I2 td1 t1 td2 t2]
[PWL t1 I1 t2 I2 ... tn In]
[SFFM IO Ia freq md fs]
独立电压源和独立电流源都可以用于直流分析、交流分析和瞬态分析,一个独立源每一次仿真只能使用一种源。
程序文件的第一行是标题,无论写什么,程序都会将其定义为标题。
注释行以*
号开头。
.OP
该命令可以对电路进行静态工作点分析。输出各节点电压值,电路中电压源的电流和功耗,电路中二极管的参数。
.DC SOURCE_NAME START_VALUE STOP_VALUE INCREMENT_VALUE
也可以在后面多加一组电源参数,用作双扫描。
.TRAN TSTEP TSTOP
在进行瞬态分析的时候,需要用到一些信号发生源,一般使用独立电源
来进行设置。
SPICE一共提供了五种信号源。
PULSE (V1 V2 td tr tf pw per)
EXP (V1 V2 td1 tau1 td2 tau2)
PWL (T1 V1 T2 V2 ... Tn Vn)
每一对(时间-电压)值对应信号源的一点,时间按递增顺序排列。各点之间的电压值由线性插值得到。
SIN (Vo Va freq td df phase)
输出信号满足以下公式:
v ( t ) = V o + V a sin [ 2 π ( f r e q ( t − t d ) − ( p h a s e 360 ) ] e − ( t − t d ) d f v(t)=V_{o}+V_{a}\sin\left[ 2\pi(\mathrm{freq(t-td)-\left( \frac{phase}{360} \right)} \right]e^{-\mathrm{(t-td)df}} v(t)=Vo+Vasin[2π(freq(t−td)−(360phase)]e−(t−td)df
SFFM (Vo Va fc mdi fs)
输出信号满足以下公式:
v ( t ) = V o + V a [ sin ( 2 π ∗ f c ∗ t ) + m d i ∗ sin ( 2 π ∗ f s ∗ t ) ] v(t)=V_{o}+V_{a}[\sin(2\pi*\mathrm{fc*t})+\mathrm{mdi}*\sin(2\pi*\mathrm{fs*t})] v(t)=Vo+Va[sin(2π∗fc∗t)+mdi∗sin(2π∗fs∗t)]
.NODESET V(node1)=value1 V(node2) = value2
.AC FREQ_VAR NP FSTART FSTOP
.TF OUTPUT_VARIABLE INPUT_SOURCE
用于计算电路的小信号增益和输入、输出阻抗
.SENS OUTPUT_VARIABLE
如果一个电路包含元件(R1、R2、R3、Vs1),输出变量为Vx,则该命令计算公式为
∂ V x ∂ R i , ∂ V x ∂ V S 1 , i = 1 , 2 , 3 绝对灵敏度 \frac{\partial V_{x}}{\partial R_{i}}, \frac{\partial V_{x}}{\partial V_{S1}},i=1,2,3 \quad 绝对灵敏度 ∂Ri∂Vx,∂VS1∂Vx,i=1,2,3绝对灵敏度
∂ V x ∂ R i ( R i 100 ) , ∂ V x ∂ V S 1 ( V S 1 100 ) , i = 1 , 2 , 3 相对灵敏度 \frac{\partial V_{x}}{\partial R_{i}}\left( \frac{R_{i}}{100} \right), \frac{\partial V_{x}}{\partial V_{S1}}\left( \frac{V_{S1}}{100} \right),i=1,2,3 \quad 相对灵敏度 ∂Ri∂Vx(100Ri),∂VS1∂Vx(100VS1),i=1,2,3相对灵敏度
.TEMP TEMP1 TEMP2 TEMP3 ... TEMPN
.DC TEMP START_VALUE STOP_VALUE INCREMENT
.PARAM PARAMETER_VALUE = VALUE
.PARAM PARAMETER_NAME = {MATHEMATICAL_EXPRESSION}
{}
内以下函数可以用在参数定义的数学表达式中
函数 | 表达式 |
---|---|
ABS(X) | ∣ X ∣ \lvert X\rvert ∣X∣ |
ACOS(X) | cos − 1 ( X ) \cos ^{-1}(X) cos−1(X) |
ASIN(X) | sin − 1 ( X ) \sin ^{-1}(X) sin−1(X) |
ATAN(X) | tan − 1 ( X ) \tan ^{-1}(X) tan−1(X) |
ATAN2(Y,X) | tan − 1 ( Y / X ) \tan ^{-1}(Y/X) tan−1(Y/X) |
COS(X) | cos ( X ) \cos(X) cos(X) |
DDT(X) | d X d t \frac{\mathrm{d}X}{\mathrm{d}t} dtdX |
EXP(X) | e X e^{X} eX |
IMG(X) | ℑ [ X ] \Im[X] ℑ[X] |
LOG(X) | ln ( X ) \ln(X) ln(X) |
LOG10(X) | log 10 X \log_{10}X log10X |
MAX(X,Y) | max ( X , Y ) \max (X,Y) max(X,Y) |
MIN(X,Y) | min ( X , Y ) \min (X,Y) min(X,Y) |
M(X) | ∣ X ∣ \lvert X\rvert ∣X∣ |
P(X) | ∠ X \angle X ∠X |
PWR(X) | ∣ X ∣ Y \lvert X\rvert^{Y} ∣X∣Y |
R(X) | ℜ [ X ] \Re[X] ℜ[X] |
SDT(X) | ∫ X d x \int X \, \mathrm{d}x ∫Xdx |
SGN(X) | s g n ( X ) \mathrm{sgn}(X) sgn(X) |
SQRT(X) | X \sqrt{ X } X |
SIN(X) | sin ( X ) \sin(X) sin(X) |
TAN(X) | tan ( X ) \tan(X) tan(X) |
.STEP SWEEP_TYPE SWEEP_NAME START_VALUE END_VALUE INCNP
.STEP SWEEP_NAME LIST
如改变让电阻R1的阻值在1k、2k、3k下分别进行仿真,该语句可写为
.STEP PARAM R1 1K 3K 1K
.STEP PARAM R1 LIST 1K 2K 3K
.FUNC FUNC_NAME (ARG) {BODY}
内嵌函数
不同使用将某一局部电路视为一个系统进行仿真,而不是将其视为由若干简单元件组成的复杂网络。
常用于ABM模型的元件有电压控制电压源E和电压控制电流源G。
通用格式为:
ENAME CONNECTING_NODES ABM_KEYWORD ABM_FUNCTION
GNAME CONNECTING_NODES ABM_KEYWORD ABM_FUNCTION
NAME N+ N- VALUE = {(EXPRESSION)}
内嵌函数
VALUE后面必须有一个空格;EXPRESSION必须写在一行,否则下一行需要以+
号开头。
NAME N+ N- TABLE {EXPRESSION} = <
+
号开头NAME N+ N- FREQ {EXPRESSION} = FREQUENCY VALUE,MAGNITUDE IN DB,PHASE VALUE
+
号开头NAME N+ N- LAPLACE {EXPRESSION} = {TRANSFORM}
.MC NUM_RUNS ANALYSIS OUTPUT_VARIABLE FUNCTION OPTIONS [SEED=VALUE]
元件的容差需要使用.MODEL
语句中进行设置,有两方式,格式为
[DEV/DISTRIBUTION] [%]
[LOT/DISTRIBUTION] [%]
DEV为元件容差,允许每个元件单独变化。
LOT为系统容差,规定同类元件的容差同时变化。
DISTRIBUTION为分布类型,主要包括以下三种:
例如,使用.MODEL
语句修改元件的DEV误差
R1 1 2 RMOD1 10k
R2 2 3 RMOD1 50k
.MODEL RMOD1 RES (R=1 DEV = 10%)
让R1和R2独立变化,最大的变化值为10%。
.WCASE ANALYSIS OUTPUT_VARIABLE FUNCTION [OPTIONS]
.FOUR FUNDA_FREQUENCY NUMBER_OF_HARMONICS OUTPUT_VARIABLE
参考资料:
[1] John Okyere Attia etc.PSpice和MATLAB总和电路仿真与分析[M].北京:机械工业出版社, 2016