Clock and Data Recovery/Buffer Memory (Elastic Buffer)

From Wikibooks, open books for an open world
Jump to: navigation, search

Data Buffers in association with CDRs[edit]

The CDR function is primarily a layer 1 function, in the sense of the OSI Reference Model.


A Telecommunication buffer is a Data Buffer specialized for the Telecom application.

In the scope of CDR applications, the Telecom buffer further specializes to simply add a convenient delay to a serial data stream.

Such buffer, in principle, consists of a R/W memory with circularly sequential addresses, and of two counters.

Example of a Telecom buffer that adds a delay.
(Up to about 32 bits of memory size, the memory structure can be as simple as a shift register. If larger, it is implemented as a memory bank)

The write counter times the writing into the memory of an incoming serial flow of information, and the read counter sets, in turn, the timing of the reading operation.

Elastic buffers[edit]

In general a buffer memory may be used to absorb delays, or just delay variations (wander and/or jitter), generated by transmission over physical media, or by software elaboration, or other types of delays.

If the buffer is meant to absorb delay variations due to the transit along a transmission path (that is: designed to absorb wander and/or jitter),

then its size in bytes (or in bits) is smaller,

the control of the phase relation between the write and the read clocks is more accurate,

and its name specializes into “elastic buffer”.


An adder compares the content of the two counters, computing the difference between the two.

Its output gives an indication of the relative phase of the two clock signals, very similar to the output of a phase comparator of a PLL:

at the start-up of the system, the write counter is set to 0, and the reading counter is set to half the memory depth.
If the initial value of the read counter is set to less than half the memory depth, then less than the entire memory may be used and the transit delay through the elastic buffer may be less.

Phase aligners[edit]

A special case of elastic buffer is the "phase aligner"

The phase aligner is an elastic buffer used inside a single clock domain. The CDR that recovers the write clock is typically implemented as a 1st order PLL.
A more formal definition, without mention of the operation within a single clock domain, can be:
The phase aligner is a buffer memory that shifts the phase of the received signal so that it matches the phase of a reference clock.
in some application the phase aligner may be be defined as incorporating the CRD that recovers the write clock (wider definition), or not (stricter sense definition), as will be seen in the next page.
In some specialized cases it may be defined as accomplishing a CDR function itself in cascade to the CDR that recovers the write clock (de-jitterizer)