4. 独立源与受控源:SPICE 世界的能量来源

各位同学,咱们今天聊聊 SPICE 里的“源”。说白了,没有源,电路就是一潭死水。无论是做电源管理还是信号链,你都得跟这些源打交道。我刚开始学 SPICE 那会儿,总觉得电压源电流源太简单,结果在脉冲源设置上栽过跟头——仿真出来的波形跟预期完全对不上,查了半天才发现是上升沿设得太陡,收敛出问题了。

这一章,咱们把独立源和受控源掰开揉碎讲清楚。你想想看,搞懂了这些,你就能在仿真里“无中生有”,造出任何你想要的激励信号。

4.1 独立源:最基础的激励

独立源就是那些不依赖电路中其他电压或电流的源。SPICE 里最常用的有四种:直流源、脉冲源、正弦源、分段线性源。

4.1.1 直流电压源与电流源

这是最基础的。语法很简单:

Vxxx N+ N- DC value
Ixxx N+ N- DC value

举个例子:

V1 1 0 DC 5V    ; 5V 直流电压源,正极接节点1,负极接地
I1 2 0 DC 10mA  ; 10mA 直流电流源,电流从节点2流向地
小提示: 我个人习惯在 DC 后面直接写数值,单位可以省略(默认是伏特和安培)。但如果你写 5V 或 10mA,SPICE 也能识别,可读性更好。

4.1.2 脉冲源 (PULSE)

脉冲源是做瞬态仿真的利器。语法如下:

Vxxx N+ N- PULSE(V1 V2 TD TR TF PW PER)

参数含义:

参数 含义 典型值
V1 初始电压 0V
V2 脉冲电压 5V
TD 延迟时间 0
TR 上升时间 1n
TF 下降时间 1n
PW 脉冲宽度 10n
PER 周期 20n

举个例子,一个 1MHz 的方波:

Vclk 1 0 PULSE(0 5 0 1n 1n 499n 1u)
避坑指南: 我曾经在仿真一个高速比较器时,把上升沿设成了 0.1ps。结果仿真器直接报错“Timestep too small”。记住,上升沿不能设得太陡,一般设为周期的 1% 左右比较稳妥。如果非要极陡的边沿,得用 .options 调整收敛参数。

4.1.3 正弦源 (SIN)

正弦源用于 AC 分析和瞬态分析。语法:

Vxxx N+ N- SIN(VO VA FREQ TD THETA PHASE)

参数说明:

  • VO:直流偏置
  • VA:振幅
  • FREQ:频率
  • TD:延迟
  • THETA:阻尼因子(用于产生衰减正弦波)
  • PHASE:初始相位(度)

来个 10MHz 的正弦波:

Vsin 1 0 SIN(0 1 10MEG 0 0 0)

4.1.4 分段线性源 (PWL)

这个我最喜欢用。你可以定义任意形状的波形。语法:

Vxxx N+ N- PWL(T1 V1 T2 V2 T3 V3 ...)

比如模拟一个上电序列:

Vpwr 1 0 PWL(0 0 1m 0 1.1m 3.3 2m 3.3 2.1m 1.8 3m 1.8)

这个波形在 0-1ms 为 0V,1ms-1.1ms 上升到 3.3V,保持到 2ms,然后 2.1ms 降到 1.8V。

核心要点: PWL 源是模拟真实世界信号的最佳工具。我在做电源完整性仿真时,经常用 PWL 源来模拟芯片上电时的复杂电压曲线。

4.2 四种线性受控源

受控源的输出由电路中其他地方的电压或电流决定。SPICE 支持四种线性受控源,我管它们叫“四大金刚”。

4.2.1 电压控制电压源 (VCVS)

语法:EXXX N+ N- NC+ NC- VALUE

输出 = VALUE × (V(NC+) - V(NC-))

举个例子,一个 10 倍放大器:

Eamp 3 0 1 0 10

节点 3 的电压 = 10 × V(1)。

4.2.2 电压控制电流源 (VCCS)

语法:GXXX N+ N- NC+ NC- VALUE

输出电流 = VALUE × (V(NC+) - V(NC-))

比如一个跨导为 1mS 的 VCCS:

Ggm 2 0 1 0 1m

节点 2 流向地的电流 = 1mS × V(1)。

4.2.3 电流控制电压源 (CCVS)

语法:HXXX N+ N- VNAM VALUE

注意,这里用的是流过某个电压源的电流。VNAM 是电压源的名字。

比如:

Vsense 1 0 DC 0    ; 0V 电压源,用于检测电流
Htrans 3 0 Vsense 100

节点 3 的电压 = 100 × I(Vsense)。

技巧: 我习惯用 0V 电压源作为电流传感器。它不影响电路,但能让你方便地获取支路电流。

4.2.4 电流控制电流源 (CCCS)

语法:FXXX N+ N- VNAM VALUE

输出电流 = VALUE × I(VNAM)

比如一个电流镜:

Vsense 1 0 DC 0
Fmirror 4 0 Vsense 2

节点 4 流向地的电流 = 2 × I(Vsense)。

4.3 知识结构图

下面这张图帮你理清独立源和受控源的关系:

独立源与受控源分类结构图 SPICE 源分类体系 SPICE 中的源 独立源 受控源 直流源 脉冲源 正弦源 PWL源 VCVS VCCS CCVS CCCS 独立源:输出由自身参数决定 受控源:输出由电路中其他电压/电流决定

4.4 实战对比表

我把四种受控源的关键区别整理成了一张表,方便你查阅:

类型 关键字 控制量 输出量 典型应用
VCVS E 电压 电压 理想运放、电压放大器
VCCS G 电压 电流 跨导放大器、OTA
CCVS H 电流 电压 电流检测、互阻放大器
CCCS F 电流 电流 电流镜、电流放大器
记住这个规律: 关键字 E 和 G 是电压控制(Voltage Controlled),H 和 F 是电流控制(Current Controlled)。第二个字母 V 表示输出是电压,C 表示输出是电流。E 是 Voltage Controlled Voltage Source,G 是 Voltage Controlled Current Source,以此类推。

4.5 避坑与经验

最后分享几个我这些年踩过的坑:

  • 受控源不要形成直流通路:我曾经用 VCVS 直接连接两个节点,结果 DC 分析时出现了无穷大电流。记住,受控源本身不提供 DC 路径,需要配合电阻使用。
  • CCVS 和 CCCS 的电流传感器:必须用 0V 电压源,不能用电流源。这是 SPICE 的硬性要求。
  • 脉冲源的上升时间:别设成 0。SPICE 不允许 TR=0,至少设一个很小的值,比如 1ps。
  • PWL 源的时间点:必须单调递增。我见过有人不小心写成了时间倒序,仿真结果完全乱套。

嗯,这一章的内容就这些。独立源和受控源是 SPICE 仿真的基本功,搞懂了它们,你就能搭建出各种复杂的测试电路。下次做仿真时,试着用 PWL 源模拟一个真实的电源纹波,或者用 VCCS 搭一个简单的 OTA,你会对电路行为有更深的理解。