4. 交流扫描分析

交流扫描分析:一阶低通滤波器幅频特性 学习卡片

上一讲我们把瞬态、直流和交流分析聊透了。今天要讲的这四种分析,说实话,在常规仿真里用得没那么频繁。但一旦你碰到高性能模拟电路——比如低噪声放大器、高精度基准源、锁相环——它们就是绕不开的坎。

我个人习惯把这四种分析归为「进阶四件套」。噪声分析管信号质量,零极点分析管稳定性,灵敏度分析管工艺偏差,蒙特卡洛分析管良率。咱们一个一个来。

核心观点:这四种分析不是「可选」的,而是「必须会」的。尤其是噪声和蒙特卡洛,流片前不看一眼,心里真没底。

4.1 噪声分析(.noise)—— 信号链的「底噪」到底有多低?

噪声分析,说白了就是算电路输出端的噪声功率谱密度。你想想看,一个放大器增益再高,如果输出噪声比信号还大,那这放大器就没用了。

.noise 语句的基本语法:

.noise V(out) Vsrc dec 100 1k 1G

参数含义:

  • V(out):输出节点(电压噪声)
  • Vsrc:输入信号源(用于归一化)
  • dec 100 1k 1G:频率扫描范围 1kHz ~ 1GHz,每十倍频 100 个点

我在项目中遇到过一件事:一个运放仿真噪声只有 5 nV/√Hz,但流片回来实测有 12 nV/√Hz。查了半天,发现是仿真时没加封装寄生电阻的热噪声。嗯,这里要注意——.noise 只算器件本身的噪声,封装、走线、焊盘的寄生电阻噪声它不管。你需要在网表里手动加这些寄生电阻。

小技巧:仿真完成后,用 .print noise 或 .plot noise 看输出噪声曲线。我习惯同时看 onoise(输出噪声)和 inoise(等效输入噪声),两者关系是:onoise = inoise × 增益。如果 inoise 比理论值大,说明前级噪声贡献过多。

噪声分析的工程应用场景:

  • 低噪声放大器(LNA)的噪声系数优化
  • 基准源的噪声抑制比(PSRR)仿真
  • 锁相环(PLL)的带内相位噪声估算
  • 比较器的输入参考噪声评估
避坑指南:我曾经在仿真一个 0.18μm 工艺的运放时,发现噪声曲线在 10kHz 附近有个奇怪的尖峰。排查后发现是仿真精度不够——把 reltol=1e-3 改成 reltol=1e-6 后尖峰消失了。噪声仿真对精度很敏感,建议用 .options reltol=1e-6。

4.2 零极点分析(.pz)—— 稳定性好不好,看极点就知道

零极点分析,说白了就是找传递函数的极点和零点。为什么重要?因为极点决定稳定性,零点决定带宽。

.pz 语句的基本语法:

.pz V(out) Vsrc

这会输出所有极点和零点的实部、虚部、频率和 Q 值。我一般重点关注:

  • 主极点:最低频率的极点,决定带宽
  • 次主极点:第二低频率的极点,决定相位裕度
  • 右半平面零点:如果有,稳定性会变差

我记得有一次调一个三级运放,交流仿真看相位裕度有 60°,但瞬态仿真就是振。用 .pz 一查,发现有一个共轭极点对的 Q 值高达 5。Q 值大于 0.707 就会有尖峰,大于 1 就可能振荡。所以只看相位裕度是不够的,极点 Q 值也要盯。

关键指标:对于运放,我要求所有极点 Q 值 ≤ 0.707,相位裕度 ≥ 60°。如果 Q 值超标,需要调整补偿电容或 Miller 电容。

零极点分析的工程应用场景:

  • 运放、LDO、比较器的稳定性评估
  • 滤波器(有源/无源)的频率响应分析
  • 锁相环的环路稳定性判断
  • 振荡器的起振条件分析
小技巧:.pz 分析默认只算小信号极点。如果你想知道大信号下的极点变化,可以用 .pz V(out) Vsrc pol 只算极点,或者用 .pz V(out) Vsrc pz 同时算极点和零点。我习惯用后者,因为零点对稳定性同样重要。

4.3 灵敏度分析(.sens)—— 哪个器件最「敏感」?

灵敏度分析,说白了就是看某个参数变化对输出影响有多大。比如,一个电阻值变化 1%,输出电压变化多少?这就是灵敏度。

.sens 语句的基本语法:

.sens V(out)

