多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

ORCAD/PSpice幅度相位谱分析:从AC Sweep到RLC谐振

ORCAD/PSpice幅度相位谱分析:从AC Sweep到RLC谐振 1. 方案选型与仿真思路为什么用ORCAD/PSpice做幅度相位谱分析1.1 核心需求解析频率响应到底在分析什么拿到一个电路很多人的第一反应是先算静态工作点、看时域波形这当然没错。但当你需要判断一个滤波器能不能把特定频率的信号滤掉、一个放大器在目标频段内增益是否平坦、一个反馈环路在什么频率下会变得不稳定时域波形给不了直观答案。这时候就必须看电路的幅度相位谱——也就是频域响应。幅度相位谱其实包含两条曲线一条是幅度-频率曲线另一条是相位-频率曲线。幅度曲线告诉你电路对不同频率信号的放大或衰减程度相位曲线告诉你信号经过电路后相位发生了多少偏移。这两条曲线合在一起就是电路频率特性的完整画像。我自己做硬件这些年一个特别深的体会是很多时域里莫名其妙的问题比如方波过冲、振铃、环路震荡根因都在频域里。幅度裕度不够、相位裕度不足这类词听着抽象但用PSpice拉一条伯德图出来一切一目了然。所以我一直建议做电路的同学不管是学模电还是做电源、做嵌入式硬件都值得把这个工具用熟。1.2 为什么选ORCAD/PSpice而不是其他仿真工具市面上能仿真电路的软件不少Multisim、LTspice、TINA-TI、ADS各有拥趸但我个人在需要严谨分析幅度相位谱时首选还是ORCAD/PSpice。原因有三个。第一PSpice的收敛性和仿真精度在同类工具里是公认的强。很多仿真软件在遇到强非线性器件、大信号瞬态时直接发散而PSpice对这类情况处理得更成熟给出的结果也更贴近实测。第二ORCAD Capture作为原理图入口与PSpice之间的联动非常顺畅。你能直接在原理图上放置探针、设置仿真参数、点击运行然后看波形。这个原理图-仿真-分析的闭环流程对硬件工程师来说效率是很高的。第三也是很多人容易忽略的——PSpice的器件库覆盖面广从基础的电阻电容到运放、二极管、MOSFET再到各种专用IC模型基本都能在里面找到。尤其是做电源完整性和滤波电路分析时模型越贴近真实器件仿真结果越有参考价值。当然工具没有绝对的好坏。如果你只是随手做一个一阶RC低通滤波器的幅频特性曲线LTspice也完全够用。但当电路复杂度上去或者需要和Cadence的PCB设计流程配合时ORCAD/PSpice的组合拳优势就很明显了。1.3 PSpice频域分析的本质AC Sweep是核心要理解用PSpice分析幅度相位谱的方法得先搞清楚它到底做了什么。PSpice里对应的分析类型叫AC Sweep交流扫描。它的工作逻辑和时域仿真完全不同——时域仿真是给电路施加一个随时间变化的信号然后计算每个时刻的电压电流而AC Sweep是在指定的频率范围内逐步改变输入信号的频率对每个频率点做一次稳态分析记录该频率下的幅值增益和相位移。换句话说AC Sweep是一种线性化的小信号分析。它会先把电路在工作点附近线性化把所有非线性器件近似成小信号模型然后用相量法在每个频率点上求解电路方程。这也是为什么AC Sweep里你不需要画一个具体的正弦波信号源——你只需要设置电压源的幅值和初始相位它默认就是一个正弦稳态激励。理解了这一点你就能明白一个重要的操作规律做AC Sweep之前必须保证你的电路存在有效的直流工作点。比如一个运放电路正负电源没接、反馈网络不对AC扫描出来的结果就是没有意义的。PSpice在AC扫描前会自动计算工作点如果工作点不收敛仿真会在很早就报错退出。2. 仿真前的准备工作与关键设置从原理图到可跑的仿真环境2.1 原理图绘制时的为仿真服务细节很多人觉得原理图只要能画出来、能过DRC就行但在用PSpice做幅度相位谱分析时原理图的质量直接决定仿真能不能跑通以及结果可不可信。我总结了几个特别需要注意的点。第一电源和地很重要。AC Sweep虽然是小信号分析但电路必须先建立直流工作点。所以你的原理图上必须有一个明确的地VSS节点电源网络也要标清楚。PSpice对悬空的节点、悬浮的电源特别敏感有时候报Node is floating查了半天发现就是一个电源符号没放好。第二信号源的设置要注意。做AC Sweep时激励源不一定要用正弦波源实际上很多人用VSIN正弦电压源或者VAC交流电压源都行。关键是在源的属性里正确设置AC幅度。如果你用VAC参数里会有AC这一项建议填1V这样输出结果直接就是增益值后续换算非常方便。如果用VSIN它的AC属性藏在属性列表中也需要单独设置不然扫描的时候这个源对电路来说相当于不存在输出就是一条直线。第三元件的值别偷懒。电阻电容电感都无所谓但如果你用到运放或者三极管一定选有PSpice模型的元件。ORCAD的库里很多元件图标一样但模型库不同。在原理图上双击元件能看到它的PSpice Model参数没有模型的器件在仿真阶段会直接报Missing Model错误。我建议新手一开始就用库里的元件别用自己画的通用符号去硬凑。2.2 AC Sweep参数设置频率范围、扫描类型与点数选择在建立好原理图、确保元件都有模型之后进入仿真设置选择AC Sweep/Noise分析类型。这里有几个关键参数需要仔细填。首先是起始频率和终止频率。这个取决于你的电路工作频段。比如分析音频电路从10Hz扫到100kHz就够分析电源环路可能要从1Hz扫到10MHz分析RF电路则要到GHz级别。我的一般经验是扫描起始频率至少比目标工作频率低一个数量级终止频率至少高一个数量级这样才能看清完整的边界特性。然后是扫描类型PSpice提供三种Linear线性、Octave倍频程、Decade十倍频程。做幅度相位谱分析时绝大多数情况下我推荐用Decade也就是十倍频程扫描。为什么用对数扫描因为电路的频率响应在宽频带内变化往往跨越好几个数量级如果用线性扫描低频段分到的点数太少响应曲线会不平滑而对数扫描可以在同一张图上同时看清低频和高频的细节。比如说扫描10Hz到1MHz一共跨越5个十倍频程每十倍频程选100点总共就是501个点画出来的曲线就很平滑。[ \text{总扫描点数} (\log_{10}{f_{\max}} - \log_{10}{f_{\min}}) \times \text{Points/Decade} 1 ]代入上面例子[ (6 - 1) \times 100 1 501 ]这样计算下来曲线精度和仿真耗时都能接受。如果追求更平滑可以增加到200点/十倍频程但仿真时间会明显变长。2.3 探针与波形显示如何让PSpice同时输出幅度和相位仿真运行完成后怎么查看幅度相位谱这一步很多新手会卡壳。最常用的方法是放置探针。在原理图上用鼠标点选你想观测的节点或者按住Ctrl点选信号线PSpice会在仿真的同时自动打开波形窗口并绘制该节点的频率响应曲线。需要注意的是默认情况下PSpice可能只显示幅度谱以dB为单位相位谱需要手动添加。在波形窗口Probe窗口中选择Trace菜单下的Add Trace添加表达式。对于节点电压表达式可以直接用V(OUT)来表示幅度而相位表达式在PSpice里稍微有点绕需要这样写P(V(OUT))这样就能获取输出电压的相位曲线。用同样的方式也能把输入源的相位取出来然后通过表达式相减得到真正的相位移。不过更方便的办法是自己定义差值P(V(OUT)) - P(V(IN))把这个表达式加进图里得到的曲线就是电路从输入到输出的净相位差。实测下来这条曲线在分析负反馈环路、滤波器相位特性时非常好用比看单一节点的绝对相位直观得多。还有一个细节如果你只想看增益而不想看绝对电压可以把幅度谱表达式设置成DB(V(OUT)/V(IN))这样得到的纵轴单位就是分贝dB直接用来看-3dB截止频率最合适。或者用20*LOG10(V(OUT)/V(IN))也是一样的效果。3. 实操案例从RC低通到RLC谐振的幅度相位谱分析3.1 案例一RC低通滤波器的幅度相位谱分析先从一个最简单的电路入手——一阶RC低通滤波器。别小看这个电路它是理解所有频域分析的基石。输入信号通过一个电阻R送到输出节点输出节点对地接一个电容C这个结构就是一个最基础的低通滤波器。我用的参数是R10kΩC10nF。根据低通滤波器的截止频率公式[ f_c \frac{1}{2\pi RC} ]代入数值[ f_c \frac{1}{2\pi \times 10 \times 10^{3} \times 10 \times 10^{-9}} \approx 1591.5 \text{ Hz} ]也就是说理论上这个电路的-3dB点在约1.59kHz附近。低于这个频率的信号能比较完整地通过高于这个频率的信号会被逐渐衰减。相位方面一阶低通在截止频率处相位偏移恰好是-45°频率远高于截止频率时相位渐近趋近于-90°。在ORCAD里把这电路图画好励磁源用VACAC幅度设为1V仿真设置为AC Sweep十倍频程扫描起始频率10Hz终止频率1MHz每十倍频程100点。运行后放置输出节点探针加两条曲线DB(V(OUT)/V(IN))和P(V(OUT))-P(V(IN))。实测仿真出来的曲线与理论完全吻合幅度谱在1.5kHz~1.6kHz之间掉到大约-3dB位置相位曲线在10Hz处接近0°到1kHz附近开始明显弯曲在1.59kHz处正好是-45°之后继续下滑并趋近-90°。从这个例子里可以学到两个重要技巧。其一学会用光标Cursor功能直接在波形上读数。Place Cursor后沿着曲线拖动能精确读出特定频率点的增益和相位这比肉眼看曲线估算靠谱得多。其二学会用理论计算去验证仿真结果——仿真不是玄学它和理论之间的关系应该是互相印证如果对不上要么是参数设置出错要么是电路画错了。3.2 案例二RLC串联谐振电路的幅度相位谱分析掌握了RC电路的幅度相位谱分析之后来看一个更复杂、也更有实际意义的电路——RLC串联谐振电路。LC并联谐振、LC串联谐振这些词在热词里反复出现说明大家在工程实践中确实很关心谐振电路的特性。这里我用RLC串联来做演示它比纯LC谐振更真实因为任何实际电感线圈都有直流电阻。电路参数选择R20ΩL100μHC10nF。串联谐振频率的公式[ f_0 \frac{1}{2\pi\sqrt{LC}} ]代入数值[ f_0 \frac{1}{2\pi\sqrt{100 \times 10^{-6} \times 10 \times 10^{-9}}} \frac{1}{2\pi\sqrt{10^{-12}}} \frac{1}{2\pi \times 10^{-6}} \approx 159.15 \text{ kHz} ]但是别忘了回路里还有个20Ω的电阻它会降低谐振峰的高度。谐振时LC阻抗互相抵消剩下的纯电阻就是R因此谐振频率处的电流达到最大值电感或电容两端电压也会明显升高这就是所谓的电压谐振。仿真设置和前面一致起始频率10kHz终止频率3MHzDecade扫描每十倍频程100点。输出电压从电感和电容串联支路两端获取。结果应该会在160kHz左右看到一个明显的谐振峰幅度响应不是单调递减而是先上升后下降。相位曲线在谐振频率附近发生剧烈变化从正相位穿过0°到负相位这个相位翻转现象是谐振电路最显著的标志之一。有一点要特别提醒RLC谐振电路的分析结果对R的值非常敏感。R越小谐振峰越尖锐R为零时理想串谐在谐振频率处的理论增益趋向无穷大但PSpice仿真中会因为数值限制收敛到某个很大的值同时可能伴随收敛警告。因此做仿真时尽量保留合理的阻尼电阻值既贴近工程实际也避免数值发散。3.3 结果解读与验证仿真曲线到底告诉了我们什么拿到曲线之后处理的功夫还没有结束。仿真只是第一步真正体现水平的是如何解读这些曲线把它变成改进电路的依据。对于RC低通的幅度谱我们不仅能看到-3dB点还能观察过渡带的斜率。一阶低通的衰减斜率是-20dB/十倍频程也就是频率每升高10倍增益下降20dB。如果你看到仿真结果里斜率明显偏离这个值那说明电路里可能还有其他隐藏的极点或者元件模型包含寄生参数。对于RLC电路我们关注的是谐振峰的位置、3dB带宽、Q值。从幅度相位谱里可以直接读出-3dB带宽(\Delta f)然后计算品质因数[ Q \frac{f_0}{\Delta f} ]当我用光标读出仿真曲线中的两个-3dB点发现带宽大约为32kHz计算得Q≈5。再与理论值对比[ Q \frac{1}{R}\sqrt{\frac{L}{C}} \frac{1}{20}\sqrt{\frac{100 \times 10^{-6}}{10 \times 10^{-9}}} \frac{1}{20}\sqrt{10000} 5 ]两组结果高度一致。这一步验证非常重要它告诉你仿真模型、参数设置全链路都是对的后续从这个电路基础上做任何扩展设计底子是可靠的。4. 常见报错、坑点与排查技巧实录4.1 典型仿真报错与解决方法速查表在实际操作过程中几乎每个用过PSpice的人都会遇到各种报错。我把常见的坑整理成一张速查表方便你对照处理。报错现象常见原因解决方法仿真发散Convergence Error电路缺少阻尼、反馈极性错误、初始条件不明确在仿真设置里增加迭代次数上限或添加初始条件节点或把电容电感初始电压/电流设为0节点悬空Node is Floating元件引脚未正确连接或电源地引脚悬空检查原理图确保所有接地点都是同一个网络名电源引脚全部连接Missing Model / Model not found元件库中选择的是无模型的示意图符号换成带PSpice模型的元件或手动添加模型库文件仿真结果为一条直线或恒为0信号源AC属性未设置或探针接在未驱动的节点上双击信号源检查AC幅度属性是否填了非零值波形窗口没出现探针未放置或仿真类型未选AC Sweep返回到原理图放置探针重新确认分析类型是AC Sweep而非瞬态曲线毛刺特别多扫描点太少或电路在部分频段发生小幅震荡提高每十倍频程点数到100以上检查是否有些频段存在谐振放大4.2 实操心得这些坑我替你踩过了第一坑信号源AC属性漏设。这是最隐蔽的错误因为很多PSpice版本里VSIN源默认的AC幅度是1V但VSRC或VDC源是没有AC属性的。如果你习惯用直流源加信号再做AC扫描那就必须去属性列表里手动添加AC项。我见过不少同学调了一个小时仿真都是直线原因就在这。第二坑直接在电感上并联电流探针。电感在AC分析中的阻抗随频率变化如果探针接的位置不对读到的不是支路电流而是包含位移电流在内的总电流结果会很怪。稳妥做法是用电流探针符号在PSpice库中专门有IPROBE器件串入支路或者直接在波形窗口写I(L1)表达式。第三坑忽略工作点计算失败的问题。我之前调一个两级放大电路AC扫描的时候PSpice提示工作点不收敛直接中断。百思不得其解后来发现是其中一个三极管的模型参数设置了过大的饱和电流。这种时候不要死磕AC参数回到工作点分析Bias Point单独跑一次先把直流工作点搞到收敛再回AC扫描。4.3 高级技巧从PSpice导出数据到外部工具做更精细的分析PSpice自带的波形窗口做常规查看足够但如果你想在文章里、报告里展示更专业的伯德图或者要把实验数据和仿真数据放在同一张图里对比建议直接把仿真数据导出来。在波形窗口中选择File菜单下的Export导出曲线数据可以保存为CSV或TXT格式。导出时注意选择要导出的数据流比如VDB(OUT)和VP(OUT)频率轴默认会一并导出。拿到这个文件之后用Python的matplotlib或者Origin都能画出很规范的图。如果你用的PSpice版本比较新波形窗口里还支持直接对曲线做数学运算比如对增益曲线求导来观察极点分布。这个技巧在分析复杂网络时很有用但多数人没有发现这个功能。在Trace Expression里直接写DERIV(DB(V(OUT)/V(IN)))就能画出增益变化率的曲线对判断极点和零点的位置很有帮助。4.4 关于仿真发散问题的深度排查思路仿真发散是最让人头疼的问题热词里也专门提到了仿真发散。我把它单独拿出来讲一下排查思路。PSpice报发散错误从根上说是数值迭代没有收敛到唯一解。常见触发原因按频率排序电源和地接错导致无解、元件参数极端比如容值只有1e-18F这种、电路拓扑存在死锁回路、模型不匹配出现奇异矩阵。遇到发散我会按顺序做三件事。先检查拓扑和参数有没有低级错误这个最快也最省事。然后尝试在仿真设置的Options里把RELTOL从默认的0.001改到0.01——放宽相对误差标准很多时候能强行收敛。如果还不行给电容加一个极其微小的并联电导比如1/GMINPSpice内部有GMIN选项尝试在Options里调小GMIN值比如1e-12改成1e-8这会等效地为每个PN结增加一个微小漏电通路大大帮助收敛。同时对电感的串联电阻也要进行检查理想电感在AC扫描时如果和理想电压源直接并联会出现奇异矩阵问题。解决办法是在电感属性里设置Rser串联电阻哪怕只有0.001Ω也能让数值计算稳定下来。这不仅是仿真技巧在真实电路里电感也一定有直流电阻所以加上反而更符合实际。根据我个人经验大多数发散问题在加了一个真实的寄生电阻之后都能解决。如果加了电阻还是发散再去翻模型参数看是不是模型本身有问题。实在不行就换个同功能的替代元件不要死磕一个模型有时候一个厂商的模型在PSpice里收敛性不好换个厂商的同一器件模型就一切正常了。4.5 利用Marker和测量函数提高效率最后分享一个操作上的效率技巧。在PSpice波形窗口里可以直接用Markers工具不用自己手动用光标去慢慢找-3dB点。在波形图上右键选择Plot Window Templates里面有自带的测量模板可以直接标记出带宽、相位移、50%点、3dB点等关键位置。更实用的是利用Probe窗口的Evaluate Measurement功能你能用函数自动计算相位裕度Phase Margin这在分析电源环路、运放反馈稳定性时非常关键。自动计算出来的结果比手动画辅助线找交点快得多而且不容易出错。5. 结尾一点经验与建议做幅度相位谱分析这件事工具层面其实不复杂难的是脑子里要时刻有频域视角。我见过很多工程师习惯性地拿到电路就只看时域波形结果调试一个高速信号完整性问题时怎么调都不对后来拉了一下频域响应发现某个网络在目标频率附近有个谐振峰问题的根源瞬间就清楚了。建议你从今天这个项目出发把RC低通、RLC谐振这两个基础电路先跑熟然后尝试给自己手头项目的关键网络做一次AC Sweep看看那些你以为很干净的信号链路在频域里到底长什么样。用PSpice做幅度相位谱分析本质上就是给电路的内功做一次体检越早养成这个习惯后面做设计的底气就越足。在实际操作中我会同时把仿真数据和手算结果一起贴在调试笔记里遇到参数不对先找手算和仿真的差异这个习惯帮我避开了很多因为模型和实际器件参数不一致导致的坑。上手试一次你会发现它真的不难。
返回列表