Robochameleon  v1.0
Public Member Functions | Public Attributes | List of all members
DDPLL_v1 Class Reference

Second order type II decision-directed PLL. More...

Inherits unit.

Public Member Functions

function DDPLL_v1 (in param)
 Class constructor. More...
 
function traverse (in obj, in varargin)
 Travese function. More...
 
function pll (in obj, in Ein, in Ts, in Kv, in tau1, in tau2, in refConstellation, in initialPhase)
 PLL core processing. More...
 
function plot (in obj)
 Plot phase estimates. More...
 
- Public Member Functions inherited from unit
function traverseNode (in obj)
 Set unique ID when creating a unit. More...
 
function connectOutput (in obj, in uobj, in unitOutput, in nextUnitInput)
 Specify where signal should go next. More...
 
function connectOutputs (in obj, in units, in destInputs)
 Specify where signal should go next. More...
 
function writeInputBuffer (in obj, in sig, in inputId)
 write input buffer
 
function horzcat (in varargin)
 horizontal concatenation
 
function vertcat (in varargin)
 vertical concatenation
 
function setparams (in obj, in params, in REQUIRED_PARAMS, in QUIET_PARAMS)
 set parameters More...
 
function view (in obj)
 Show interactive GUI through unit_view-class.
 

Public Attributes

Property refConstellation
 Type of constellation (PSK, QAM, ...)
 
Property Kv
 Loop constant.
 
Property tau1
 PI paramters 1.
 
Property tau2
 PI paramters 1.
 
Property initialPhase
 Initial phase of the PLL.
 
Property speedupEnabled
 Flag to process a single polarization and apply the results to all the others.
 
Property Rs
 
Property nInputs
 Number of inputs.
 
Property nOutputs
 Number of outputs.
 
- Public Attributes inherited from unit
Property inputBuffer
 Buffer for storing inputs as we traverse the graph.
 
Property nextNodes
 Children nodes.
 
Property destInputs
 Destination inputs in children.
 
Property results
 For storing results.
 
Property label
 
Property draw
 enable/disable plotting
 
Property nInputs
 Number of signals traverse expects.
 
Property nOutputs
 Number of outputs traverse expects.
 

Detailed Description

Second order type II decision-directed PLL.

This class implements a decision-directed PLL for frequency offset correction and carrier phase recovery as described in [1, section 5.8]. The loop filter is proportional-integrator type and based on the implementation discussed in [2, Software PLL chapter].

Tuning the feedback parameters

tau1 and tau2 are as defined in standard continuous time PI-PLL theory - i.e. the loop filter will be described by

F(s) = (1+tau2*s)/(tau1*s)

Kv is a discrete quantity. The analogous continuous time loop gain is given by

Kv_cts = 2*Kv/Ts

Translation from continuous to discrete is accomplished using the bilinear Z transform, which is why tan(Ts/2*tau) appears in the script. Then loop parameters are given by

wn = loop BW in rad/s = sqrt(Kv_cts/tau1)

damping_factor = wn*tau2/2

Example

param.ddpll.constellationType = '16-QAM';
ddpll = DDPLL_v1(param.ddpll);

Advanced example

Rs = 28e9; %baud rate
param.ddpll.Kv = 0.3;
PI_BW = 100e6; %Hz
PI_damping = 5;
param.ddpll.tau1 = (2*param.ddpll.Kv*Rs)/((2*pi*PI_BW)^2);
param.ddpll.tau2 = PI_damping*2/(2*pi*PI_BW);
param.ddpll.speedupEnabled = 1;
param.ddpll.constellationType = 'QAM';
ddpll = DDPLL_v1(param.ddpll);

Results:

References:

[1] H. Meyer, Digital Communication Receivers: Synchronization, Channel estimation, and Signal Processing Wiley 1998. Section 5.8 and 5.9.

[2] R. Best, Phase-Locked Loops: Design, Simulation, & Applications, McGraw-Hill 1997. Chapter: Software PLL

Author
Molly Piels (copied from earlier Robochameleon)
Simone Gaiarin
See also
constref.m

Definition at line 71 of file DDPLL_v1.m.

Constructor & Destructor Documentation

function DDPLL_v1::DDPLL_v1 ( in  param)

Class constructor.

Parameters
param.constellationTypeType of constellation to be used in the decision directed phase detector. Possible values: {'PSK', 'QAM', ...} or using the fast syntax {'QPSK', '16-QAM', ...}. See constref.m for all the possible values.
param.MNumber of symbols in the constellation. Optional if fast syntax is used to define the constellation type.
param.KvLoop constant. Can be a scalar or a vector if different values should be used for the different input components (modes). Default: 0.3.
param.tau1PI filter parameter 1. Default:1/(2*pi*PI_BANDWIDTH) with PI_BANDWIDTH = 10e6
param.tau2PI filter parameter 2. Default:1/(2*pi*PI_BANDWIDTH) with PI_BANDWIDTH = 10e6
param.initialPhasePhse used to initialize the DDPLL. Default: 0
param.speedupEnabledIf true the phase is estimated for a single component and used to compensate all the other components. Default: False.
Return values
objinstance of DDPLL_v1 class

Member Function Documentation

function DDPLL_v1::pll ( in  obj,
in  Ein,
in  Ts,
in  Kv,
in  tau1,
in  tau2,
in  refConstellation,
in  initialPhase 
)

PLL core processing.

Estimates the phase error and applies ompensation to the input signal.

Parameters
Eininput signal
Return values
Eoutsignal with phase correction applied Class constructor
Parameters
EinInput complex field. [Vector of double].
TsSymbol period.
KvLoop constant. Can be a scalar or a vector if different values should be used for the different input components (modes). Default: 0.3.
tau1PI filter parameter 1. Default:1/(2*pi*PI_BANDWIDTH) with PI_BANDWIDTH = 10e6
tau2PI filter parameter 2. Default:1/(2*pi*PI_BANDWIDTH) with PI_BANDWIDTH = 10e6
refConstellationReference constellation points. [Vector of complex double].
param.initialPhasePhse used to initialize the DDPLL. Default: 0
Return values
E_hatInput signal with phase corrected.
phaseEstimatePhase error estimates.
function DDPLL_v1::plot ( in  obj)

Plot phase estimates.

Plots phase estimates and delta of the phase estimates as a function of the number of samples

function DDPLL_v1::traverse ( in  obj,
in  varargin 
)
virtual

Travese function.

Run the pll on the input signal to estimate the phase and then applies the correction to the input signal.

Saves the phase estimates and the frequency offsets for each components in the results structure.

Parameters
vararginCase 1: signal_interface with N complex components (modes).
vararginCase 2: 2 x signal_interface with 1 complex component.
vararginCase 3: 4 x signal_interface with 4 real components.
Return values
outsignal with phase correction applied

Reimplemented from unit.


The documentation for this class was generated from the following file: