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

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

3天内不再提示

如何在Vivado中配置FIFO IP核

CHANBAEK 来源:FPGA入门到精通 作者:未可知摩尔 2023-08-07 15:36 次阅读

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

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

一、FIFO IP核的配置

1、新建FIFO IP

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

图片

2、配置FIFO基本参数

图片

图片

编辑切换为居中

添加图片注释,不超过 140 字(可选)

(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接口参数

图片

(1)读模式设置

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

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

(2)数据接口参数设置

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

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

(4)初始化设置

4、状态信号接口设置

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

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

图片

5、计数端口设置

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

图片

6、FIFO设置参数总览

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

图片

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控制。

图片

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

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

图片

四、总结

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

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

    关注

    33

    文章

    8770

    浏览量

    152346
  • fifo
    +关注

    关注

    3

    文章

    392

    浏览量

    44067
  • IP核
    +关注

    关注

    4

    文章

    332

    浏览量

    49818
  • 生成器
    +关注

    关注

    7

    文章

    321

    浏览量

    21292
  • Vivado
    +关注

    关注

    19

    文章

    819

    浏览量

    67199
收藏 人收藏

    相关推荐

    玩转Zynq连载21——VivadoIP的移植

    `玩转Zynq连载21——VivadoIP的移植更多资料共享腾讯微云链接:https://share.weiyun.com/5s6bA0s百度网盘链接:https://pan.ba
    发表于 09-04 10:06

    Vivado IP锁定的解决办法分享

      发生IP锁定,一般是Vivado版本不同导致的,下面介绍几种方法:    1 常用的方法  1)生成IP的状态报告 Report -
    发表于 01-08 17:12

    Vivadoxilinx_courdic IP怎么使用

    Vivadoxilinx_courdic IP(求exp指数函数)使用
    发表于 03-03 07:35

    Vivado生成IP

    vivado生成ip后缺少一大片文件,之前是可以用的,中途卸载过Modelsim,用vivado打开过ISE工程,因为工程很多
    发表于 04-24 23:42

    Xilinx Vivado的使用详细介绍(3):使用IP

    IPIP Core) Vivado中有很多IP核可以直接使用,例如数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、D
    发表于 02-08 13:08 2503次阅读
    Xilinx <b class='flag-5'>Vivado</b>的使用详细介绍(3):使用<b class='flag-5'>IP</b><b class='flag-5'>核</b>

    了解VivadoIP的原理与应用

    IPIP Core) Vivado中有很多IP核可以直接使用,例如数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、D
    发表于 11-15 11:19 9246次阅读

    vivado调用IP详细介绍

    大家好,又到了每日学习的时间了,今天咱们来聊一聊vivado 调用IP。 首先咱们来了解一下vivadoIP
    的头像 发表于 05-28 11:42 3.7w次阅读

    何在Vivado Design Suite 中进行IP加密

    此视频概述了Vivado Design SuiteIP加密。 它涵盖了IP加密工具流程,如何准备加密IP以及如
    的头像 发表于 11-20 06:34 6654次阅读

    FPGA实现基于Vivado的BRAM IP的使用

      Xilinx公司的FPGA中有着很多的有用且对整个工程很有益处的IP,比如数学类的IP,数字信号处理使用的IP
    的头像 发表于 12-29 15:59 1.2w次阅读

    VCS独立仿真Vivado IP的问题补充

    在仿真Vivado IP时分两种情况,分为未使用SECURE IP和使用了SECURE IP
    的头像 发表于 06-06 14:45 1865次阅读
    VCS独立仿真<b class='flag-5'>Vivado</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>的问题补充

    讲解几点关于FIFO IP使用时的注意事项

    FIFO?还是FIFO IP?这也需要写总结吗?太容易了吧。如果我是一个正在处于面试找工作的年轻人,肯定关注的是如何手撕
    发表于 06-21 14:22 1700次阅读
    讲解几点关于<b class='flag-5'>FIFO</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>使用时的注意事项

    VivadoBRAM IP配置方式和使用技巧

    FPGA开发中使用频率非常高的两个IP就是FIFO和BRAM,上一篇文章已经详细介绍了Vivado FIFO
    的头像 发表于 08-29 16:41 6922次阅读
    <b class='flag-5'>Vivado</b><b class='flag-5'>中</b>BRAM <b class='flag-5'>IP</b>的<b class='flag-5'>配置</b>方式和使用技巧

    Vivado IPShared Logic选项配置

    在给Vivado的一些IP进行配置的时候,发现有Shared Logic这一项,这里以Tri Mode Ethernet MAC
    的头像 发表于 09-06 17:05 1875次阅读
    <b class='flag-5'>Vivado</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>Shared Logic选项<b class='flag-5'>配置</b>

    FPGA实现基于Vivado的BRAM IP的使用

    Xilinx公司的FPGA中有着很多的有用且对整个工程很有益处的IP,比如数学类的IP,数字信号处理使用的IP
    的头像 发表于 12-05 15:05 1967次阅读

    VivadoFFT IP的使用教程

    本文介绍了VidadoFFT IP的使用,具体内容为:调用IP>>配置界面介绍>>
    的头像 发表于 11-06 09:51 1961次阅读
    <b class='flag-5'>Vivado</b><b class='flag-5'>中</b>FFT <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用教程