comnum.ddpll#

comnum.ddpll(x, constellation, *, fs=Ellipsis, kv=Ellipsis, tau1=Ellipsis, tau2=Ellipsis, pilot_indices=None, pilot_symbols=None)#

Decision-directed phase-locked loop (OptiCommPy ddpll): the phase correction to apply with derotate(x, θ).

Parameters:
  • x (array_like) – signal at one sample per symbol.

  • constellation (Constellation) – the alphabet (normalised inside).

  • fs (float) – sampling rate, the symbol rate (Hz); OptiCommPy’s Ts is 1/fs.

  • kv (float) – VCO gain.

  • tau1 (float) – first time constant of the loop filter (s).

  • tau2 (float) – second time constant of the loop filter (s).

  • pilot_indices (array_like, optional) – positions of known symbols.

  • pilot_symbols (array_like, optional) – the known symbols, used instead of the decisions at those positions.

Returns:

one phase per symbol (rad).

Return type:

numpy.ndarray

Raises:

ValueError – for an invalid parameter or input (the message names it).