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

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

3天内不再提示

如何在Altera FPGA中使用FIFO实现功能设计?

FPGA之家 来源:FPGA学习交流 作者:FPGA学习交流 2021-03-12 16:30 次阅读

一:fifo是什么

FIFO的完整英文拼写为FirstIn First Out,即先进先出。FPGA或者ASIC中使用到的FIFO一般指的是对数据的存储具有先进先出特性的一个存储器,常被用于数据的缓存或者高速异步数据的交互。

二:FIFO有几种结构

FIFO从大的情况来分,有两类结构:单时钟FIFO(SCFIFO)和双时钟FIFO(DCFIFO),其中双时钟FIFO又可以分为普通双时钟(DCFIFO)和混合宽度双时钟FIFO (DCFIFO_MIXED_WIDTHS)。三种FIFO结构的英文含义如下所示:

•SCFIFO: 单时钟FIFO

•DCFIFO:双时钟 FIFO

•DCFIFO_MIXED_WIDTHS: 混合宽度双时钟

在没有特别指明的情况下,混合宽度双时钟FIFO和双时钟FIFO统称为双时钟FIFO。

下图为分别为单时钟FIFO和双时钟FIFO的符号图:

8c05d538-82f5-11eb-8b86-12bb97331649.png

从图中我们可以看到,单时钟FIFO具有一个独立的时钟端口clock,当Clock上升沿到达时,且wrreq有效时,将data[7..0]中的数据写入FIFO;当Clock上升沿到达时,且rdreq有效时,将q[7..0]中的数据输出FIFO;full是满标志位,当FIFO写满时有效,almost_full是将满标志,当快写满时有效,almost_full数值可以配置;同理empty与almost_empty是空标志和将要空标志,自己也可以配置almost_empty。usedw[7..0]是当前FIFO可以使用的数据。sclr是同步清零,当有效时且Clocks上升沿到达时清楚FIFO的数据;aclr是异步清零,当有效时清除FIFO的数据。

双时钟FIFO和单时钟FIFO基本一样,就是读写分别采用不同的时钟信号。wrfull为写满标志,wrempty为写空标志,当我们想在只有FIFO空的时候才能写入时就用wrempty来判断,wrusedw[8..0]写入多少数据,rdusedw[8..0]能读出多少数据。这里将写入的数据和刻度的数据分开计数的原因是,当我们写入数据长度和读数据长度不同时,比如写的数据长度是16位,读的数据长度是8位,当写入一个数据wrusedw[8..0]=1,而rdusedw[8..0]=2。rdfull是读满标志,当我们要想要只有写满时才可读可根据这个标志判断(读数据包)。rdempty读空标志,当FIFO没有可读数据时有效。aclr异步请零。双时钟FIFO只有异步清零。

三:不同结构的FIFO各有什么作用

单时钟FIFO:

单时钟FIFO常用于片内数据交互,例如,在FPGA的控制下从外部传感器读取到的一连串传感器数据,首先被写入FIFO中,然后再以UART串口的数据发送速率将数据依次发送出去。由于传感器的单次读取数据可能很快,但并不是时刻都需要采集数据,例如某传感器使用SPI接口的协议,FPGA以2M的SPI数据速率从该传感器中读取20个数据,然后以9600的波特率通过串口发送出去。此过程每秒钟执行一次。因为2M的数据速率远高于串口9600的波特率,因此需要将从传感器中采集到的数据首先用FIFO缓存起来,然后再以串口的数据速率缓慢发送出去。这里,由于传感器数据的读取和串口数据的发送都是可以同步于同一个时钟的,因此可以使用单时钟结构的FIFO来实现此功能。

双时钟FIFO:

双时钟FIFO的一个典型应用就是异步数据的收发。

所谓异步数据是指数据的发送端和接收端分别同步与不同的时钟域,使用双时钟FIFO的独立的读写时钟结构,能够将不同时钟域中的数据同步到所需的时钟域系统中。例如,在一个视频图像采集系统中,实现将摄像头采集的数据通过VGA在显示器上显示。摄像头输入的数据长度和速度与输出到VGA显示的数据长度和速度都不相同,这种情况下使用双时钟FIFO。

四:如何在Altera FPGA中使用FIFO实现功能设计

在Altera FPGA中使用FIFO实现用户功能设计主要有三种实现方式,第一种为用户根据需求自己编写FIFO逻辑,当用户对于FIFO的功能有特殊需求时,可以使用此种方式实现,但此种方式要求用户有较高的RTL设计能力。第二种方式为使用第三方提供的开源IP核,此种IP核以源码的形式提供,能够快速的应用到用户系统中,当用户对FIFO功能有特殊需求时,可以在此源码的基础上进行修改,以适应自己的系统需求。第三种方式为使用Quartus II软件提供的免费FIFO IP核,此种方式下,Quartus II软件为用户提供了友好的图形化界面方便用户对FIFO的各种参数和结构进行配置,生成的FIFO IP核针对Altera不同系列的器件,还可以实现结构上的优化。

