|
发表于 2012-3-21 12:09:05
|
显示全部楼层
spectre 可以CALL hspice model
另個是 call verilog-A
edaboard google 到
// VerilogA for edaboard, transformer, veriloga
`include "constants.vams"
`include "disciplines.vams"
module transformer(pr1,pr2,sec1,sec2,th1,th2);
inout pr1,pr2,sec1,sec2,th1,th2;
electrical pr1,pr2,sec1,sec2,th1,th2;
parameter real n1 = 1.0 from [1:inf); //number of turns in primary winding
parameter real n2 = 3.0 from [1:inf); //number of turns in second winding
parameter real n3 = 3.0 from [1:inf); //number of turnes in third winding
parameter real L = 1n from (0:inf); //inductanse per one turn in H
parameter real k12 = 0.97 from [0:1]; //coupling between first and second, first and third windings
parameter real R1 = 1.0 from [0:inf); //resistance of primary winding in Ohm
parameter real R2 = 3.0 from [0:inf); //resistance of second winding in Ohm
parameter real R3 = 3.0 from [0:inf); //resistance of third winding in Ohm
real k13,F1,F2,F3;
analog begin
@(initial_step or initial_step("dc")) begin
k13 = k12;
end
F1 = L*(n1*I(pr1,pr2)-k12*n2*I(sec1,sec2)-k13*n3*I(th1,th2)); //magnetic flow through primary winding
F2 = L*(n2*I(sec1,sec2)-k12*n1*I(pr1,pr2)+n3*I(th1,th2)); //magnetic flow through secondary winding
F3 = L*(n3*I(th1,th2)-k13*n1*I(pr1,pr2)+n2*I(sec1,sec2)); //magnetic flow through secondary winding
V(pr1,pr2)<+R1*I(pr1,pr2)+n1*ddt(F1);
V(sec1,sec2)<+R2*I(sec1,sec2)+n2*ddt(F2);
V(th1,th2)<+R3*I(th1,th2)+n3*ddt(F3);
end
endmodule |
|