cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Adventurer
Adventurer
7,986 Views
Registered: ‎11-23-2017

What is Elastic buffer?

Jump to solution

Hi,

 

Could anyone please explain what an Elastic buffer is? I frequently see this term in the documents of Ethernet cores.

 

Thanks in advance.

 

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Scholar
Scholar
9,354 Views
Registered: ‎02-01-2013

An elastic buffer is a device that helps smooth the data transfer between two similar, but unsynchronized clock domains.  Ethernet nodes are not synchronous; they run off their own local oscillators--using "similar" reference frequencies.  With slightly-off reference frequencies, their operating clocks can be slightly different from each other, too--perhaps a hundred PPM (or more) off.  Over the course of time, the clock difference can accumulate and lead to a bit slip.  The elastic buffer helps to keep such events tolerable. 

 

See: https://en.wikibooks.org/wiki/Clock_and_Data_Recovery/Buffer_Memory_(Elastic_Buffer)/Cascades_of_Buffers_and_CDRs,_delays_and_tolerance

 

-Joe G.

 

View solution in original post

3 Replies
Highlighted
Scholar
Scholar
9,355 Views
Registered: ‎02-01-2013

An elastic buffer is a device that helps smooth the data transfer between two similar, but unsynchronized clock domains.  Ethernet nodes are not synchronous; they run off their own local oscillators--using "similar" reference frequencies.  With slightly-off reference frequencies, their operating clocks can be slightly different from each other, too--perhaps a hundred PPM (or more) off.  Over the course of time, the clock difference can accumulate and lead to a bit slip.  The elastic buffer helps to keep such events tolerable. 

 

See: https://en.wikibooks.org/wiki/Clock_and_Data_Recovery/Buffer_Memory_(Elastic_Buffer)/Cascades_of_Buffers_and_CDRs,_delays_and_tolerance

 

-Joe G.

 

View solution in original post

Highlighted
Adventurer
Adventurer
7,941 Views
Registered: ‎11-23-2017

Thanks Joe,

 

Can we simply say that an elastic buffer is a FIFO with two different clock domains? 

0 Kudos
Highlighted
Explorer
Explorer
7,918 Views
Registered: ‎03-31-2016

It is not exactly a traditional FIFO between two clock domains.  With a normal CDC FIFO the faster side can only operate some fraction of time based on the different clock rates.  An elastic buffer is always accepting and outputting data.

 

Protocols that use an Elastic buffer have some symbol, aka data value, usually called a Skip that can be dropped or inserted into the data stream on either end without impacting the logical value of the data stream.  Some protocols have a dedicated Skip and some use just the IDLE.  When the Elastic buffer gets close to empty, due the read side being faster, a Skip is inserted on the output side without actually reading at the next time the protocol allows it.  When the buffer gets close to full the next Skip is not actually inserted into the buffer.

 

The buffer itself has to be configured so that it knows what a Skip looks like.  The protocol has to specify a minimum rate at which Skips have to appear in the datastream and an allowed difference in clocks to determine the minimum size of the buffer.

 

Basically it is a CDC FIFO with an extra layer of logic that can either add or delete entries without impacting the logically datastream and it is always reading and writing.