FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用

这篇具有很好参考价值的文章主要介绍了FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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


连载系列:FPGA中FIFO的应用
完整工程已上传至CSDN:下载链接

  • 同步FIFO设计
  • 异步FIFO设计
  • Vivado FIFO IP核的调用

1.FIFO IP核参数配置简介

参考文档:pg057 P156—P173

1.1 Basic

FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用,fpga开发,信号处理

①选择FIFO的接口类型:

  • 传统接口
  • AXI存储映射接口
  • AXI Stream接口。

②FIFO的实现方式:这个种类有很多,这里不详细列出。

  • common clock表示同步FIFO
  • independent clock表示异步FIFO

1.2 Native Ports

在Basic界面选择传统接口后,其配置界面如下:

FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用,fpga开发,信号处理
①读类型:

  • 标准FIFO
  • 首字掉入FIFO,

②数据端口参数:设置读写宽度和深度,

补充:

  • 一般我们选择标准FIFO即可,有关首字掉入FIFO的说明详见P99
  • 虽然读写位宽可以设置为不同,但读深度不可设置,而是会根据上边三个参数自行计算出来,一般要满足:写宽度 * 写深度=读宽度 * 读深度
  • 写深度我们设置的使256,但IP核所实现的实际深度却是255,也就是比设置深度少1。

1.3 Status Flags

FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用,fpga开发,信号处理
①可选标志:

  • 将满标志
  • 将空标志

补充:

  • almost_empty和almost_full可看作是empty和full的警告信号,它们相对于empty和full会提前一个时钟周期拉高

1.4 Data Counts

FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用,fpga开发,信号处理
①数据计数器:用来记录读写数据的个数,可分别设置读写数据计数器的位宽。

2.仿真验证

2.1 testbench文件

