0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何简单快速地计算FIFO的最小深度

C29F_xilinx_inc ? 来源:赛灵思 ? 作者:赛灵思 ? 2022-02-26 17:41 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、为什么需要计算FIFO的最小深度

因为笔试常考。

开玩笑的。首先我们来想下FIFO有哪些作用?我大概总结下FIFO的几个重要作用:

解决不同时钟域传输的问题

用来缓存一定量的数据

解决位宽不匹配的问题

FIFO最常被用来解决写、读不匹配的问题(时钟、位宽),总结下来,其实FIFO最大的作用就是缓冲。既然是缓冲,那么就要知道这个缓存的空间到底需要多大。接下来的讨论,都建立在满足一次FIFO突发传输的基础上。连续无止境的突发不考虑。比如写时钟100M,读时钟50M,无限制的读写,那么FIFO的深度只能是无穷大了,因为写比读快,FIFO一定永远都不够用。所以在实际运用中,不会存在无限制的对FIFO进行读写。如果这样的话,FIFO就变成了一个“存储器件”,而不是一个“缓存器件”,对于FIFO的这种用法无疑是毫无意义的。

2、实例

2.1、写时钟快、读时钟慢

2.1.1、无间断的写、读操作

条件:

写入时钟频率 fA = 80MHz;读取时钟频率 fB = 50MHz. 一次写入的突发长度120

读写操作不间断

解法:

写入一个数据需要的时间:1/80MHz = 12.5ns;读取一个数据需要的时间:1/50MHz = 20ns

写入120个数据,需要的时间:120 * 12.5ns = 1500ns

在写入全部数据所需的时间(1500ns)内,可以读取出的数据数:1500ns / 20ns = 75

所以一次突发,一共需要写入120数据,在这段时间内可以被读出75数据,剩下的数据就是需要使用FIFO来缓存,所以FIFO的最小深度为120 - 75 = 45

2.1.2、间断的写、读操作

条件:

写入时钟频率 fA = 80MHz;读取时钟频率 fB = 50MHz. 一次写入的突发长度120。

每两次写入操作间隔1个写时钟周期,每两次读取操作间隔3个读时钟周期。

解法:

每两次写入操作间隔1个写时钟周期,等于每两个写时钟周期才写入1个数据,即等价的写入时钟频率 fA'=40MHz,写入一个数据需要的时间:1/40MHz = 25ns

每两次读取操作间隔3个读时钟周期,等于每4个写时钟周期才读取1个数据,即等价的读取时钟频率 fB'=12.5MHz,读取一个数据需要的时间:1/12.5MHz = 80ns

写入120个数据,需要的时间:120 * 25ns = 3000ns

在写入全部数据所需的时间(3000ns)内,可以读取出的数据数:3000ns / 80ns = 37.5 ≈ 37(要向下取整,不然有1个数据会丢)

所以一次突发,一共需要写入120数据,在这段时间内可以被读出37数据,剩下的数据就是需要使用FIFO来缓存,所以FIFO的最小深度为120 - 37 = 83

2.2、写时钟慢、读时钟快

2.2.1、无间断的写、读操作

条件:

写入时钟频率 fA = 30MHz;读取时钟频率 fB = 50MHz. 一次写入的突发长度120

写、读操作无间断

解法:

因为读操作的频率快于写操作的频率,所以数据一旦被写入FIFO后很快就会被读走,所以FIFO的最小深度为1即可

2.2.2、间断的写、读操作

条件:

写入时钟频率 fA = 30MHz;读取时钟频率 fB = 50MHz. 一次写入的突发长度120。

每两次写入操作间隔1个写时钟周期,每两次读取操作间隔3个读时钟周期。

解法:

每两次写入操作间隔1个写时钟周期,等于每两个写时钟周期才写入1个数据,即等价的写入时钟频率 fA'=15MHz,写入一个数据需要的时间:1/15MHz = 66.667ns

每两次读取操作间隔3个读时钟周期,等于每4个写时钟周期才读取1个数据,即等价的读取时钟频率 fB'=12.5MHz,读取一个数据需要的时间:1/12.5MHz = 80ns

写入120个数据,需要的时间:120 * 66.667ns = 8000ns

在写入全部数据所需的时间(8000ns)内,可以读取出的数据数:8000ns / 80ns = 100

