【FIFO IP系列】FIFO IP参数配置与使用示例

这篇具有很好参考价值的文章主要介绍了【FIFO IP系列】FIFO IP参数配置与使用示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vivado IP核提供了强大的FIFO生成器,可以通过图形化配置快速生成FIFO IP核。

本文将详细介绍如何在Vivado中配置一个FIFO IP核,以及如何调用这个FIFO IP核。

一、FIFO IP核的配置

1、新建FIFO IP

在Vivado的IP Catalog中找到FIFO Generator IP核,双击打开参数配置界面。

【FIFO IP系列】FIFO IP参数配置与使用示例,FPGA IP,fpga开发,fpga,vivado,fifo,xilinx

2、配置FIFO基本参数

【FIFO IP系列】FIFO IP参数配置与使用示例,FPGA IP,fpga开发,fpga,vivado,fifo,xilinx

​(1)接口类型

Native interface FIFOs:

这是最基本的FIFO接口,包括数据输入、输出端口、写使能、读使能等信号。

AXI Memory Mapped interface FIFOs:

这种接口将 FIFO 封装为一个AXI内存映射的IP核,可以通过AXI总线进行访问。

AXI4-Stream interface FIFOs:

这种接口兼容AXI4-Stream协议,适合在流式数据传输场景中使用。

(2)时钟类型和资源类型

时钟:同步时钟(common clock) 和 异步时钟(Independent clock)

资源:block RAM、Distributed RAM、Shift Register、Built-in FIFO

3、配置fifo接口参数

【FIFO IP系列】FIFO IP参数配置与使用示例,FPGA IP,fpga开发,fpga,vivado,fifo,xilinx

​(1)读模式设置

Standard FIFO:标谁读模式,接收到读使能后下一个周期输出数据

First Word Fall Through:先入先出模式,只有FIFO中有数据,则自动输出第一个数据,并保持这个数据输出

(2)数据接口参数设置

FIFO读数据接口的位宽和深度,FIFO写数据接口的位宽和深度

(3)ECC和输出寄存器设置

(4)初始化设置

4、状态信号接口设置

根据实际需求,选择对应的状态信号即可。

注意(Programmable Flags):自定义FIFO缓存深度是否达到设定值的信号,可以用于设定半满或半空信号

【FIFO IP系列】FIFO IP参数配置与使用示例,FPGA IP,fpga开发,fpga,vivado,fifo,xilinx

5、计数端口设置

fifo已缓存的数据深度计数,可选。

【FIFO IP系列】FIFO IP参数配置与使用示例,FPGA IP,fpga开发,fpga,vivado,fifo,xilinx

6、FIFO设置参数总览

这是FIFO IP的设置参数总览,可看到资源消耗、宽度、深度、读延迟等信息。

【FIFO IP系列】FIFO IP参数配置与使用示例,FPGA IP,fpga开发,fpga,vivado,fifo,xilinx

7、点击OK生成FIFO IP核。

二、FIFO IP核的接口

生成的FIFO IP核提供以下接口:

wr_clk 写时钟

rd_clk 读时钟

din 数据输入端口,宽度为配置的Data Width;

wr_en 写使能信号;

rd_en 读使能信号;

dout 数据输出端口;

full 满标志,高电平表示FIFO满;

empty 空标志,高电平表示FIFO空;

almost_full 几乎满标志;

almost_empty 几乎空标志;

valid 有效数据标志

rd_data_count 读计数

wr_data_count 写计数

overflow 写溢出标记

underflow 读溢出标记

三、FIFO IP核的调用

FIFO IP核的调用很简单,只需要对接口进行适当的连接,并根据Full和Empty标志控制读写使能信号。下面给出一个简单的调用例子:

module fifo_test(
  input clk,
  input [17:0] din,
  input wr_en, rd_en,
  output valid,
  output [17:0] dout,
  output full, empty, overflow, underflow
);

fifo_generator_0 fifo_inst(
  .clk(clk),
  .din(din),
  .wr_en(wr_en),
  .rd_en(rd_en),
  .dout(dout),
  .full(full),
  .empty(empty),
  .overflow(overflow),
  .valid(valid), 
  .underflow(underflow)
);

endmodule

在这个例子中,din和wr_en分别连接到FIFO的输入端口,dout和empty连接到输出端口。在写入数据时需要检查full信号,在读出数据时需要检查empty信号,以避免overflow和underflow的情况发生。

下面是FIFO IP核的一个简单的testbench:

