Module rpps.sync.pll
Phase Locked Loop
Composed of: - Error detector, (eD[n]), error detector output - Loop filter, (eF[n]), filter output - Generator, (eC[n]), estimate - Accumulator - eC[n] = (eC[n-1] + K0 * eF[n-1] mod [max])
Functions
def K_fs(Kd, K0, Df, Bn, Fs)-
Expand source code
def K_fs(Kd, K0, Df, Bn, Fs): Kp = (1/(Kd*K0)) * ((4*Df)/(Df+(1/(4*Df)))) * (Bn/Fs) Ki = (1/(Kd*K0)) * (4/(Df+(1/(4*Df)))**2) * (Bn/Fs)**2 return Kp, Ki def K_sr(Kd, K0, Df, Bn, sr, sps)-
Expand source code
def K_sr(Kd, K0, Df, Bn, sr, sps): Kp = (1/(Kd*K0*sps)) * ((4*Df)/(Df+(1/(4*Df)))) * (Bn/sr) Ki = (1/(Kd*K0*sps**2)) * (4/(Df+(1/(4*Df)))**2) * (Bn/sr)**2
Classes
class DPLL-
Expand source code
class DPLL: pass class DPLL_PI-
Expand source code
class DPLL_PI: """ P, eF1[n] = Kp * eD[n] U, eF2[n] = eF2[n-1] + Ki * eD[n] eF[n] = eF1[n] + eF2[n] Df, ζ [1/sqrt(2), 0.707, 0.5-2.0] Bn, ωn [1-5% Fs or sr] K0 = [1], Generator gain Kd = [A/2, 0.5], Error gain Kp """ def __init__(self): self._int = 0.0 def run(self, error): self._int += self.Ki * error self.err = self.Kp * error + self._int self.ref = self.ref + self.K0 * self.errP, eF1[n] = Kp * eD[n] U, eF2[n] = eF2[n-1] + Ki * eD[n] eF[n] = eF1[n] + eF2[n]
Df, ζ [1/sqrt(2), 0.707, 0.5-2.0] Bn, ωn [1-5% Fs or sr] K0 = [1], Generator gain Kd = [A/2, 0.5], Error gain Kp
Methods
def run(self, error)-
Expand source code
def run(self, error): self._int += self.Ki * error self.err = self.Kp * error + self._int self.ref = self.ref + self.K0 * self.err