You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
866 B
31 lines
866 B
//VerilogA for passive,jointer2,veriloga
|
|
`include "constants.vams"
|
|
`include "disciplines.vams"
|
|
|
|
module jointer2(Ipow1,Iphase1,Ilam1,Ipow2,Iphase2,Ilam2,Opow,Ophase,Olam);
|
|
parameter real n1 = 0.5 from [0:1];
|
|
parameter real n2 = 0.5 from [0:1];
|
|
|
|
input Ipow1,Iphase1,Ilam1,Ipow2,Iphase2,Ilam2;
|
|
output Opow,Ophase,Olam;
|
|
electrical Ipow1,Iphase1,Ilam1,Ipow2,Iphase2,Ilam2,Opow,Ophase,Olam;
|
|
|
|
real r1,i1,r2,i2,ro,io;
|
|
real iph1,iph2,oph;
|
|
|
|
analog begin
|
|
iph1=V(Iphase1)/360.0*2*`M_PI;
|
|
iph2=V(Iphase2)/360.0*2*`M_PI;
|
|
r1=sqrt(n1*V(Ipow1))*cos(iph1);
|
|
i1=sqrt(n1*V(Ipow1))*sin(iph1);
|
|
r2=sqrt(n2*V(Ipow2))*cos(iph2);
|
|
i2=sqrt(n2*V(Ipow2))*sin(iph2);
|
|
ro=r1+r2;
|
|
io=i1+i2;
|
|
oph=atan2(io,ro)/(2*`M_PI)*360.0;
|
|
V(Opow) <+ pow(ro,2)+pow(io,2);
|
|
V(Ophase) <+ oph;
|
|
//Only same lambda can have correct outcom!
|
|
V(Olam) <+ (V(Ilam1)+V(Ilam2))/2;
|
|
end
|
|
endmodule
|
|
|