《PSpice仿真中的收敛问题及解决方法》由会员分享,可在线阅读,更多相关《PSpice仿真中的收敛问题及解决方法(5页珍藏版)》请在金锄头文库上搜索。
1、写在前面 :本文是作者平常学习和工作中记录的一些笔记, 有些零碎 ,但是很有用,主要是从原理的角度阐述了 PSpice 仿真中的收敛性, 以及应对仿真不收敛的方法。适合使用 PSpice 仿真很久并且碰到过 较多问题的高手 !注意:有些东西是最原始的 spice 语言的,在 OrCAD PSpice 中不 一定有相应的选项。By: Michael Wang 2010 年12月 17简介PSpice 在设定的仿真次数内,如果不能得到满足精度要求的解,就会出现收 敛性问题,该问题可能有两大类原因导致:第一:容许的仿真次数太少或者仿真精度要求太高。 第二:电路方程本身无解。 针对不同的仿真类型, 都
2、会有一些问题的探讨和 分析以及相应的应对策略。DC分析:在 PSpice 执行一些定制的仿真前,首先执行 DC 工作点分析, PSpice 通过特定 数量的迭代得到DC静态工作点,否则PSpice会有电路不收敛的提醒,并且退出 仿真程序。默认收敛限定描述如下: .options ITL1=100 如果不收敛,上式中的 ITL1 可以增加到大于 500更多的DC收敛参数:GMIN步长设置、信号源步长设置、初始电容电压设置及 伪瞬态设置。.NODESE可以设置电路节点的DC电压值,PSpice会识别这个电压值作为电路仿 真的初始电压值,可以减少对收敛的迭代次数。如果不能通过节点设置和 ITL1 来
3、得到收敛结果, 可以设置 ITL6=100 或者其他非 零值,这个设定时运用信号源步长算法, 从一个开始值逐渐减少信号源电压直到 0 电平,或者减少得到一个收敛解,这时,信号源再逐渐减回设置的初始设置。这个方法可以解决所有DC偏置点不收敛的问题,但是ITL6函数本身有缺陷,所 以在最后万不得已才能用。(OrCAD没有引入这个参数) 如果电路包含半导体器件, 该器件导电区域会包含零电导率。 这样仿真会出现一 个“把零作除”的错误。为了消除这个错误的产生,在每个半导体器件的PN结点处用GMIN跨导与每个PN结点处并联。GMIN是一个全局参数,默认值100P?, GMIN的参数值越大,牛顿拉夫申算法
4、会越快完成收敛计算。增加GMIN的参数值会减少旁路电阻值。 仿真的精度在旁路电阻产生的电流小于可容忍的相对错误电流分辨率时(kielkowski 1995 )不受影响,对 Gmin设置的建议值为.optionGMIN=1 n瞬态分析:瞬态不收敛将最大迭代次数设置如下;.opti ons ITL4=10; use ITL4=1500 if tran sie nt con verge nee problems occur如果当前时刻节点不收敛,那么仿真步长会缩短到原来的1/8,如此计算直到得到收敛结果或者迭代次数溢出(ITL4),用户设置的仿真时间步长的不同,会导致瞬态收敛困难,这点在开关电路仿真
5、时 尤其明显。仿真步长必须小于开关电平的识别时间。 当对瞬态仿真参数惊醒设定 时,需要考虑高电平变换器或器件模型的不连续性。对步长保守的估算,步长的单位最小值要小于一个开关波形一个周期的一个数量 级的时间,例如,对于一个100K的振荡器(10u)的时间步长设定应该为1u左 右。Tmax值是最大时间步长,这个值可以省去或者指定为增大仿真精度(减小 Tmax )或减小仿真精度(增大 TmaXo这个设定可以让模拟器在对电路有微小 变化时进行仿真计算的时间步长稍大一些。避免一般性错误的步骤核对电路是否连接正确,元件极性是否连接正确,所有节点对地都有其直流路 径。-核对所有元件都正确赋值核对所有模型参数
6、都有实际意义,尤其是自己创建或者修改的核对两个网络连接处都有节点-核对电压和电流的发生起相应有其正确的语法和合适的数值电容或电流源的串联等效代替需串联放置检查是否把字母0当作数字0使用-如果行为表达式或行为元素在电路中运用,则验证电路不会出现零点分割的情 况验证独立元增益正确DC收敛的方法:1. 设置 ITL1=500;2. 使用NODESET不适当的节点设置会导致不正确的仿真结果或者不收敛,所 以在对NODESE语句设置时需要注意3. 运用脉冲语句产生 DC电源。V1 3 0 5 DC 变为V1 3 0 PULSE 0 5。这样允 许用户对电源进行开关控制,脉冲的上升时间可以用来设置实际电源
7、的上电时间。4. 设置GMIN设置GMIN=1n或者0.1n ,不推荐设置过高的数值,这个参数设置 了所有半导体器件的最小导电性。5. 如果可以,设置RSHUN参数,设置电路中所有节点对地的电阻值, 通过这个 收敛方法会在其他节点而不是被选节点得到仿真结果, 所以仿真结果需要仔细检 验(PSPICE中没有这一项的设置)6. 设置ITL6=100,信号源步进将所有直流激励递减,直到电路的DC直流偏置电确定或者电平降低到0V,然后反向迭代。(PSPICE中没有这一项的设置)瞬态收敛的方法:1. 验证电路的直流分析是否收敛,确认不收敛是否由瞬态分析造成。2. 验证设定的时间步长的分辨率大小适当。时间
8、步长分辨率必须小于电路进行 开关波形正确仿真的时间。至少要比仿真电路最小周期小一个数量级。3. 对于振荡电路或者开关电路,设置 METHOD=GEA这是对顺态方程式选择的 一种方法,GEAR!成化可以应用到所有的开关电路。(PSPICE中没有这一项的设 置)4. 使用初始条件设置UIC,设置电容电感的初始值。5. 设置 ITL4=5006. 设置RELTOL=0.01降低仿真精度,减小仿真时间。 需要记住的一个一般规 则是:相对误差数值减少一个数量级,仿真时间就会翻倍的 增加7. 减少脉冲元的上升和下降沿时间, 电压值的大幅度变化会导致不收敛的问题。8. 设置 TRTOL=4,0 声明在进行瞬
9、态仿真时对使用的步长大小可以成比例的设定。 (无)9. 如果电流/电压值允许,减少ABSTOL/VNTOL精度,这两个纸值以设置为大 于其缺省值 8 个数量级的大小,要注意设置的只要小于最大电流和电压值。10. 如果可以,设置RAMPTIME=10ns这个声明设定了所有独立信号源从零值上 升到瞬态分析的开始值的上升斜率。 (无)交流收敛的方法: 不要使用直流收敛解决方法中的 35,使用这些方法将不能建立一个有效的直流 工作点,而直流工作点的建立对SPICE对电路进行线形分析是非常关键的, 一旦 实现了电路的直流收敛,其交流分析也会收敛。参考文献:SPICE电路分析,Steven M. Sand
10、ler ,Charles Hymowitz 著作收敛性与步长太小问题Pspice采用Newton-Raphson算法进行迭代计算,它在满足一下条件的情况下可 解。1. 非线性方程可解2. 方程连续3. 方程可导4. 初始值必须足够接近解析解 在满足上面条件的同时, 由于硬件条件的限制, 电路当中的取值还要受到一定的 限制。1. 电压与电流在 +-1e10 之间2. 导数在 1e14 以内3. 15 位的双精度。例如1兆伏除以1豪欧,得到1e12AM的电流,超过了电流值的最大值,因此不 收敛!通常情况下, 需要注意没有限制的器件模型, 以及含有表达式的手控源。 很容易 写出计算值极大的表达式。在
11、实际情况中,方程总是连续的,但是变化值有可能超出PSpice表达值得极限! 导数的物理意义是小信号电导, 跨导,增益,不切实际的器件模型可能会使导数 超过 1 e 1 4的限制,主要需要当心含有表达式的行为模型!Newton-Raphson is guaranteed to converge only if the analysis is started close to the answer. Also, there is no measurement that can tell how close is close enough. (FUNN)Y 仿真最艰难的事起步阶段,即找到偏执点! P
12、Spice 先试着按照 100%的供电电压 去计算偏执点, 如果计算不成功, 那么就把电压降到几乎为零, 这样许多的非线 性都被关掉了,当一个电路变为线性之后,必定可以找到一个解,然后 PSpice 再将偏执点反推到 100% 供电的情况下!(变步长)一旦得到了偏执解, 那么瞬态仿真就可以进行了, 他每次都从一个已知点 (偏执 点)开始迭代,得到下一步的解 .DC扫描采用混合逼近的方法去求解,他首先采用偏执点计算逻辑起步(变电压), 之后每次以上一步的解作为初始值去逼近, 扫描步长不是可变的, 如果某一步不 能得到解的话,他就在此使用偏执点算法去求解!整个 DC 扫描主要依赖于连续 性,同时它
13、也要求当电源关掉时,电路是线性的,像偏执点计算那样! 关于GMIN GMIN算法不是系统默认执行的,可以在选项卡中使能这种算法,当 使能这种算法的时候,如果100%供电时计算不收敛,就先采用 GMIN算法,如果 这种算法还不收敛的话,就再将电压降到几乎为零,再进行下一步的计算! 几乎为零的电压定义为 :0.001% supply power对于半导体器件, 首先要避免使用不切实际的模型参数! 其次是避免出现不受限 的PN结,(无串联阻抗),第三是避免出现无漏电阻的情况,比如一个电流源输 出电流到一个反偏的PN结,由于反偏PN结不含有漏电阻,因此需要一个并联 电阻,否则PN结的电压会超过 1e1
14、0的值。PSpice 的开关在过渡区存在增益,如果多个开关级联起来的话,累计增益有可 能超过导数的极值限制(1e14)。这种情况可能出现在图腾柱门极的情况中或者 多个开关级联的情况中! 一般情况下, 两个开关级联可以工作, 但是多于两个就 可能出现问题!表达式含有分母的尤其要注意,不能出现除零的情况!例如 GLOAD 3, 5 VALUE = 2Watts/V(3,5),当开始时,V(3,5)=0。 出现问题PSpice 使用一种压缩算法将受控源在电压几乎为零时压缩成线性连续模式! 但是这种压缩算法也不能处理以上那种除零的情况。压缩算法可以很好的关掉不带分母的表达式, 通常情况下,使表达式处于
15、一个合理的物理范围将会十分有帮助!Example: A first approximation to an opamp that has an open loop gain of 100,000 is:VOPAMP 3, 5 VALUE = V(in+,in-)*1e5This has the undesirable property that there is no limit on the output. A better expression is:VOPAMP 3, 5 VALUE = LIMIT(V(in+,in-)*1e5,15v,-15v where the output is limited to +/- 15 volts.