【问题标题】:Asynchronous FIFO depth calculation异步 FIFO 深度计算
【发布时间】:2021-04-17 18:13:21
【问题描述】:

我需要计算填充异步 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 足以让突发写入?

【问题讨论】:

    标签: fpga asic soc digital-design


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢辅导。我对方程式很困惑。例如,80000000*x-50000000*x=45。 30000000*=45。 x=45/30000000。 x=1.5us。该等式意味着填充 FIFO 需要 1.5us。结果与预期相冲突,即 45 深度 FIFO 不会被填满。
    • 45 项 FIFO 将在 1.5us 后满。 (其实早一点,考虑到 CDC 同步器)
    猜你喜欢
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    相关资源
    最近更新 更多