I would like to compare two different implementations of carrier tracking loop which differ in the way phase detection happens in the PLL. I am using PSK modulation for the data.
In the first implementation, a mixer is used as a phase detector and the implementation looks like this: enter image description here

Here, to ensure that the PLL does not track the PSK modulated data, the bandwidth needs to be sufficiently below the symbol rate to ensure that the tracking noise is not too high. This I can understand because if only data (without any noise) is passed through the PLL, low frequency components of data will be tracked and will contribute to noise. This can be seen in the figure below, where the output data from the PLL is high pass filtered because of the Loop:

enter image description here

Another implementation where the phase detector is implemented as a vector multiplier is explained here. In this implementation, I do not clearly see if there would be such kind of tracking noise vs phase noise trade-off. Because if I pass data without noise, than phase detector output will be zero and there would be no filtering of the data by the PLL. The plot for the PLL output with vector multiplier phase detector is shown below and I see that the tracking noise is non-existent even though I chose bandwidth very close to the data rate.
Why would such a trade-off exist for this kind of carrier tracking implementation? enter image description here EDIT
For the mixer implementation I am using ideal phase detector:

delta_phi = Kd*(phi_ref - phi_vco) %% Kd is the PD gain

I use complex exponential to implement vector multiplier:

phi_rotation = ref.*vco';  %%% Both and vco are complex exponentials 
symbol_estimate = conj(pskDemodulator(phi_rotation));
delta_phi = angle(phi_rotation.*symbol_estimate);  %%% imag would give the same result.

Block diagram Approach 2 enter image description here

Block Diagram Approach 1 enter image description here

  • $\begingroup$ Can you include more details of your phase detector implementation as a vector modulator side by side with your phase detector as a mixer? What I don't understand is if you have phase modulated data, and if your loop is not tracking out that modulation, how would it track out a carrier offset then? Perhaps also show how you intend to use this approach to do carrier tracking. $\endgroup$ Commented Apr 10, 2020 at 14:56
  • $\begingroup$ I just pass the channel output to the PLL and check the scatter-plot at the output of the PLL to see if there is any improvement in the phase noise. I did not add any frequency offset yet. $\endgroup$
    – sarthak
    Commented Apr 10, 2020 at 15:13
  • $\begingroup$ I suggest doing because from what you describe it sounds like you wouldn't track a carrier offset either. I can help you further if you put those updates I suggested. $\endgroup$ Commented Apr 10, 2020 at 15:14
  • $\begingroup$ I already added the phase detector implementation. Do you want me to first add the frequency offset as well? $\endgroup$
    – sarthak
    Commented Apr 10, 2020 at 15:17
  • $\begingroup$ Shouldn't the vector modulator approach be a complex conjugate multiplication? Otherwise you are adding the phase instead of subtracting. Test your solution under condition of frequency offset since it is a carrier recovery loop. $\endgroup$ Commented Apr 10, 2020 at 15:18

1 Answer 1


The question is specific to optimizing loop bandwidth for the decision directed carrier tracking loop with one sample per symbol. In other posts such as this one PLL for Phase Demodulation and Carrier Tracking I have detailed the consideration for not making the loop bandwidth too low due to increasing contributions from LO phase noise as well as less ability to track system dynamics (rate of Doppler change for example). I have also suggested as the loop BW gets to large we start introducing other noise sources and lose signal by tracking out the carrier such that an optimization in loop BW is involved. The OP is making the good point that it would be impossible to track out the carrier if we are only sampling 1 sample/symbol. So the question is what others factors would limit the maximum carrier tracking loop bandwidth, or would the go be to provide the maximum bandwidth that can be achieved in a loop with an update rate $R$ of a sample/symbol (i.e. < $R/2$).

Below I show more detailed simulations of this type of decision directed carrier tracking loop. Specifically we see the closed loop transfer of noise from the input to just prior to the decision as a high pass filter (as the loop tracks out the slower changes in phase as part of tracking the carrier). We note that with a narrow loop bandwidth the gain levels out close to 0 dB at the high end of the Nyquist bandwidth, while in the wide loop bandwidth the gain of the higher frequencies is +6.8 dB, which leads to noise enhancement.

The expected input noise will typically rise significantly as dominant phase noise as we approach the carrier (low frequency offsets) as is typical for local oscillator phase noise. However at some offset from the carrier the decreasing phase noise will intersect the noise floor which will then dominate from other white noise sources such as amplified thermal noise and quantization noise in fixed point implementations. Thus we see how a trade can exist with the loop bandwidth setting where the savings from further attenuation of lower frequency noise is offset by the noise enhancement from the wider loop bandwidth setting. Note that the decision directed phase detector is equally sensitive to AM and PM components on the signal, and the AM noise components of the input signal will be translated to PM components on the NCO in the loop and will thus not cancel out the AM noise but add to it as an uncorrelated noise source. Ultimately if an optimization is desired, and to confirm if this particular noise contribution will even affect the receiver,the simulation and analysis would need to be done with the expected noise profile for the specific system being analyzed, and importantly while operating at senstivity. So there is not a one answer fits all but hopefully this makes it clear how the SNR could be degraded by the carrier tracking loop if the bandwidth is set too high and what the considerations are for analyzing this.

Simulation Result with Phase and AWG Noise

Here is a complete simulation of the Decision Directed Carrier Tracking Loop with a 2nd Order PI filter (as a typical implementation) showing how the loop bandwidth can be optimized for pre-decision SNR performance, specifically showing conditions where the noise can degrade as the loop bandwidth continues to get wider, even if it is not at the point of tracking out the modulation.

