SPICE语法

SPICE语法

本文仅记录了可用于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 Ω值可正可负但不能为0TC1TC2是电阻的温度系数,满足
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(TTNOM)+TC2(TTNOM)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    
  • TSTEP:绘图增量
  • TSTOP:结束时刻
  • :可选。仿真开始时刻
  • :可选。仿真的最大步长
  • :可选。用来指定电容元件和电感元件的初值

在进行瞬态分析的时候,需要用到一些信号发生源,一般使用独立电源来进行设置。
SPICE一共提供了五种信号源。

脉冲信号源
PULSE (V1 V2 td tr tf pw per)
  • V1:脉冲初始值
  • V2:脉冲电压值
  • td:延迟时间
  • tr:上升时间,默认值为TSTEP
  • tf:下降时间,默认值为TSTEP
  • pw:脉冲宽度,默认值为TSTOP
  • per:脉冲周期,默认值为TSTOP
指数信号源
EXP (V1 V2 td1 tau1 td2 tau2)
  • V1:初始值,必须设置
  • V2:峰值,必须设置
  • td1:上升延迟时间,默认值为0
  • tau1:上升时间常数,默认值为TSTEP
  • td2:为下降延迟时间,默认值为(td1+TSTEP)
  • tau2:下降时间常数,默认值为TSTEP
分段线性信号源
PWL (T1 V1 T2 V2 ... Tn Vn)

每一对(时间-电压)值对应信号源的一点,时间按递增顺序排列。各点之间的电压值由线性插值得到。

阻尼正弦信号源
SIN (Vo Va freq td df phase)
  • Vo:偏置电压
  • Va:电压振幅
  • freq:信号频率,默认值为1/TSTEP
  • 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(ttd)(360phase)]e(ttd)df

单频调频信号源
SFFM (Vo Va fc mdi fs)
  • Vo:偏置电压,无默认值
  • Va:电压振幅:无默认值
  • fc:载波频率,默认值为TSTOP
  • 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πfct)+mdisin(2πfst)]

初始值设置
.NODESET V(node1)=value1 V(node2) = value2
  • V(node1)、V(node2):节点电压
  • value1、value2:电压初始值

交流分析

.AC FREQ_VAR NP FSTART FSTOP
  • FREQ_VAR:有三种模式
    • DEC:十倍频
    • OCT:八倍频
    • LIN:线性
  • NP:扫描点数
  • FSTART:起始频率。不能为零
  • FSTOP:截止频率

转移函数命令

.TF OUTPUT_VARIABLE INPUT_SOURCE

用于计算电路的小信号增益和输入、输出阻抗

直流灵敏度分析

.SENS OUTPUT_VARIABLE
  • 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 绝对灵敏度 RiVx,VS1Vx,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 相对灵敏度 RiVx(100Ri),VS1Vx(100VS1),i=1,2,3相对灵敏度

温度分析

.TEMP TEMP1 TEMP2 TEMP3 ... TEMPN
.DC TEMP START_VALUE STOP_VALUE INCREMENT

元件参数设置

PARAM语句

.PARAM PARAMETER_VALUE = VALUE
.PARAM PARAMETER_NAME = {MATHEMATICAL_EXPRESSION}
  • 数学表达式定义的参数值一定要写在{}

数学表达式函数

以下函数可以用在参数定义的数学表达式中

函数 表达式
ABS(X) ∣ X ∣ \lvert X\rvert X
ACOS(X) cos ⁡ − 1 ( X ) \cos ^{-1}(X) cos1(X)
ASIN(X) sin ⁡ − 1 ( X ) \sin ^{-1}(X) sin1(X)
ATAN(X) tan ⁡ − 1 ( X ) \tan ^{-1}(X) tan1(X)
ATAN2(Y,X) tan ⁡ − 1 ( Y / X ) \tan ^{-1}(Y/X) tan1(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} XY
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通用扫描语句

.STEP SWEEP_TYPE SWEEP_NAME START_VALUE END_VALUE INCNP
.STEP SWEEP_NAME LIST
  • SWEEP_TYPE:扫描类型,有三种模式
    • DEC:十倍频
    • OCT:八倍频
    • LIN:线性
  • SWEEP_NAME:扫描变量名称
  • START_VALUE:起始值
  • END_VALUE:最终值
  • INCNP:步长或点数

如改变让电阻R1的阻值在1k、2k、3k下分别进行仿真,该语句可写为

.STEP PARAM R1 1K 3K 1K
.STEP PARAM R1 LIST 1K 2K 3K

自定义函数

.FUNC FUNC_NAME (ARG) {BODY}
  • FUNC_NAME:函数名称,必须与内嵌函数不同
  • ARG:函数自变量
  • BODY:函数体,里面可以包含其他函数
    函数主体必须放在一行

模拟行为模型(ABM)

