FIFO深度计算

文章详细讨论了FIFO在不同读写时钟频率、空闲周期和突发长度条件下的最小深度计算。当FIFO读写时钟不同时,会涉及数据堆积和读取延迟问题,需要确保FIFO深度足够存储未读数据。四种情况分别分析了FIFO在连续读写、读写有空闲周期、背靠背读写相同和不同时钟频率下的最小深度需求。
摘要由CSDN通过智能技术生成

1、FIFO连续读写
f1>f2;写时钟f1=100MHz,读时钟f2=50MHz
突发长度为50;
写一个数据的时间为1/100M=10ns;
写完一个突发长度所需的时间为50*10=500ns;
读一个数据的时间为1/50M=20ns;
在500ns;总共有50个数据被写入FIFO中,但是读取一个时间需要20ns,在500ns,总共读出500/20=25个数据。剩下的数据没有读出50-25=25;所以所需FIFO最小深度为25个。

f1<f2,这种情况FIFO不会被写满。最小深度可置为1。

2、FIFO读写有空闲周期
f1>f2;写时钟f1=100MHz,读时钟f2=50MHz
突发长度为50;
两个连续写入之间的空闲周期为2;两个连续读之间空闲周期为3。
写入1个数据就需要等待2个时钟周期,所以写入一个数据需要3个时钟周期。
读出1个数据后需要等待3个时钟周期,所以读出一个数据需要4个时钟周期。
所以写入1个数据需要的时间为310=30ns。
写完一个突发所需要的时间为30
50=1500ns。
读出1个数据的时间为4*20=80ns。
每1500ns就有50个数据被写入,而1500内能读出1500/80=18.75个数据;所以FIFO最小深度为50-18.75=32个。

3、背靠背,读写时钟相同
100个时钟写入50个数据,10个时钟读出8个数据。
突发长度为100。
这里考虑最坏的情况,就是在100时钟周期内,前面50个周期不写,然后后50个周期开始写入数据,再接着又立马写入50个。这就是背靠背写入数据。这是写入100个数据所需的周期就是50+50=100。
而在这100时钟周期内读出100*8/10=80。
则FIFO最小深度为100-80=20。

4、背靠背、读写时钟不相同
写时钟f1=100MHz,读时钟f2=50MHz
100个时钟写入50个数据,10个时钟读出8个数据。
背靠背:502=100。
写一个数据需要的时间1/100MHz=10ns。
写完需要100
10=100ns。
读一个数据需要的时间1.25*(1/50M)=25。
每1000ns就有100个数据被写入FIFO,读出一个数据25ns,1000ns读出1000/25=40。
所以FIFO最小深度为100-40=60。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值