FIFO最小深度计算

https://blog.csdn.net/qq_26652069/article/details/90720568?utm_medium=distribute.pc_relevant_right.none-task-blog-OPENSEARCH-4.nonecase&depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-OPENSEARCH-4.nonecase

https://blog.csdn.net/weixin_42905573/article/details/106394540

FIFO最小深度计算背景

当异步FIFO读写端口的throught-put(吞吐量)不同时,会遇到数据丢失的问题,需要考虑FIFO中的深度问题,即为满足读写流畅不卡顿(数据不丢失)时,FIFO的deepth的最小值。

FIFO主要是用于数据的缓存,用在读慢写快的场景下。异步FIFO读写不同频,选用的FIFO要能够在极端的情况下仍然能够保证数据的不溢出。因此,考虑的前提一般都是读慢写快的情景(写时钟大于读时钟),但需要注意的是,这里的写操作是突发传输,而不能使连续操作。倘若写快读慢的场景下,写数据流是连续的,那再大的FIFO都会有写满的时候,因此无法避免数据的溢出。

当写快读慢时,FIFO便可被用作系统中元件或队列。因此FIFO的大小其实也就暗示了所需缓存数据的容量,该容量取决于读写数据的速率。据统计,系统的数据速率取决于系统的负载能力。因此为了保证FIFO的大小,需要考虑FIFO传输的最坏情况。

所谓最坏情况,就是使得写速率最大,读速率最小;通常是考虑突发传输。

宏观看,整个时间域上,"写数据=读数据",这个是异步FIFO正常工作最基本的要求,是大前提。由于写快读慢,在发送方"突发传输"的发送数据的T内,是很有可能发送方发送数据量<接收方接收的数据量,那么剩下未读取的数据必定需要存储供接收方继续读取并不能丢弃,因此FIFO的深度要能够保证,在这段时间T内,如果发送方未能将接收方的数据发送完毕的话,剩下的数据都是可以存储在FIFO内部而且不会溢出的,那么在发送方停止发送数据的"空闲时隙"内,接收方可以从容地接收剩下来的数据。

FIFO读写同时进行

构造模型:

FIFO最小深度计算公式推导过程:

核心指导就是上面提到的条件:{FIFO深度/(写速率-读出速率)}>     {写入数据量/写入速率}

并且为满足在恶劣条件下工作,需要考虑写最快,读最慢时的情况:

            fifo_depth/[wda_width*(wr_clk-rd_clk*X/Y)] > Burst_len / wr_clk*rda_width

 一般情况下读写数据位宽一致,则有:

            fifo_depth/(wr_clk-rd_clk*X/Y) > Burst_len / wr_clk

整理得: fifo_depth > Burst_len / wr_clk(wr_clk-rd_clk*X/Y)

           即  fifo_depth > Burst_len -Burst_len* (rd_clk/ wr_clk)*X/Y
————————————————
 

计算例题:

3.FIFO实例
例:一个8bit宽的AFIFO,输入时钟为100Mhz,输出时钟为95Mhz,设一个package为4Kbit,且两个package之间的发送间距足够大。求AFIFO的深度。

答:足够大说明相邻的两次传输不会相互影响,只需要考虑一个package;

猝发长度计算:若burst_length =4000/8=500,厂商惯用算法为1Kbit=1024bit ,故burst_length = 4*1024/8=512;

计算模块 fifo_depth   =  burst_length – burst_length*(X/Y)*(r_clk/w_clk)

因为X和Y的值没有给出,所有默认为1。

可得depth1 =4000/8-(4000/8)*(95/100)=25。或depth =512-512*(95/100) =25.6,所以fifo_depth最小值为26
 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值