FPGA基础——异步FIFO的深度计算

一、理论基础与核心原则

  1. 异步FIFO的作用
    异步FIFO用于解决跨时钟域的数据传输问题,尤其当写速率 > 读速率时,需通过缓存机制应对速率差带来的瞬时数据堆积

    • 关键目标:确保在最大突发写入情况下,数据不溢出(FIFO未满)且不丢失(FIFO未空)。
  2. 最坏情况假设
    计算深度需基于背靠背(Burst)写入的最恶劣场景,即连续两次突发写入之间无空闲周期,此时数据堆积量最大

  3. 同步与资源优化
    异步FIFO深度通常选择2的幂次方,以便利用格雷码(Gray Code)编码读写指针,减少跨时钟域同步时的亚稳态风险

二、深度计算公式及推导

1. 基本公式

当写速率 > 读速率时,最小深度计算公式为:

  • Bburst:单次突发写入的数据量;
  • fr、fw:写时钟和读时钟频率

 

2. 扩展公式(含空闲周期)

若写入或读取存在空闲周期,需调整有效速率:

  • X/Y:读操作的有效速率(例如每Y个周期读取X个数据)

3. 背靠背写入场景

两次突发写入总长度为 2Bburst,此时公式修正为:

 

三、实例分析

案例1:AD采样与FPGA接口

  • 条件:AD采样率 fw=50 MHz,FPGA读取速率 fr=40 MHz,需传输5万个数据。
  • 计算:

  • 实际深度:选择 2^14=16384

案例2:背靠背写入与空闲周期

  • 条件:写时钟 fw=200 MHz(每100周期写40数据),读时钟 fr=100 MHz(每10周期读8数据)。
  • 突发长度:两次突发写入共80数据(40+40)。
  • 计算:

  • 实际深度:选择64(2^6)

posted on 2025-03-02 17:21  一曲挽歌  阅读(517)  评论(0)    收藏  举报

导航