所以一次突发,一共需要写入120数据,在这段时间内可以被读出100数据,剩下的数据就是需要使用FIFO来缓存,所以FIFO的最小深度为120 - 100 = 20

2.3、写时钟、读时钟一样快

2.3.1、无间断的写、读操作

条件:

写入时钟频率 fA = 读取时钟频率 fB = 30MHz。一次写入的突发长度120。

写、读操作无间断

解法:

1、假设读、写时钟无位差、则两个时钟同频、同相,是同步信号,故可以直接对接操作,无需FIFO

2、若读、写时钟存在相位差,则被写入的数据在一个时钟周期内会被读走,所以FIFO的最小深度为1即可

2.3.2、间断的写、读操作

条件:

写入时钟频率 fA = 读取时钟频率 fB = 50MHz。一次写入的突发长度120。

每两次写入操作间隔1个时钟周期,每两次读取操作间隔3个时钟周期。

解法:

每两次写入操作间隔1个写时钟周期,等于每两个写时钟周期才写入1个数据,即等价的写入时钟频率 fA'=25MHz,写入一个数据需要的时间:1/25MHz = 40ns

每两次读取操作间隔3个读时钟周期,等于每4个写时钟周期才读取1个数据,即等价的读取时钟频率 fB'=12.5MHz,读取一个数据需要的时间:1/12.5MHz = 80ns

写入120个数据,需要的时间:120 * 40ns = 4800ns

在写入全部数据所需的时间(4800ns)内,可以读取出的数据数:4800ns / 80ns = 60

所以一次突发,一共需要写入120数据,在这段时间内可以被读出60数据,剩下的数据就是需要使用FIFO来缓存,所以FIFO的最小深度为120 - 60 = 60

2.4、特定时间内时间写、读速率固定

条件:

每100个时钟写入80个数据,剩余20个随机值(无效)

每10个时钟读出8个数据

一次写入的突发长度160

解法:

因为每100个时钟内,仅写入80个数据,而这80个数据可能任意分布,所以160个数据的写入可能有以下几种情况:

如何简单快速地计算FIFO的最小深度

可以看到,第4种情况是最极端的:一次性需要写入160数据,时间为160个时钟

160个时钟内,读出的数据是160*8/10 = 128

所以一共需要写入160数据,在这段时间内可以被读出128数据,剩下的数据就是需要使用FIFO来缓存,所以FIFO的最小深度为160 - 128 = 32

3、总结

FIFO是用来缓存的,不是用来存数据的,当写快读慢时,无止境的对FIFO操作是没有意义的(不管FIFO多大,一定都会被写满)

FIFO深度的计算建立在满足一次突发传输的基础上

当读快写满或者读写一样快时,FIFO的深度最多只需要1

