DLL_ChargePumpDLL4DO : A charge-pump delayed locked loop (DLL) with 4 differential outputs
A delay locked loop (DLL) is a feedback loop that aligns the phase of an output clock to the phase of an input clock by adjusting the delay of a delay line. This particular DLL produces multiphase output clocks by tapping different positions in the delay line.
This DLL model is composed of a phase detector (PD), a charge pump (CP), and a voltage-controlled delay line (VCDL). The PD compares the phases of the input and output clocks, clk_in
and clk_out
, and produces the error expressed as the difference between the up
and dn
pulse widths. The CP then adjusts the control voltage, vctrl
, so that the delay of the VCDL can align the phases of clk_in
and clk_out
with a gap of pi
radians. When the DLL is in lock, the VCDL produces a set of multiphase clocks clk_out
and clk_outb
, uniformly spanning the phase range of 0~2*pi
.
Input/Output Terminals
Name | I/O | Type | Description |
clk_out[3:0] | output | xbit | multiphase output clocks (pos) |
clk_outb[3:0] | output | xbit | multiphase output clocks (neg) |
clk_in | input | xbit | input clock |
Parameters
Name | Type | Default | Description |
Kvcdl | real | -12n | VCDL gain (s/V) |
vctrl0 | real | 0.5 | nominal vctrl value (V) |
delay0 | real | 3.2n | VCDL delay at nominal vctrl value (s) |
delay_max | real | 5.6n | maximum limit on VCDL delay (s) |
delay_min | real | 0.8n | minimum limit on VCDL delay (s) |
vctrl_init | real | 0.5 | initial value of vctrl (V) |
Iup | real | 200e-6 | charge-pump up current (A) |
Idn | real | 200e-6 | charge-pump down current (A) |
C | real | 100p | loop-filter capacitance (F) |
List of Children Cells
BLK_ChargePumpLoopFilter : A loop filter for charge-pump PLL |
DLN_LinearVCDL4DO : A voltage-controlled delay line (VCDL) with a linear V-to-D characteristic and 4 differential outputs |
PDC_SRLatchPD : An edge-triggered phase-only detector with an set-reset (SR) latch |
List of Testbenches
tb_check_lock : A testbench for checking the locking transient response of a delay-locked loop (DLL) |
tb_meas_freqstep : A testbench for measuring the frequency step response of a delay-locked loop (DLL) |
tb_meas_phasestep : A testbench for measuring the phase step response of a delay-locked loop (DLL) |
tb_meas_tfac : A testbench for measuring the frequency-domain transfer characteristics of a delay-locked loop (DLL) |
tb_check_lock : A testbench for checking the locking transient response of a delay-locked loop (DLL)
This testbench checks the locking transient of a delay-locked loop (DLL), by initializing the DLL to a condition far from the correct locking point. The phase and delay trajectories of the DLL output clock indicate whether the DLL can acquire a correct lock.
When the DLL acquires a correct lock, the difference between the phases of the input clock clk_in
and output clock clk_out
should converge to a value of pi
(rad) and the delay of the VCDL should converge to a half period of the clock.
Simulation Results
Figure. locking transients of the output clock phase and delay.
Figure. the input and multiphase output clocks at the locked state.
tb_meas_freqstep : A testbench for measuring the frequency step response of a delay-locked loop (DLL)
This testbench measures the frequency step response of a delay-locked loop (DLL). Once the DLL reaches its lock position, the testbench applies a step change to the frequency of the input clock clk_in
using a combination of step_gen
and freq_to_clk
primitives and observes the response in the frequency of the output clock clk_out[3]
.
As it is a type-I DLL that locks its delay to a half of the input clock period, the output clock frequency is expected to follow the change in the input clock frequency immediately after the delay while the delay will converge to a half of the new clock period with the settling time determined by the DLL’s bandwidth.
Simulation Results
Figure. frequency step response of the DLL.
tb_meas_phasestep : A testbench for measuring the phase step response of a delay-locked loop (DLL)
This testbench measures the phase step response of a delay-locked loop (DLL). Once the DLL reaches its lock position, the testbench applies a step change in the phase of the input clock clk_in
using a combination of step_gen
and phase_to_clk
primitives and observes the phase response of the output clock clk_out[3]
.
As it is a type-I DLL that locks its delay to a half of the input clock period, the output clock phase is expected to follow the change in the input clock phase immediately after the delay.
Simulation Results
Figure. phase step response of the VCDL.
tb_meas_tfac : A testbench for measuring the frequency-domain transfer characteristics of a delay-locked loop (DLL)
This testbench measures the frequency-domain transfer characteristics between the input clock period and output delay of a DLL using a probe_ac
primitive. The probe_ac
primitive supplies an AC stimulus to the input clock period value, with its frequency gradually varying from 10kHz to 10MHz. The primitive also measures the DLL’s output delay as the response and collects the frequency-domain transfer function between the input clock period and output delay.
This input clock period vs. output delay transfer characteristics can indicate the closed-loop bandwidth of a type-I DLL.
Simulation Results
Figure. the frequency-domain transfer characteristics between the input clock period and output delay of the DLL.