Given the following Carrier Tracking Loop (Applicable to BPSK, QPSK, M-PSK and QAM modulations):

Decision Directed CR Loop

The following is the Loop Model and equation for the open loop gain:

Loop Model

$P$: Proportional gain constant

$I$: Integral gain constant (per sample with time in seconds)

$IT$: Integral gain consant (normalized with time units in samples)

$A$: complex magnitude of samples at discriminator input

$K_d$: Discriminator gain includes parasitic 1 sample delay in loop

$H_{LF}(z)$: PI Loop Filter

$K_{NCO}$: NCO gain, control word given in frequency of Hz (this way we can monitor frequency directly)

$$H_{LF}(z) = \frac{Pz + IT-P}{z-1}$$

$$K_{NCO} = 2\pi\frac{z}{z-1}$$

$$K_d = \frac{A^2}{z}$$

$$G_{OL}(z) = 2\pi PA^2\frac{z-\bigg(\frac{P - IT}{P} \bigg)}{(z-1)^2}$$

With this Loop Model I created three test cases, for all cases $A=1$ and $T=1$ (normalized magnitude and time is in samples): $$\begin{bmatrix} \text{Loop BW} & -3 \text{ dB BW} & \text{Settles In} & I & P & G_{CL}(z=\pi) \\ \text{---------}&\text{---------------}&\text{-------------}&\text{-------}&\text{------}&\text{----------------}\\ \text{Narrow} & 0.011 \text{ cyc/samp} & 200 \text{ samples} & 1e-4 & 7e-3 & 1.045 \\ \text{Medium} & 0.056 \text{ cyc/samp} & 20 \text{ samples} & 0.01 & 0.07 & 1.257 \\ \text{Wide} & 0.202 \text{ cyc/samp} & 5 \text{ samples} & 0.072 & 0.21 & 2.206 \\ \end{bmatrix}$$

I then created a noise sample of $2^{15}$ complex samples with the following phase noise target values for the PSD:

Freq $1=2\pi$, Phase Noise (dBc):

1e-2 cycles/sample, -15 dBc

1e-1 cycles/sample, -45 dBc

0.5 cylces/sample, -59 dBc

To this phase noise data I added AGWN with a total power of -40 dBc. This created experimental data of complex samples with both AM and PM noise components, with the phase noise contributing AM only with increasing density toward the lower frequencies, and AWGN contributing AM and PM components equally.

The loop performance was characterized by determining the closed loop transfer function from the input of the phase rotator to the output of the phase rotator which is given by:

$$G_{CL}(z) = \frac{1}{1+G_{OL}(z)} $$

It is clear that signal component, here normalized to 1 would not be affected in magnitude by the phase rotator, so we can assess SNR from the noise directly after it has passed through the above transfer function.

The Decision Directed Phase Detector responds equally to small scale AM and PM changes (A small change in amplitude can not be distinguished from a small change in phase), so any AM components would get translated to (uncorrelated) PM noise at the output of the phase rotator as the loop tries to correct phase offsets that don't exist. Therefore the resulting total noise at the output taken at the phase rotator output would be:

$$S_o(\omega) = S_{am}(\omega) + |G_{CL}(\omega)|^2S_{\phi}(\omega) + |G_{CL}(\omega)|^2S_{am}(\omega) $$

Where $S_o(\omega)$ is the power spectral density of the noise alone. Which means all the AM noise original on the signal would still exist without modification since the loop does not correct for any AM, the PM noise would be filtered by the loop, but the AM noise would also be translated to PM by the loop and this component of translated AM noise would also be filtered by the loop.

So accounting for all that, using this experimental data, here were the results after passing the data set through the narrow, medium and wide bandwidth loop filter responses:

$$\begin{bmatrix} \text{Loop BW} & \text{Total Integrated Noise} \\ \text{---------}&\text{-----------------------------}\\ \text{Narrow} & -64.6 \text{ dBc} \\ \text{Medium} & -69.8 \text{ dBc} \\ \text{Wide} & -67.1 \text{ dBc}\\ \end{bmatrix}$$

I assumed the optimum loop bandwidth for minimizing noise would be around the corner frequency where the phase noise intersects with the white noise floor but haven't confirmed this, nor did I do a detail sweep beyond these three test cases. I wanted to show an example that demonstrates how wider loop bandwidths can cause the noise level to start increasing as bandwidth gets wider and for this loop it is because of noise enhancement for wider loop bandwidths. We can see how this must be the case given the two closed loop zeros at $z=1$, and that the poles move closer to $z=-1$ as loop bandwidth increases.

Also to note, the resulting overall noise levels in this test case are inconsequential for demodulating most communication waveforms, so it would make no difference to degrade the tracking noise by 3 dB so that we could operate at the wider loop bandwidth, with all its other benefits. The point here was to show that it can be optimized but also that it very much depends on the overall system and there is not a one answer for all other than to evaluate this on a candidate system with similar detail.

The above is the concluding data and remarks, but further plots are shown below with regards to the test data, loop step responses and closed loop transfer functions.

Experimental Data - Phase Noise Only (time domain)

experimental phase noise data

Power Spectral Density of Phase Noise Data power spectral density

Power Spectral Density of Phase Noise with AWGN Data

power spectral density with AWGN

Closed Loop Step and Frequency Response From Input to Phase Rotator Output

Step Response and Frequency Response


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.