说点人话,真传一句话,那些一堆公式似是而非的东西,都是半懂不懂的人沽名钓誉用的。
其实建模,归根结底明白几个东西就行了。
1.什么是你的输入和输出信号?
2.你对输入输出信号要建立什么功能关系?
那我们看看,输入输出信号层面,我们可以扒出来多少东西?
输入输出的信号是信号流对吧,什么是信号流?就是在时间上会产生变化的信号Time(singal),所以它要装在anlog begin ...end 里头才能处理,因为数学上管理信号流,本质上都是在做微积分。
所以,信号系统中,什么样的信号流,放在tranform里头都是可以的。
很多人经常会有一个误解,就是什么时候用赋值=,什么时候用分支供给语句<+,它原理就在这。同理来说,数字中的<=其实也是一个道理,都是给的一个完整数据流,不是一个单点的数据。
就算是常数值在里头,它也是随着时间而延长的直线,而非一个点。
输入输出信号的种类很多,就不说了,基本上testbench就是设定的这些东西,电源需要什么测试就用什么模式,要测dc就加个vdc上去,需要trans就加个trans上去,需要ac就加个ac上去。
然后,有人会说,那变量,中间变量是怎么和这些区分的?
很简单,中间变量只是你用来计算另一个比例参数的东西而已。
比如,V(out)<+ R* I(in) ,我可以设置val = R*I(in) ;然后 val = 0.5*val;再用V(out)<+val,那其实就相当于是V(out)<+ 0.5*R* I(in)
或者,可以这样写: val = 0.5*R ;V(out)<+ val* I(in)
这二者都是一样的。
所以,建模无非是有这么一段电路,非线性电容,非线性电阻,非线性电感组合组合,形成一个网络。
然后再写写一堆堆的变量变化在这个中间罢了,两头依赖是不动的,动来动去都是中间的部分,因为连着写太长了,实在不美观,所以才用变量拆成多个部分罢了。
第二,要建立什么关系?
其实本质上就是看具体是什么依赖,dc就是电源电压依赖,大信号ac就是电荷电压依赖,小信号ac就是电容电压依赖。
至于说什么非线性,一般都在rf中体现更多,写了ac其实就是写了rf,所以没有单独的rf模型,只是把ac中考虑的模型在更高的频段去做一些细化罢了。
原先的cap可能是一个依赖电压线性的,到了rf,它就因为电压而变成一个非线性的稀奇古怪的压缩情况。
至于噪声,它本质山就是功率源,为什么呢?因为噪声同时在电流上有,在电压上有对吧,而且它还叠加在频段上还有不同,所以噪声可以写成一个依照不同频段而依赖的功率源。
对于一些设计师来说,它们关注一些瞬态之类的问题,其实只是某个节点上的问题而已,本质上它还是连续波,只是做了截取和时间叠加。
回到正题,为何大信号是电荷电压依赖,而小信号是电容电压依赖呢?
因为,在大信号中,电荷求导并不是一个线性电容(受到热功率等影响),它可能是个无理数。所以默认是不能求导的,求导也不准。
而小信号是可以搭建电路来模拟的,所以相当于对电荷进行了求导获得了电容的效应。
所以我们的目标就转变成,我们关注节点上的三个属性之间的关系变化,I(a,b) V(a,b) Q(a,b)
根据不同的应用场景,就可以视情况简化依赖情况,然后搭建电路框架了。
对于额外链接到电路节点上的,我可以统一归纳为几个源,电压源,电流源,功率源,电荷源。
至于说热阻,什么它其实就是因为热会使得负载线(负载线可以看成是某个R,设理想值为10)
那么热会使得这个10变成5,所以就相当于在电路中增加了一个并联电阻(串增并减),然后它又会在ac上产生干扰,所以本质上就是影响了电荷,小信号就影响了电容。
懂了这些之后,剩下的都是数据处理了,比如怎么做单维数据拟合防止有跳变点导致不收敛,怎么做双维数据拟合。
归根结底,器件建模也是电路设计,只是用的是理想元件,拟合了复杂的现实效应,然后做的现实元件罢了。