专栏首页根究FPGAFIFO系列(一):FIFO深度计算

FIFO系列(一):FIFO深度计算

本系列分为以下部分:

1、FIFO深度计算

2、同步fifo设计

3、fifo与格雷码

计划分三次更新完毕,本次为FIFO深度计算

FIFO最小深度计算背景

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

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

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

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

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

FIFO读写同时进行

构造模型:

~~感谢阅读~~周末愉快

本文分享自微信公众号 - 根究FPGA(gh_08b5d93f8fa5),作者:叫什么好呢啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Vivado中RAM core与fifo core分析

    RAM主要用于存放程序以及程序执行过程中产生的中间数据、运算结果等。BMG Ipcore可以配置成RAM或者ROM,配置RAM或者ROM使用的资源都是FPGA内...

    根究FPGA
  • DDR3篇第四讲、DDR3操作时序与关键参数

    app_cmd和app_addr有效,且app_en拉高,app_rdy拉高,则该指令成功发送给DDR3控制器,若是在app_cmd、app_addr、app_...

    根究FPGA
  • cordic的FPGA实现(五)、除法实现

    根据之前的更新,大家可能已经看出,其实除法器的实现,仅仅改变旋转的参考系即可,除法所使用的参考系为:z,其matlab代码为:

    根究FPGA
  • FIFO解析攻略

    First Input First Output的缩写,先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。是一种先进先出...

    数字芯片社区
  • UNPv2第四章:管道和FIFO

    pipe()会建立管道,并将文件描述词由参数filedes数组返回 filedes[0]为管道里的读取端 ...

    提莫队长
  • 从 IP 开始,学习数字逻辑:FIFO 篇(上)

    使用 ip 对于数字逻辑方面的工作来说,是非常正常的,基础的 ip 之于数字逻辑设计,与与非门相比大概只是设计层次上的差别。更何况对于 SoC 公司来说...

    碎碎思
  • System Generator系列之建立异步通道

    上一篇将创建的设计模块分成了三个时钟层次的子系统,此时子系统之间的数据由于时钟未同步,导致数据在传播时,采样所得的数据会有错误,因此需要建立一个异步通道,使得各...

    狂人V
  • 基于OV5640的FPGA-DDR HDMI显示

    这部分主要是使用Vivado中MIG IP核的使用,网上有很多参考例程,这里就不过多描述了,主要说明及使用,详见文末附件。

    碎碎思
  • 从 IP 开始,学习数字逻辑:FIFO 篇(下)

    在使用各种手段测试我们的 FIFO ip 之前,我们首先得写一个 testbench。testbench 是什么,Vivado 会告诉你就是一个普通的 ...

    碎碎思
  • 五分钟后,你将真正理解MySQL事务隔离级别!

    事务是一组原子性的SQL操作,所有操作必须全部成功完成,如果其中有任何一个操作因为崩溃或其他原因无法执行,那么所有的操作都不会被执行。也就是说,事务内的操作,要...

    黄泽杰

扫码关注云+社区

领取腾讯云代金券