首页 > 其他分享 >FIFO最小深度计算

FIFO最小深度计算

时间:2024-07-23 13:00:28浏览次数:15  
标签:周期 写入 最小 FIFO 120 深度 数据 时钟

1、 读写没有空闲周期。(fA>fB)


        例如,fA = 80MHz;fB = 50MHz;Burst Length = 120;读写之间没有空闲周期,连续读写一个突发长度。
解法:
        写一个数据需要的时间 = 1 / 80MHz = 12.5ns;

        写一个突发需要的时间 = 120 * 12.5ns = 1500ns;

        读一个数据需要的时间 = 1 / 50MHz = 20ns;
        每 1500ns, 120 个数据被写入 FIFO,但读一个数据需要 20ns 的时间,则 1500ns 内读出1500 / 20 = 75个数据,剩下的 120 - 75 = 45没有读出,就存在 FIFO 中。


快捷方法: FIFO 深度 =120 - 120*50/80 = 45。
补充:读写没有空闲,若 fA<=fB,则 FIFO 不会写满,深度为 1 即可。

2、读写都有空闲周期。(读写速率大小随意,可以相等)


        例如,fA = 80MHz;fB = 50MHz;Burst Length = 120;两个连续写入之间的空闲周期为 = 1(写使能占得百分比为 50%);两个连续读取之间的空闲周期为 = 3(读使能占得百分比为 25%)
解法:
        每写入一个数据等待 1 个周期再写入下个数据,即 2 周期写入 1 个数据。
        每读出一个数据等待 3 个周期再读出下个数据,即 4 周期读出 1 个数据。
        写一个数据需要的时间 = 2 * (1 / 80MHz) = 25ns
        写一个突发需要的时间 = 120 * 25ns = 3000ns
        读一个数据需要的时间 = 4 * (1 / 50MHz) = 80ns
        每 3000ns, 120 个数据被写入 FIFO,但读一个数据需要 80ns 的时间,则 3000ns 内读出3000 / 80 = 37.5个数据,, FIFO 深度=120-37.5=83。
快捷方法: FIFO 深度 = 120 - 120*(50/4)/(80/2)=82.5=83。

3、考虑背靠背,读写速率相等。


        例如,读写速率相等,每 100 个时钟写入 80 个数据;每 10 个时钟读取 8 个数据
突发长度为 160 (这个条件其实多余)
解法:
        每 100 个时钟写入 80 个数据,那剩下 20 个时钟周期去哪了?
        每 10 个时钟读取 8 个数据,那剩下 2 个时钟周期去哪了?
        剩下的周期在哪我们不管,只考虑最差的情况,即前 20 个时钟周期空闲,后80 个周期写完 80 个数据,立马又是写请求,这次是前 80 个时钟周期写完 80 个数据,后 20 个时钟周期空闲。即两次连续的突发写入,又称为背靠背。
        写一个突发需要的时间: 160 时钟周期,则 160 个时钟周期内读出160*8/10=128个数据。
        FIFO 深度 = 160 - 128 = 32。

4、 考虑背靠背,读写速率不等。


        例如,fA = 20MHz,fB = 40MHz,每 1000 个时钟周期写入 500 个数据,每 4 个时钟周期读出 1 个数据。
解法:
        考虑到“背靠背”的情况突发长度则为 500 * 2 = 1000,则为每 1000 个时钟周期写入 1000 个数据;
        写一个数据需要的时间 = 1 / 20MHz = 50ns;
        写一个突发需要的时间 = 1000 * 50ns = 50000ns;

        每 4 个周期,读取一个数据。读一个数据需要的时间 = 4 * (1 / 40MHz) = 100ns;
        每 50000ns, 1000个数据被写入 FIFO,但读一个数据需要 100ns 的时间,可以计算出, 50000ns 内读出50000 /100 = 500个数据;
        剩下的没有读出,就存在 FIFO 中,则需要FIFO深度为 1000- 500 = 500。

标签:周期,写入,最小,FIFO,120,深度,数据,时钟
From: https://blog.csdn.net/qq_45803095/article/details/140526755

