Voltage-controlled oscillator model (VCO)
This article contains two models:
Model 1: Gain (V/Hz) is set directly
Model 2: Gain (V/Hz) is set through start/stop frequency
Tunable parameters:
- [1] Gain (in V/Hz) [2] Start/Stop frequency;
- DC offset;
- Amplitude;
- Start frequency;
- Number of points per period - can be useful for FFT simulations etc.
Cell name: vco
Model type: Verilog-A
1// VCO model
2// Contains two models:
3// Model 1: Gain (V/Hz) is set directly
4// Model 2: Gain (V/Hz) is set through start/stop frequency
5// Author: A. Sidun
6// Source: AnalogHub.ie
7
8\`include "constants.vams"
9\`include "disciplines.vams"
10
11// Model 1: Gain (V/Hz) is set directly
12module vco(out,in);
13voltage out,in;
14parameter real Gain_Hz_per_V = 1e6;
15parameter real DC_offset = 1;
16parameter real Amplitude = 1;
17parameter real Points_per_period = 100;
18parameter real Start_freq = 1e6;
19real phase, freq;
20
21\tanalog begin
22\t\tfreq = Start_freq+Gain_Hz_per_V*V(in);
23\t\tphase = idtmod(freq,0,1);
24\t\tV(out) <+ DC_offset+Amplitude*cos(2*\`M_PI*phase);
25\t\t$bound_step(1/(Points_per_period*freq));
26\tend
27endmodule
28
29// Model 2: Gain (V/Hz) is set through start/stop frequency
30module vco(out,in);
31voltage out,in;
32parameter real DC_offset = 1;
33parameter real Amplitude = 1;
34parameter real Points_per_period = 100;
35parameter real Start_frequency = 1e6;
36parameter real Stop_frequency = 10e6;
37real phase, freq, gain;
38
39\tanalog begin
40\t\tgain = Stop_frequency/Start_frequency;
41\t\tfreq = Start_frequency+gain*V(in);
42\t\tphase = idtmod(freq,0,1);
43\t\tV(out) <+ DC_offset+Amplitude*cos(2*\`M_PI*phase);
44\t\t$bound_step(1/(Points_per_period*freq));
45\tend
46endmodule