//VerilogA for modulator,idealfm,veriloga

`include "constants.vams"
`include "disciplines.vams"

module idealfm(Ipow,Iphase,Ilam,Opow,Ophase,Olam,Vdata);
    parameter real df = 10e9 from (-inf:inf);
    input Ipow,Iphase,Ilam,Vdata;
    output Opow,Ophase,Olam;
    electrical Ipow,Iphase,Ilam,Opow,Ophase,Olam,Vdata;

    real f,dlam;

    analog begin
        f = (V(Vdata)-0.5)*df;
        dlam = `P_C/f;
        V(Opow) <+ V(Ipow);
        V(Ophase) <+ V(Iphase);
        V(Olam) <+ V(Ilam) + dlam;
    end

endmodule