深入学习FIFO

VIP深入学习FIFO
深入理解FIFO、同步FIFO和异步FIFO、FIFO设计的难点以及FIFO深度计算
开通可读全文 ·2.6k 人阅读
最低0.47元/天 解锁文章

目录

1、定义

2、FIFO分类

3、FIFO使用情况

4、FIFO的主要参数

5、FIFO设计的难点

5.1、亚稳态

5.2、FIFO设计的方法

6、FIFO深度(存储容量)计算


1、定义

        FIFO即First In First Out,是一种先进先出数据存储、缓冲器,我们知道一般的存储器是用外部的读写地址来进行读写,而FIFO这种存储器的结构并不需要外部的读写地址而是通过自动的加一操作来控制读写,这也就决定了FIFO只能顺序的读写数据。

2、FIFO分类

        FIFO根据读写时钟是否相同分为 SCFIFO(同步FIFO)和 DCFIFO(异步FIFO)

        同步FIFO,读和写应用同一个时钟。它的作用一般是做交互数据的一个缓冲,也就是说它的主要作用就是一个buffer。
        异步FIFO,读写应用不同的时钟,它有两个主要的作用,一个是实现数据在不同时钟域进行传递,另一个作用就是实现不同数据宽度的数据接口。

3、FIFO使用情况

       FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端时AD数据采集,另一端时计算机的PCI总线,假设其AD采集的速率为16位 100K SPS,那么每秒的数据量为100K×16bit=1.6Mbps, 而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。

FIFO存储器是系统的缓冲环节,如果没有FIFO存储器,整个系统就不可能正常工作,它主要有几方面的功能:
        1) 对连续的数据流进行缓存,防止在进机和存储操作时丢失数据;
        2) 数据集中起来进行进机和存储,可避免频繁的总线操作,减轻CPU的负担;
        3) 允许系统进行DMA操作,提高数据的传输速度。这是至关重要的一点,如果不采用DMA操作,数据传输将达不到传输要求,而且大大增加CPU的负担,无法同时完成数据的存储工作。

4、FIFO的主要参数

同步FIFO和异步FIFO略有不同,下面的参数适用于两者。

  • 宽度,用参数FIFO_data_size表示,它指的是 FIFO 一次读写操作的数据位,也就是FIFO存储的数据宽度;
  • 深度,用参数FIFO_addr_size表示,也就是地址的大小,也就是说能存储多少个数据;
  • 满标志,full,当FIFO中的数据满了以后将不再能进行数据的写入,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出(overflow);
  • 空标志,empty,当FIFO为空的时候将不能进行数据的读出,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出(underflow);
  • 写地址,w_addr,由自动加一生成,将数据写入该地址;
  • 读地址,r_addr,由自动加一生成,将该地址上的数据读出;

同步FIFO和异步FIFO的最主要的不同就体现在空满标志产生的方式上,由此引出两者一些不同的参数。
同步FIFO

  • 时钟,clk,rst,读写应用同一个时钟;
  • 计数器,
VIP FIFO的工作原理及其设计 FIFO( First Input First Output)简单说就是指先进先出。FIFO存储器是一个先入先出的双口缓冲器,即第一个进入其内的数据第一个被移出,其中一个口是存储器的输入口,另一个口是存储器的输出口。对于单片FIFO来说,主要有两种结构:触发导向结构和零导向传输结构。触发导向传输结构的FIFO是由寄存器阵列构成的,零导向传输结构的FIFO是由具有读和写地址指针的双口RAM构成。FIFO与普通RAM存储器的是没有外部读写地址线(指针),使用方便,但。 开通可读全文·2.9w 阅读·48 点赞·324 收藏 阅读全文

相关推荐

一文读懂【FIFO】

8bit位宽的异步FIFO,一个package的大小为4※1024/8=512Word,100MHz的输入时钟,传送一个Word需要的时间为1/100MHz,则发送一个package需要的时间T=512/100MHz,95MHz的输出时钟,接受一个Word需要的时间为1/95MHz,发送一个package的时间所能接受的数据量为(512※95)/100word=486.4word,所以FIFO的深度至少为512-486.4=25.6=26。同时由于格雷码的引入,使得FIFO的深度只能是2的幂次方。

m0_74282605的博客 4984

【FPGA学习记录1】异步FIFO的介绍

异步FIFO工作原理介绍,亚稳态介绍,使用格雷码可以消除亚稳态,FIFO空满的判断。

