首页 > 解决方案 > 异步 FIFO 深度计算

问题描述

我需要计算填充异步 FIFO 需要多长时间。例如:假设模块'A'想要向模块'B'发送一些数据。模块A的频率为80MHz。B模块的频率为50MHz。突发长度为 120。读取和写入都没有空闲周期。FIFO 深度为 20。填充 FIFO 需要多长时间?

我知道FIFO的最小深度应该是45。'写入一个数据项所需的时间=1/80MHz=12.5ns 写入突发中所有数据所需的时间=120*12.5ns=1500ns。读取一个数据项所需的时间=1/50MHz=20ns。在 1500ns=1500/20=75 的时长内可以读取的数据项数 FIFO 中要存储的剩余字节数=120-75=45。但是如果 FIFO 的深度是 20。我如何计算填充 FIFO 的时间?

问题2:我阅读了一些材料。如果是连续写入,FIFO的深度应该是无限的。连续写入和突发写入有什么区别?为什么有限深度的 FIFO 足以让突发写入?

标签: fpgaasicsocdigital-design

解决方案


假设你在两边都在不断地阅读和写作。对于理论上的完美 FIFO,只需求解方程:

80000000*x-50000000*x=20
30000000*x=20
x=20/30000000
x=0.667µs

然而,现实世界的 FIFO 具有跨时钟域同步器,这从本质上将可用 FIFO 深度减少了几个条目。通常有 2~4 个条目不可用。您需要检查您的特定 FIFO 以准确了解由于时钟域交叉同步而丢失了多少时钟周期,从而丢失了 FIFO 深度。

在这种情况下,我不知道您所说的“爆发”是什么意思。


推荐阅读