相关文章

  • 数据做无损定点化,需要的最小位宽是多少位?
    以一道经典笔试题为例:对12.918做无损定点化,需要的最小位宽是多少位,位宽选择11位时的量化误差是多少?        首先,明确一个知识点:无损量化,即量化误差小于量化精度的一半。    因此,对于整数,12需要的4位(0~15)二进制。    12bit量化的情况:整数占4bit,小......
  • 图论-深度优先搜索
    引入DFS全称是DepthFirstSearch,中文名是深度优先搜索,是一种用于遍历或搜索树或图的算法。所谓深度优先,就是说每次都尝试向更深的节点走。该算法讲解时常常与BFS并列,但两者除了都能遍历图的连通块以外,用途完全不同,很少有能混用两种算法的情况。DFS常常用来指代用递归函数......
  • 最小表示法
    最小表示法字符串\(S\)的最小表示为与\(S\)循环同构的所有字符串中字典序最小的字符串。一般用于判断两个字符串是否循环同构。只需要都用最小表示,然后判断即可。考虑如何构造。这里oiwiki解释的很清楚。就不做过多解释了。复杂度\(O(n)\)inti=1,j=2,k;while(i<......
  • 《0基础》学习Python——第二十四讲__爬虫/<7>深度爬取
    一、深度爬取        深度爬取是指在网络爬虫中,获取网页上的所有链接并递归地访问这些链接,以获取更深层次的页面数据。        通常,一个简单的爬虫只会获取到初始页面上的链接,并不会进一步访问这些链接上的其他页面。而深度爬取则会不断地获取链接,并继续访问......
  • 定制化智能:Mojo模型与自定义损失函数的深度融合
    定制化智能:Mojo模型与自定义损失函数的深度融合在机器学习领域,损失函数是衡量模型预测值与实际值差异的关键指标,它直接影响到模型训练的效果和最终性能。Mojo模型,作为一种高效的模型部署方式,其对自定义损失函数的支持是实现高级机器学习应用的重要特性。本文将详细探讨Mojo......
  • 深度学习——线性神经网络
    线性回归1.什么是线性回归以下是百度百科的参考线性回归就是去分析一堆自变量X与因变量Y的线性关系,是一种定量的计算线性回归的应用:比如想要预测房价与面积与房龄的关系,就可以表示为面积与房屋年龄分别与对应的元素相求和房价=W1*房屋面积+W2*房屋年龄+W3*房屋厕所数量+......
  • 深度学习——批量归一化处理
    1.为什么要进行归一化处理1.对于我们输入而言,标准化输入是一项重要的步骤,例如预测房间时,我们让特征值方差为1,均值为0,可以使我们的参数量级做到统一2.对于典型的多层感知机而言,有些层输出的范围可能与输入的范围存在过大的区别,导致我们的模型收敛速度过慢3.越深的模型,越容易......
  • 使用 Open3D 点云到 RGB 图像转换中的颜色不匹配和深度不一致
    我正在使用Open3D将点云数据转换为RGB图像。但是,我遇到了输出图像中的颜色与输入点云中的颜色不匹配的问题。此外,本应位于背景的点却出现在前景中。这是我的代码的相关部分:importnumpyasnpimportcv2classProjector:def__init__(self,cloud)->None:......
  • 深度学习笔记
    相关学习资料https://tangshusen.me/Dive-into-DL-PyTorch/#/http://zh.d2l.ai/https://discuss.gluon.ai/c/lecture?order=views初始环境配置#下载安装脚本:https://conda.io/en/latest/miniconda.html#安装miniconda#macosshMiniconda3-py39_4.12.0-MacOSX-x86_......
  • 动手学深度学习(线性神经网络)
    看这一节前最好先移动至--动手学深度学习(预备知识),把基础知识打牢,使后续理解代码和原理更加容易因为这里是第三章的内容了,所以笔者的目录就从3开始咯。目录3.线性神经网络3.1线性回归3.11线性回归的基本元素3.12损失函数3.13解析解3.14随机梯度下降3.15矢量化加速3......