Skip to content

Rithikiitb/Asynchronous_fifo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Design of Dual Clock Asynchronous FIFO

This project shows the design of Synchronous FIFO and Asynchronous FIFO afifo-internals

Asynchronous FIFO

An Asynchronous FIFO (First-In-First-Out) is a type of digital circuit that facilitates data storage and transfer between two asynchronous clock domains. It is commonly used in digital systems where data needs to be transferred between different clock domains or between systems with different timing characteristics. The theory behind an asynchronous FIFO involves managing data transfer, addressing potential timing differences, and ensuring data integrity. Here are the key concepts:

FIFO Structure

An asynchronous FIFO consists of two major components the write port and the read port. The write port receives data from the source clock domain and stores it in memory, while the read port retrieves data from memory and transfers it to the destination clock domain.

Read and Write Pointers

The FIFO includes read and write pointers that keep track of the current position in memory. The write pointer indicates the location where new data is stored, while the read pointer indicates the next data to be read.

Data Transfer

When data is written to the FIFO, it is stored in a specific memory location determined by the write pointer. Simultaneously, the write pointer is incremented to point to the next available memory location. Similarly, when data is read from the FIFO, the read pointer identifies the data to be read, and the read pointer is incremented accordingly.

Timing Considerations

Asynchronous FIFOs account for the potential timing differences between the source and destination clock domains. This is achieved through techniques such as handshaking protocols, synchronization elements (e.g., flip-flops), and control logic. These mechanisms ensure that data is transferred reliably and without loss, even when the clocks are operating independently.

Status Indicators

Asynchronous FIFOs often provide status indicators such as full and empty flags. These flags indicate whether the FIFO is full (no more data can be written) or empty (no data is available for reading).

Synchronization and Metastability

Asynchronous FIFOs employ synchronization elements to address metastability issues that can occur when data crosses clock domains. These elements help ensure that the data is properly captured and sampled, reducing the risk of unpredictable behavior. Overall, the theory behind an asynchronous FIFO revolves around managing data transfer between different clock domains while considering timing differences, ensuring data integrity, and providing status indications for proper operation. The actual implementation of an asynchronous FIFO involves designing the circuitry and control logic based on these principles.

Screenshot from 2023-08-08 00-06-04

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published