原文标题:一起来了解一下FIFO!

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

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

    关注

    1628

    文章

    21722

    浏览量

    602875
  • fifo
    +关注

    关注

    3

    文章

    387

    浏览量

    43635

原文标题:一起来了解一下FIFO!

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FIFO Generator的Xilinx官方手册

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

    何在智能手机系统中使用bq27505

    电子发烧友网站提供《如何在智能手机系统中使用bq27505.pdf》资料免费下载
    发表于 10-17 10:21 0次下载
    如<b class='flag-5'>何在</b>智能手机系统<b class='flag-5'>中使</b>用bq27505

    何在MSP430™MCU中使用智能模拟组合

    电子发烧友网站提供《如何在MSP430™MCU中使用智能模拟组合.pdf》资料免费下载
    发表于 09-14 10:19 0次下载
    如<b class='flag-5'>何在</b>MSP430™MCU<b class='flag-5'>中使</b>用智能模拟组合

    何在反向降压-升压拓扑中使用TPS6290x

    电子发烧友网站提供《如何在反向降压-升压拓扑中使用TPS6290x.pdf》资料免费下载
    发表于 09-13 10:07 0次下载
    如<b class='flag-5'>何在</b>反向降压-升压拓扑<b class='flag-5'>中使</b>用TPS6290x

    何在FPGA实现随机数发生器

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中实现4位伪随机数发生器(PRNGs)。
    的头像 发表于 08-06 11:20 657次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>FPGA</b>中<b class='flag-5'>实现</b>随机数发生器

    何在FPGA实现状态机

    FPGA(现场可编程门阵列)中实现状态机是一种常见的做法,用于控制复杂的数字系统行为。状态机能够根据当前的输入和系统状态,决定下一步的动作和新的状态。这里,我们将详细探讨如何在FPGA
    的头像 发表于 07-18 15:57 557次阅读

    何在RTOS中使用spi_interface.c?

    何在 RTOS 中使用 spi_interface.c?
    发表于 07-10 06:29

    请问cmakelists中的变量如何在程序中使用?

    大家好, 我有个问题请教,cmakelists.txt中的变量如何在程序中使用?比如以下cmakelists.txt文件中的PROJECT_VER变量,我如何在c程序中使用?试了很多办
    发表于 06-11 07:34

    芯海应用笔记:CSU3AF10 IAP功能设计指南_V1.0

    (利用 UART 协议)实现产品固件升级和更 新。介绍和说明 IAP 功能需要用到的芯片资源、IAP 程序设计说明、IAP 升级上位机和升级小板的使用说明、IAP 升级操作流程说明、使用的 PD
    发表于 05-16 14:29

    何在labview FPGA实现二维插值的功能

    例如,现在有X,C,W三个值,每一组(X.C)对应一个W值,我拥有几组(X,C)和W的对应关系(即具体数值),我要根据未知的一组(X,C)来通过插值得到W值。其中X和C没有对应关系,请问应该如何在labview FPGA实现
    发表于 05-15 14:59

    Altera将AI注入新的中端FPGA

    SoC FPGA Quartus Prime设计软件更新 FPGA生命周期支持扩展 全新Agilex 5 SoC FPGA 随着中档Agilex 5的发布,Altera声称这是第一个
    的头像 发表于 05-07 15:03 8543次阅读
    <b class='flag-5'>Altera</b>将AI注入新的中端<b class='flag-5'>FPGA</b>

    英特尔旗下FPGA公司Altera正式亮相

    日前,英特尔 FPGA Vision线上直播中发布,将英特尔编程解决方案事业部 (PSG) 作为独立的FPGA公司——Altera
    的头像 发表于 03-18 14:11 544次阅读

    英特尔成立全新独立运营的FPGA公司Altera

    Sandra Rivera和首席运营官Shannon Poulin详细分享了AlteraFPGA市场的领先战略,并展示了其如何通过集成AI功能等创新举措,丰富产品组合,以应对市场日益增长的挑战。
    的头像 发表于 03-11 10:07 574次阅读

    英特尔宣布成立全新独立运营的FPGA公司——Altera

    在超过550亿美元的市场中保持领先性的战略规划,强调将通过打造集成AI功能FPGA等举措,进一步丰富公司的产品组合,同时亦表明将持续助力客户应对不断增加的挑战。会上,Altera也作为新公司的品牌正式对外公布。
    发表于 03-01 11:55 702次阅读
    英特尔宣布成立全新独立运营的<b class='flag-5'>FPGA</b>公司——<b class='flag-5'>Altera</b>

    何在测试中使用ChatGPT

    Dimitar Panayotov 在 2023 年 QA Challenge Accepted 大会 上分享了他如何在测试中使用 ChatGPT。
    的头像 发表于 02-20 13:57 744次阅读