0
\$\begingroup\$

I know that circular buffer and FIFO are similar but do not understand the difference that causes different terms to be used. How do these two compare with a shift register?

How do I know if I need to use a circular buffer or FIFO?

\$\endgroup\$

2 Answers 2

5
\$\begingroup\$

A FIFO is the behavioural description of a particular storage mechanism, first in, first out, or queue.

A circular buffer is one way of implementing a FIFO, a shift register is another implementation.

Another storage behaviour is the LIFO, last in, first out, or stack.

\$\endgroup\$
0
\$\begingroup\$

A circular buffer often uses RAM with cycling address to indicate start and end pointers with flow control to prevent overlap or buffer overflow/underflow exceeding the buffer size, or going beyond empty.

A FIFO is a linear buffer, managed by status on empty, full with almost empty/full for faster flow control on high speed data. Addressing is not needed as input and output is sequential First In/out but managed by buffer states of empty/full.

Similar methods were once used for Inventory Control, now leaning towards LIFO methods

A shift Register is a linear memory with various configurations for Parallel and Serial ports like PISO, SISO, SIPO. Again no addressing needed but a counter is required for number of parallel bits .

\$\endgroup\$
2
  • \$\begingroup\$ that means one can read the address pointers of a circular buffer? I thought there also we have full/empty signal and need to look at actual address \$\endgroup\$
    – quantum231
    Dec 4, 2016 at 1:32
  • \$\begingroup\$ there may be many different methods in queue theory for different needs. A circulât keyboard buffer may be like a FIFO but only have full respond as Busy with an added user interface Beep. An video buffer may be adaptive in size with presets for single, double or triple buffering on video frames, an audio buffer may be different again, giving more circular buffers more flexibility and complexity, such as using virtual memory with multiple integer sized mapped buffers. Options to skip buffers if lagging video or visa versa might be integrated. \$\endgroup\$ Dec 4, 2016 at 2:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.