本节摘要:本节带你完成一次完整的仿真闭环:装好开源仿真器 ngspice,写出一个只含电源与两个电阻的分压网表,执行直流工作点分析并读懂输出,再用 .DC 语句把电源扫一遍。所有命令与数值都可原样复现,跑通它,你就跨过了 SPICE 的门槛。
工具准备只做一件事:拿到一个能用的仿真器。开源阵营首选 ngspice,它是 SPICE3 内核的直系后代, Windows、Linux、macOS 全平台支持。去它的项目官网下载对应安装包,Windows 版解压即用,不需要复杂配置;Linux 用户直接用发行版的包管理器安装。装完在命令行敲 ngspice 回车,看到版本横幅和交互提示符就算成功,输入 quit 加回车退出。图形界面党也可以选 LTspice,免费且界面友好,但它把网表藏在原理图背后,初学阶段建议先用命令行工具,把语法摸透之后再换界面工具会非常轻松。
被仿真的是最简单的分压网络:一个五伏电源,串联九千欧与一千欧两个电阻,求中点电压。手算答案当然是零点五伏,我们只是要看看仿真器怎么把这句话"说"出来。新建一个纯文本文件,命名为 divider.cir,内容如下:
* 我的第一个分压网络 V1 in 0 DC 5 R1 in out 9k R2 out 0 1k .OP .END
逐行拆解这五行,它们就是日后所有网表的母版:
在网表所在目录打开命令行,以批处理模式运行:
$ ngspice -b divider.cir Circuit: 我的第一个分压网络 Doing analysis at TEMP = 27.000000 and TNOM = 27.000000 Node Voltage ---- ------- in 5.000000e+00 out 5.000000e-01 voltage source currents name current V1 -5.000000e-04 Total power dissipation: 2.500000e-03 watts
仿真器交出的答卷有三块。节点电压表:in 是五伏,out 是零点五伏,与手算一致。支路电流:流过电压源 V1 的电流是负的零点五毫安,负号来自 SPICE 的符号约定——它定义电流从电源正端流入为正,而实际电流是从电源流出经过电阻网络再回地,所以读数取负,消耗的功率按正负号规则计算后仍是正确的二点五毫瓦。符号约定这一细节现在记不住没关系,等第 3 章测放大器电流时你会反复用到。
如果你用的是交互模式(直接敲 ngspice 进入提示符),先输 source divider.cir 装载网表,再敲 run 执行分析,效果完全一样。
.OP 只回答"电源固定在五伏时怎样"。把网表最后的 .OP 换成下面两行,就能让电源从零伏一路扫到五伏:
.DC V1 0 5 0.5 .PRINT DC V(out) .END
.DC 语句读作:把 V1 从零伏扫到五伏,步长零点五伏;.PRINT 要求打印每一步的输出电压。运行后仿真器吐出一张表:
V1 v(out) 0.000e+00 0.000e+00 5.000e-01 5.000e-02 1.000e+00 1.000e-01 1.500e+00 1.500e-01 2.000e+00 2.000e-01 2.500e+00 2.500e-01 3.000e+00 3.000e-01 3.500e+00 3.500e-01 4.000e+00 4.000e-01 4.500e+00 4.500e-01 5.000e+00 5.000e-01
线性电路的扫描表是一条完美的直线:分压比恒为十分之一。这张表的意义不在数值本身,而在于它演示了仿真的基本范式——写电路,提问题,收答案。.DC 是你向电路提问的第一种句式,第 3 章还会介绍 .AC 与 .TRAN 两种更常用的提问方式。

第一个坑是标题行陷阱,前文已经说过:任何写在第一行的器件都会被当成注释吞掉,症状是报"某节点没有直流通路"之类的间接错误。第二个坑是单位后缀:SPICE 里 m 表示千分之一,M 也表示千分之一(大小写不敏感),一百万欧必须写 1meg。把 1M 想成一兆欧,结果会差十个数量级,而仿真器不会给出任何警告。第三个坑是悬空节点:每个节点都要有直流通路到地,纯电容串联构成的孤立节点会让直流分析报"无直流通路",解决办法是给节点并一个大电阻(比如 1gohm)提供直流通路。第四个坑是忘了 .END,部分仿真器会安静地接受缺失并补一个默认结束,另一些则直接报错,养成最后一行写 .END 的习惯最省心。
下一章我们把器件卡的写法系统展开:电阻之外,电容、电感、二极管、晶体管怎么写,激励源的十余种波形怎么定义——那是写出真实电路网表的全部语法基础。
因为批量与复现。界面点选适合探索单次电路,但当你想把电阻从一千欧扫到一万欧、跑二十个工艺角、或把仿真嵌入自动回归脚本时,手写网表是唯一顺手的入口。文本还能进版本管理:每一行改动都有记录,回退与审查一目了然。两者的关系像手写计算器与心算——界面助你快,网表让你稳。
三个交叉验证习惯从第一个电路就养成:与手算对账(分压公式在这里就是标准答案);故意改一个参数看趋势是否合理(把 R2 加倍,输出应降为原先的三分之二附近);换一个仿真器重跑同一段网表,读数应在千分之一内重合。这三板斧用熟了,你对"仿真对不对"的判断力会有质的提升。
给你三个伸手可及的小改动,每个都动手跑一遍:把 R1 与 R2 对调,验证输出变为四点五伏;在输出端并联一个负载电阻,观察分压比被"拉低"的程度,体会带载能力的概念;把 .DC 的步长从零点五伏改成零点零一伏,感受打印密度对曲线平滑度的影响——电路没变,变的是你观察它的分辨率。