h1_key

当前位置:首页 >新闻资讯 > 技术文章>FPGA基础知识同步FIFO篇
FPGA基础知识同步FIFO篇
2023-04-10 935次

  FPGA/ASIC中的FIFO

  FIFO缓冲区如何用于传输数据和跨时钟域

  缩写FIFO代表 First In First Out。FIFO在FPGA和ASIC设计中无处不在,它们是基本的构建模块之一。而且它们非常方便!FIFO可用于以下任何目的:

  ●跨时钟域

  ●在将数据发送到芯片外之前将其缓冲(例如,发送到DRAM或SRAM)

  ●缓冲数据以供软件在以后查看

●存储数据以备后用

 

  FIFO可以认为是汽车可以驶过的单向隧道。隧道的尽头是一个带门的收费站。门一旦打开,汽车便可以离开隧道。如果那扇门从未打开,而更多的汽车继续进入隧道,那么最终隧道将充满汽车。这称为FIFO溢出,通常这不是一件好事。FIFO的深度可以认为是隧道的长度。FIFO越深,在溢出之前可以容纳更多的数据。FIFO也具有宽度,该宽度表示进入FIFO的数据的宽度(以位数为单位)。下面是任何FIFO基本接口的图像。当您查看任何FIFO时,总是会找到这些信号。通常,会有更多的信号添加其他功能,例如FIFO中的字数计数。参见下图:

  

 

 

  基础FIFO

  FIFO可以分为写一侧和读一侧。写入一侧具有信号“写入使能wr_en”,“写入数据wr_data”和“ FIFO已满fifo_full”。设计人员切勿写入已满的FIFO!始终检查FIFO已满标志,以确保有空间可以写入另一条数据,否则您将丢失该数据。

  读取的一侧具有信号“读取使能rd_en”,“读取数据rd_data”和“ FIFO空fifo_empty”。设计人员切勿读取空的FIFO!只要您遵循这两个基本规则,您和FIFO就会相处融洽。我再说一遍,因为它们是如此重要。

  FIFO的两个规则:

  ●永远不要写入完整的FIFO(溢出)

  ●永远不要从空的FIFO中读取(下溢)

FIFO本身可以由FPGA或ASIC内的专用逻辑组成,也可以由触发器(分布式寄存器)创建。综合工具将使用这两种工具中的哪一种完全取决于您使用的FPGA供应商以及代码的结构。只需知道,当您使用专用逻辑块时,与使用基于寄存器的FIFO相比,它们具有更好的性能。FIFO是FPGA设计人员的基本构建模块之一,对于正确理解和正确使用至关重要!

 

  同步FIFO的设计

  为了简单起见,先设计一个同步FIFO,仅带有空满标志。在给出同步FIFO设计之前,有必要说说同步FIFO的原理,同步FIFO的设计很有必要,它是通往异步FIFO的基础,同步FIFO中的所有原理都理解了,异步FIFO中和同步FIFO相同的东西就不必再费心思思考了,而是直接进入重点,如何控制空满!

  FIFO是先进先出的首字母缩写,它描述了如何相对于时间或优先级管理数据。在这种情况下,到达的第一个数据也将是从一组数据中离开的第一个数据。FIFO缓冲区是一种读/写存储阵列,可自动跟踪数据进入模块的顺序并以相同顺序读出数据。在硬件中,FIFO缓冲区用于同步目的。 它通常实现为循环队列,并具有两个指针:

  ●读指针/读地址寄存器

  ●写指针/写地址寄存器

  读写地址最初都位于第一个存储器位置,并且FIFO队列为空。当FIFO缓冲区的读地址和写地址之间的差等于内存阵列的大小时,则FIFO队列为Full(对于异步FIFO而言,可以设计多一位地址表示读指针以及写指针)。

  FIFO可以分为同步时钟还是异步时钟,具体取决于是相同时钟(同步)还是不同时钟(异步)控制读写操作。

  同步FIFO是指FIFO设计,其中使用时钟信号将数据值顺序写入存储阵列,并使用相同的时钟信号从存储阵列顺序读出数据值。图1显示了典型FIFO的操作流程。

  

 

 

再看一幅图:

 

 

从这幅图中我们可以得到如下信息:

  ●写指针WP总是指向下一个时钟要写的地址;

  ●读指针RP总是指向下一个时钟要读的地址;

  ●读指针等于写指针的时候有可能为空,有可能为满。

 

  • XILINX赛灵思 XC7K160T-2FBG484E
  • 赛灵思(XILINX)作为行业的领军企业,其推出的 XC7K160T-2FBG484E 更是一款备受瞩目的产品。XC7K160T-2FBG484E 属于赛灵思 7 系列 FPGA(现场可编程门阵列),具有强大的性能和丰富的功能。
    2024-09-25 415次
  • XILINX赛灵思 XCKU085-2FLVA1517E
  • 赛灵思(XILINX)作为全球领先的可编程逻辑器件供应商,其推出的 XCKU085-2FLVA1517E 以卓越的性能和丰富的功能,成为众多电子工程师和设计师的首选。XCKU085-2FLVA1517E 属于赛灵思 UltraScale 架构系列产品,采用先进的 20 纳米工艺技术制造。这一工艺不仅带来了更高的性能,还实现了更低的功耗,为各种复杂的电子系统设计提供了理想的解决方案。
    2024-09-25 386次
  • XILINX赛灵思 XCKU060-1FFVA1517C
  • 赛灵思(XILINX)作为全球领先的可编程逻辑解决方案供应商,其 XCKU060-1FFVA1517C 更是一款备受瞩目的产品。XCKU060-1FFVA1517C 属于赛灵思 UltraScale 架构系列,采用了先进的 16 纳米 FinFET 工艺技术。这一工艺带来了诸多优势,如更高的性能、更低的功耗以及更小的芯片尺寸。
    2024-09-25 417次
  • XILINX赛灵思 XCKU060-2FFVA1517E
  • 赛灵思(XILINX)作为行业的领军企业,其推出的 XCKU060-2FFVA1517E 更是一款备受瞩目的产品。XCKU060-2FFVA1517E 属于赛灵思 UltraScale 架构系列的 FPGA(现场可编程门阵列)。它融合了先进的技术和强大的性能,为各种复杂的应用场景提供了高度灵活且可靠的解决方案。
    2024-09-25 347次
  • XILINX赛灵思 XC7Z035-3FFG676E
  • 赛灵思(XILINX)作为全球领先的可编程逻辑解决方案供应商,其 XC7Z035-3FFG676E 更是一款备受瞩目的产品。XC7Z035-3FFG676E 属于赛灵思 Zynq - 7000 系列,该系列将处理器系统(PS)和可编程逻辑(PL)完美结合,为用户提供了高度灵活的解决方案。这款器件采用了先进的 28 纳米工艺技术,在性能、功耗和成本之间实现了出色的平衡。
    2024-09-25 377次

    万联芯微信公众号

    元器件现货+BOM配单+PCBA制造平台
    关注公众号,优惠活动早知道!
    10s
    温馨提示:
    订单商品问题请移至我的售后服务提交售后申请,其他需投诉问题可移至我的投诉提交,我们将在第一时间给您答复
    返回顶部