Phase-locked loops: a control centric tutorial | Synapse