3. 仿真类型设置:直流工作点分析(.op)、直流扫描分析(.dc)、瞬态分析(.tran)

好,咱们进入正题。LTspice 里仿真类型就三种,但很多人一上来就懵。我刚开始用的时候也犯过傻——明明想看波形,结果跑了.op 半天,啥也没有。后来才明白,这三种分析各有各的脾气。

说白了,你选哪种分析,取决于你想看电路的什么状态。是静态的?还是动态的?还是某个参数变化时的趋势?搞清楚这个,后面就顺了。

一句话总结:
.op 看静态工作点(直流偏置)
.dc 看参数扫描(输入 vs 输出)
.tran 看时域波形(信号随时间怎么变)

3.1 直流工作点分析 (.op)

.op 是 LTspice 里最基础的仿真。它只做一件事:计算电路在直流稳态下的所有节点电压和支路电流。电容开路,电感短路,所有信号源取直流值。

我个人习惯,设计放大器第一件事就是跑.op。为什么?因为工作点不对,后面全是白搭。我曾经调一个两级运放,增益死活上不去,折腾了两天,最后发现第一级管子根本没工作在饱和区——.op 一看就露馅了。

3.1.1 设置方法

  1. 点击菜单栏 Simulate → Edit Simulation Cmd
  2. 选择 DC op pnt 标签页
  3. 直接点 OK,不需要填任何参数

或者更快的办法:在原理图上放一个 .op 指令(SPICE directive)。

.op

跑完之后,结果怎么看?按住 Alt 键,鼠标悬停在节点上,电压值就出来了。想看电流?按住 Alt 点击器件引脚。我建议你把 .op 结果保存成文件,方便后面对比。

小技巧: 在原理图上放 .op 指令后,右键点击它,勾选 "Save node voltages" 和 "Save device currents",这样结果会写入 .raw 文件,方便后用脚本处理。

3.1.2 输出结果解读

.op 的输出在 SPICE Error Log 里。跑完仿真后,按 Ctrl+L 打开日志,你会看到类似这样的内容:

--- Operating Point ---
V(n001): 5.000000e+00  voltage
V(n002): 2.500000e+00  voltage
I(R1): 1.000000e-03   device_current
I(Q1): 1.000000e-03   device_current

嗯,这里要注意:LTspice 默认不保存.op 的波形数据。如果你想在波形窗口里看工作点,得手动勾选 "Save node voltages"。

避坑: 我曾经犯过一个低级错误——跑完.op 后直接去看波形图,发现啥也没有。后来才反应过来,.op 默认不生成波形数据。你得在 .op 指令上右键,勾选 "Save node voltages" 才行。

3.2 直流扫描分析 (.dc)

.dc 分析,说白了就是让某个参数(电压源、电流源、温度、甚至某个模型参数)从 A 扫到 B,然后看电路响应怎么变。你想想看,这玩意儿多有用——想知道输入从 0V 到 5V 时输出怎么变?跑个.dc 就出来了。

我在项目中常用.dc 做两件事:一是看放大器的传输特性曲线,二是找电路的输入共模范围。有一次设计比较器,阈值电压怎么算都不对,跑了个.dc 扫描,一眼就看出翻转点在哪了。

3.2.1 设置方法

  1. 点击 Simulate → Edit Simulation Cmd
  2. 选择 DC sweep 标签页
  3. 设置扫描参数:
参数 说明 示例
Source name 要扫描的源名称(如 V1) V1
Start value 起始值 0
End value 终止值 5
Increment 步长 0.01

对应的 SPICE 指令长这样:

.dc V1 0 5 0.01

也可以扫描多个源,比如同时扫温度和电压:

.dc V1 0 5 0.01 TEMP -40 125 1

3.2.2 嵌套扫描

LTspice 支持两层嵌套扫描。第一层是主扫描,第二层是副扫描。我常用这个来对比不同工艺角下的传输曲线。

.dc V1 0 5 0.01 V2 0 1 0.1

