3. 仿真类型设置:直流工作点分析(.op)、直流扫描分析(.dc)、瞬态分析(.tran)
好,咱们进入正题。LTspice 里仿真类型就三种,但很多人一上来就懵。我刚开始用的时候也犯过傻——明明想看波形,结果跑了.op 半天,啥也没有。后来才明白,这三种分析各有各的脾气。
说白了,你选哪种分析,取决于你想看电路的什么状态。是静态的?还是动态的?还是某个参数变化时的趋势?搞清楚这个,后面就顺了。
.op 看静态工作点(直流偏置)
.dc 看参数扫描(输入 vs 输出)
.tran 看时域波形(信号随时间怎么变)
3.1 直流工作点分析 (.op)
.op 是 LTspice 里最基础的仿真。它只做一件事:计算电路在直流稳态下的所有节点电压和支路电流。电容开路,电感短路,所有信号源取直流值。
我个人习惯,设计放大器第一件事就是跑.op。为什么?因为工作点不对,后面全是白搭。我曾经调一个两级运放,增益死活上不去,折腾了两天,最后发现第一级管子根本没工作在饱和区——.op 一看就露馅了。
3.1.1 设置方法
- 点击菜单栏 Simulate → Edit Simulation Cmd
- 选择 DC op pnt 标签页
- 直接点 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"。
3.2 直流扫描分析 (.dc)
.dc 分析,说白了就是让某个参数(电压源、电流源、温度、甚至某个模型参数)从 A 扫到 B,然后看电路响应怎么变。你想想看,这玩意儿多有用——想知道输入从 0V 到 5V 时输出怎么变?跑个.dc 就出来了。
我在项目中常用.dc 做两件事:一是看放大器的传输特性曲线,二是找电路的输入共模范围。有一次设计比较器,阈值电压怎么算都不对,跑了个.dc 扫描,一眼就看出翻转点在哪了。
3.2.1 设置方法
- 点击 Simulate → Edit Simulation Cmd
- 选择 DC sweep 标签页
- 设置扫描参数:
| 参数 | 说明 | 示例 |
|---|---|---|
| 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 设置方法
- 点击 Simulate → Edit Simulation Cmd
- 选择 Transient 标签页
- 填写关键参数:
| 参数 | 说明 | 建议 |
|---|---|---|
| Stop time | 仿真结束时间 | 至少覆盖 5 个信号周期 |
| Time to start saving data | 开始保存数据的时间 | 跳过初始暂态时设为非零值 |
| Maximum Timestep | 最大时间步长 | 设为信号周期的 1/100 |
对应的 SPICE 指令:
.tran 0 10m 0 1u
这个指令的意思是:仿真 10ms,从 0 开始保存数据,最大步长 1μs。
3.3.2 初始条件设置
有时候你想让仿真从某个特定状态开始,比如电容已经充好电了。这时候可以用 .ic 指令:
.ic V(n001)=5 V(n002)=0
或者在 .tran 指令里勾选 "Start external DC supply voltages at 0V"——这个选项在做电源启动仿真时特别有用。
3.4 三种分析的核心区别
我画了张图,帮你理清这三种分析的关系:
3.5 实际项目中的选择策略
说了这么多,到底什么时候用哪个?我总结了一个简单的决策流程:
- 刚搭好电路 → 先跑.op,确认工作点正确
- 想看传输特性 → 跑.dc,扫输入看输出
- 想看信号波形 → 跑.tran,给激励看响应
- 想找最佳偏置点 → 先.dc 扫描,找到最优值,再用.op 验证
- 想分析稳定性 → .tran 看阶跃响应,或者配合 .ac 分析(后面章节会讲)
3.6 常见问题与避坑
最后,分享几个我踩过的坑:
| 问题 | 原因 | 解决办法 |
|---|---|---|
| .op 跑完没波形 | 默认不保存波形数据 | 勾选 "Save node voltages" |
| .dc 扫描结果不连续 | 步长太大 | 减小步长,或改用对数扫描 |
| .tran 仿真不收敛 | 初始条件冲突 | 加 .ic 指令,或减小最大步长 |
| .tran 波形有毛刺 | 步长太大,采样不足 | 设 Maximum Timestep 为信号周期的 1/100 |
| 仿真跑得太慢 | 步长太小或仿真时间太长 | 先粗扫,再细扫;或分段仿真 |
嗯,这三种分析就讲到这里。记住一句话:.op 看静态,.dc 看趋势,.tran 看动态。搞清楚了,后面学什么分析都不怕。