`timescale 1ns / 1ps

module fifo_testbench();

reg clk;
reg [17:0] din;
reg wr_en;
reg rd_en;
wire valid;
wire [17:0] dout;
wire full, empty, overflow, underflow;

fifo_test dut(
  .clk(clk),
  .din(din),
  .wr_en(wr_en),
  .rd_en(rd_en),  
  .dout(dout),
  .full(full),
  .empty(empty),
  .overflow(overflow),
  .valid(valid), 
  .underflow(underflow) 
);

always #5 clk = ~clk; 

initial begin
  clk = 0;
  wr_en = 0; rd_en = 0;
  
  #10;
  wr_en = 1; din = 18'd1;
  #10;
  wr_en = 1; din = 18'd2;
  #10;
  wr_en = 1; din = 18'd3;

  #10;
  wr_en = 0; rd_en = 1;
  #10;
  wr_en = 0; rd_en = 1;

  #10;
  wr_en = 1; din = 18'd4;
  wr_en = 1; din = 18'd5;

  #10;
  wr_en = 0; rd_en = 1;
  #10
  wr_en = 0; rd_en = 1;

  #10;
  $finish;
end

endmodule

这个testbench通过 Applying 不同的读写使能信号来测试FIFO的写入和读取功能。

仿真测试图:

(1)FIFO读模式设置为“Standard FIFO”

valid信号完全由rd_en控制。

【FIFO IP系列】FIFO IP参数配置与使用示例,FPGA IP,fpga开发,fpga,vivado,fifo,xilinx

​(2)FIFO读模式设置为“First Word Fall Through”

缓存一定长度数据后,自动读取第一个数据,并保持,直到下一个rd_en 信号到来

【FIFO IP系列】FIFO IP参数配置与使用示例,FPGA IP,fpga开发,fpga,vivado,fifo,xilinx

四、总结

通过上面的描述,我们详细介绍了如何在Vivado中配置FIFO IP核,FIFO的接口信号,以及如何调用FIFO IP核的一个简单例子。FIFO是一种非常常用的IP核,通过Vivado的FIFO Generator可以大大简化配置和使用FIFO的过程。

xilinx 官方手册:

AMD Adaptive Computing Documentation Portal

夸克网盘分享


本文将不断定期更新中,码字不易,点⭐️赞,收⭐️藏一下,不走丢哦

本文由FPGA狂飙原创,有任何问题,都可以在评论区和我交流哦

获取免费学习资料,github开源代码:“FPGA知识库”

您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。文章来源地址https://www.toymoban.com/news/detail-660548.html

到了这里,关于【FIFO IP系列】FIFO IP参数配置与使用示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • xilinx FPGA FIFO IP核的使用(VHDL&ISE)

    1.新建工程和ip核文件 下图显示了一个典型的写操作。拉高WR_EN,导致在WR_CLK的下一个上升边缘发生写入操作。因为FIFO未满,所以WR_ACK输出1,确认成功的写入操作。当只有一个附加的单词可以写入FIFO时,FIFO会拉高ALMOST_FULL标志。当ALMOST_FULL拉高之后,一个附加的写入将导致

    2024年02月03日
    浏览(54)
  • FPGA IP核配置FIFO中遇到数据不匹配以及输出数据缺失问题的解决与思考

    本人配置了一个 16bit 数据转 8bit 数据的FIFO,因为不涉及异步时钟,所以使用的是单时钟。 一、初级问题 : empty信号一直为高 ,嗯~让我难以下手,毕竟这个问题过于简单化了,这是复位的问题,我的是低电平复位,前期为了方便,我便把复位信号拉低了,然后它一直处于复

    2024年02月03日
    浏览(51)
  • FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用

    ⭐️作者简介: 小瑞同学 ,一个努力精进的 FPGA 和通信学习者。 🍎个人主页:小瑞同学的博客主页 🌻个人信条:越努力,越幸运! ⏰日期:2023.12.6 🔍来源:自学经历 📖文章内容概述:简单介绍了 FIFO IP核 常用参数的配置,通过仿真分析了异步IP的 读写数据 过程。 连载

    2024年01月18日
    浏览(42)
  • FPGA原理与结构——FIFO IP核原理学习

    系列文章目录:FPGA原理与结构(0)——目录与传送门         FIFO是英文First-In-First-Out的缩写,是一种先入先出的数据缓冲器,与一般的存储器的区别在于没有地址线, 使用起来简单,缺点是只能顺序读写数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器

    2024年02月11日
    浏览(48)
  • Altera FPGA 储存单元IP核之RAM、FIFO

         只读存储器,系统上电后数据就被写入ROM,运行过程中只能从ROM中读取数据,而不能改变ROM中的数值。      随机存取储存器,可以随时把数据写入任一指定地址的储存单元,也可以随时从任一指定地址中读取数据。其读写速度是由时钟频率决定的。RAM主要用来存放程

    2023年04月08日
    浏览(45)
  • FPGA原理与结构(12)——FIFO IP核原理学习

    系列文章目录:FPGA原理与结构(0)——目录与传送门         FIFO是英文First-In-First-Out的缩写,是一种先入先出的数据缓冲器,与一般的存储器的区别在于没有地址线, 使用起来简单,缺点是只能顺序读写数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器

    2024年02月08日
    浏览(44)
  • FPGA 学习分享-- 04 FIFO核的使用(2)

    写在前面: 博主耗费了四天!!!完成了FIFO核的第二部分。 在这个部分,博主遇到了很多问题,对着代码不停修改,询问学长和老师,好在终于没有报错,可以向大家交作业了!当然,我会在本文详细的帮助大家学习FIFO核的代码编写,带着大家剖析每个部分,尽可能地通俗

    2024年02月03日
    浏览(42)
  • FPGA零基础学习之Vivado-FIFO使用教程

    本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。 系统性的掌握技术开发以及相关要求

    2024年02月20日
    浏览(40)
  • [FPGA IP系列] 2分钟了解FPGA中的BRAM

    FPGA设计中,BRAM是一项非常关键的内置存储资源,FPGA开发需要熟练使用BRAM,今天再复习一下BRAM的知识,包括BRAM的定义、组成、应用等等。 RAM是Random Access Memory,也就是随机访问数据存储器,RAM的内部是一个一个小内存单元(可以看成是一个小格子)组成。 每个内存单元都对应

    2024年02月12日
    浏览(52)
  • 紫光同创 FPGA 开发跳坑指南(四)—— DDR3 控制器 IP 的使用

    DDR3 是一种大容量的存储器件,采用了预取技术和双边沿采样技术,以实现高速数据存储与读取,在视频处理中可以用来缓存 1 帧或多帧图像。 目录 一、紫光 DDR3 IP 的安装 二、紫光 DDR3 IP 的配置 三、DDR3 IP 的使用 3.1 DDR3 写操作 3.2 DDR3 读操作         在 Pango Design Suit 中,选

    2024年01月25日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包