设计 FIFO 的深度

假设 FIFO 的写时钟为 100MHZ,读时钟为 80MHZ。在 FIFO 输入侧,每 100 个时钟,写入
80 个数据;FIFO 读入测,每个时钟读取一个数据。设计合理的 FIFO 深度,使 FIFO 不会溢
出。
我们需要考虑数据轻载和重载的情况, 对缓存能力要求最高的情况为背靠背传输,则 FIFO
深度为 160-(160/100)*80=32
我们将问题一般化:
1) 写时钟频率 WCLK
2) 读时钟频率 RCLK
3) 写入测每 B 个时钟周期有 A 个数据写入
4) 读取测每 Y 个时钟周期有 X 个数据读出
则 FIFO 的深度为,

其中 burst_length 与写入测情况有关。

 如果100个写时钟周期可以写入80个数据,10个读时钟可以读出8个数据。令wclk=rclk ,考虑背靠背(20个clk不发数据+80clk发数据+80clk发数据+20个clk不发数据的200个clk)代入公式可计算FIFO的深度
fifo_depth = 160-160X(80%)=160-128=32

    如果令wclk=200mhz,改为100个wclk里写入40个,rclk=100mhz,10个rclk里读出8个。那么fifo深度为48
计算如下fifo_depth =80-80X(80%)X(100/200)=80-32=48

你可能感兴趣的:(FPGA,verilog)