weixin_44458490的博客 2203

FIFO学习:FIFO深度的计算、通过Verilog实现FIFO以及利用SRAM设计FIFO

本文档将记录对FIFO的学习以及通过verilog实现FIFO(同步、异步)的过程。 首先记录一个verilog语法知识: 可以通过reg型变量建立数组,来对存储器建模,可以描述RAM、ROM存储器。语言格式如下: reg[n-1:0] 存储器名[m-1:0]; 在语法中reg[n-1:0]定义了存储器中每一个存储单元的大小,即n位寄存器,在FIFO中对应宽度;[m-1:0]定义了存储器中n位寄存...

LscYBZB的博客 3980

FPGA原理与结构(12)——FIFO IP核原理学习

本文对于xilinx的FIFOGenerator IP核进行了一个简单的介绍,解释了IP核中各个类型信号的具体功能。介绍了FIFO的读写操作,其中读操作又可以分成2种模式,推荐使用标准模式,最后介绍了FIFO的非对称读写位宽

apple_53311083的博客 1万+

别再死记硬背了!用51单片机的AD/DA和PWM,亲手做个简易示波器信号发生器

本文详细介绍了如何利用51单片机的PWM和AD/DA功能制作简易示波器信号发生器。通过PWM模拟DAC输出波形,结合XPT2046 ADC进行信号测量,实现方波、三角波和正弦波的生成与显示。项目不仅成本低廉,还能帮助电子爱好者深入理解51单片机的核心功能,是理论与实践结合的绝佳案例。

weixin_28675839的博客 259

sram设计流程+memory compiler整理

→。

qq_50761108的博客 1万+

AXI backpressure反压机制代码

本文将xilinx的axi读写代码进行修改,实现吞吐量达到50%

m0_64636251的博客 1759

国债期货的日线趋势跟踪策略实现(基于backtrader框架)

通过backtrader框架,我们可以轻松地实现国债期货的日线趋势跟踪策略,并进行回测和验证。通过这种策略,我们可以尝试捕捉国债期货价格的短期趋势,并根据趋势的方向进行交易决策。backtrader提供了许多内置的指标、订单类型和其他功能,可以帮助你进一步优化和改进你的策略。它提供了丰富的工具和功能,使我们能够快速实现和验证我们的交易想法。方法中,我们根据当前价格和前一天的价格判断趋势的方向,并根据趋势的变化进行买入或卖出操作。然后,我们设置了初始资金和交易手续费,并将我们定义的策略。来跟踪每日的收盘价。

NisyPhilosophy的博客 391

【ODX介绍】-5-用于Flash刷写的ODX-F文件概述

用于Flash刷写的ODX-F文件概述

「汽车电子助手」的博客 2523

Claude Code 学习笔记之一:理解 Agentic Loop 与内置工具

本文介绍了Claude Code这一终端智能助手的工作原理与使用方式。作者从ABAP开发经验出发,指出学习Claude Code的高级用法具有长期价值。文章详细解析了Claude Code的Agentic Loop机制:通过大语言模型进行推理,借助各类工具执行任务,并循环收集上下文、执行操作、验证结果三个步骤。系统阐述了Claude Code支持的五大类工具及其扩展方式,说明了其访问本地资源的范围和自治处理能力,同时介绍了权限模式等安全机制。最后提供了从小任务开始、充分探索、及时引导、使用CLAUDE.md

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 527

7、复杂分布式水文模型的两阶段代理参数校准框架

本文提出了一种针对复杂分布式水文模型的两阶段代理参数校准框架,旨在解决可变入渗能力模型(VIC)在参数校准过程中计算成本高、耗时长的问题。该框架结合AdaBoost与反向传播神经网络(BPNN)构建高精度代理模型,并引入ε-NSGA II多目标优化算法加速搜索最优参数集。通过在兰江流域和湘江流域的实验验证,该方法在校准效率上提升了约20倍,同时保持了高模拟精度(NSE接近1,Bias接近0)。框架采用两阶段设计:第一阶段(SM-I)快速筛选关键参数范围,第二阶段(SM-II)进行高精度预测,显著减少了无效计

apple5的专栏 84

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 无源蜂鸣器驱动实验
下一篇: VGA显示器驱动设计与验证

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
发光中请勿扰
博客等级 码龄8年 9333粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

发光中请勿扰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值