Documentation |
On this page… |
---|
In order to interpret information correctly, a communication receiver must be synchronized with the corresponding transmitter. This can be achieved in both analog and digital domains. A digital receiver must sample the signal at an appropriate instant within the symbol period, and must estimate the carrier phase. Alternatively, analog components such as voltage-controlled oscillators (VCOs) and phase-locked loops (PLLs) can enable a receiver to adjust its behavior based on the parameters of the incoming signals or the desired signals.
This product implements several algorithms for timing phase recovery and carrier phase recovery. It also includes some lower-level components that you can use to build your own PLLs. This section describes the capabilities of the Synchronization library's blocks, in these key sections:
Open the Synchronization library by double-clicking its icon in the main Communications System Toolbox™ block library. Then open the sublibraries by double-clicking their icons in the Synchronization library.
The Timing Phase Recovery library contains blocks that implement various algorithms for determining the best instant within a symbol period to sample a signal at the receiver. For example, the best instant for a PSK-modulated signal is at the peak of the pulse shape. Sampling at the best instant improves the receiver's performance on a noisy signal. Typically, you would place a timing phase recovery block after a receive filter that is matched to the transmitting pulse shape, and before a demodulator.
This section about timing phase recovery covers these topics:
This library supports the algorithms listed below, which are all digital recovery methods rather than conventional analog phase-locked loops. For more information about each algorithm, see the reference works cited on each block's reference entry.
Algorithm | Block |
---|---|
Squaring method (feedforward) | Squaring Timing Recovery |
Early-late gate method (feedback) | Early-Late Gate Timing Recovery |
Gardner's method (feedback) | Gardner Timing Recovery |
Fourth-order nonlinearity method (feedback) | MSK-Type Signal Timing Recovery |
Mueller-Muller method (feedback) | Mueller-Muller Timing Recovery |
A feedforward method for timing phase recovery is structured as in the following figure.
In the figure,
The input signal is typically the output of a receive filter that is matched to the transmit pulse shape.
The timing estimator gives an estimate of the input signal's sampling phase.
The timing corrector is a sampler that outputs the value of the input signal corresponding to the phase estimate. The timing corrector interpolates between input signal values if necessary.
Squaring Timing Recovery block. The Squaring Timing Recovery block implements a feedforward method for timing phase recovery. In this method, the timing estimator uses a complex Fourier coefficient to determine the spectral component of the squared input signal at frequency 1/T, where T is the symbol period. For the specific equation, see the reference page for the Squaring Timing Recovery block.
The Timing Phase Recovery library implements several feedback methods for timing phase recovery. A feedback method for timing phase recovery is structured as in the following figure.
In the figure,
The input signal is typically the output of a receive filter that is matched to the transmit pulse shape.
The interpolator generates additional samples based on the needs of the timing error detector. As implemented here, the interpolator uses linear interpolation between pairs of points.
The timing error detector generates a timing error signal for each symbol. The algorithm used for timing error detection depends on the library block.
The loop filter updates the phase estimate for the current symbol using the timing error signal and the previous symbol's phase estimate. The phase estimate for the (k+1)st symbol is [[TAU]]_{k+1} = [[TAU]]_{k}+g*e(k), where g is the step size (also the Error update gain parameter in the feedback-method blocks in this library) and e(k) is the timing error for the kth symbol.
The controller uses the phase estimates to determine the interpolating instants that the interpolator uses in the next cycle.
Restarting the Phase Estimating Process During the Simulation. When using a feedback method for timing phase recovery in Simulink, you can restart the phase-estimation process at different points during the simulation. Restarting the process means resetting the data buffer and phase-estimate buffer to the all-zeros state. The table below lists the supported options.
Value of Reset Parameter | When Estimation Process Restarts |
---|---|
None | At beginning of simulation only. During the simulation, the block operates continuously, retaining information from one symbol to the next. |
Every frame | Regularly, at the start of each frame of data. During the simulation, each frame of data is processed independently. This option is valid only with frame-based data. |
On nonzero input via port | Whenever the second input (Rst) is nonzero. When the first input is sample-based, its symbol period must equal the sample time of Rst. When the first input is frame-based, its frame period must equal the sample time of Rst, and the reset occurs at the start of the frame. |
If you restart the phase-estimation process during the simulation, be sure to include enough symbols between successive resets for the algorithm to converge to a stable value. Check the phase (Ph) output from the block to see whether its values stabilize before the reset occurs. To include more symbols between successive resets, either increase the frame size by buffering frames together (when using the Every frame option) or change the Rst input so that nonzero values occur less frequently.
Depending on your system, one or more recovery methods implemented in this library might be suitable. If you use a method that is not suitable for your system, the results might not be accurate. This section discusses the assumptions and suitability of the various methods, covering these topics:
Squaring Timing Recovery Block. The Squaring Timing Recovery block recovers the symbol-timing phase of the input signal using a squaring method. This frame-based, feedforward, nondata-aided method is similar to a conventional squaring loop.
This block is suitable for systems that use linear baseband modulation types such as pulse amplitude modulation (PAM), phase shift keying (PSK) modulation, and quadrature amplitude modulation (QAM).
The block assumes that the phase offset is constant for all symbols in the entire input frame. If necessary, you can use the Buffer block to reorganize your data into frames over which the phase offset can be assumed constant.
Assumptions Common to All Feedback Method Blocks. The feedback method, as implemented in this library, makes some assumptions about the data it receives:
The phase varies slowly over time. Although the blocks compute a phase estimate for each symbol, the estimate should remain approximately constant for several symbols or else the algorithm does not converge.
The symbol frequency is constant and known. Small variations in phase correspond to a frequency offset, but the blocks do not compensate for it. The blocks estimate and correct only the phase, not the frequency.
Although the blocks that implement feedback methods share a common structure and the common assumptions above, the blocks use different algorithms in the timing error detector and incur different delays. See each block's reference entry for details.
Early-Late Gate Timing Recovery Block. The Early-Late Gate Timing Recovery block implements a nondata-aided feedback method.
This block is suitable for systems that use a linear modulation type, such as pulse amplitude modulation (PAM), phase shift keying (PSK) modulation, or quadrature amplitude modulation (QAM), with Nyquist pulses (for example, using a raised cosine filter). In the presence of noise, the performance of this timing recovery method improves as the pulse's excess bandwidth (rolloff factor in the case of a raised cosine filter) increases.
The early-late gate method is similar to Gardner's method, which is implemented in the Gardner Timing Recovery block. Some differences between the two methods are as follows:
In the ideal case (that is, when the phase estimate is zero and the input signal has symmetric Nyquist pulses), the timing error detector for the early-late gate method requires samples that span one symbol interval, rather than two symbol intervals as in Gardner's method.
Compared to Gardner's method, the early-late gate method has higher self noise and thus does not perform as well as Gardner's method in systems with high SNR values.
Gardner Timing Recovery Block. The Gardner Timing Recovery block implements a nondata-aided feedback method that is independent of carrier phase recovery.
This block is suitable for both baseband systems and modulated carrier systems. More specifically, this block is suitable for systems that use a linear modulation type with Nyquist pulses that have an excess bandwidth between approximately 40% and 100%. Examples of suitable systems are those that use pulse amplitude modulation (PAM), phase shift keying (PSK) modulation, or quadrature amplitude modulation (QAM), and that shape the signal using raised cosine filters whose rolloff factor is between 0.4 and 1. In the presence of noise, the performance of this timing recovery method improves as the excess bandwidth (rolloff factor in the case of a raised cosine filter) increases.
Gardner's method is similar to the early-late gate method, which is implemented in the Early-Late Gate Timing Recovery block.
MSK-Type Signal Timing Recovery Block. The MSK-Type Signal Timing Recovery block recovers the symbol timing phase of the input signal using a fourth-order nonlinearity method. This block implements a general nondata-aided feedback method that is independent of carrier phase recovery but that requires prior compensation for the carrier frequency offset.
This block is suitable for systems that use baseband minimum shift keying (MSK) modulation or Gaussian minimum shift keying (GMSK) modulation. Unlike the other blocks in this library, this block does not require the input signal to have been filtered beforehand.
Mueller-Muller Timing Recovery Block. The Mueller-Muller Timing Recovery block implements a decision-directed, data-aided feedback method that requires prior recovery of the carrier phase.
This block is suitable for systems that use a binary linear modulation type, such as binary phase shift keying (BPSK) modulation, or binary phase amplitude modulation (BPAM). The binary requirement arises because the algorithm uses a sign detector (that is, a 1-bit quantizer) to arrive at decisions. When the input signal has Nyquist pulses (for example, using a raised cosine filter), this timing recovery method has no self noise. In the presence of noise, the performance of this timing recovery method improves as the pulse's excess bandwidth factor decreases, making the method a good candidate for narrowband signaling.
One way to illustrate the usage and behavior of the timing phase recovery blocks is to introduce a fractional delay in a communications link and then see how well the block estimates the delay value and samples the received signal. In this context, a "fractional delay" is a delay that is not a multiple of the signal's symbol period. The examples discussed here are
Squaring Timing Phase Recovery Example, described below. This model introduces a fixed fractional delay and uses a feedforward method for timing phase recovery.
Gardner timing phase recovery example, which you can open by entering doc_gardner_phase_recoverydoc_gardner_phase_recovery at the MATLAB command line. This model introduces a fractional delay that varies from frame to frame and uses a feedback method for timing phase recovery.
This example modifies the one in Design Raised Cosine Filters in Simulink by introducing and then correcting for a fixed fractional delay. The model uses the Squaring Timing Recovery block to estimate that delay and determine the best instant within the symbol to sample its input signal. The model then demodulates the downsampled signal and computes a symbol error rate.
To open the completed model, click herehere in the MATLAB Help browser.
To build the model, first open the raised cosine filter model by clicking herehere in the MATLAB Help browser. Then, gather and configure these blocks:
Variable Fractional Delay, in the DSP System Toolbox™ Signal Operations library. Use default parameters.
Constant, in the Simulink Sources library
Set Constant value to 2.66. This is the number of samples of delay introduced in the system.
Goto and From, in the Simulink Signal Routing library. Use default parameters.
Selector, in the Simulink Signal Routing library
Set Elements to 1. This causes the block to select the first value in the frame, all of whose entries are actually the same.
Set Input port width to 100.
Set Samples per symbol to 8.
Rectangular QAM Demodulator Baseband, in the AM sublibrary of the Digital Baseband sublibrary of Modulation
Set Normalization method to Peak Power.
Set Peak power to 1.
Error Rate Calculation, in the Comm Sinks library
Set Receive delay to 8. This accounts for the delay of the pair of square root raised cosine filters.
Set Output data to Port.
Two copies of Display, in the Simulink Sinks library. Make one tall enough to accommodate three values.
Connect the blocks as in the figure, and then run the simulation.
Results of the Simulation. When you run the simulation, look for these results:
A delay estimate that varies during the simulation but is near the fixed value of 2.66. The Squaring Timing Recovery block computes this delay estimate for each frame and then uses it to choose a sampling instant for the symbols in that frame.
A symbol error rate that is small or zero, depending on how long you run the simulation. For most or all symbols, the Squaring Timing Recovery block determines a sampling instant that enables the demodulator to recover data correctly.
An eye diagram that has two widely opened "eyes" near 8.325 ms and 18.325 ms. These wide openings indicate appropriate instants at which to sample the filtered signal before demodulating, and reflect the introduced delay of 2.66 samples.
To arrive at the numbers 8.325 and 18.325, reason as follows: The eye diagram displays two symbols per trace, and each symbol has a period of 10 ms. Without the introduced delay, the centers of the trace's two symbols are at 5 ms and 15 ms. The delay value in each symbol is
(2.66 samples) / (8 samples/symbol) * (10 ms/symbol) = 3.325 ms
Therefore, the traces from the delayed signal have their widest openings at (5+3.325) ms and (15+3.325) ms.
While this example uses a fixed delay throughout the simulation, the blocks in the timing recovery library can also correct for delays that vary (slowly) from symbol to symbol. For an example that uses a varying delay, see the Gardner timing phase recovery example.
The Carrier Phase Recovery library contains blocks that implement digital algorithms for determining the carrier phase of a baseband digital signal. The blocks assume that the carrier frequency is known and fixed. The blocks output the estimated carrier phase as well as a corrected (that is, rotated) version of the input signal. Typically, you place a carrier phase recovery block before a demodulator, and after a timing phase recovery block or another block that produces symbols rather than an upsampled signal.
This section about carrier phase recovery covers these topics:
This library supports the algorithms listed below, which are all digital recovery methods rather than conventional analog methods. For more information about each algorithm, see the reference works cited on each block's reference entry.
Algorithm | Block |
---|---|
2P-power method, suitable for full-response CPM, MSK, CPFSK, or GMSK signals. | CPM Phase Recovery |
M-power method, suitable for M-PSK signals. (Also, the 4-power method is suitable for QAM signals using any alphabet size.) | M-PSK Phase Recovery |
The methods described in the table are nondata-aided, clock-aided, feedforward methods. They assume that timing and carrier frequency are already known and any matched filtering has already been performed.
The methods also assume that the carrier phase to be estimated is constant over a series of consecutive symbols. When you use the blocks in this library, you specify the number of symbols over which the carrier phase is assumed constant.
This example modifies the Squaring Timing Phase Recovery Example by introducing and then correcting for a fixed phase offset. The model uses the M-PSK Phase Recovery block to estimate the offset and correct the received baseband signal by rotating it. The model then demodulates the corrected signal and computes a symbol error rate.
To open the modelopen the model, enter doc_carrier at the MATLAB^{®} command line.
Results of the Simulation. When you run the simulation, look for these results:
A carrier phase estimate that varies during the simulation but is near the fixed value of 10 degrees. The M-PSK Phase Recovery block computes this carrier phase estimate for each frame and then uses it to correct the phase of the symbols in that frame.
A symbol error rate that is small or zero, depending on how long you run the simulation. For most or all symbols, the M-PSK Phase Recovery block enables the demodulator to recover data correctly.
A signal constellation that reflects the signal whose phase the M-PSK Phase Recovery block has corrected. When you first begin the simulation and the block is in an initial latency period, the constellation reflects the phase offset of 10 degrees, with no correction. After the latency period is over, the constellation shows no phase offset because the M-PSK Phase Recovery block has corrected for it. The constellations before and after the end of the latency period appear below. The easiest way to see the 10-degree rotation between the two constellations is to look at the axes.
Before End of Latency Period
After End of Latency Period
Exploring the Simulation Further. Another way to examine the performance of the carrier phase recovery is to check how much the phase estimates from successive observation intervals differ from each other. You do this using the plotting capabilities of MATLAB along with the simulation capabilities of Simulink:
Add a To Workspace block, from the Sinks library in DSP System Toolbox, to the carrier phase recovery example model.
In the To Workspace block, set Variable name to phs and set Limit data points to last to 200.
Connect the To Workspace block to the Ph output of the M-PSK Phase Recovery block, as shown in the following figure.
In the MATLAB Command Window, enter this command to run the simulation for a finite period of time:
sim('doc_carrier',205);
You make the simulation run faster by closing the window containing the signal constellation plot. When the simulation ends, the MATLAB workspace contains a variable called phs that contains the last 200 phase estimates from the M-PSK Phase Recovery block. Initial zeros from the delay period are omitted.
Create a plot showing the phase estimate values as well as their mean value by entering the following in the MATLAB Command Window:
plot(1:200,phs,'b-',1:200,mean(phs),'r--') legend('Carrier phase estimate','Mean carrier phase estimate') xlabel('Observation intervals'); ylabel('Degrees')
The plot shows that the mean is very close to the expected value of 10 degrees, while the individual phase estimates vary within an interval that includes 10 degrees.
The Components sublibrary contains voltage-controlled oscillator (VCO) models as well as phase-locked loop (PLL) models.
This section discusses these topics:
For details about phase-locked loops, see the works listed in Selected Bibliography for Synchronization.
Voltage-Controlled Oscillator Blocks. A voltage-controlled oscillator is one part of a phase-locked loop. The Continuous-Time VCO and Discrete-Time VCO blocks implement voltage-controlled oscillators. These blocks produce continuous-time and discrete-time output signals, respectively. Each block's output signal is sinusoidal, and changes its frequency in response to the amplitude variations of the input signal.
Overview of PLL Simulation. A phase-locked loop (PLL), when used in conjunction with other components, helps synchronize the receiver. A PLL is an automatic control system that adjusts the phase of a local signal to match the phase of the received signal. The PLL design works best for narrowband signals.
A simple PLL consists of a phase detector, a loop filter, and a voltage-controlled oscillator (VCO). For example, the following figure shows how these components are arranged for an analog passband PLL. In this case, the phase detector is just a multiplier. The signal e(t) is often called the error signal.
The following table indicates the supported types of PLLs and the blocks that implement them.
Supported PLLs in Components Library
Type of PLL | Block |
---|---|
Analog passband PLL | Phase-Locked Loop |
Analog baseband PLL | Baseband PLL |
Linearized analog baseband PLL | Linearized Baseband PLL |
Digital PLL using a charge pump | Charge Pump PLL |
Different PLLs use different phase detectors, filters, and VCO characteristics. Some of these attributes are built into the PLL blocks in this product, while others depend on parameters that you set in the block mask:
You specify the filter's transfer function in the block mask using the Lowpass filter numerator and Lowpass filter denominator parameters. Each of these parameters is a vector that lists the coefficients of the respective polynomial in order of descending exponents of the variable s. To design a filter, you can use functions such as butter, cheby1, and cheby2 in Signal Processing Toolbox.
You specify the key VCO characteristics in the block mask. All four PLL blocks use a VCO input sensitivity parameter. Some blocks also use VCO quiescent frequency, VCO initial phase, and VCO output amplitude parameters.
The phase detector for each of the PLL blocks is a feature that you cannot change from the block mask.
Implementing an Analog Baseband PLL. Unlike passband models for a phase-locked loop, a baseband model does not depend on a carrier frequency. This allows you to use a lower sampling rate in the simulation. Two blocks implement analog baseband PLLs:
The linearized model and the nonlinearized model differ in that the linearized model uses the approximation
$$\mathrm{sin}\left(\Delta \theta (t)\right)\cong \Delta \theta (t)$$
to simplify the computations. This approximation is close when Δθ(t) is near zero. Thus, instead of using the input signal and the VCO output signal directly, the linearized PLL model uses only their phases.
Implementing a Digital PLL. The charge pump PLL is a classical digital PLL. Unlike the analog PLLs mentioned above, the charge pump PLL uses a sequential logic phase detector, which is also known as a digital phase detector or a phase/frequency detector.
[1] Gardner, F.M., "Charge-pump Phase-lock Loops," IEEE Trans. on Communications, Vol. 28, November 1980, pp. 1849–1858.
[2] Gardner, F.M., "Phase Accuracy of Charge Pump PLLs," IEEE Trans. on Communications, Vol. 30, October 1982, pp. 2362–2363.
[3] Gupta, S.C., "Phase Locked Loops," Proceedings of the IEEE, Vol. 63, February 1975, pp. 291–306.
[4] Lindsay, W.C. and C.M. Chie, "A Survey on Digital Phase-Locked Loops," Proceedings of the IEEE, Vol. 69, April 1981, pp. 410–431.
[5] Mengali, Umberto, and Aldo N. D'Andrea, Synchronization Techniques for Digital Receivers, New York, Plenum Press, 1997.
[6] Meyr, Heinrich, and Gerd Ascheid, Synchronization in Digital Communications, Vol. 1, New York, John Wiley & Sons, 1990.
[7] Moeneclaey, Marc, and Geert de Jonghe, "ML-Oriented NDA Carrier Synchronization for General Rotationally Symmetric Signal Constellations," IEEE Transactions on Communications, Vol. 42, No. 8, Aug. 1994, pp. 2531–2533.