Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
I am not getting a way to design an asynchronous FIFO with odd number depth. Can anybody please provide an example showing how for a particular odd number depth an asynchronous FIFO can be designed?Hi,
from your question I assume you know how a FIFO works.
When you know that it work for an even number....why do you think it does not work for an odd number?
Where exactly do you see a problem and need help for this?
Klaus
You probably can't figure it out as you likely don't have enough of an understanding on how a FIFO works. You should learn how a FIFO is implemented first. There are papers you can find on the subject.I am not getting a way to design an asynchronous FIFO with odd number depth. Can anybody please provide an example showing how for a particular odd number depth an asynchronous FIFO can be designed?
I have good understanding of it.You probably can't figure it out as you likely don't have enough of an understanding on how a FIFO works. You should learn how a FIFO is implemented first. There are papers you can find on the subject.
The only difference between a FIFO that doesn't use all of the RAM depth is the calculation for FULL, otherwise you will have issues with the gray coding of the address if you try reducing the address range.
The design is identical to a even count FIFO.I am not getting a way to design an asynchronous FIFO with odd number depth. Can anybody please provide an example showing how for a particular odd number depth an asynchronous FIFO can be designed?
Like I said in my previous post the only difference should be the Full calculation. The rest of the logic should stay identical to a 2**N RAM depth FIFO.Hi,
The design is identical to a even count FIFO.
Where do you see a difference? Please explain clearly.
Show your design with even number....then we can discuss how to make it odd number.
Klaus
What about the grey code? We cannot get a grey code sequence for an odd depth. That is producing diffi ulty in designing g an asynchronous FIFO with odd number depth.Like I said in my previous post the only difference should be the Full calculation. The rest of the logic should stay identical to a 2**N RAM depth FIFO.
Hmm, I already pointed out this issue in post #6. You don't really read the responses do you?What about the grey code? We cannot get a grey code sequence for an odd depth. That is producing diffi ulty in designing g an asynchronous FIFO with odd number depth.
I responded to post #10, because the OP apparently still thought that Gray coding is necessary for an asynchronous FIFO.Hmm, I already pointed out this issue in post #6. You don't really read the responses do you?
That is also why I mentioned that none of the logic changes between a 2**N depth FIFO and something less than a power of 2 FIFO. The pointers will cycle through all 2**N addresses and can therefore still be Gray code. Only the logic used to compute full needs to change as it will stop at some earlier address before it wraps around to the read pointer.
Ok, you mean that there are "real" read/write pointers wrapping from 4 to 0 for accessing the memory, and "virtual" Gray-coded 2**N read/write pointers to detect full/empty?can gray code this sequence of 5 depth as the addresses go through all 2**N addresses
write 0,1,2,3,4 (full)
read 0,1,2,3,4 (empty)
write 5,6,7,0,1 (full)
read 5,6,7,0,1 (empty)
only the calculations for the flags is more complex and doesn't have the issues with trying to transfer the pointer addresses.
I don't mean real pointers into the RAM that are 0 to 4 addresses accessing memory (that is what the OP is trying to find a Gray-coding solution for).Ok, you mean that there are "real" read/write pointers wrapping from 4 to 0 for accessing the memory, and "virtual" Gray-coded 2**N read/write pointers to detect full/empty?
Ok, so you literally meant "odd". I think "odd size FIFO" for most designers mean that the size isn't a power of 2.Thread was to design an asynchronous FIFO with odd number of depth. For example to design a FIFO of depth 33 where we do not want to design the asynchronous FIFO of depth 34 and use it for depth 33. We want to save area so that if my requirement was up to depth 33 , we shall design uptown depth 33 only and not at all uptown depth 34 as we want to save area and not to loose area for an extra 34th location. Hope it clarifies the question in the thread.
Target is not to design an asynchronous FIFO of depth 34 and then derive an asynchronous FIFO of depth 33 as it waste the area for the 34th location.