Ring Oscillator VCO
Libraries:
Mixed-Signal Blockset /
PLL /
Building Blocks
Description
The Ring Oscillator VCO block models the output signal, frequency control, period jitter, and flicker noise of a VCO (voltage controlled oscillator) such as a bias controlled ring oscillator circuit. This block generates the phase noise using a mathematical description of the phase noise of ring oscillators. This allows faster computation of simulation results during both startup and the subsequent simulations. You can also control the phase noise profile by selecting the Gaussian noise level, corner frequency, and flicker exponent. The phase noise spectrum is limited to the spectra that can be produced by the physical model of a ring oscillator.
You can choose the coefficients for the mathematical description of the phase noise. You can provide a specific phase noise spectral density from a data sheet and compare that to the phase noise spectral density that the mathematical coefficients produce. You can then adjust the coefficients to fit the specified phase noise in a way that makes the most sense physically.
Note
If the flicker noise corner frequency is set to zero, the Ring Oscillator VCO block can also be used to model a tank-tuned VCO.
Ports
Input
vctrl — Voltage used to control VCO output frequency
scalar | vector
VCO control voltage used to control the output frequency of the ring oscillator VCO. In a phase-locked loop (PLL) system, vctrl is the output of the Loop Filter that contains the phase error information.
Data Types: double
Output
vco out — Output signal determined by vctrl
port
scalar
Output signal of the ring oscillator VCO. In a PLL system, vco out is the output clock generated by the PLL. It is also fed back to the PFD block through a clock divider to complete the control loop.
Data Types: double
Parameters
Parameters
Specify using — Define how VCO output frequency is specified
Voltage sensitivity
(default) | Output frequency vs. control voltage
Define how the VCO output frequency is specified:
Select
Voltage sensitivity
to specify output frequency from the Voltage sensitivity (Hz/V) and Free running frequency (Hz) parameters.Select
Output frequency vs. control voltage
to interpolate output frequency from the Control voltage (V) vector versus Output frequency (Hz) vector.
Programmatic Use
Block parameter:
SpecifyUsing |
Type: character vector |
Values:
Voltage sensitivity | Output frequency vs.
control voltage |
Default:
Voltage sensitivity |
Voltage sensitivity (Hz/V) — Measure of change in output frequency of VCO
100e6
(default) | positive real scalar
Measure of change in output frequency for input voltage change, specified as a positive real scalar with units in Hz/V. This parameter is also reported as VCO voltage sensitivity in the Loop Filter tab and is used to automatically calculate the filter component values of the loop filter.
Dependencies
To enable this parameter, in the Parameters tab, set
Specify using to Voltage
sensitivity
.
Programmatic Use
Block parameter:
Kvco |
Type: character vector |
Values: positive real scalar |
Default:
100e6 |
Data Types: double
Free running frequency (Hz) — VCO output frequency without control voltage
2.5e9
(default) | positive real scalar
Frequency of the VCO without any control voltage input (0
V) or
the quiescent frequency, specified as a positive real scalar in hertz.
Dependencies
To enable this parameter, in the Parameters tab, set
Specify using to Voltage
sensitivity
.
Programmatic Use
Block parameter:
Fo |
Type: character vector |
Values: positive real scalar |
Default:
2.5e9 |
Data Types: double
Control voltage (V) — Control voltage values
[-5 0 5]
(default) | real valued vector
Control voltage values of the VCO, specified as a real valued vector in volts.
Dependencies
To enable this parameter, in the Parameters tab, set
Specify using to Output frequency vs. control
voltage
.
Programmatic Use
Block parameter:
ControlVoltage |
Type: character vector |
Values: real valued vector |
Default:
[-5 0 5] |
Data Types: double
Output frequency (Hz) — VCO output frequency values
[2e9 2.5e9 3e9]
(default) | positive real valued vector
Output frequency of the VCO corresponding to the Control voltage (V) vector, specified in hertz.
Dependencies
To enable this parameter, in the Parameters tab, set
Specify using to Output frequency vs. control
voltage
.
Programmatic Use
Block parameter:
OutputFrequency |
Type: character vector |
Values: positive real valued vector |
Default:
[2e9 2.5e9 3e9] |
Data Types: double
Output amplitude (V) — Maximum amplitude of VCO output voltage
1
(default) | positive real scalar
Maximum amplitude of the VCO output voltage, specified as a positive real scalar.
Programmatic Use
Block parameter:
Amplitude |
Type: character vector |
Values: positive real scalar |
Default:
1 |
Data Types: double
Enable increased buffer size — Enable increased buffer size
off (default) | on
Select to enable increased buffer size during simulation. This increases the buffer size of the Variable Pulse Delay block inside the Ring Oscillator VCO block. By default, this option is deselected.
Buffer size — Number of samples of input buffering available during simulation
10
(default) | positive integer scalar
Number of samples of input buffering available during simulation, specified as a positive integer scalar. This sets the buffer size of the Variable Pulse Delay block inside the Ring Oscillator VCO block.
Selecting a different simulation solver or sampling strategies can change the number of input samples needed to produce an accurate output sample. Set the Buffer size to a large enough value so that the input buffer contains all the input samples required.
Dependencies
To enable this parameter, select Enable increased buffer size.
Programmatic Use
Block parameter:
NBuffer |
Type: character vector |
Values: positive integer scalar |
Default:
10 |
Data Types: double
Impairments
Add phase noise — Add phase noise as a function of frequency
on (default) | off
Select to introduce phase noise as a function of frequency to the VCO. By default, this option is selected.
Model single sided phase noise instead of double sided — Model single-sided phase noise instead of double-sided
off (default) | on
Select to model single-sided phase noise instead of double-sided. By default, the block assumes the specified phase noise is double-sided.
Phase noise frequency offset (Hz) — Frequency offsets of specified phase noise from carrier frequency
[30e3 100e3 1e6 3e6 10e6]
(default) | positive real valued vector
The frequency offsets of the specified phase noise from the carrier frequency, specified as a positive real valued vector in hertz.
Dependencies
To enable this parameter, select Add phase noise in the Impairments tab.
Programmatic Use
Block parameter:
Foffset |
Type: character vector |
Values: positive real valued vector |
Default:
[30e3 100e3 1e6 3e6 10e6] |
Data Types: double
Phase noise level (dBc/Hz) — Specified phase noise power at phase noise frequency offsets relative to the carrier
[-56 -106 -132 -143 -152]
(default) | negative real valued vector
The specified phase noise power in a 1 Hz bandwidth centered at the phase noise frequency offsets relative to the carrier, specified as a negative real valued vector in dBc/Hz. The elements of Phase noise level correspond to relative elements in the Phase noise frequency offset (Hz) parameter.
Dependencies
To enable this parameter, select Add phase noise in the Impairments tab.
Programmatic Use
Block parameter:
PhaseNoise |
Type: character vector |
Values: negative real valued vector |
Default:
[-56 -106 -132 -143 -152] |
Data Types: double
Estimate phase noise parameters — Set noise parameters intended to match specified noise spectrum
button
Click to set the noise parameters to an initial estimate intended to match the specified noise spectrum.
Period jitter (S) — Standard deviation of period jitter
1.7e-15
(default) | positive real scalar
Standard deviation of the period jitter, specified as a positive real scalar in seconds. Period jitter is the deviation in cycle time of a clock signal with respect to the ideal period.
Programmatic Use
Block parameter:
PeriodJitter |
Type: character vector |
Values: positive real scalar |
Default:
1.7e-15 |
Flicker corner frequency (Hz) — Corner frequency of flicker noise
5e5
(default) | scalar
Corner frequency of the flicker noise, specified as a scalar in hertz. Flicker corner frequency (Hz) is defined as the frequency at which the phase noise transitions from 1/f2 to 1/f3 due to flicker noise. At this frequency, the spectral densities of period jitter and flicker noise are equal.
Programmatic Use
Block parameter:
CornerFrequency |
Type: character vector |
Values: scalar |
Default:
5e5 |
Customize flicker exponent (Advanced feature) — Customize flicker noise power spectral distribution
off (default) | on
Select this parameter to customize the power spectral distribution of the flicker noise. Traditionally, flicker noise is defined as the 1/f noise, but it can vary as 1/fV, where 0.8<V<1.5.
Flicker exponent — Flicker noise power exponent
1.0
(default) | 0.8
| 0.9
| 1.1
| 1.2
| 1.3
| 1.4
| 1.5
Flicker noise power exponent, specified between 0.8
to
1.5
.
Programmatic Use
Block parameter:
FlickerExponent |
Type: character vector |
Values:
1.0 | 0.8 |
0.9 | 1.1 |
1.2 | 1.3 |
1.4 | 1.5 |
Default:
1.0 |
Plot fit — Plot specified and expected output phase noise density
button
Click to plot the specified phase noise density and realizable expected output phase noise density.
More About
Phase Noise in Ring Oscillator VCO
The Ring Oscillator VCO block generates the phase noise with the help of a Gaussian noise source and a flicker filter.
When enable the phase noise, the phase noise is calculated from the variance of the period offset stochastic process from the spectral density at a single frequency. Given the oscillation frequency f0, offset frequency f , and single sideband spectral density ℒ(f) , the variance of the period offset is:
Thus, except for flicker noise, you need a period offset derived from an uncorrelated random process with a constant variance. This period offset is generated by the block’s Gaussian noise source.
To model flicker noise, the flicker filter introduces additional gain at low frequencies, down to four orders of magnitude below the flicker corner frequency. To increase the energy spectral density from 1/f2 to 1/f3, the flicker filter must introduce a voltage gain of 1/√f below the corner frequency while maintaining unity gain above the corner frequency. To achieve this, the flicker filter is a recursive digital filter with an alternating sequence of four poles and four zeros. The lowest frequency zero is a constant factor higher than the lowest frequency pole, the next higher frequency pole is the same constant factor higher than the lowest frequency zero, and that pattern of alternating poles and zeros is maintained through the remainder of the sequence. The constant factor is a function of the flicker filter exponent, with a factor of the square root of ten for the nominal case of 1/f flicker noise.
To minimize numerical noise in the flicker filter, the sample rate of the Gaussian noise source and flicker filter is limited to 20 times the highest phase noise specification offset frequency, unless that sample rate is comparable to or greater than twice the frequency of oscillation. For higher phase specification noise offset frequencies, the sample rate is limited to twice the frequency of oscillation.
The variance of the Gaussian noise source is adjusted to compensate for the difference in sample rate between the noise source and the oscillator’s frequency of oscillation.
When the phase noise is disabled, the variance of the Gaussian noise is set to zero.
Matching Measured Phase Noise to Physical Model
Specified phase noise spectra often include measurement artifacts that should not be included in the model of the VCO itself. While the parameter values produced by the Estimate phase noise parameters button will often come close to creating an appropriate physical model, there will be cases that require your judgement. Two common problems are noise floor and resolution bandwidth.
Sometimes, the measured phase noise appears to match a physical model up to frequencies for which the phase noise may be below the noise floor of the measurement.
It appears that there is a measurement noise floor at –140 dBc/Hz for the specification dataset, and the phase noise for the device under test is probably below that noise floor for offset frequencies above 100 MHz. In this case, a set of parameter values that fit best to the data at lower frequency offsets is likely to produce a more accurate model.
Sometimes, the measured phase noise appears to match a physical model at all levels except the lowest frequency offset.
The most likely cause for a result such as this is that the resolution bandwidth used to make the measurement was too large to produce an accurate measurement at the lowest frequency offset, 30 kHz in this case. Even if the carrier was outside the passband of the measurement filter, the carrier energy passed through the limited stopband rejection of the measurement filter was much larger than the energy in the passband. In this case, a set of parameter values that fit best to the data at higher frequency offsets is likely to produce a more accurate model.
Version History
Introduced in R2021aR2023b: Model Single-Sided Phase Noise
You can specify whether the VCO phase noise is single-sided or double-sided.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)