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
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
|
|
|