这会输出每个器件参数(电阻值、MOS 管宽长比、电容值等)对输出 V(out) 的归一化灵敏度。数值越大,说明这个器件越「敏感」。

我在项目中遇到过一件事:一个带隙基准源,仿真温度系数很好,但流片回来发现不同芯片的基准电压偏差很大。用 .sens 一跑,发现两个匹配电阻的灵敏度最高。后来我把这两个电阻的版图改成共质心匹配,失配问题就解决了。

避坑指南:.sens 分析只做小信号灵敏度,也就是在直流工作点附近做线性化。如果你要分析大信号下的灵敏度(比如比较器的翻转阈值),需要用 .sens 配合 .dc 扫描。我曾经犯过这个错,以为 .sens 能覆盖所有情况,结果仿真结果和实测对不上。

灵敏度分析的工程应用场景:

  • 带隙基准源的电阻匹配优化
  • ADC/DAC 的电容失配分析
  • 运放输入对管的匹配要求确定
  • 滤波器中心频率的温度漂移评估
核心观点:灵敏度分析是「设计导向」的——它告诉你哪里需要花精力优化。如果某个器件的灵敏度很高,你就要在版图里给它做匹配、加 dummy、或者用更大尺寸。

4.4 蒙特卡洛分析(.mc)—— 流片良率到底行不行?

蒙特卡洛分析,说白了就是模拟工艺偏差。每次仿真随机取一组工艺参数(比如阈值电压、电阻值、电容值),跑 N 次后看输出分布。如果分布太宽,说明良率堪忧。

.mc 语句的基本语法:

.mc 1000 tran 10u
.measure tran vout_avg AVG V(out)
.measure tran vout_std STD V(out)

这会跑 1000 次瞬态仿真,每次随机取工艺参数,然后统计 V(out) 的平均值和标准差。

我一般跑 200 次做初步评估,1000 次做最终验证。为什么?因为 200 次能看出趋势,但标准差误差大约 ±10%;1000 次能把误差降到 ±3% 左右。

小技巧:蒙特卡洛分析很慢。如果电路很大,建议先用 .sens 找出敏感器件,然后只对这些器件做蒙特卡洛,其他用典型值。这样可以节省 80% 的仿真时间。

蒙特卡洛分析的工程应用场景:

  • 基准源的输出电压分布评估
  • 比较器的失调电压分布
  • ADC 的 DNL/INL 良率预测
  • 振荡器的频率偏差范围
避坑指南:我曾经在跑蒙特卡洛时发现结果异常——标准差比预期大 3 倍。查了半天,发现是随机种子没固定。每次跑的结果都不一样,没法复现。后来我在 .mc 语句里加了 seed=12345,问题就解决了。建议所有蒙特卡洛分析都固定种子,方便 debug。

4.5 四种分析的对比与选择

这四种分析各有各的用途,但很多新手会搞混。我整理了一个对比表:

分析类型 核心问题 输出结果 典型应用 仿真时间
.noise 噪声有多大? 噪声功率谱密度 LNA、基准源 中等
.pz 稳定性如何? 极点/零点位置 运放、LDO 快
.sens 哪个器件最敏感? 归一化灵敏度 匹配优化 快
.mc 良率够不够? 统计分布 量产评估 很慢

我的建议是:先跑 .pz 看稳定性,再跑 .noise 看噪声,然后用 .sens 找敏感点,最后用 .mc 评估良率。这个顺序能帮你快速定位问题,避免浪费时间。

4.6 本章知识体系

下面这张图总结了四种分析的核心逻辑和工程应用:

进阶四件套:四种分析的核心逻辑 电路性能评估 .noise 噪声分析 .pz 零极点分析 .sens 灵敏度分析 .mc 蒙特卡洛分析 应用场景 LNA、基准源 信号链噪声优化 应用场景 运放、LDO 稳定性评估 应用场景 匹配优化 失配分析 应用场景 量产良率评估 工艺偏差模拟 输出:噪声谱密度 单位:V²/Hz 或 A²/Hz 输出:极点/零点 单位:Hz、Q值 输出:归一化灵敏度 无量纲 输出:统计分布 均值、标准差、良率 建议顺序:.pz → .noise → .sens → .mc

这张图把四种分析的核心逻辑串起来了。你从「电路性能评估」出发,根据需求选择对应的分析类型,然后看输出结果和应用场景。记住这个框架,以后遇到问题就知道该用哪种分析了。