1.2 五分钟上手:跑通你的第一个网表


1.2 五分钟上手:跑通你的第一个网表

本节摘要:本节带你完成一次完整的仿真闭环:装好开源仿真器 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

逐行拆解这五行,它们就是日后所有网表的母版:

  • 第一行以星号开头,是标题行兼注释行。SPICE 规定网表第一行永远是注释,不参与解析——这是新手第一个大坑:把器件写在第一行,它会无声无息地消失,仿真结果还"看起来正常"。
  • 第二行是独立电压源:器件名 V1 以 V 开头声明类型,两个端子分别接节点 in 和节点 0,DC 5 表示直流五伏。节点 0 是全局地,这是唯一必须存在的节点名。
  • 第三、四行是电阻:R 开头,两端节点加阻值。9k 里的 k 是千的工程后缀,仿真器不区分大小写。
  • .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 仿真完整流程

图:SPICE 仿真完整流程

新手常见的四个"第一次报错"

第一个坑是标题行陷阱,前文已经说过:任何写在第一行的器件都会被当成注释吞掉,症状是报"某节点没有直流通路"之类的间接错误。第二个坑是单位后缀:SPICE 里 m 表示千分之一,M 也表示千分之一(大小写不敏感),一百万欧必须写 1meg。把 1M 想成一兆欧,结果会差十个数量级,而仿真器不会给出任何警告。第三个坑是悬空节点:每个节点都要有直流通路到地,纯电容串联构成的孤立节点会让直流分析报"无直流通路",解决办法是给节点并一个大电阻(比如 1gohm)提供直流通路。第四个坑是忘了 .END,部分仿真器会安静地接受缺失并补一个默认结束,另一些则直接报错,养成最后一行写 .END 的习惯最省心。

本节要点回顾

  • 最小闭环:标题行、器件卡、.OP、.END,四类内容就构成一个合法网表。
  • 读数三件套:节点电压表、源电流、总功耗;源电流的负号来自"流入为正"的约定。
  • .DC 范式:扫描语句加打印语句,是"向电路提问"的第一种句式。
  • 四个新手坑:第一行被吞、M 与 MEG 混淆、悬空节点、缺 .END,全部避开能省下一个晚上的排错时间。

下一章我们把器件卡的写法系统展开:电阻之外,电容、电感、二极管、晶体管怎么写,激励源的十余种波形怎么定义——那是写出真实电路网表的全部语法基础。

问题:图形界面工具一句能画图,为什么还要手写网表

因为批量与复现。界面点选适合探索单次电路,但当你想把电阻从一千欧扫到一万欧、跑二十个工艺角、或把仿真嵌入自动回归脚本时,手写网表是唯一顺手的入口。文本还能进版本管理:每一行改动都有记录,回退与审查一目了然。两者的关系像手写计算器与心算——界面助你快,网表让你稳。

问题:零点五伏的结果怎么确认不是"错得刚刚好"

三个交叉验证习惯从第一个电路就养成:与手算对账(分压公式在这里就是标准答案);故意改一个参数看趋势是否合理(把 R2 加倍,输出应降为原先的三分之二附近);换一个仿真器重跑同一段网表,读数应在千分之一内重合。这三板斧用熟了,你对"仿真对不对"的判断力会有质的提升。

变式练习

给你三个伸手可及的小改动,每个都动手跑一遍:把 R1 与 R2 对调,验证输出变为四点五伏;在输出端并联一个负载电阻,观察分压比被"拉低"的程度,体会带载能力的概念;把 .DC 的步长从零点五伏改成零点零一伏,感受打印密度对曲线平滑度的影响——电路没变,变的是你观察它的分辨率。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U