资讯详情

资讯详情

AD电路仿真实操指南:模型、瞬态/AC分析与参数扫描全流程

做硬件这些年我越来越觉得“仿真”这个环节被太多人低估了。很多人用Altium Designer画板子画得飞起布线、铺铜、DRC玩得明明白白但一提到仿真要么摇摇头说“不会”要么觉得“没必要直接焊板子测不就行了”。说实话我以前也这么想直到有一次做一个电源电路板子打样回来焊完一测纹波大得离谱查了半天发现是反馈补偿的参数选得不合适只能改板重来一来一回折腾了两周。从那以后我就把AD自带的那套仿真功能当成了常规武器先仿后画省下的可不是一星半点的时间和打样费。这篇东西就是把我用Altium Designer做电路仿真的完整经验整理出来从环境配置、模型准备到瞬态分析、AC扫描、参数扫描的具体设置再到各种报错和不收敛问题的排查思路全部是实操记录。适合手里已经会画原理图、想给电路加一道“仿真保险”的硬件工程师也适合刚接触AD、想知道仿真到底怎么下手的初学者。内容不涉及高深的理论推导只讲能直接上手的干货。1. 仿真前的整体思路别把仿真当摆设1.1 “先仿后画”的工作流到底怎么落地我推荐的流程很简单原理图画完不要急着转PCB先花半小时把关键电路仿真一遍确认没问题再往下走。这里的“关键电路”指电源、滤波、放大器、接口保护这类对参数敏感的模拟电路数字逻辑部分基本不用仿真跑一下DRC就够了。具体的落地方式是这样的原理图设计阶段就把仿真模型挂到元件上顺手放好仿真源和探针等到整图完成直接切到仿真面板跑一轮看波形、看数值,有问题当场改参数改完再仿直到结果满意再转PCB。整个过程不需要额外安装任何工具AD自带的MixedSim仿真器就能干这个活。有人可能会说那我不如用专业仿真软件何必在AD里做。我的看法是专业工具有它的优势但AD仿真的价值在于“顺手”。你不用导出网表、不用来回切换工具、不用维护两套原理图改了原理图就能立刻重仿。对于日常80%的电路验证需求AD的仿真精度和功能完全够用剩下20%需要做电磁兼容、热分析、信号完整性这类深层次仿真时再上专业工具也不迟。1.2 AD的仿真能力边界哪些能信哪些别勉强AD仿真器的核心是SPICE引擎它擅长的是时域和频域的小信号分析。具体来说以下这些场景是它的舒适区电源电路的启动过程、负载响应、纹波分析放大器电路的增益、带宽、相位裕度验证滤波电路的幅频特性、相频特性验证RC充放电、延时电路的时间常数验证参数变化对电路性能的影响这些场景有一个共同点电路规模不大器件模型相对成熟仿真结果和实测的吻合度很高。反过来有些场景就别指望AD了包含数字芯片时序逻辑的混合信号系统仿真、天线和射频电路的S参数分析、大规模电源完整性仿真这些要么模型支持不好要么算法不是SPICE擅长的硬跑出来的结果也没什么参考价值。我还有一次尝试用AD去仿一个包含完整数字锁相环的电路结果模型动不动就不收敛最后还是老老实实用专用的混合信号仿真工具。1.3 选对仿真策略从“全仿”到“精仿”刚开始用AD仿真的人容易犯一个毛病恨不得把整块原理图全部扔进去仿一遍。实际上SPICE仿真的收敛性和速度跟电路规模强相关电路越大越容易出“不收敛”或者“步长卡死”的问题。我现在的习惯是先做分模块仿真再做关键链路仿真。分模块的意思是把电路按功能切块比如电源部分单独仿真、放大链路单独仿真、滤波网络单独仿真。每块验证通过后再把有耦合关系的模块合在一起做一次整链路仿真。这么做的好处是问题定位快仿真失败时能迅速缩小范围。比如一个Buck电源带负载反馈网络的电路如果整体仿真不收敛我会先把反馈断开单独仿Buck主回路确认主回路没问题再把反馈接回去一步一步找问题。“精仿”则是针对具体指标做仿真。比如我要验证一个LDO的电源抑制比就专门布一个AC分析的测试点扫频率看增益曲线我要验证上电时序就设一个瞬态分析观察几个电源轨的上电顺序和延时。别指望一次仿真把所有问题都暴露出来每一次仿真只回答一个具体问题这才是高效的做法。2. 仿真环境与模型准备这一步偷懒后面全是坑2.1 仿真模型从哪来自带库、厂商模型和自建模型AD的仿真库里自带了一批常用元件的仿真模型比如基本RLC、二极管、三极管、运放、比较器的常用型号。在元件库面板里搜索时如果一个元件带有仿真模型的标识通常是在模型列表里能看到Simulation那一栏说明这颗元件可以直接用来仿真。但实际工程里用到的元件绝大多数不在自带库里。这时候有三个获取途径我按优先级排序第一优先去芯片厂商官网下载SPICE模型。现在主流模拟器件厂商基本都提供免费模型格式通常是.lib、.cir、.subckt或者加密的符号模型。下载的时候要注意选择适合的模型版本有些厂商会分“概念模型”和“详细模型”前者仿真快但精度低后者精度高但速度慢根据自己的需求选。第二用同类型的替代模型临时顶上。如果实在找不到某颗具体型号的模型可以用同系列、参数相近的型号代替。比如我找不到某颗国产运放的具体模型就先用TI或者ADI的同规格运放模型来仿仿真目的是验证环路稳定性和增益带宽这类拓扑级指标管脚参数差异影响不大。这个方法够用但仿真报告里要注明用的是替代模型。第三自建模型。这个适合特别简单的器件比如一个定制参数的二极管、一个带寄生参数的电容。AD支持直接用SPICE语句定义子电路模型也能用基本元件组合搭建等效模型。我做过一个高频变压器的等效模型漏感和分布电容就是自己搭的仿真效果不错。2.2 给元件挂仿真模型两种路径一个原则在AD里要让元件参与仿真必须让仿真器能找到它的模型。挂模型的操作路径有两条路径一是在原理图编辑界面选中元件打开属性面板在“模型”选项卡里添加Simulation模型然后配置模型类型和参数。这是最常规的做法适合给单个元件挂模型。路径二是用AD的“模型同步”和“从库更新”功能。如果你的元件库在设计时就已经把仿真模型绑定了在元件库编辑器里把模型文件关联到元件符号上那么放置到原理图中的元件自动带仿真模型不需要逐个配置。我的原则是尽量在元件库层面就把仿真模型绑定好。这样做一次整个项目组都能复用后续画新原理图再也不用来回来去挂模型。维护元件库时每添加一个新元件就顺手把仿真模型、PCB封装、三维模型一起绑好这才是完整的元件库管理。2.3 仿真源与探针测量电路的接法在AD中启动仿真的第一步是从“放置”菜单里调出仿真源和探针。常用的是电压源VSRC、电流源ISRC、电压探针和电流探针。这里有几个细节仿真源不是普通电源符号它带有信号属性设置比如直流电平、幅值、频率、波形类型正弦、方波、脉冲、分段线性这些都放在源属性里配置。探针则相当于示波器探头放置到节点上仿真结果就能看到这个节点的波形。一个容易犯的错是探针放错位置。电压探针要放在节点和地之间电流探针要串进回路里。我曾经把电流探针并接在负载两端结果仿真器直接报错“探针连接方向无效”排查了半天才发现是探针类型和接法不配套。放置好仿真源和探针后还需要在原理图上放置一个“网络标签”或者在仿真面板里设置“观察信号”确保探针的信号被纳入输出。很多新手在这里卡住明明放了探针但仿真波形列表里什么都没有多半就是没有把探针信号加到观察列表里。3. 仿真类型与参数整定从“能跑通”到“跑得准”3.1 瞬态分析步长和仿真时间的确定方法瞬态分析Transient Analysis是用来观察电路随时间变化的行为的比如上电瞬间的冲击、开关动作后的振铃、负载突变后的恢复过程。设置界面里有几个关键参数仿真结束时间Stop Time、最大仿真步长Maximum Step、初始步长等。我的经验是仿真结束时间不要拍脑袋定。先估算电路的时间常数比如一个电源的环路带宽是10kHz对应的周期是100µs那么至少仿5~10个周期也就是500µs到1ms才能看到稳定的环路响应。如果是看启动过程还要考虑软启动时间通常要仿到输出电压稳定后再持续一段。最大步长这个参数容易被人忽略但恰恰是它决定了仿真波形能不能看。步长设得太大快速变化的细节会被“平滑”掉毛刺、振铃全看不见步长设得太小仿真时间翻好几倍。我的习惯是先设一个相对大的步长比如周期的1/20跑一遍看大致波形再逐步缩小步长直到波形在感兴趣的时间段内不再有明显变化为止。举个例子我仿一个3.3V的Buck电源开关频率是500kHz周期2µs纹波脉动只有几十毫伏。如果步长设成200ns纹波波形看起来就是一根直线完全看不出纹波幅度把步长缩到20ns之后纹波电压的三角波形状就出来了峰峰值一目了然。所谓“跑得准”并不只是参数精确更关键的是步长要配得上你要观察的信号频率。3.2 AC小信号分析扫频范围和测试点的选择AC分析用来做频率响应仿真比如放大器增益、滤波器幅频特性、环路稳定性分析。它的本质是小信号线性化所以只适合线性时不变电路的频域特性大信号非线性现象比如压摆率限制、削波失真是看不到的。参数设置上需要确定扫描类型和频率范围。扫描类型有线性、倍频程和对数三种我习惯用对数扫描Decade每十倍频程取的点数设20~50个这样得到的曲线在低频段和高频段都有足够的分辨率。频率范围要根据电路特性定比如开关电源的环路分析习惯从10Hz扫到1MHz覆盖穿越频率附近即可。AC分析还有一个关键点是输入激励的配置。AC分析需要给信号源设置一个AC幅度通常设为1表示0dB基准这样输出的幅频曲线直接就是电路的传输函数增益读起来非常直观。这个AC幅度是在仿真源的属性里单独填的和瞬态分析用的正弦波幅度是两回事。我第一次用的时候没填AC幅度结果仿出来的增益曲线是负无穷dB查了半天才明白问题出在这里。3.3 参数扫描与DC分析自动化批量验证参数扫描在AD里叫Parameter Sweep它可以嵌套在别的分析里比如“对电容C1的容值从1µF扫到10µF步进1µF每个值都做一次瞬态分析”这样就能一次性看电容变化对波形的影响非常省事。DC分析常用的有两种DC Transfer Characteristic直流传输特性和DC Sweep直流扫描。前者是扫某个源的直流值、看某个节点电压的变化后者则是扫多个参数组合。做输入输出特性曲线、晶体管转移特性时很好用比如我做一个限流保护电路用DC扫描看限流点随采样电阻的变化一组曲线就能覆盖整个设计范围。参数扫描设置里有个“主扫描”和“次扫描”的概念。主扫描参数变化时次扫描参数保持某个固定值等主扫描跑完一轮次扫描参数再变到下一个值继续跑。这种嵌套扫描可以观察两个参数共同作用下的电路行为但组合数是指数增长的计算量会很大实际用的时候要克制一点别贪多。3.4 再补充一个实用功能蒙特卡洛分析AD里还提供了蒙特卡洛分析Monte Carlo Analysis。简单说它让元件的参数在额定值附近按一定容差随机波动然后重复多次仿真看输出参数的分布范围。这对于评估批量生产的良率非常有参考价值。我做过一个分压电阻网络标称输出1.8V参考电压用蒙特卡洛跑200次1%精度电阻的分布结果大约是±20mV。这个数据直接告诉我这个电路如果不做微调会有部分板子的参考电压超出后级电路的允许范围于是赶紧把分压电阻的精度规格提到了0.5%。这个仿真用到的设置不多就是指定容差类型和分布模型但能避免实际量产时的重大损失。4. 实操案例全流程一个Buck电路的仿真实录4.1 电路搭建与模型挂载下面用一个我近期做过的12V转3.3V Buck电源来完整演示一遍。电路结构是PWM控制器加MOSFET功率级、电感电容滤波、反馈分压电阻和补偿网络。原理图画好后第一步就是检查所有有源器件的仿真模型。控制器芯片从厂商官网下载了SPICE模型是一个压缩包里带的.lib文件。把.lib文件放到项目目录下然后在元件属性里通过“模型—添加—Simulation”关联这个文件。这里有个小坑有些.lib文件包含多个子电路关联时需要指定使用哪个子电路名Subcircuit Name填错了会报“模型未定义”。解决方法是在模型配置界面里下拉选择正确的子电路名一般来说厂商的说明文档里会写。无源器件不需要特意挂模型默认的RLC理想模型就够用。但如果是做EMI滤波这种对寄生参数敏感的电路我会额外在电容模型里设置等效串联电阻ESR和等效串联电感ESL。Buck输出端的陶瓷电容ESR大约几毫欧到几十毫欧直接在电容属性里填上就行这个细节对纹波仿真影响很大。4.2 瞬态仿真验证上电波形模型就位后我在输入端放置一个VSRC仿真源设置为一个12V的阶跃信号瞬态分析中源在上电瞬间从0跳到12V然后在输出节点和开关节点各放一个电压探针。打开混合仿真面板配置瞬态分析参数仿真结束时间2ms覆盖软启动和环路稳定过程最大步长50ns开关频率500kHz周期2µs50ns足以分辨开关边沿和纹波细节输出信号添加输出端和开关节点的探针点运行仿真开始。等待几秒后波形出来能看到输出电压从0缓慢爬升到3.3V开关节点的方波脉冲链条也完整显示。但仔细观察发现输出电压在启动过程中有一个明显的过冲大约超过了稳定值的6%且震荡了两个周期才收敛。这个现象说明环路阻尼不足相位裕度偏低。我把这个过冲截图在原理图上标记了“待优化”作为暂时的记录。4.3 用参数扫描挑选输出电容针对上电过冲问题我怀疑输出电容的容值和ESR选择不太合适。这时候用参数扫描批量验证是最快的办法。我在瞬态分析里嵌套了参数扫描主扫描参数设为输出电容的容值从22µF扫到220µF步进22µF一共10组曲线。跑完后再把ESR作为第二组扫描参数范围从5mΩ到50mΩ。结果很直观当容值达到100µF以上时过冲基本消失ESR高于20mΩ时纹波明显变大。根据这两组曲线我把输出电容定在了100µF/10mΩ的组合既不过冲纹波也控制在30mV以内。这个参数如果靠手工计算需要列传递函数算零极点费时费力还容易算错仿真扫描几分钟就搞定了。4.4 仿真结果如何反哺原理图修改除了输出电容仿真还发现反馈补偿网络的高频零点位置偏高导致相位裕度在穿越频率附近偏小。这个判断来自AC分析我在反馈节点加入AC激励扫描频率从100Hz到1MHz看到增益曲线在10kHz处穿越0dB时相位是-145°。相位裕度只有35°太低了按经验至少要45°以上才稳妥。于是我把补偿电容从47pF调整到100pF再次运行AC分析。这次穿越频率略降到8kHz但穿越点的相位变成了-115°相位裕度恢复到65°同时低频增益基本没变。波形验证瞬态时上电过冲也进一步减小。整个过程就是“AC分析定频率补偿瞬态分析验证时域结果”两组仿真相互印证比单看一类仿真可靠得多。5. 常见报错与调参避坑手册5.1 “不收敛”到底怎么处理“Simulation failed to converge”是仿真里最常见的报错新手第一次看到容易慌。我的经验是先别乱改参数按下面的顺序排查。第一步检查模型和电路连接。很多不收敛是因为元件引脚悬空、模型子电路引用错误、或者探针接到了没有直流路径的节点上。这类问题在电路层面解决比在求解器参数里折腾有效得多。第二步检查是否有不合理的初始条件。比如一个电容初始电压为100V但电路实际上电才5V仿真器在初始工作点计算时就会很难收敛。解决办法是指定电容的初始条件Initial Condition或者把上电过程放缓加一个缓坡源。第三步调整求解器参数。AD的仿真器配置面板里有几个容差相关的选项比如相对误差RELTOL、绝对误差ABSTOL、迭代次数上限等。我的习惯是把相对误差从默认的0.001放宽到0.005同时把迭代次数上限加大很多时候就收敛了。注意别放得太宽否则结果可信度会打折扣。第四步缩短仿真步长限制。不收敛还常常因为仿真步长太大导致迭代时跳过了某个高斜率区间。把最大步长缩小到原来的1/10重新跑一遍大概率能解决。5.2 模型缺失或者引脚不匹配“Model not found”或者“Pin mismatch”这类报错多发生在给器件挂模型的时候。报错原因通常是以下几种模型文件路径写错了AD找不到文件。建议把模型文件复制到项目文件夹内用相对路径引用。子电路名填错.lib文件里包含多个子电路时选错了名字。元件的引脚名称和模型定义的引脚名称对不上。比如符号上叫“IN”“IN-”的运放模型里可能叫“1”“2”“3”这时候需要在模型映射表里把符号引脚和模型引脚一一对应起来。第三种情况最隐蔽报错信息不会直接说引脚名不匹配只会说“模型无法解析”。我处理这类问题时会把模型文件用文本编辑器打开直接看模型内部的节点定义再回到AD里对照映射基本一眼就能看出哪里对不上。这个方法听起来原始但真的比反复猜快很多。5.3 仿真速度慢到怀疑人生仿真速度慢最常见的原因是步长设置不合理。很多人把最大步长设得特别小比如5ns去仿一个1ms的启动过程步数上百万自然慢得离谱。实际上检查波形细节时只在关键时间窗口用小步长就够其他区间用正常步长。AD支持分段设置输出步长合理使用能大幅提速。另一个原因是电路里有高频振荡或非常陡峭的边沿导致SPICE求解器被迫把步长缩得很小。比如理想电压源和实际电容之间来回反射会产生毫微秒级的振荡这种振荡对结果没有意义但会拖垮仿真速度。解决办法是给理想源串一个小电阻或者在高频振荡节点并一个小电容把无意义的振荡抑制掉。5.4 仿真结果和实测对不上这是大家问得最多的问题“我仿出来好好的焊出来怎么就不一样”我总结了三个最常见的原因。第一模型精度问题。厂商模型里很多参数是典型值不是最坏值。实际芯片的批次差异会让参数有偏差仿真用的是“标准体质”实测可能抽到“体质较弱”的那一颗。所以如果仿真结果只是看起来好没有任何余量实测大概率会出问题。第二PCB寄生参数没算进去。仿真时PCB走线的电阻、电感、寄生电容都是不存在的。高频电路里一根走线几十nH的电感就足以让实测波形和仿真波形差出一大截。低速率电路不明显但开关电源的开关节点、高速信号线就非常敏感。第三测量方法的问题。示波器探头的地线夹子本身就带电感测高频纹波时会把噪声耦合进来。我测Buck输出纹波时以前直接用探头地线夹接地测出来的纹波比仿真的高出好几倍后来改用弹簧地针让探头地和被测点距离缩短到几毫米测出来的纹波马上小了很多数值也回到仿真范围。测量手段要规范再谈结果对比。5.5 几个容易忽略的设置细节还有一个经常被人忽略的细节是“仿真仪表的缩放和单位”。AD仿真面板的波形窗口支持多个信号同时显示但如果信号的量纲差太远小信号会被大信号“压扁”看上去像一条直线。比如想看清楚输出电压3.3V旁边的20mV纹波默认坐标下根本看不出来。这时候要么给波形加单独的缩放视图要么在探针属性里给这个信号设一个偏移量把直流成分去掉再显示细节就出来了。仿真之后还要保留环境和数据。AD允许把仿真配置保存为配置文件下次打开原理图可以直接复用。我一般把仿真源、探针、扫描参数都保存进工程这样别人拿到我的工程打开仿真面板就能直接复现我当时的仿真结果不需要从头配置。这个习惯对于团队协作非常有用。6. 我个人对仿真这件事的几点体会仿真不是一个“锦上添花”的功能它更像是设计流程里的一个验证关卡。我自己踩过太多次“仿真是浪费时间直接做板实测最快”这种想法的坑结果反而是打样周期被拉长、改版次数变多。反过来把仿真用顺了之后打样回来的板子几乎一焊就能工作调试时间大幅缩短。关于学习路径我建议从最简单的RC电路开始在AD里跑通一个瞬态分析再慢慢加上二极管、三极管、运放最后尝试完整的电源闭环仿真。很多人一开始就想仿复杂的系统遇到报错就放弃其实仿真能力是“喂”出来的多仿多踩坑经验自然就有了。另外一个值得提的方向是AD的仿真能力不只是用来“看波形”还可以做参数优化和方案对比。比如选电感时手里有三四款感值和饱和电流不同的样品与其每颗都焊上去实测不如先在仿真里把它们的波形都跑一遍挑出性能最优的再打样。这种做法本质上是把一部分调试工作前置到设计阶段对项目周期很有价值。最后再分享一个小技巧吧——仿真文件一定要和原理图一起归档。我见过太多人仿真做完结果数据不保存下次要汇报或者复现时只能重新跑一遍。在AD里仿真源、探针、扫描配置这些都是跟原理图一起保存的只要养成良好的保存习惯这些成果就能变成团队的长期资产。关于仿真这个功能就先说这么多如果你在用的过程中遇到什么奇怪的问题也可以按照前面提到的排查思路一步步来大多数问题都能落地解决。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →