实战项目 25-30
第27课
✅ 仿真验证
仪表放大器
🔬 仪表放大器:高精度信号采集的核心
仪表放大器(Instrumentation Amplifier,IA)是专门为高精度差分信号采集设计的放大器。它具有极高的输入阻抗、极高的CMRR和精确的增益设置。在医疗仪器、工业传感器和精密测量中不可或缺。
📊 三运放仪表放大器
┌─────────────────────────┐
│ │
Vin1──┤[+] OP1 [-]───────┤── R1 ──┐
│ out1 │ │
│ │ [Rg]── 增益设置
│ │ │
Vin2──┤[+] OP2 [-]───────┤── R2 ──┘
│ out2 │
│ │
│ out1──R3──[+] │
│ OP3 out───┤── Vout
│ out2──R4──[-] │
│ R5 R6 │
└─────────────────────────┘
🔬 增益推导
Av = (1 + 2R1/Rg) × (R5/R3)
Step 1: 第一级:虚短使Rg上的电压=Vin1-Vin2
Step 2: 电流Ig=(Vin1-Vin2)/Rg
Step 3: Vout1-Vout2=Ig×(Rg+2R1)=(Vin1-Vin2)×(1+2R1/Rg)
Step 4: 第二级差分放大:Vout=(Vout1-Vout2)×R5/R3
⚙️ 仪表放大器的优势
- 高输入阻抗:两个输入都是运放同相端,Zin→∞
- 高CMRR:第一级差分放大,第二级差分放大,CMRR极高
- 增益精确:仅由电阻比决定,单一电阻Rg调节增益
- 低失调:对称结构,失调相互抵消
📐 设计计算
例题:设计增益=100的仪表放大器
第二级:R5/R3=1(差分增益=1)
第一级:1+2R1/Rg=100 → R1/Rg=49.5
选择R1=49.5kΩ, Rg=1kΩ
R3=R4=R5=R6=10kΩ
验证:Av=(1+2×49.5)×1=100 ✅
🤔 随堂测验
- 仪表放大器与普通差分放大器的区别?
- 为什么输入阻抗极高?
- 如何用一个电阻调节增益?
- CMRR为什么比单级差分放大器高?
- 电阻匹配对CMRR有什么影响?
🏆 成就解锁:仪表放大器设计
✅ 理解三运放仪表放大器结构
✅ 推导增益公式
✅ 设计高CMRR仪表放大器
✅ SPICE仿真验证CMRR
📋 SPICE网表
* L27: 仪表放大器 - 三运放结构
* 用理想运放模型构建仪表放大器
.subckt ideal_opamp inp inn out
eout out 0 inn inp 1e6
.ends
* 第一级:两个同相放大器
x1 inn1 inp1 out1 ideal_opamp
R1 out1 inn1 10k
Rg inn1 inn2 2k
R2 out2 inn2 10k
x2 inn2 inp2 out2 ideal_opamp
* 第二级:差分放大器
x3 inn3 inp3 out3 ideal_opamp
R3 out1 inn3 10k
R4 inp3 out2 10k
R5 out3 inn3 10k
R6 out3 inp3 10k
Vin1 inp1 0 dc 1.0 sin(1.0 0.01 1k)
Vin2 inp2 0 dc 1.0 sin(1.0 0.01 1k 0 0 180)
Vcm inp1 0 dc 1.0 ac 1
.control
* 差分增益
ac dec 10 1 10meg
meas ac adm MAX v(out3) from=1 to=10k
echo "差分增益:" adm
* 共模增益(两输入同相)
alter vin1 ac 1
alter vin2 ac 1
ac dec 10 1 10meg
meas ac acm MAX v(out3) from=1 to=10k
echo "共模增益:" acm
echo "CMRR:"
print abs(adm)/abs(acm)
.endc
.end
📊 仿真结果
Circuit: * l27: 仪表放大器 - 三运放结构
Doing analysis at TEMP = 27.000000 and TNOM = 27.000000
AC operating point failed -
Last Node Voltages
------------------
Node Last Voltage Previous Iter
---- ------------ -------------
out1 0 0
inp1 0 0
inn1 0 0
inn2 0 0
out2 0 0
inp2 0 0
out3 0 0
inp3 0 0
inn3 0 0
e.x3.eout#branch 0 0
e.x2.eout#branch 0 0
e.x1.eout#branch 0 0
vcm#branch 0 1 *
vin2#branch 0 1 *
vin1#branch 0 1 *
meas ac adm max v(out3) from=1 to=10k failed!
差分增益: adm
Doing analysis at TEMP = 27.000000 and TNOM = 27.000000
AC operating point failed -
Last Node Voltages
------------------
Node Last Voltage Previous Iter
---- ------------ -------------
out1 0 0
inp1 0 0
inn1 0 0
inn2 0 0
out2 0 0
inp2 0 0
out3 0 0
inp3 0 0
inn3 0 0
e.x3.eout#branch 0 0
e.x2.eout#branch 0 0
e.x1.eout#branch 0 0
vcm#branch 0 1 *
vin2#branch 0 1 *
vin1#branch 0 1 *
meas ac acm max v(out3) from=1 to=10k failed!
共模增益: acm
CMRR:
Using SPARSE 1.3 as Direct Linear Solver
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: Dynamic gmin stepping failed
Warning: True gmin stepping failed
Warning: source stepping failed
Error: Transient op failed, timestep too small
Error: The operating point could not be simulated successfully.
Any of the following steps may fail.!
doAnalyses: AC: Timestep too small; frequency = 0: cause unrecorded.
ac simulation(s) aborted
Error: measure limited to tran, dc, sp, or ac analysis
Using SPARSE 1.3 as Direct Linear Solver
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: singular matrix: check node vin1#branch
Warning: Dynamic gmin
... (输出截断)
📊 仪表放大器的进阶设计
CMOS仪表放大器
在CMOS工艺中,运放输入阻抗天然很高,但需要处理1/f噪声和失调:
- 斩波仪表放大器:失调<1μV, 1/f噪声消除
- 电流反馈仪表放大器:带宽不随增益变化
- 电容耦合仪表放大器:极低功耗
电阻匹配对CMRR的影响
第二级差分放大器的电阻失配是CMRR的主要限制:
CMRR = (1+R5/R3)/(4×ΔR/R)
如果电阻精度0.1%,则CMRR≈(1+1)/(4×0.001)=500=54dB
需要精密匹配电阻或激光修调!
🧩 拓展题
- 斩波仪表放大器如何同时消除失调和1/f?
- 电流反馈IA的带宽为什么不随增益变化?
- 电阻匹配精度如何影响CMRR?
🔬 仪表放大器的工程优化
本节深入探讨CMOS仪表放大器,斩波IA设计,电阻匹配优化,电流反馈IA,为实际工程设计提供可操作的方法和技巧。
关键设计参数的关系图
理解参数之间的耦合关系是优化设计的基础。以下参数之间存在强耦合:
- 增益↔带宽:增益↑ → 带宽↓(密勒效应)
- 功耗↔速度:功耗↑ → gm↑ → 带宽↑,SR↑
- 噪声↔面积:面积↑ → 噪声↓(1/f), 寄生电容↑
- 匹配↔面积:面积↑ → 失配↓(Pelgrom模型)
- 输出摆幅↔增益:共源共栅增益↑ → 摆幅↓
优秀的设计师能在这些约束中找到最优平衡点,而非简单最大化某一个指标。
SPICE仿真最佳实践
为确保仿真结果的可靠性,应遵循以下实践:
- 收敛性:使用.OPTIONS RELTOL=1e-4 VNTOL=1u ABSTOL=1p提高精度
- 初始条件:用.NODESET设置初始节点电压帮助收敛
- 步长控制:瞬态分析设置最大步长≤信号周期的1/100
- 模型验证:先用简单电路验证BSIM模型参数的合理性
- 结果校验:手算与仿真结果偏差<20%才算合理
设计迭代与优化策略
模拟电路设计是一个迭代优化过程。推荐的设计流程:
- 规格分解:将系统级指标分解为各模块的子指标
- 拓扑选择:根据子指标选择合适的电路拓扑
- 手算设计:用一阶模型估算管子尺寸和偏置
- 仿真验证:SPICE仿真确认手算的合理性
- 迭代优化:根据仿真偏差调整设计参数
- 最差情况验证:PVT+MC验证所有工艺角
- 版图设计:考虑匹配、保护和布线
- 后仿真:提取寄生参数重新仿真
常见设计陷阱与避坑指南
| 陷阱 | 表现 | 避免方法 |
| 忽略沟道长度调制 | 增益偏高30~50% | 始终在计算中包含λ |
| 忽略体效应 | 偏置点偏移 | 源极不接地时考虑γ |
| 忽略寄生电容 | 带宽偏高2~5倍 | 添加Cgs/Cgd/Cdb估算 |
| 过度依赖仿真 | 不理解电路行为 | 先手算再仿真验证 |
| 不验证工艺角 | 量产良率低 | SS/FF/TT全部验证 |
| 版图不考虑匹配 | 失调大 | 共质心+交叉指状 |
🧩 工程实践题
- 在你的设计中,增益和带宽的权衡点在哪里?
- 如何确定你的手算和仿真偏差是否合理?
- 如果仿真不收敛,应该怎么排查?
- 版图后仿真通常会比前仿真差多少?
- 如何制定设计收敛的退出标准?