开发自己的编程语言(五)—— CIL中间代码的生成

网上pspice的教程不少,可是数量多也真心让我头疼,总结了今天一下午弄的成果,希望后人不要再走弯路。


*****本实验原始HSPICE代码取自Yide Zhang(张以德),本实验代码为张先生代码修改所得,特此致谢张先生,转载请保留此行。*****


本实验使用PSPICE 10.5.0。

通过定义子电路memristor.subckt,并调用子电路进行忆阻器仿真。

最终实现了忆阻器的滞回效应。

首先需要定义忆阻器子电路memristor.subckt


*Single Memristor Property

.SUBCKT memristor plus minus
.PARAM 
+Ron=1MEG Roff=50MEG Rinit=44MEG 
+D=10N uv=1e-14 p=1 
.FUNC f(x) {1-pwr(2*x-1,2*p)}

Emem plus aux value={-I(Emem)*V(x)*(Roff-Ron)}
Gx 0 x value={I(Emem)*uv*Ron/pwr(D,2)*f(V(x))}
Cx x 0 1 IC={(Roff-Rinit)/(Roff-Ron)}
Raux x 0 1T
Roff aux minus {Roff}

.ENDS memristor

以上语句的具体说明此处不再赘述,可以查看PSPICE官方的语法书。

需要注意的是hspice和pspice的幂函数不一样,pspice是pwr,hspice是pow;

另外pspice使用{}而hspice使用‘‘来限定表达式,特别注意的是param里的常量表达式也必须加{};

随后定义仿真文件sim.cir。

*Memristor simulation

.INC memristor.subckt

XMEM 2 0 memristor
Vtemp 1 2 0
Vapp 1 0 SIN(0 3.5 1 0 0 180)
.TRAN 0.1M 10 uic 
.Probe
.END

Vtemp可以看做是一段导线。

最后点击Simulation->Run。

可以得到如下结果

这与忆阻器的滞回效应基本一致。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。