Beispiel #1
0
        public static double PFD_get_error(ref PFD pfd_p, double dtime)
        {
            double next_clk, err0r;

            if (pfd_p.phi_round > 0.0)
            {
                dtime = Math.Truncate(dtime * pfd_p.phi_round) / pfd_p.phi_round;
            }

            next_clk = Math.Truncate(dtime) + 1.0;
            if (pfd_p.target_clk == 0.0)
            {
                pfd_p.target_clk = next_clk;
                return(0.0);
            }

            err0r = pfd_p.target_clk - dtime;

            if (err0r > 0)
            {
                pfd_p.target_clk = next_clk + 1.0;
            }
            else
            {
                pfd_p.target_clk = next_clk;
            }

            return(err0r);
        }
Beispiel #2
0
 public static void PFD_init(ref PFD pfd_p, double phi_round)
 {
     pfd_p.target_clk = 0.0;
     pfd_p.phi_round  = phi_round;
 }