原文可以看FIFO Depth Calculation 这篇文章。
FIFO深度计算的关键在于:
在规定时间内传输的数据等于接收的数据,写快读慢的情况下,突发burst写入的数据减去该burst时间内读出的数据,多余的数据需要能缓冲下来,让接收端在剩下空闲的时间能从容地把多余的数据读出来。
下面看几道例题。
case1:
- fA > fB with no idle cycles in both write and read.
- Writing frequency = fA = 80MHz.
- Reading Frequency = fB = 50MHz.
- Burst Length = No. of data items to be transferred = 120.
- There are no idle cycles in both reading and writing which means that, all the items in the burst will be written and read in consecutive clock cycles.
计算方法(本题假设写数据和读数据位宽相同):
- 总传输数据为120
- 把所有数据全部写入FIFO需要时间为 120/80MHz=1500ns 120 / 80 M H z = 1500 n s
- 该时间段(1500ns)内可以从FIFO中读出的数据为 1500ns∗50MHz=75 1500 n s ∗ 50 M H z = 75
- 多余的数据为 120−75=45