这个指令的意思是:V1 从 0 扫到 5V,步长 0.01V;对于 V1 的每一个值,V2 从 0 扫到 1V,步长 0.1V。结果会生成一组曲线。

经验之谈: 嵌套扫描时,步长别设太小,否则仿真时间会爆炸。我一般先粗扫(大步长),找到感兴趣的区域再细扫。

3.3 瞬态分析 (.tran)

瞬态分析,就是看电路在时间域里的行为。你给一个激励,看它怎么响应。这是最常用的仿真类型,没有之一。

我记得刚学 LTspice 时,总觉得.tran 就是看波形。后来发现,它还能看启动过程、看振荡器起振、看电源纹波对电路的影响。说白了,只要跟时间有关的,都归.tran 管。

3.3.1 设置方法

  1. 点击 Simulate → Edit Simulation Cmd
  2. 选择 Transient 标签页
  3. 填写关键参数:
参数 说明 建议
Stop time 仿真结束时间 至少覆盖 5 个信号周期
Time to start saving data 开始保存数据的时间 跳过初始暂态时设为非零值
Maximum Timestep 最大时间步长 设为信号周期的 1/100

对应的 SPICE 指令:

.tran 0 10m 0 1u

这个指令的意思是:仿真 10ms,从 0 开始保存数据,最大步长 1μs。

注意: 最大步长设得太大会导致波形失真,设得太小仿真跑不动。我一般按信号最高频率的 10 倍来估算——比如信号最高 1MHz,周期 1μs,步长就设 0.1μs。

3.3.2 初始条件设置

有时候你想让仿真从某个特定状态开始,比如电容已经充好电了。这时候可以用 .ic 指令:

.ic V(n001)=5 V(n002)=0

或者在 .tran 指令里勾选 "Start external DC supply voltages at 0V"——这个选项在做电源启动仿真时特别有用。

实用场景: 我做 DC-DC 启动仿真时,习惯勾选 "Start external DC supply voltages at 0V",然后看输出电压从 0 建立到稳态的过程。这样能发现启动过冲、欠冲等问题。

3.4 三种分析的核心区别

我画了张图,帮你理清这三种分析的关系:

三种仿真分析的核心区别 .op 直流工作点分析 .dc 直流扫描分析 .tran 瞬态分析 核心区别: .op 看静态 → .dc 看趋势 → .tran 看动态 对比维度 .op .dc .tran 时间维度 无 无 有 输入激励 直流 扫描变量 任意 输出形式 数值列表 曲线族 波形 典型用途 偏置检查 传输特性 时域响应 仿真速度 最快 中等 最慢

3.5 实际项目中的选择策略

说了这么多,到底什么时候用哪个?我总结了一个简单的决策流程:

  • 刚搭好电路 → 先跑.op,确认工作点正确
  • 想看传输特性 → 跑.dc,扫输入看输出
  • 想看信号波形 → 跑.tran,给激励看响应
  • 想找最佳偏置点 → 先.dc 扫描,找到最优值,再用.op 验证
  • 想分析稳定性 → .tran 看阶跃响应,或者配合 .ac 分析(后面章节会讲)
我的习惯: 每次新建仿真,我都会先放一个 .op 指令。哪怕后面要跑 .tran,.op 也能帮我快速确认电路有没有接错。你想想看,如果工作点都不对,瞬态仿真跑出来的波形能信吗?

3.6 常见问题与避坑

最后,分享几个我踩过的坑:

问题 原因 解决办法
.op 跑完没波形 默认不保存波形数据 勾选 "Save node voltages"
.dc 扫描结果不连续 步长太大 减小步长,或改用对数扫描
.tran 仿真不收敛 初始条件冲突 加 .ic 指令,或减小最大步长
.tran 波形有毛刺 步长太大,采样不足 设 Maximum Timestep 为信号周期的 1/100
仿真跑得太慢 步长太小或仿真时间太长 先粗扫,再细扫;或分段仿真

嗯,这三种分析就讲到这里。记住一句话:.op 看静态,.dc 看趋势,.tran 看动态。搞清楚了,后面学什么分析都不怕。