核心思路:在规定时间内读的数据要等于写的数据,写快读慢的情况下,突发burst写入的数据减去该burst时间内读出的数据,多余的数据需要能缓冲下来,让接收端在剩下空闲的时间能把多余的数据读出来。burst length=写的数据=读的数据+FIFO深度
计算方法:先得到突发长度burst length,即一段数据包的数据个数,再计算写数据的用时time,再计算time内读了n个数据,最后深度=burst length-n
主要变量是读写时钟频率,读写使能频率。
基本方法与例题
例1. fA > fB 读写之间没有空闲周期
写速率fA = 80MHz
读速率fB = 50MHz
突发长度Burst Length = 120
(读写之间没有空闲周期,意味着连续读写,即读/写使能周期=时钟周期)
Sol:
写一个数据需要的时间 = 1 / 80MHz = 12.5ns
写一个burst length需要的时间time = 120 * 12.5ns = 1500ns
读一个数据需要的时间 = 1 / 50MHz = 20ns
time内读出多少个数据,1500 / 20 = 75
剩下的没有读出,就存在FIFO中,则需要120 - 75 = 45
所以这种情况下,需要的FIFO最小深度为45
例2. fA > fB 在两个连续读写之间有一个周期的延迟(读/写使能