`timescale 1ns / 1ps

module tb();

parameter FIFO_WIDTH=8;

reg wr_clk;
reg rd_clk;
reg [7:0] din;
reg wr_en;
reg rd_en;
wire [7:0] dout;
wire full;
wire almost_full;
wire empty;
wire almost_empty;
wire [7:0] rd_data_count;
wire [7:0] wr_data_count;

initial begin
    wr_clk=1'b0;
    rd_clk=1'b0;
    din='b0;
    wr_en=1'b0;
    rd_en=1'b0;
    #10;
    repeat(10)begin
        @(negedge wr_clk)begin
            din={$random}%(2^FIFO_WIDTH);
            wr_en=1'b1;
        end
    end
    repeat(10)begin
        @(negedge rd_clk)begin
            rd_en=1'b1;
            din={$random}%(2^FIFO_WIDTH);
        end
    end
    
end

always #10 wr_clk=~wr_clk;
always #20 rd_clk=~rd_clk;

fifo_generator_0 fifo_generator_u (
  .wr_clk(wr_clk),                // input wire wr_clk
  .rd_clk(rd_clk),                // input wire rd_clk
  .din(din),                      // input wire [7 : 0] din
  .wr_en(wr_en),                  // input wire wr_en
  .rd_en(rd_en),                  // input wire rd_en
  .dout(dout),                    // output wire [7 : 0] dout
  .full(full),                    // output wire full
  .almost_full(almost_full),      // output wire almost_full
  .empty(empty),                  // output wire empty
  .almost_empty(almost_empty),    // output wire almost_empty
  .rd_data_count(rd_data_count),  // output wire [7 : 0] rd_data_count
  .wr_data_count(wr_data_count)  // output wire [7 : 0] wr_data_count
);
endmodule

2.2 原始仿真结果

☀️IP核配置即为上述各图中所示,结果如下:

FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用,fpga开发,信号处理

2.3 修改参数后的仿真结果

☀️为了验证异步FIFO作不同数据宽度的数据接口这一应用,这里我们简单修改一下,使读位宽大于写位宽,设置读位宽为16位,读深度则为128。可以看到一个读出数据对应两个写入数据,也就是说,当读位宽大于写位宽时,几个写入数据拼接成一个读出数据。

FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用,fpga开发,信号处理

☀️然后再试试写位宽大于读位宽的情况,这里设置读位宽为4,则读深度为512,并将输入数据扩大2倍。可以看到每次先读出输入数据的高4位,再读出低4位,也就是说,几个读出数据对应一个写入数据。

FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用,fpga开发,信号处理


❤️如果觉得文章对你有所帮助的话,别忘了点个收藏哦~
❤️更多优质内容可浏览本人主页👇,期待再次与你相遇!
🎉🎉🎉🎉🎉🎉小瑞同学的博客主页🎉🎉🎉🎉🎉🎉文章来源地址https://www.toymoban.com/news/detail-801905.html

到了这里,关于FPGA中FIFO的应用(三)——Vivado FIFO IP核的调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • IP核的使用之FIFO(Vivado)

    IP核的使用之FIFO(Vivado)

    在开始介绍 FIFO IP核 之前,我们先设想这么一个 实际场景 :FPGA内部有个16位计数器,以50MHz的频率计数,此时,我们希望随机截取计数器连续256个计数周期的值发到电脑上进行分析处理。用串口发送到电脑上。( 数据产生速率大于数据使用速率 ),此时需要使用存储器先将

    2024年01月18日
    浏览(11)
  • FPGA-基本IP核的应用之RAM

    FPGA-基本IP核的应用之RAM

    RAM为随机存取存储器,它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度是由时钟频率决定的。RAM主要用来存放程序及程序执行过程中产生的中间数据、运行结果等。其特点适合双向交换数据。 RAM的端口有单端口和双端口:

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

    FPGA 学习分享-- 04 FIFO核的使用(2)

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

    2024年02月03日
    浏览(12)
  • 数字信号处理-11-FPGA FFT IP应用实例

    数字信号处理-11-FPGA FFT IP应用实例

    本文根据FFT相关原理进行设计构建工程,仿造前文的工程构建的混频功能的工程,设计工程显示该混频信号的功率谱,然后进行仿真分析。 本文不再针对FFT的原理进行过多赘述,提供一份简单的matlab仿真代码。根据仿真简述下FFT的相关使用注意事项。 代码设计,模拟生成了

    2024年02月02日
    浏览(13)
  • vivado中时钟ip核的调用

    vivado中时钟ip核的调用

    时钟ip核(MMCM PPL),MMCM(混合模式时钟管理)和PPL(锁相环)是FPGA内部的时钟资源。 作用:对时钟网络进行一个系统级的时钟管理和偏斜控制,具有时钟倍频、分频、相位偏移等功能 一、7系列FPGA高层次时钟结构视图     Clock Region :区域时钟。 Clock Backbone :全局时钟线

    2024年01月19日
    浏览(18)
  • VIVADO中FFT核的使用(FPGA计算FFT和IFFT)

    VIVADO中FFT核的使用(FPGA计算FFT和IFFT)

             关于这方面的内容,有些文章已经写的很好很详细了。不过我在使用的过程中,还是踩了一些坑,我在这里详细的介绍了IP核每一个设置的作用,然后写了个fft计算和ifft计算的环路的测试程序。应该可以帮大家学会使用fft的同时,也对它有个较为全面的理解。

    2024年01月18日
    浏览(9)
  • FPGA零基础学习之Vivado-FIFO使用教程

    FPGA零基础学习之Vivado-FIFO使用教程

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

    2024年02月20日
    浏览(7)
  • FPGA学习笔记(二):clk IP核的使用

    FPGA学习笔记(二):clk IP核的使用

     1.打开VIVADO,点击IP Catalog   2. 搜索clk,选择Clocking Wizard   3. 配置参数 (1) 选择MMCM      (2) 设置主频50Mhz  (3) 设置输出的4个clk的参数,分别是50M,25M,100M,100M反相。Phase表示相位,0表示同相,180表示反相。      (3) 其他参数  4. 测试文件 其中clk_wiz的例化可参考模板。点击

    2024年02月12日
    浏览(13)
  • FPGA学习笔记(六): FIR IP核的使用

    FPGA学习笔记(六): FIR IP核的使用

    1. 打开VIVADO,点击IP Catalog   2.搜索DDS,选择DDS Compiler,按照上节配置频率为3MHz和4MHz的DDS IP核。    这里注意不勾选Has Phase Out 这里注意不勾选Output TREADY     输出频率为3MHz 按照上述步骤,配置4MHz的DDS,同样不勾选Has Phase Out以及不勾选Output TREADY。 3. 点击IP Catalog,搜索mu

    2024年02月03日
    浏览(16)
  • FPGA学习笔记(五):DDS IP核的使用

    FPGA学习笔记(五):DDS IP核的使用

     1. 打开VIVADO,点击IP Catalog    2.搜索DDS,选择DDS Compiler    3. 配置参数 (1) 设置主频频率 50MHz   (2) 选择sine,并且勾选Has Phase Out(相位输出)    (3) 勾选Output TREDAY  (4) 输入频率    (5) 同上述步骤,再加一个DDS IP核 4. 测试文件   5. 结果展示        

    2024年02月11日
    浏览(12)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包