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
    +关注

    关注

    1655

    文章

    22287

    浏览量

    630329
  • fifo
    +关注

    关注

    3

    文章

    406

    浏览量

    45493

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    何在AMD Vitis Unified IDE中使用系统设备树

    您将在这篇博客中了解系统设备树 (SDT) 以及如何在 AMD Vitis Unified IDE 中使用 SDT 维护来自 XSA 的硬件元数据。本文还讲述了如何对 SDT 进行操作,以便在 Vitis Unified IDE 中实现
    的头像 发表于 11-18 11:13 2817次阅读
    如<b class='flag-5'>何在</b>AMD Vitis Unified IDE<b class='flag-5'>中使</b>用系统设备树

    Altera进一步扩展 Agilex™ FPGA 产品组合,全面提升开发体验

    Altera 首席执行官 Raghib Hussain 表示:“现阶段,Altera 专注于 FPGA 解决方案的运营与发展,使我们能够以更快的速度、更高的敏捷性推动创新,更紧密地与客户互动,并快速
    发表于 10-13 11:08 1205次阅读
    <b class='flag-5'>Altera</b>进一步扩展 Agilex™ <b class='flag-5'>FPGA</b> 产品组合,全面提升开发体验

    何在资源受限型应用中使FPGA

    的性能需求,同时在严格的功耗、尺寸和成本限制内运行。现代现场可编程门阵列 (FPGA) 可以满足这些相互竞争的需求。 本文回顾了为资源受限型应用选择 FPGA 时需要考虑的关键设计标准。然后,以 [Altera] 经过[功率和成
    的头像 发表于 10-03 17:31 1494次阅读
    如<b class='flag-5'>何在</b>资源受限型应用<b class='flag-5'>中使</b>用 <b class='flag-5'>FPGA</b>

    Altera Agilex 3/5 FPGA和SoC的功能特性

    Agilex 5 FPGA 和 SoC 以及新推出的 Agilex 3 FPGA 和 SoC 代表着可编程逻辑技术方面的重大飞跃。这两个设备系列均具备全新功能,可随着设计需求的变化实现
    的头像 发表于 09-06 10:10 3041次阅读
    <b class='flag-5'>Altera</b> Agilex 3/5 <b class='flag-5'>FPGA</b>和SoC的<b class='flag-5'>功能</b>特性

    Altera Agilex™ 3 FPGA和SoC FPGA

    Altera Agilex™ 3 FPGA和SoC FPGA Altera/Intel Agilex™ 3 FPGA和SoC
    的头像 发表于 08-06 11:41 3676次阅读
    <b class='flag-5'>Altera</b> Agilex™ 3 <b class='flag-5'>FPGA</b>和SoC <b class='flag-5'>FPGA</b>

    Altera Agilex 3 FPGA和SoC产品介绍

    Altera 的 Agilex 3 FPGA 和 SoC 可在不影响性能的前提下显著提高成本效益。其通过出色的 Hyperflex FPGA 架构、先进的收发器技术、更高的集成度和更强大的安全
    的头像 发表于 06-03 16:40 1318次阅读
    <b class='flag-5'>Altera</b> Agilex 3 <b class='flag-5'>FPGA</b>和SoC产品介绍

    Intel-Altera FPGA:通信行业的加速引擎,开启高速互联新时代

    与战略调整收购背景:2015年,英特尔斥资167亿美元收购Altera,意图通过FPGA技术强化AI、边缘计算等新兴领域布局,但收购后未能实现预期协同效应。战略调整:2025年,英特尔宣布以87.5亿
    发表于 04-25 10:19

    Altera大学成立,助力FPGA教学发展与人才培养

    近日,全球 FPGA 创新技术领导者 Altera 宣布成立 Altera 大学,旨在以高效、便捷的方式助力 FPGA 教学发展与人才培养。Alte
    的头像 发表于 04-19 11:26 948次阅读

    基于FPGAFIFO实现

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

    Altera发布最新FPGA产品和开发工具套件

    在 2025 国际嵌入式展(Embedded World 2025)上,全球 FPGA 创新技术领导者 Altera 发布了专为嵌入式开发者打造的最新可编程解决方案,以进一步突破智能边缘领域的创新
    的头像 发表于 03-12 09:47 2290次阅读

    何在MATLAB中使用DeepSeek模型

    在 DeepSeek-R1(https://github.com/deepseek-ai/DeepSeek-R1) AI 模型横空出世后,人们几乎就立马开始询问如何在 MATLAB 中使用这些模型
    的头像 发表于 02-13 09:20 4064次阅读
    如<b class='flag-5'>何在</b>MATLAB<b class='flag-5'>中使</b>用DeepSeek模型

    使用SCL编写FIFO功能

    一、 导读    前几天一位搞电气的朋友问S7-1200中如何做个先入先出的功能,说原来用S7-200SMART的时候有填表指令和FIFO指令可以实现功能,现在S7-1200中找了一
    的头像 发表于 02-09 10:27 1158次阅读
    使用SCL编写<b class='flag-5'>FIFO</b><b class='flag-5'>功能</b>块

    Altera正式独立运营:FPGA行业格局将迎来新变局

    2025年初,英特尔旗下的Altera宣布了一个重大决定——正式独立运营,成为一家全新的专注于FPGA(现场可编程门阵列)技术的企业。在社交媒体平台上,Altera公司满怀自豪地宣布:“今天,我们
    的头像 发表于 01-23 15:15 1313次阅读

    何在Windows中使用MTP协议

    、图片等)的通信协议,它被广泛用于Android设备。以下是如何在Windows中使用MTP协议的详细步骤: 1. 确保设备支持MTP 首先,你需要确认你的设备支持MTP协议。大多数现代Android
    的头像 发表于 01-03 10:26 4419次阅读

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

    你好,请问DAC5682z内部FIFO深度为多少,8SAMPLE具体怎么理解。 另外,DAC5682zEVM是否可以直接通过TI的ADC-HSMC板卡与ALTERAFPGA开发相连(FPG
    发表于 01-03 07:27