Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Difference b/w asynchronous Vs synchronous FIFO

Status
Not open for further replies.

rac70

Newbie level 6
Joined
Jan 7, 2015
Messages
13
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
114
Can you tell me, what is the main difference between synchronous and asynchronous fifo as per the design!! Does usage of gray counter alone in design makes all the sense for asynchronous design? I am having this doubt can anyone clarify...
 

A synchronous fifo would use the same clocks for read and write
asynchronous uses different clocks.

Grey coding of the address can be a good idea in asynchronous fifos as it minimises problems crossing the clock domains - but it can be done safely without grey coding.
 
  • Like
Reactions: rac70

    rac70

    Points: 2
    Helpful Answer Positive Rating
Thank you for the info.
Actually i had generated my read address and write address then
i am using the conditions of MSB's to check whether it is empty or full for synchronous fifo. When i wanted to use the same logic for asynchronous fifo adding delays for write address and read address will be sufficient without going for grey coding?? Can you suggest..
 

1. Why are you building a FIFO at all? Altera and Xilinx provide FIFO ip for free already.
2. Why are you only checking the MSBs? you need to check the whole address. What happens when only 1 element is written to the FIFO?
3. You might get away with it - but grey coding will minimise the bit transition and hence any possible errors.
 
  • Like
Reactions: rac70

    rac70

    Points: 2
    Helpful Answer Positive Rating
yes i am building it in simulink,
Even i am checking the whole address like the conditions are (read_addr[8:0] == write_addr[8:0]) empty is enabled.
and ((read_addr[7:0]==write_addr[7:0])&&(read_addr[8]^write_addr[8])) then pop is enabling. Here for 8 bit data i am adding an extra bit for checking the overflow condition it is working fine for synchronous. But implementing for asynchronous what i can do?? like adding a grey counter inplace of binary counter (or) adding delay for read_add and write_addr , can you suggest me the best way of doing? Even tell me whether my assumption is correct or not
 

Simulink doesnt really handle multiple clock domains, let alone the CDC part of it. You're probably much better off black boxing the CDC fifo and have it instantiate some vendor IP for you.
And Im pretty sure Simulink provides a FIFO block already..
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top