Question about advance_loop function in gri_control_loop.cc

hello,
the function of advance_loop and update_gain is defined as follow
in gri_control_loop.cc

void gri_control_loop::update_gains()
{
float denom = (1.0 + 2.0d_dampingd_loop_bw + d_loop_bwd_loop_bw);
d_alpha = (4
d_dampingd_loop_bw) / denom;
d_beta = (4
d_loop_bw*d_loop_bw) / denom;
}

void gri_control_loop::advance_loop(float error)
{
d_freq = d_freq + d_beta * error;
d_phase = d_phase + d_freq + d_alpha * error;
}

Is there any paper explains why the d_freq and d_phase is calculated in
such equation?

Thanks

On Thu, Jun 13, 2013 at 8:02 AM, adream [email protected] wrote:

void gri_control_loop::advance_loop(float error)
{
d_freq = d_freq + d_beta * error;
d_phase = d_phase + d_freq + d_alpha * error;
}

Is there any paper explains why the d_freq and d_phase is calculated in such
equation?

Thanks

It’s just the classic second order control loop:

You can probably also get this from Gardner’s book(s).

Tom