FIFO -- 深度计算

27 篇文章 19 订阅

FIFO深度的计算公式

参考 https://www.cnblogs.com/dxs959229640/p/8144656.html

求FIFO的最小深度主要有以下要点:

  • 在求解之前需要验证一下在允许的最大时间长度内写入的数据量是否等于读出的数据量,保证有解;
  • 求FIFO深度需要考虑最坏的情形,读写的速率应该相差最大,也就是说需要找出最大的写速率和最小的读速率;
  • 不管什么场景,要确定FIFO的深度,关键在于计算出在突发读写这段时间内有多少个数据没有被读走;
  • 由于FIFO空满标志位的判断延迟,在实际应用中需要预留一些余量。
    下面我们来推导一下FIFO深度的求解公式,假设:

  • 写时钟频率为fwr
  • 读时钟频率为frd
  • 在写时钟周期内,每m个周期内就有n个数据写入FIFO
  • 在读时钟周期内,每x个周期内可以有y个数据读出FIFO

那么:

  • 首先必须满足\((1/fwr)*(m/n) ≥ (1/frd)*(x/y)\)
  • ”背靠背“的情形下是FIFO读写的最坏情形,burst长度 \(B = 2*n\)
  • 写完burst长度数据最快所需时间 \(T = (1/fwr) * B\)
  • 从FIFO中读出一个数据至少需要时间 \(t= (1/frd) * (x/y)\)
  • 在T时间内能够读走的数据个数 = \(T/t = B * (frd/fwr) * (y/x)\)
  • 在T时间内还没有读走的数据个数 = \(B - B * (frd/fwr) * (y/x)\)
  • 因此FIFO的最小深度为 \(\color{red}{B - B * (frd/fwr) * (y/x)}\)
  • 注意保留一些余量

假设:

写数据时钟频率fa=80MHz
读数据时钟频率fb=50MHz
在写时钟周期内,每100个周期就有40个数据写入FIFO
在读时钟周期内,每10个周期可以有8个数据读出FIFO

那么:
首先这里没有给出数据的突发长度,从假设中可以得出每100个周期就有40个数据写入FIFO,这里可能就有人会说突发长度就是40个数据,其实不是这样的,因为数据是随机写入FIFO的,我们需要考虑做坏的情形,即写速率最大的情形,只有如下图背靠背的情形才是写速率最高的情形,burst length为80

651372-20180101113152581-1250627173.png

用公式计算最小深度为: \(80-80*50/80*(8/10)=40\)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

love小酒窝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值