|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
大家进行Pspice电路仿真时,如果弹出这个界面,是个极其让人沮丧的事情:
9 j. L# N6 ]; R8 F
5 |1 y$ R+ A N/ f2 O0 V
在仿真输出文件中有这样的提示:
, X& h" |0 v, f6 Y ERROR(ORPSIM-15138): Convergence problem in transient analysis at Time = 65.20E-06. Time step = 145.5E-21, minimum allowable step size = 1.000E-185 |: `4 M/ d/ I4 `: V% I
这就是仿真遇到不收敛的问题了。什么叫做仿真不收敛?SPICE程序总体上是基于求解电路伏安关系的方程来实现仿真计算的,一般电路中都包含电阻、电容、电感、半导体等元器件,电路搭建完毕,也就能够构建出微分方程组,内部计算程序将此方程组转换为差分方程组,逐个步长进行迭代求解,最终获得每个节点、网孔的电压/电流。如果差分方程组迭代求解无法稳定的趋于某个值,或者出现无穷大,那就会导致程序产生不收敛的告警。9 b: [' _+ U0 h- @! v( [" E* j
解决不收敛的方法很多,有经验的工程师在绘制仿真电路时就会注意这个问题,在容易导致不收敛的环节采取措施,例如为开关元件并联RC、大电流回路增加串联的小电阻、可能谐振的回路增加阻尼以限制振幅……# [3 i2 ]8 z7 c- ]- ^1 b' Q2 s( _$ y7 x
作为初学者,可以尝试下面一些简单的措施:
0 G3 S ?% c$ u7 z! g: s1、设置合理的最大仿真步长
# b$ }% Z" k/ I7 j 仿真设置最大步长的时候,应当考虑电路中动态变化的情况来决定仿真步长,例如10KHz震荡器,仿真步长务必要确保每周周期内能够有数十个步长,因此合理的步长应当设置为1-5uS。
5 q% I# N1 I/ B$ _+ ~
' L6 F, v+ e- x" w1 }' m 尤其要注意开关性质的元件,如果存在快速的开关动作,例如几十nS切换速度,一旦回路中存在储能器件,就容易产生极高电压或者极大电流,仿真的步长就需要能够和切换速度相匹配,设置为数十nS的级别。: G+ z4 C& k6 e/ M! ^
2、增加迭代次数或者降低仿真的相对精度/ o* G/ j% U0 x, X* z
程序求解差分方程的方法是不断迭代,在设定的迭代次数内如果没有收敛到足够的精度,就会产生不收敛告警的界面,因此增加迭代次数或者降低仿真的相对精度都能够解决部分问题。
5 ]7 U+ S. T% q7 J8 ^
% y2 X# j3 D% M8 N: M 图中绿色框内是仿真的相对精度,0.001是非常高的精度要求了,我们做电路仿真的目的一般是为了进行方案的验证或者为现实的电路调试提供方向性的指导,往往是能发现电路的改善趋势就足够了,因此遭遇不收敛问题时,可以适当降低这个精度要求。
& y- P, Q. u( ?9 D" X 图中红色框内是迭代次数,迭代次数越大,收敛的可能性就越高,可将这些取值增大,当然,这会引起仿真时间延长——因为计算量增大了。2 r, p' A' w' F% Y$ W# P' a
3、降低电压电流精度,修改GMIN值
& ~0 f$ B% _5 y$ q 下图中红色框内是电压电流的精度设置默认是1pA和1uV,都是很高的精度了,可以适当降低。GMIN是最小电导的,默认1e-012,是个非常小的值,不收敛时可以调整几个数量级。
1 z+ h0 c, M* d
, q; {2 o3 k3 |4 B/ d, p 一般来说,经过上述调整,很多电路就能够完成仿真,但如果依然跳出不收敛的界面,那就要仔细观察一下仿真电路是否存在缺陷导致不收敛,例如:' F9 a% D5 a9 t" { `# V) H$ D
>回路的电阻是否太小,而电源电压可能很高,电压除以电阻,趋近于无穷大?可在回路中串联小电阻解决;
6 t# ?% X5 i+ v+ m >开关器件S、脉冲信号源等环节是否存在过快的切换速度? 可减缓切换速度;0 B5 [* j; q4 T
>振荡器的LC是否调用了绝对理想的元件模型,而回路中又缺乏阻尼,导致振荡幅度可以无穷大?可增加阻尼元件降低电路的Q值% d7 M8 t) {9 \0 M+ E1 t
>电路中的半导体器件承受的电压是否超出了定义的击穿门限值,使得回路中出现了极大电流?可修改半导体器件的PSPICE模型/ b3 X2 f6 g+ _
>导致不收敛的关键器件的PSPICE模型是否不合理?尝试更换成其他元件库中的同类元件,或者尝试修改元器件的模型参数。( z- ~6 N6 C" [; t" T! t; f j
|
|