ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

嘉立创EDA专业版原理图仿真入门:用NGspice跑通RC电路与瞬态分析

嘉立创EDA专业版原理图仿真入门:用NGspice跑通RC电路与瞬态分析 用嘉立创EDA画原理图的工程师和学生越来越多但很多人只把它当成纯粹的画板工具原理图画完检查一下电气规则就直接进入PCB布局。这种方法不是不能用问题是当电路里存在分压、滤波、开关时序、放大器偏置这类需要定量判断的结构时仅靠人手估算很容易出错。嘉立创EDA专业版里其实集成了基于NGspice的仿真能力可以在投板前先把电路行为跑一遍提前看出节点电压、暂态波形、频率响应甚至器件工作点的问题。这篇文章不打算讲大而全的SPICE理论而是按我实际使用的顺序拆开讲讲嘉立创EDA里NGspice仿真到底能干什么、需要准备什么、怎么跑通一次仿真、参数怎么设、报错怎么查。适合两类人看一类是刚接触仿真、想在画板前验证电路的电子相关专业学生另一类是已经用嘉立创EDA画过板、但一直没把仿真用起来的设计工程师。1. 先理解它解决什么问题仿真不是画板的反面而是画板前的验证环节1.1 很多人跳过仿真是因为没想清楚用它看什么我见过不少新人把仿真理解为“高级测评”好像只有做开关电源、做锁相环的人才需要仿真。其实不是。一个最简单的例子电阻分压。假设你用两个电阻给芯片的参考引脚提供分压电压手上电阻精度、负载电流、温度漂移都会影响实际电压。如果只是心算一个理想值往往忽略负载效应。仿真跑一次直流工作点半分钟内就能看到带上负载后电压偏离了多少。再比如RC低通滤波到底选多大电容才能让某个频率的信号衰减到可接受范围手算能算但如果信号不是标准正弦波而是带毛刺的数字波形手算就比较痛苦瞬态仿真却可以直接给你看输出波形。这里要说清楚一个定位问题仿真的价值不是让你完全不用计算而是用它把需要反复验算、容易被忽略的动态行为补上。画的原理图能不能正常工作在仿真里先暴露问题总比板子打样回来再拿飞线改要划算。1.2 NGspice在嘉立创EDA仿真里扮演什么角色NGspice是开源社区里非常经典的SPICE类电路仿真引擎它的源头和经典的Berkeley SPICE一脉相承。嘉立创EDA专业版的电路仿真引擎核心走的就是SPICE这条技术路线原理图上的元件会被转换成网表仿真引擎再把电压电流关系解算出来。对普通用户来说你不一定需要去写SPICE命令也不用去编译任何C代码。但理解这两点会对排查很有帮助第一原理图上的元件不是只有封装还要有仿真参数。电阻、电容这类无源器件通常只需填阻值和容值二极管、三极管、运放等器件则需要拥有对应的SPICE模型参数。很多元件库里的符号自带模型但并不是所有型号都带。第二仿真底层本质上是在解方程。如果电路连基本的直流工作点都找不到仿真器会直接报不收敛而不是勉强给你一个看着合理的波形。遇到这种问题不要怀疑软件坏了多半是电路本身或模型参数有问题。顺便说一句我常看到有人问“能不能在嘉立创EDA里直接仿真别人的Spice模型文件”。答案是能但前提是把模型导入并正确关联到元件上这个后面专门说。2. 跑仿真前要准备什么版本、模型、接地都要先确认2.1 版本和网络环境怎么选嘉立创EDA有标准版和专业版之分网页版打开就能用也有可以在本地运行的客户端方式。做仿真时我更建议使用专业版并且优先使用能离线完成主要编辑和仿真流程的版本。原因很简单仿真过程需要反复调整参数和重新运行如果每一步都依赖网络传输体验会比较割裂。我遇到过的实际情况是不少报错并不是电路问题而是版本太旧或者入口没找到。不同小版本的仿真入口位置略有差别标题栏、菜单、工具栏里都可能出现“仿真”相关按钮。最稳妥的办法不是到处乱点而是先打开软件的帮助文档直接搜索“仿真”两个字确认当前版本的入口和限制。需要明确一个判断标准能在原理图里画出元件不代表这个元件就能够仿真。你可以在元件列表里看属性面板如果元件有完整的SPICE模型参数字段或者可以从模型库中选择模型那就具备仿真条件。如果属性面板里只有封装、位号、生产相关信息没有模型参数那这个元件至少在默认状态下是不能直接参与仿真的。2.2 关键准备模型、信号源和参考地仿真前我一般会先做三件准备第一确认要用的无源器件都有数值。电阻、电容、电感这些必须处于“有值”的状态比如10k、0.1uF不能是空值。第二确认电路里有信号源或激励。凡是仿真总要告诉电路输入是什么。可以是直流电压源也可以是正弦波、脉冲波这类交流激励。没有合适的激励瞬态仿真就看不到有意义的动态响应。第三确认电路有明确的参考地。这在很多新手仿真里是最容易被忽略的。SPICE仿真需要一个明确的地节点作为电压参考点。如果原理图上的地网络叫GND实际模型里没有和参考地连接仿真器会认为网络悬空结果往往是错误的。另外要注意位号唯一。同一个电路里两个电阻不能都叫R1。仿真器处理网表时会通过位号区分元件如果位号重复轻则报错重则把两个元件识别成同一个得到完全错误的曲线。2.3 初次上手前把电路规模缩到最小我自己的习惯是第一次做仿真时不要直接拿整块板子的原理图来跑。先新建一个测试原理图放一两个元件先确认“仿真这条链路是通的”再去仿真实际电路。这不是废话。很多刚接触仿真的朋友第一次就开一个完整电源电路结果报错之后完全不知道是哪一步引起的分不清是模型没加载、地没接好、参数没填还是仿真器设置问题。最小样例的价值在于把变量减少到一个。先跑通一个RC电路确认你能看到波形再逐步加入有源器件这样定位问题的范围就会小很多。3. 从最小示例跑通一次仿真RC低通滤波是比较适合的起点3.1 电路怎么搭我建议第一次实验直接用RC低通滤波电路元件少、物理意义清楚、结果容易判断。具体步骤大致是这样新建一个原理图放置一个电压源作为输入信号。放置一个电阻R1一端接电压源的正端另一端作为输出节点。放置一个电容C1一端接输出节点另一端接地。在输出节点上放置一个网络标签比如叫out方便后面在波形列表里找到它。确认整个电路有且只有一个地网络电压源的负端也要正确接地。参数可以先取R1等于1kC1等于0.1uF。这个组合的时间常数是0.1ms适合做一个毫秒级别的瞬态仿真既不快到波形看不清也不慢到等得着急。这里要解释一下为什么输出节点要加网络标签。如果节点没有名称仿真出来的波形列表里可能会出现一串自动生成的内部节点名看起来很难对应到原理图。加了out标签之后波形面板里找曲线会直观得多。3.2 仿真类型和参数怎么填在这个例子里我们需要看的不是某个静态电压而是输入信号从0到1跳变后电容充电、输出电压逐渐上升的过程。这就要用瞬态分析也就是SPICE语言里的tran分析。在仿真设置里常见的瞬态参数有起始时间、结束时间和最大步长。对应这个RC电路我给的典型设置是起始时间0结束时间5ms最大步长10us。为什么要设最大步长如果只给结束时间仿真器可能会为了省时间而走大步长导致波形不够平滑尤其是电容充电曲线前段变化很快的时候大步长容易漏掉细节。把最大步长限定到10us对5ms的仿真时长来说总共500个点左右数据量不大曲线也能比较光滑。输入激励如果选脉冲波可以这样理解电压从0跳到5V维持一段时间再跳回0V如此循环。仿真软件里一般会有VSIN、VPULSE这类源类型或者可以直接在属性里编辑波形参数。具体参数名称不同版本略有差异但核心概念是初始电压、跳变后的电压、上升时间、下降时间、脉冲宽度和周期。3.3 怎么判断仿真是否成功仿真跑完后下面几点可以作为判断标准没有弹错误框。仿真完成后软件会给出状态如果有警告应该先看警告内容。波形面板里能找到out节点对应的曲线。找不到的话多半是节点没有命名或者没有放置测量探针性质的标记。输出波形符合电路预期。对这个RC电路来说输入跳变后输出电压应该缓慢上升而不是瞬间跳变。上升的快慢由时间常数决定。1k乘0.1uF等于0.1ms大约经过0.3ms到0.5ms输出就能接近最终稳定值。曲线没有出现大量尖锐振荡、飞线或者明显数值异常。如果波形忽上忽下毫无规律优先怀疑电路连接和参数不要急着调仿真器。在调整电路参数之前我强烈建议先跑通当前参数确认“仿真流程本身没问题”再开始改值。否则你改一次参数就怀疑一次软件效率会低很多。4. 常用分析类型和设置方法瞬态、AC扫描、DC扫描各有用途工程电路里用得最多的仿真分析是三类瞬态分析、AC小信号分析、直流扫描。可以说把这三类弄明白嘉立创EDA里的NGspice仿真就能覆盖绝大多数入门到中级的验证场景。4.1 瞬态分析适合验证时域行为瞬态分析解决的是“随时间变化电路输出怎么变”的问题。典型场景电源上电瞬间电压是否过冲。PWM信号经过RC滤波后的纹波大小。三极管开关电路导通和关断的延迟。电容充电、放电曲线的形状是否满足时序要求。瞬态分析的参数核心是仿真时长和步长。我的建议是从信号的一个周期或者几个周期开始看不要一上来仿很长的时间。比如输入周期是1ms就先仿真5个周期左右确认曲线稳定后再决定是否加长时间。如果仿真出来的曲线很毛糙重点检查最大步长是不是太大。如果曲线只有一个点或者几乎直线先确认激励信号是否正确还有一个常见原因是起始时间设置有问题。4.2 AC扫描用于看频率响应AC扫描分析的是电路在不同频率小信号下的增益和相位变化非常适合验证滤波器、放大器的频响特性。设置上核心是起始频率、终止频率和每十倍频程的点数。比如看一个RC低通滤波可以设置起始频率10Hz终止频率100kHz每十倍频10个点。为什么点数是按十倍频程来算的因为频率响应在对数坐标上跨度很大如果按线性间隔均匀取点低频段点数太少高频段点数又太多曲线看不出完整轮廓。按十倍频程取点能保证每个数量级内都有足够的采样密度。结果怎么看阻容低通滤波的幅频曲线会从平坦区开始在高频段逐步下降。RC低通滤波器的截止频率约等于1除以2πRC。用R等于1k、C等于0.1uF算出来大约是1.59kHz也就是增益下降3dB左右的频率。仿真曲线出来后可以在曲线上确认这个下降点是否和计算值接近。如果差太多要么参数没设对要么电路连接和预期不一致。4.3 DC扫描用于找阈值和静态工作点直流扫描通常是固定某一支路的电压或电流从起始值逐步变化看电路其他节点的响应。典型场景是输入电压从0V慢慢升到5V观察输出什么时候翻转从而测出比较器阈值、二极管导通电压或者三极管进入放大区的条件。它的设置不复杂指定被扫描的源、起始值、结束值和步长就可以。比如扫描0到5V步长0.1V会得到51个点的曲线。有两点经验值得记住一是步长不要盲目改小。步长太小会让点数暴增仿真时间变长而且对于有迟滞的电路过小的步长不一定能解决跳变问题反而可能让曲线出现锯齿。先按0.1V的步长看趋势确认翻转点的大致位置后再把步长改成0.01V细化局部。二是DC扫描只能给出静态值看不到动态响应。想知道某个直流电压点附近的稳定性或暂态过程还是要回到瞬态分析。把三种分析放在一起看可以形成一个基本判断分析类型解决的问题关键参数典型输出瞬态分析时域变化、波形、延时、纹波起始时间、结束时间、最大步长输出节点电压随时间变化的曲线AC扫描频率响应、增益、相位、截止频率起始频率、终止频率、每十倍频点数幅频曲线、相频曲线DC扫描工作点、阈值、饱和区/截止区边界扫描源、起始值、结束值、步长节点电压或电流随扫描电压的变化曲线5. 报错和看不到波形时的排查顺序仿真是个挺“诚实”的过程有问题通常不会直接给你错误结论而是报错、空跑、曲线异常或者不收敛。多数问题都不是软件坏了而是电路、模型或环境设置有偏差。5.1 常见报错和对应的第一反应我把碰到的常见问题分成下面几类第一类提示元件没有模型或者提示模型相关错误。通常是因为元件库里这个型号只包含封装和电气符号没有附带SPICE模型。解决办法是手动指定一个模型或者换成库里确定带模型的等效器件。不要硬跑先确认元件是“可仿真的”。第二类提示网络悬空、引脚未连接。SPICE对网络的完整性要求很严格。看起来原理图上引脚已经用线连了但可能连到了没有任何电气连接的辅助线上。排查时从报错里提到的元件名出发逐个引脚检查。第三类提示没有地节点或者参考地不明确。仿真必须有一个公共地。如果你用了多个地符号但它们的网络名不同仿真器会认为是两个独立的零电位节点导致意外行为。最好统一使用同一个地网络。第四类仿真能跑但波形面板里没有曲线。这个通常是两个原因没有给要观测的节点命名加标签或者没有在原理图上放置测量标记。先把要看的节点网络标签加上再重新仿真。第五类参数单位或者数量级明显不对。比如电容值填了0.1而不是0.1uF电阻值填了1k但软件要求输入数字1000。不同版本对单位的解析方式有差异我一般会先看一眼元件属性确认数值已经被正确解析成标准单位。5.2 波形不收敛时先别乱调不收敛通常表现为仿真卡住、报“迭代不收敛”或者直接终止。出现这种提示很多人会下意识把仿真步长改小。步长改小不一定有用反而可能让仿真时间暴增。我更推荐按这个顺序排查先检查电路里有没有明显不合理的连接比如两个理想电压源直接并联、电容没有充放电回路。再检查有没有让仿真器无法收敛的跳变信号。理想脉冲源如果上升时间设成0有时候会引起收敛困难。给脉冲设置一个极小的上升时间比如1ns往往就能跑通。缩小电路规模断开与问题无关的子电路看是否能收敛。这能判断问题是不是集中在某一小段电路里。如果接了外部模型尝试把模型替换成一个理想简化模型判断问题是否出在模型参数上。最后才回到仿真步长、扫描范围和求解精度设置。收敛问题很多时候不是仿真器能力不够而是电路本身处在一种边界状态比如正反馈环路没有稳定工作点或者模型参数超出了可解范围。先仿真一个最小电路确认基础功能正常是这个阶段最有效的手段。5.3 导入第三方SPICE模型的常见坑实际工程中很多芯片型号并不在元件库里自带仿真模型。这时需要从芯片厂商网站下载SPICE模型文件常见的有.lib、.mod、.cir后缀也可能是文本格式。导入时的坑比想象中多文件名、模型名称、元件符号的参考名称之间要对应。SPICE文件内部会用.model或.subckt声明模型名大小写需要注意。有的芯片同一份文件里包含多个温度版本或多个封装版本要确认选中的是哪个模型。还要注意文件里如果引用了其它库文件需要把被引用的文件一并放到对应目录否则会提示缺少依赖。我在导入时习惯把模型文件统一放到一个固定目录不在桌面东一个西一个放。这样跑仿真报错时也容易检查是路径问题还是文件本身问题。导入之后一定要跑一次最简验证电路比如按芯片数据手册里给的典型应用电路搭一个最小样例把手册里的输出波形和仿真结果对比。如果吻合再把这个模型用于你的实际电路。如果一开始就不吻合说明模型关联、参数选择或引脚映射存在问题不要继续往下叠加复杂电路。注意仿真模型是“行为级近似”不是芯片的完整复刻。数据手册里标注的典型参数仿真结果不一定完全一致相差几个百分点属于正常范围重点看趋势和相对变化。6. 仿真能覆盖的边界什么能做、什么不该期待6.1 不要把SPICE仿真当成实物原型的替代用嘉立创EDA里的NGspice仿真验证电路确实能在画板前发现很多问题但它不是万能的。有几点边界要提前知道免得期待落空。SPICE仿真主要关注电路原理层面的行为。它默认用的是你手动画出来的理想连线不会自动考虑PCB走线的寄生电阻、寄生电容、寄生电感。同样一个电路在仿真里波形干净实际PCB上因为布局布线不合理产生振铃是完全可能的事。高频信号完整性、电源完整性、电磁干扰这类问题需要专门的仿真工具和方法来做不能指望原理图仿真全包。另外仿真模型的准确度决定仿真结果的可信度。芯片厂商提供的模型往往经过一定程度的拟合但依然可能没有覆盖所有工作区间。比如在接近击穿、接近限流、极端温度条件下模型行为可能与实际芯片差异较大。我个人的定位是仿真负责把“原理图设计有没有本质性错误”这一层筛掉。至于板子做出来之后好不好用还要靠合理的PCB布局、电源处理、器件选型和实物测试。仿真降低的是返工概率不是消除测试环节。6.2 从仿真回到PCB设计的建议流程一个比较高效的工作流是这样在原理图阶段先确定关键参数用最小样例把仿真跑通。每改一次关键参数就重新仿真一次并且保存一份参数记录。改着改着就忘了初始值是特别常见的问题。仿真通过后再进入PCB布局。布局阶段如果必须调整器件值建议回到原理图同步修改并重新仿真一次确认调整没有影响关键行为。布局完成后针对差分对、等长线这类有特殊要求网络使用嘉立创EDA里的相关设置功能去约束走线这已经超出仿真范畴属于Layout验证阶段。说到“保存参数记录”我一般是把每次仿真对应的原理图另存一个版本或者在电路说明文件里记下关键网络的理论值和仿真值。版本号要清楚不要用“最终版”“最终版2”这种命名后面你自己都分不清哪个对应哪次仿真。6.3 低配置环境能跑但要注意任务规模很多人担心仿真是不是需要很高配置的电脑。其实对于常见的模拟电路原理图仿真普通办公电脑就够了。RC电路、运放电路、简单三极管电路仿真计算量都不大。真正吃资源的是特别大的电路或者仿真时间跨度极长、步长极细的情况。比如误差放大器加开关管的环路仿真如果时间常数跨度特别大瞬态分析可能要跑到几十毫秒甚至几百毫秒而步长又很小仿真点数会非常多跑起来就会明显变慢。遇到这种情况不要一上来就提升电脑硬件先看能不能优化仿真设置。比如缩短仿真总时长在确认系统进入稳定状态之后停止或者适当放宽最大步长曲线粗一点但不影响判断趋势或者把和核心验证无关的电路暂时断开分模块仿真。注意能跑通一个demo不代表同样的设置适合批量验证。批量修改参数、批量跑多个工作点时要特别小心输出数据是否被覆盖、仿真是否真的完成、有没有生成统一的日志。先把单个任务跑稳再加循环和批量。6.4 新手常踩的最后一个坑只盯曲线不看条件和前提文章最后说一个我踩过多次的教训。仿真结果看着不错不代表你用错了前提条件就不存在问题。有次我仿真一个电源电路输出波形非常漂亮稳定在设定电压附近。后来细看才发现我把负载电容设得过大相当于给电路加了一个不切实际的缓启动条件。真实电路根本不会有那么大的电容所以那个“漂亮波形”并不能代表实际负载情况。仿真之前先检查输入信号的幅值、频率、负载条件是否和实际场景一致。仿真不是以“能出曲线”为目标而是必须围绕你要验证的那个具体问题来搭条件。回到嘉立创EDA和NGspice的组合本身它适合的是把原理图阶段的电路行为验证快速向前推进。先用最小电路跑通链路再逐步增加复杂度和有源器件到了要落地成PCB时你已经对关键节点的电压、波形和频率特性心中有数。这样项目进行到实物测试阶段才能真正把精力放在布局、器件和工艺差异上而不是从头排查设计的基本错误。
返回列表