简单粗暴公式:
写时钟频率 w_clk,
读时钟频率 r_clk,
写时钟周期里,每B个时钟周期会有A个数据写入FIFO
读时钟周期里,每Y个时钟周期会有X个数据读出FIFO
则,FIFO的最小深度是?
计算公式如下:
fifo_depth = burst_length - burst_length * X/Y * r_clk/w_clk
- 写时钟快于读时钟,写和读的过程中没有空闲周期,也即在突发(burst)过程中,读和写都在各自的时钟域内连续进行。

写时钟周期T_A = 1000/80 ns = 12.5ns;同理读时钟周期为20ns;
突发写长度为120个数据,写120个数据耗时120*12.5 = 1500ns;
1500ns时间内读出数据1500/20ns = 75个;
故最小FIFO深度为120 - 75 = 45; - 写时钟频率大于读时钟频率,但是读写的过程中存在空闲周期

写时钟周期T_A=12.5ns,读时钟周期T_B= 20ns
两个写时钟写一个数据,也就是写一个数据需要时间2T_A=25ns,那么由于突发写数据为120个,写这么多数据需要时间12025ns=3000ns;
4个读时钟周期读一个数据,因此读一个数据需要时间80ns,3000ns读了3000/80=37.5个数据,约等于37个数据;
所以FIFO的最小深度为120-37=83; - 写时钟慢于读时钟,且读写过程没有空闲周期

本文解析了不同场景下FIFO最小深度的计算公式及实例,包括写时钟快于读时钟、存在空闲周期等复杂情况,适用于数字电路设计与信号处理领域的读者。
最低0.47元/天 解锁文章
2180

被折叠的 条评论
为什么被折叠?



