- class sdr.LoopFilter
Implements a 2nd order, proportional-plus-integrator (PPI) loop filter.
Notes¶
+----+ +-->| K1 |-------------------+ | +----+ | x[n] --+ @--> y[n] | +----+ | +-->| K2 |--@-------------+--+ +----+ ^ | | +------+ | +--| z^-1 |<--+ +------+ x[n] = Input signal y[n] = Output signal K1 = Proportional gain K2 = Integral gain z^-1 = Unit delay @ = Adder
The transfer function of the loop filter is
\[H(z) = K_1 + K_2 \frac{ 1 }{ 1 - z^{-1}} = \frac{(K_1 + K_2) - K_1 z^{-1}}{1 - z^{-1}} .\]The second-order proportional-plus-integrator loop filter can track a constant phase error and/or frequency error to zero. It cannot, however, track a constant chirp (frequency ramp) to zero.
References¶
Michael Rice, Digital Communications: A Discrete-Time Approach, Appendix C: Phase Locked Loops.
Examples¶
See the Phase-locked loops example.
Constructors¶
- LoopFilter(noise_bandwidth: float, damping_factor: float, ...)
Creates a 2nd order, proportional-plus-integrator (PPI) loop filter.
Special methods¶
Methods¶
Properties¶
- property noise_bandwidth : float
The normalized noise bandwidth \(B_n T\) of the loop filter, where \(B_n\) is the noise bandwidth in Hz and \(T\) is the sampling period in seconds.
- property damping_factor : float
The damping factor \(\zeta\) of the loop filter. \(\zeta = 1\) is critically damped, \(\zeta < 1\) is underdamped, and \(\zeta > 1\) is overdamped.