3、搭建第一个运放电路:使用理想运放模型搭建反相比例放大器,编写SPICE网表,进行DC传输特性仿真

好,咱们开始动手了。

前面聊了那么多理论,说实话,不跑个仿真总觉得心里没底。我个人习惯,学一个新东西,第一件事就是搭个最简单的电路跑起来。哪怕结果不对,至少知道问题出在哪。

这一章,我们就用理想运放模型,搭一个反相比例放大器。然后写个SPICE网表,跑DC传输特性仿真。你跟着我走一遍,保证能跑出结果。

3.1 反相比例放大器长什么样?

先回忆一下电路结构。反相比例放大器,说白了就是信号从反相输入端进去,同相输入端接地。反馈电阻Rf跨接在输出和反相输入端之间,输入电阻R1接在信号源和反相输入端之间。

为什么叫反相?因为输出信号和输入信号相位相反。输入正电压,输出负电压。输入负电压,输出正电压。比例关系由Rf和R1的比值决定。

理想情况下,增益公式很简单:

Av = -Rf / R1

负号代表反相。比如Rf=10kΩ,R1=1kΩ,增益就是-10。输入1V,输出-10V。当然,实际运放有供电限制,输出不可能超过电源轨。

关键点:理想运放模型下,我们假设开环增益无穷大,输入阻抗无穷大,输出阻抗为零。这些假设让计算变得极其简单,但仿真时要注意,实际运放模型会偏离这些理想值。

3.2 编写第一个SPICE网表

嗯,这里要注意。SPICE网表不是随便写的,它有严格的格式要求。我刚开始学的时候,经常因为少了个空格或者逗号,仿真报错半天找不到原因。

下面是我写的一个反相比例放大器的网表。你直接复制到文本文件里,保存为 inv_amp.cir 或者 inv_amp.sp 都行。

* 反相比例放大器 - 理想运放模型
* 网表文件名: inv_amp.cir

* 电源定义
VDD  VDD 0  DC 15V
VSS  VSS 0  DC -15V

* 输入信号源
VIN  IN  0  DC 1V

* 电阻网络
R1   IN   N  1k
Rf   N    OUT 10k

* 理想运放模型 (使用VCVS)
E1   OUT 0  N 0  1e6

* 分析指令
.DC  VIN  -2V  2V  0.01V

* 输出控制
.PRINT  DC  V(OUT)  V(IN)
.PROBE

.END

我来逐行解释一下这个网表。

  • 第一行:以星号开头的是注释行。我习惯在开头写清楚电路功能。
  • VDD和VSS:定义正负电源。这里用了±15V,很经典的运放供电电压。
  • VIN:输入信号源。DC 1V表示直流1V。后面.DC扫描会覆盖这个值。
  • R1和Rf:两个电阻。注意节点命名。N是反相输入节点,OUT是输出节点。
  • E1:这才是核心。E1是电压控制电压源(VCVS),用来模拟理想运放。它的增益设为1e6,也就是100万倍。这模拟了理想运放的开环增益。
  • .DC:直流扫描指令。从-2V扫到+2V,步长0.01V。
  • .PRINT和.PROBE:输出结果。.PRINT打印文本结果,.PROBE用于波形查看。

我的小技巧:节点命名尽量用有意义的字母。比如IN表示输入,OUT表示输出,N表示反相端。别用1、2、3这种数字,不然网表长了你自己都看不懂。

3.3 运行仿真,看结果

网表写好了,怎么跑?

如果你用的是HSPICE,在命令行输入:

hspice inv_amp.cir -o inv_amp

如果是LTspice,直接把文件拖进去,点运行就行。我个人更喜欢命令行,因为批量处理方便。

仿真跑完后,你会得到一个输出文件。用文本编辑器打开,找到DC扫描部分,会看到类似这样的数据:

       VIN          V(OUT)
 -2.000E+00    2.000E+01
 -1.500E+00    1.500E+01
 -1.000E+00    1.000E+01
 -5.000E-01    5.000E+00
  0.000E+00    0.000E+00
  5.000E-01   -5.000E+00
  1.000E+00   -1.000E+01
  1.500E+00   -1.500E+01
  2.000E+00   -2.000E+01

看到了吗?输入1V,输出-10V。输入-1V,输出10V。增益确实是-10倍。但是注意,当输入达到±1.5V时,输出已经到±15V了。再往上,输出就被电源轨限住了。

注意:理想运放模型不会自动限幅。上面的结果中,输入±2V时输出±20V,这已经超过了电源电压。实际运放做不到。所以仿真结果在超出电源轨的部分是无效的。你需要自己留意这个范围。

3.4 传输特性曲线怎么看?

把V(OUT)对V(IN)画成曲线,就是DC传输特性。它应该是一条直线,斜率为-10。但在接近电源轨的地方,直线会变平。

我曾经在项目中遇到过一个问题:客户要求输出摆幅达到±13V,我用的运放是±15V供电,按理说没问题。但仿真发现,输出到±12.5V就上不去了。查了半天,原来是运放的输出级有压降。这就是理想模型和实际模型的区别。

所以,用理想模型做初步验证没问题,但最终设计一定要用厂商提供的实际模型。

3.5 动手改一改,加深理解

光看不动手,学不会。我建议你做以下几个小实验:

  1. 改增益:把Rf改成20kΩ,增益变成-20。看看输出范围有什么变化。
  2. 改电源电压:把VDD改成5V,VSS改成0V(单电源)。输入信号范围要调整,因为现在输出不能低于0V了。
  3. 加负载:在输出和地之间加一个1kΩ电阻。理想模型下输出不变,但实际运放会有影响。

这些实验花不了几分钟,但能让你对运放的行为有直观感受。我当年就是这么过来的。

3.6 常见问题与避坑

跑仿真时可能会遇到几个坑,我帮你列出来:

问题 原因 解决方法
仿真报错"no such device" 模型名称写错了 检查E1的语法,确保格式正确
输出全是0 输入信号没加上,或者节点连接错误 检查VIN的定义,检查R1和Rf的节点
输出是常数,不随输入变化 .DC扫描没写对,或者扫描变量名不匹配 确保.DC后面的变量名和VIN定义一致
结果超出预期范围 理想模型没有限幅功能 自己计算理论值,对比仿真结果

我曾经有一次,仿真跑出来输出一直是0V,折腾了半小时。最后发现是R1的节点写错了,把IN写成了INN。少了一个N,结果完全不对。所以,网表里的节点名一定要仔细核对。

3.7 小结

这一章我们做了三件事:

  • 用理想运放模型搭建了反相比例放大器
  • 编写了完整的SPICE网表
  • 跑了DC传输特性仿真,验证了增益公式

你可能会觉得,这太简单了。没错,就是简单。但万丈高楼平地起,后面所有的复杂电路,都是这些基本单元的叠加。把这一步走扎实了,后面学起来会轻松很多。

下一章,我们会用实际运放模型(比如LM741)来替换这个理想模型,看看真实世界和理想世界到底差了多少。到时候你会发现,理想模型就像童话故事,实际模型才是柴米油盐。