Verilog-A release version.
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.

35 lines
1.0 KiB

//VerilogA for passive,jointer3,veriloga
`include "constants.vams"
`include "disciplines.vams"
module jointer3(Ipow1,Iphase1,Ilam1,Ipow2,Iphase2,Ilam2,Ipow3,Iphase3,Ilam3,Opow,Ophase,Olam);
parameter real n1 = 0.3333 from [0:1];
parameter real n2 = 0.3333 from [0:1];
parameter real n3 = 0.3333 from [0:1];
input Ipow1,Iphase1,Ilam1,Ipow2,Iphase2,Ilam2,Ipow3,Iphase3,Ilam3;
output Opow,Ophase,Olam;
electrical Ipow1,Iphase1,Ilam1,Ipow2,Iphase2,Ilam2,Ipow3,Iphase3,Ilam3,Opow,Ophase,Olam;
real r1,i1,r2,i2,r3,i3,ro,io;
real iph1,iph2,iph3,oph;
analog begin
iph1=V(Iphase1)/360.0*2*`M_PI;
iph2=V(Iphase2)/360.0*2*`M_PI;
iph3=V(Iphase3)/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);
r3=sqrt(n3*V(Ipow3))*cos(iph3);
i3=sqrt(n3*V(Ipow3))*sin(iph3);
ro=r1+r2+r3;
io=i1+i2+i3;
oph=atan2(io,ro)/(2*`M_PI)*360.0;
V(Ophase) <+ oph;
V(Opow) <+ pow(ro,2)+pow(io,2);
V(Olam) <+ (V(Ilam1)+V(Ilam2)+V(Ilam3))/3;
end
endmodule