时间:2024-07-11 来源:网络收集 关于我们 0
同步FIFO:读写都是同一个时钟源;异步FIFO:读写不是同一个时钟源。
最常见的就是异步FIFO的问题,因为异步FIFO会存在如下几种情形:
1.写时钟快于读时钟,写和读的过程中没有空闲周期
答:假设写时钟频率为80MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中没有空闲周期,分析过程:写时钟周期Tw = 1000/80 ns = 12.5ns;同理读时钟周期为20ns;突发写长度为120个数据,写120个数据耗时120 * 12.5 = 1500ns;1500ns时间内读出数据1500/20ns = 75个;故最小FIFO深度为120 - 75 = 45。
2.写时钟频率大于读时钟频率,但在读写的过程中存在空闲周期
答:假设写时钟频率为80MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中有空闲周期,每2个写时钟周期写1个数据,每4个时钟周期读一个数据,那么写一个数据需要25ns,读一个数据需要80ns,那么由于突发写数据个数为120个,写这么多数据需要时间120 * 25ns = 3000ns;4个读时钟周期读一个数据,因此读一个数据需要时间80ns,3000ns读了3000/80 = 37.5个数据(0.5不算一个数据,没读完整),约等于37个数据。
所以,FIFO的最小深度为120 - 37 = 83。
3.写时钟慢于读时钟,且读写过程中没有空闲周期
答:假设写时钟频率为30MHz,读时钟频率为50MHz,突发传输大小为120,写和读的过程中没有空闲周期,分析:这种情况下永远也不会发生数据丢失的情况;fifo的深度为1。
4.写时钟频率小于读时钟频率,但读写过程中存在空闲周期
答:假设写时钟频...