使用将某一局部电路视为一个系统进行仿真,而不是将其视为由若干简单元件组成的复杂网络。
常用于ABM模型的元件有电压控制电压源E电压控制电流源G
通用格式为:

ENAME CONNECTING_NODES ABM_KEYWORD ABM_FUNCTION
GNAME CONNECTING_NODES ABM_KEYWORD ABM_FUNCTION
  • CONNECTING_NODES:元件的正负节点
  • ABM_KEYWORD:传递函数表达模式,有四种
    • VALUE:算数表达式
    • TABLE:表格
    • FREQ:频率响应
    • LAPLACE:拉普拉斯传递函数
  • ABM_FUNCTION:传递函数表达式

VALUE模式

NAME N+ N- VALUE = {(EXPRESSION)}
  • EXPRESSION:可以使用 + − × ÷ +-\times \div +×÷内嵌函数

VALUE后面必须有一个空格;EXPRESSION必须写在一行,否则下一行需要以+号开头。

TABLE模式

NAME N+ N- TABLE {EXPRESSION} = < >
  • EXPRESSION:输入变量名
  • 表格中的输入数据必须从大到小排列
  • EXPRESSION必须写在一行,否则下一行需要以+号开头
  • 两点之间采用线性插值法
  • TABLE后面必须有一个空格

FREQ模式

NAME N+ N- FREQ {EXPRESSION} = FREQUENCY VALUE,MAGNITUDE IN DB,PHASE VALUE
  • EXPRESSION:表格输入变量
  • FREQ后面必须有一个空格
  • EXPRESSION必须写在一行,否则下一行需要以+号开头
  • 表格由多对数组构成,数组第一个数表示频率(Hz),第二个数表示增益(dB),第三个数表示相位(°)
  • 频率必须从低到高排列
  • 相位采用线性插值,增益采用对数插值

LAPLACE模式

NAME N+ N- LAPLACE {EXPRESSION} = {TRANSFORM}
  • EXPRESSION:传递函数输入值
  • TRANSFORM:传递函数表达式
  • LAPLACE后面必须跟一个空格
  • EXPRESSION和REANSFORM必须在同一行

蒙特卡洛分析

.MC NUM_RUNS ANALYSIS OUTPUT_VARIABLE FUNCTION OPTIONS [SEED=VALUE]
  • NUM_RUNS:分析次数,打印结果最大为2000,图形显示结果最大为400
  • ANALYSIS:分析类型,直流、交流、瞬态
  • OUTPUT_VARIABLE:输出变量
  • FUNCTION:求值函数,主要有5中,函数计算结果对仿真无影响
    • YMAX:在指定运行次数中,于第一次运行结果相比每次波形的最大差异值
    • MAX:为每次运行结果的最大值
    • MIN:为每次运行结果的最小值
    • RISE_EDGE:为波形第一次超过阈值
    • FALL_EDGE:为波形第一次低于阈值
  • OPTIONS:附加选项
    • LIST:每次运行开始时,将该次仿真的模型参数值打印输出
    • OUTPUT:输出类型设置
      • ALL:生成所有仿真数据
      • FIRST:只生成前次数据
      • EVERY:每运行生成一次数据
      • RUN:对指定的运行次数进行数据输出,为数据列表
      • RANGE(, ):输出指定范围内的数据

容差设置

元件的容差需要使用.MODEL语句中进行设置,有两方式,格式为

[DEV/DISTRIBUTION]  [%]
[LOT/DISTRIBUTION]  [%]

DEV为元件容差,允许每个元件单独变化。
LOT为系统容差,规定同类元件的容差同时变化。

DISTRIBUTION为分布类型,主要包括以下三种:

  • UNIFORM:均匀分布
  • GAUSS:高斯分布
  • USER_DIFFINED 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] 
  • ANALYSIS:分析类型,直流、交流、瞬态
  • OUTPUT_VARIABLE:输出变量
  • FUNCTION:求值函数
  • OPTION:选项
    • LIST:输出灵敏度分析的模型参数
    • OUTPUT ALL:保存所有输出模型
    • RANGE(, ):用于指定输出上限和下限
    • HI或LOW:指定最坏情况下相对于标称值的运行方向
    • VARY DEV/VARY LOT/VARY BOTH:选择容差
    • DEVICES:设别类型列表

傅里叶分析

.FOUR FUNDA_FREQUENCY NUMBER_OF_HARMONICS OUTPUT_VARIABLE
  • FUNDA_FREQUENCY:基波频率,单位为Hz
  • NUMBER_OF_HARMONICS:谐波阶数,默认为9
  • OUTPUT_VARIABLE:输出变量

参考资料:
[1] John Okyere Attia etc.PSpice和MATLAB总和电路仿真与分析[M].北京:机械工业出版社, 2016

你可能感兴趣的:(学习笔记,硬件工程)