2. 直流扫描分析

直流扫描分析:二极管伏安特性曲线 学习卡片

各位同学,欢迎来到第二讲。上一讲我们聊了SPICE的基本语法和网表结构,今天咱们来点实在的——把电路里最常用的那几个元器件,一个一个说清楚。

电阻、电容、电感、独立源、受控源,还有MOS管。这些家伙你天天见,但真到了仿真收敛出问题的时候,往往就是它们没写对。我这些年调试过的仿真,少说有一半的收敛失败,根源都在器件模型调用上。

好,咱们开始。

2.1 电阻、电容、电感——最基础,也最容易翻车

先看电阻。SPICE里电阻的语法很简单:

R<name> <+节点> <-节点> <阻值>

举个例子:

R1 1 0 1k

这就表示一个1kΩ的电阻,接在节点1和地之间。嗯,这里要注意——节点编号别搞反了,虽然电阻是双向器件,但后续你挂探针、看波形的时候,电流方向默认是从正节点流向负节点。

电容和电感也类似:

C<name> <+节点> <-节点> <容值>
L<name> <+节点> <-节点> <感值>

比如:

C1 1 0 10p
L1 2 3 100n

我个人习惯,电容值用pF、nF,电感用nH、uH,这样数值比较干净,不容易看错。

避坑指南:我曾经在一个LDO项目里,电容值写成了10m(毫法),仿真直接崩了。SPICE里默认单位是F、H、Ω,m表示毫,不是兆。兆要用MEG。这个坑我踩过,你们别踩。

另外,电阻、电容、电感都支持模型调用。比如你想模拟一个实际电容的ESR和ESL:

.MODEL CAP_MOD C
+ C=10u
+ ESR=0.1
+ ESL=1n

然后调用:

C1 1 0 CAP_MOD

这样仿真出来的结果,才更接近真实情况。

2.2 独立源——V源和I源,别搞混了

独立源分两种:电压源(V)和电流源(I)。语法如下:

V<name> <+节点> <-节点> <值>
I<name> <+节点> <-节点> <值>

比如:

VDD 1 0 3.3
IREF 2 0 10u

这里有个关键点——电压源的正节点是电流流入端,电流源的正节点是电流流出端。你想想看,如果搞反了,整个电路的偏置就全错了。

独立源还支持多种波形,比如脉冲、正弦、分段线性等。我常用的PULSE:

VCLK 3 0 PULSE(0 3.3 0 1n 1n 50n 100n)

参数依次是:初始值、峰值、延迟时间、上升时间、下降时间、脉宽、周期。这个顺序我背了十年,还是得查手册确认——别笑,老工程师也这样。

小技巧:调试时,我习惯先用DC源把静态工作点调好,再换成瞬态源。这样收敛问题能隔离一半。

2.3 受控源——模拟IC的灵魂

受控源有四种:VCVS(压控压源)、VCCS(压控流源)、CCVS(流控压源)、CCCS(流控流源)。

语法格式统一为:

E<name> <输出+> <输出-> <控制+> <控制-> <增益>  ; VCVS
G<name> <输出+> <输出-> <控制+> <控制-> <跨导> ; VCCS
H<name> <输出+> <输出-> <控制源名> <增益>      ; CCVS
F<name> <输出+> <输出-> <控制源名> <增益>      ; CCCS

举个例子,一个增益为10的VCVS:

EAMP 3 0 1 2 10

这就表示V(3,0) = 10 * V(1,2)。

VCCS更常用,比如用Gm单元模拟OTA:

GOTA 4 0 1 2 1m

输出电流I(4,0) = 1mS * V(1,2)。

流控源需要先定义一个独立电压源作为电流传感器:

VSENSE 5 6 DC 0
F1 7 0 VSENSE 100

这里VSENSE是0V电压源,只用来测电流。F1输出电流是VSENSE电流的100倍。

重点:流控源的控制源必须是独立电压源(Vxxx),不能直接写节点名。这个我见过太多新手写错了,仿真报错还不知道为什么。

2.4 MOS管——NMOS与PMOS的模型调用

MOS管是模拟IC的核心器件。SPICE里基本语法:

M<name> <漏极> <栅极> <源极> <衬底> <模型名> [W=<宽> L=<长>]

比如:

M1 2 1 0 0 NMOS_WML W=10u L=0.18u

这里漏极接2,栅极接1,源极和衬底都接地,模型名叫NMOS_WML,宽10μm,长0.18μm。

PMOS类似,只是衬底通常接最高电位:

M2 4 3 5 5 PMOS_WML W=20u L=0.18u

源极和衬底都接节点5(通常是VDD)。

模型定义一般在网表开头或单独的模型文件里:

.MODEL NMOS_WML NMOS
+ VTO=0.7
+ KP=200u
+ GAMMA=0.5
+ LAMBDA=0.01
+ ...

这里VTO是阈值电压,KP是跨导系数,GAMMA是体效应系数,LAMBDA是沟道长度调制系数。不同工艺节点,这些参数差异很大。

注意:MOS管的衬底节点不能悬空。我曾经在仿真一个差分对时,忘了接衬底,结果共模抑制比仿真结果完全不对,查了两天才发现是衬底浮空了。

另外,MOS管的宽长比(W/L)直接影响电流能力。我建议在原理图阶段就把W/L算好,别指望仿真时随便填——那样收敛会很痛苦。

2.5 知识结构总览

下面这张图,把本章的核心器件和它们的关系画出来了。你可以把它当作一个快速参考。

基本器件与模型语句知识结构图 基本器件与模型语句知识结构 SPICE基本器件 无源器件 独立源 受控源 电阻 R 电容 C 电感 L 电压源 V 电流源 I VCVS (E) VCCS (G) CCVS (H) CCCS (F) MOS管 (M) NMOS PMOS 提示:所有器件都支持 .MODEL 调用,模型参数直接影响仿真精度与收敛性

2.6 模型调用对比表

为了方便你快速查阅,我把这几种器件的模型调用方式整理成了表格:

器件类型 SPICE关键字 基本语法示例 模型调用方式 常见坑点
电阻 R R1 1 0 1k .MODEL RMOD R ... 单位混淆(m vs MEG)
电容 C C1 1 0 10p .MODEL CMOD C ... 初始条件未设置
电感 L L1 2 3 100n .MODEL LMOD L ... 直流短路未处理
电压源 V VDD 1 0 3.3 不支持模型(直接赋值) 正负节点接反
电流源 I IREF 2 0 10u 不支持模型(直接赋值) 电流方向搞错
VCVS E E1 3 0 1 2 10 不支持模型 增益过大导致收敛失败
VCCS G G1 4 0 1 2 1m 不支持模型 跨导单位写错
CCVS H H1 5 0 VSENSE 100 不支持模型 控制源必须是Vxxx
CCCS F F1 6 0 VSENSE 100 不支持模型 控制源必须是Vxxx
NMOS M M1 2 1 0 0 NMOD W=10u L=0.18u .MODEL NMOD NMOS ... 衬底悬空
PMOS M M2 4 3 5 5 PMOD W=20u L=0.18u .MODEL PMOD PMOS ... 衬底未接最高电位

我的习惯:每次新建仿真,我都会先写一个最简单的测试网表,只放一个电阻和一个电压源,跑DC看看结果对不对。这叫「冒烟测试」。通过了再往上加东西。别一上来就搭几百个器件的电路,收敛问题会让你怀疑人生。