如果数据流连续不断则FIFO深度无论多少,只要读写时钟不同源同频则都会丢数;
FIFO用于缓冲块数据流,一般用在写快读慢时,
FIFO深度 / (写入速率 - 读出速率) = FIFO被填满时间 应大于 数据包传送时间= 数据量 / 写入速率
例:A/D采样率50MHz,dsp读A/D读的速率40MHz,要不丢失地将10万个采样数据送入DSP,在A/D在和DSP之间至少加多大容量(深度)的FIFO才行?
100,000 / 50MHz = 1/ 500 s = 2ms
(50MHz - 40MHz) * 1/500 = 20k既是FIFO深度。
估计FIFO所需的最小深度,写端100M,100CLK中输入80个数据,读端80M
100clk 有80个数据,则考虑最坏情况,即back-to-back,最大的burst是2*80=160。然后160-160*80/100 = 32
其实,在实际情况中,还需要考虑由于异步FIFO的预留余度的问题。另外,80MHz读时钟域,是否有能力每个时钟都能读出数据。
还有这道题,写时钟是100MHZ,读时钟80MHZ,写时钟100clk写80个数据,这个80也是有深意的,如果超过80,这个FIFO就是物理不可实现的了。
文章评论(0条评论)
登录后参与讨论