当写快读慢时,在一次突发传输时,因为读慢,所以肯定无法全部读走。全部写入的数据量 - 已经被读走的数据量 = 需要缓存到FIFO的数据量,即异步FIFO的最小深度

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4542

    浏览量

    87605
  • fifo
    +关注

    关注

    3

    文章

    402

    浏览量

    44914
  • 计算
    +关注

    关注

    2

    文章

    453

    浏览量

    39391
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    降压式电路的缓冲电路原理和快速设计

    摘要 本应用报告首先给出了降压式开关电路(buck)在上管开通瞬间的的一个等效谐振回路模型。根据该模型推导出使得开关振铃最小化的阻容缓冲电路(snubber)的参数计算公式,并结合参数公式给出
    发表于 06-05 14:27

    存储示波器的存储深度对信号分析有什么影响?

    /周期才能精确计算RMS抖动)。 案例: 采样率1GS/s,存储深度10kpts → 记录时间仅10μs,每周期仅10点(100MHz信号),边沿重建质量差。 存储深度升级至1Mpts → 记录时间
    发表于 05-27 14:39

    智多晶FIFO_Generator IP介绍

    FIFO_Generator是智多晶设计的一款通用型FIFO IP。当前发布的FIFO_Generator IP是2.0版本,相比之前的1.1版本主要新增了非等比输入输出数据位宽支持和异步FI
    的头像 发表于 04-25 17:24 ?1043次阅读
    智多晶<b class='flag-5'>FIFO</b>_Generator IP介绍

    基于FPGA的FIFO实现

    FIFO(First in First out)为先进先出队列,具有存储功能,可用于不同时钟域间传输数据以及不同的数据宽度进行数据匹配。如其名称,数据传输为单向,从一侧进入,再从另一侧出来,出来的顺序和进入的顺序相同。
    的头像 发表于 04-09 09:55 ?734次阅读
    基于FPGA的<b class='flag-5'>FIFO</b>实现

    AXI接口FIFO简介

    AXI接口FIFO是从Native接口FIFO派生而来的。AXI内存映射接口提供了三种样式:AXI4、AXI3和AXI4-Lite。除了Native接口FIFO支持的应用外,AXI FIFO
    的头像 发表于 03-17 10:31 ?1158次阅读
    AXI接口<b class='flag-5'>FIFO</b>简介

    解锁TSMaster fifo函数:报文读取的高效方法

    前言:TSMaster目前有两种读取报文的模式:回调函数模式和fifo模式。fifo函数是TSMaster近期新增的函数,本文将重点介绍fifo模块。关于回调函数的使用方法可以参考帮助模块的《
    的头像 发表于 03-14 20:04 ?520次阅读
    解锁TSMaster <b class='flag-5'>fifo</b>函数:报文读取的高效方法

    深度学习入门:简单神经网络的构建与实现

    深度学习中,神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单的神经网络。 神经网络由多个神经元组成,神经元之间通过权重连接。我们构建一个包含输入层、隐藏层和输出层的简单
    的头像 发表于 01-23 13:52 ?564次阅读

    FIFO IP核的使用教程

    在数字设计中,利用FIFO进行数据处理是非常普遍的应用,例如,实现时钟域交叉、低延时存储器缓存、总线位宽调整等。下图给出了FIFO生成器支持的一种可能配置。
    的头像 发表于 01-03 09:36 ?2997次阅读
    <b class='flag-5'>FIFO</b> IP核的使用教程

    请问DAC5682z内部FIFO深度为多少,8SAMPLE具体怎么理解?

    你好,请问DAC5682z内部FIFO深度为多少,8SAMPLE具体怎么理解。 另外,DAC5682zEVM是否可以直接通过TI的ADC-HSMC板卡与ALTERA的FPGA开发相连(FPGA板HSMC接口与电压都匹配条件下)。 谢谢
    发表于 01-03 07:27

    DAC3482在按字宽度输入模式下,为啥SYNC信号每16*n个FIFO采样重复一次?

    下图是DAC3482 中FIFO的说明。该FIFO深度是8。在按字宽度输入模式下,为啥SYNC信号每16*n个FIFO采样重复一次?按照我的理解SYNC信号是用来重置
    发表于 12-20 06:04

    FIFO Generator的Xilinx官方手册

    FIFO作为FPGA岗位求职过程中最常被问到的基础知识点,也是项目中最常被使用到的IP,其意义是非常重要的。本文基于对FIFO Generator的Xilinx官方手册的阅读与总结,汇总主要知识点
    的头像 发表于 11-12 10:46 ?1819次阅读
    <b class='flag-5'>FIFO</b> Generator的Xilinx官方手册

    FIFO深度应该怎么计算

    FIFO是FPGA/IC设计中经常使用到的模块,它经常被用在两个模块之间进行数据的缓存,以避免数据在传输过程中丢失。同时FIFO也经常被用在跨时钟域处理中。
    的头像 发表于 10-25 15:20 ?1077次阅读
    <b class='flag-5'>FIFO</b>的<b class='flag-5'>深度</b>应该怎么<b class='flag-5'>计算</b>

    FPGA加速深度学习模型的案例

    计算机主板上,以高速PCIe总线进行数据传输。 利用FPGA的并行计算能力,快速处理大量的卷积计算。 可编程性
    的头像 发表于 10-25 09:22 ?1310次阅读

    Efinity FIFO IP仿真问题 -v1

    Efinity目前不支持联合仿真,只能通过调用源文件仿真。 我们生成一个fifo IP命名为fifo_sim 在Deliverables中保留Testbench的选项。 在IP的生成目录下会有以下
    的头像 发表于 10-21 11:41 ?1603次阅读
    Efinity <b class='flag-5'>FIFO</b> IP仿真问题 -v1

    FPGA做深度学习能走多远?

    的发展前景较为广阔,但也面临一些挑战。以下是一些关于 FPGA 在深度学习中应用前景的观点,仅供参考: ? 优势方面: ? 高度定制化的计算架构:FPGA 可以根据深度学习算法的特殊需求进行优化,例如
    发表于 09-27 20:53