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

    文章

    9032

    浏览量

    153972
  • fifo
    +关注

    关注

    3

    文章

    402

    浏览量

    44893
  • IP核
    +关注

    关注

    4

    文章

    338

    浏览量

    50914
  • 生成器
    +关注

    关注

    7

    文章

    322

    浏览量

    21988
  • Vivado
    +关注

    关注

    19

    文章

    835

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    玩转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 ?2866次阅读
    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 ?9623次阅读

    vivado调用IP详细介绍

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

    何在Vivado Design Suite 中进行IP加密

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

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

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

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

    在仿真Vivado IP时分两种情况,分为未使用SECURE IP和使用了SECURE IP
    的头像 发表于 06-06 14:45 ?2338次阅读
    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 ?2048次阅读
    讲解几点关于<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 ?8843次阅读
    <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 ?2449次阅读
    <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 ?2482次阅读

    VivadoFFT IP的使用教程

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