DLL
A Delay-Locked Loop (DLL) is a closed-loop clock-conditioning circuit that uses a chain of delay elements and a feedback comparator to align an output clock edge to an input reference edge, eliminating or compensating for clock distribution skew. Unlike a Phase-Locked Loop (PLL), a DLL does not use a voltage-controlled oscillator; it delays the reference signal rather than synthesizing a new frequency, though some DLL-labeled FPGA primitives include auxiliary logic that extends this basic capability.
In practice
DLLs appear most often in FPGAs and high-speed memory interfaces. In FPGAs such as the Xilinx Spartan/Virtex families and Intel (Altera) Cyclone/Arria series, on-chip DLL primitives (sometimes called DCMs on older Xilinx devices) are used to deskew the global clock tree, generate phase-shifted versions of a clock, or produce a clean, edge-aligned clock for I/O capture. DDR SDRAM controllers and discrete memory chips commonly use DLLs or similar delay-based circuits to align the data strobe (DQS) signal within the data eye, allowing reliable sampling at high data rates, though the specific approach on the controller side may involve a DLL, PLL, or other delay elements depending on the platform.
In practice, a DLL works by measuring the phase difference between the reference input and the delayed output, then adjusting tap selection in the delay line until the error is driven to zero. Because it delays rather than multiplies, a pure DLL cannot perform frequency synthesis on its own. However, it can produce simple rational multiples of the input frequency (e.g., half-rate or double-rate clocks) on some implementations through additional circuitry, and it typically achieves lock faster than a PLL.
A key pitfall is the limited operating frequency range: each delay-line tap has a fixed minimum and maximum delay set by process, voltage, and temperature (PVT). If the input clock period falls outside the range the delay line can cover end-to-end, the DLL cannot lock. On FPGAs, this is expressed as a minimum/maximum input frequency specification for each DLL/DCM primitive, and violating it will typically result in a failure to lock, though the exact failure behavior can vary by device family and implementation. Designers must verify timing across PVT corners and consult the device datasheet for lock-time and jitter specifications.
Jitter behavior differs from a PLL. Because a DLL directly tracks the input reference on every cycle, it has limited ability to average out cycle-to-cycle jitter; input jitter tends to pass through with less attenuation than in a PLL, though the degree of attenuation depends on loop bandwidth and implementation details. For applications requiring jitter filtering, a PLL is often the better choice, though this is a practical guideline rather than a strict rule, as PLL noise characteristics also depend on configuration. For applications requiring low latency, deterministic phase alignment, and fast lock, a DLL is often preferred.



