您的位置 首页 发烧友原创

一文详解XILINX的可参数化FIFO

一文详解XILINX的可参数化FIFO-FIFO是FPGA项目中使用最多的IP核,一个项目使用几个,甚至是几十个FIFO都是很正常的。通常情况下,每个FIFO的参数,特别是位宽和深度,是不同的。

FPGA设计实用分享02之XILINX的可参数化FIFO

一、背景

FIFO是FPGA项目中使用最多的IP核,一个项目使用几个,甚至是几十个FIFO都是很正常的。通常情况下,每个FIFO的参数,特别是位宽和深度,是不同的。

明德扬(MDY)在2021年承担了多个基于XILINX芯片的研发项目,包括VPX网络透明传输项目(芯片为XC7K325T-2FBG900)、某高端测试仪项目(芯片为XCKU060-FFVA1156)、某网闸设备项目(芯片为XC7Z030-FBG676)等,另外,明德扬自研了基于XC7K325T-2FBG900和基于XC7K410T-2FBG900芯片的核心板,在XILINX研发领域拥有丰富的经验。

这些项目都必须用到FIFO。如果按照通常做法,每种位宽和深度的IP,都要打开FIFO IP核界面、命名(命名不好不好分辨需要的FIFO)、设置参数、生成并编译IP核,工作量可以想象出来是非常多的。更重要的是随之而来的管理问题,如何管理这几十个不同FIFO,如何检查FIFO的设置是否正确,都是一个不小的挑战。

对于我们专门承接项目的团队,绝不可忍受如此重复、枯燥、容易出错的工作。经过精心研究,终于找到了一条实用的方法:使用XILINX的原语–xpm_fifo_async和xpm_fifo_sync。

XILINX原语xpm_fifo_async和xpm_fifo_sync在FPGA中,可以直接例化使用,并且可以参数化FIFO的位宽和深度的。即在设计时,不用生成FIFO IP,直接例化就可以使用了。

二、获得参考代码

一文详解XILINX的可参数化FIFO

打开VIVADO软件,点击上图中的Language Templates,将会弹出Language Templates窗口,如下图。

一文详解XILINX的可参数化FIFO

在Language Templates窗口中,依次点击verilog、Xilinx Parameterized Macros(XPM)、XPM、XPM_FIFO,如上图。可以看到有三种FIFO,分别是异步的XPM FIFO:xpm_fifo_async、AXI总线的FIFO:xpm_fifo_axis和同步的XMP FIFO:xpm_fifo_sync。

一文详解XILINX的可参数化FIFO

选择xpm_fifo_async,右边的Preview窗口,将出现xpm_fifo_async的注释以及参考代码。将此部分代码拷出来,并将注释删除,剩下的是xpm_fifo_async的例化参考。

一文详解XILINX的可参数化FIFO

上图是对xpm_fifo_async的参数例化部分。下面是需要重点关注并经常使用的参数。

FIFO_WRITE_DEPTH:FIFO的写深度,其实就是在这里设置FIFO的深度,注意该值通常是2的N次方,如8、16、32、64等数。

PROG_EMPTY_THRESH:FIFO的快空的水线。当FIFO存储的数据量小于该水线时,FIFO的快空信号将会变高。

PROG_FULL_THRESH:FIFO的快满的水线。当FIFO存储的数据量大于该水线时,FIFO的快满信号将会变高,表示有效。

READ_DATA_WIDTH:读数据的位宽。

WRITE_DATA_WIDTH:将数据的位宽。

RD_DATA_COUNT_WIDHT:读侧数据统计值的位宽。

WR_DATA_COUNT_WIDTH:写侧数据统计值的位宽。

一文详解XILINX的可参数化FIFO

上图是对xpm_fifo_async的接口信号部分。下面是需要重点关注并经常使用的信号。

wr_clk:FIFO的写时钟

rst:FIFO的复位信号,高电平有效。要注意的是,该信号是属于写时钟域的。

wr_en:FIFO的写使能信号。

din:FIFO的写数据

full:写满指示信号,当FIFO写满时,该信号变高。

wr_data_count:FIFO存储数据量指示信号,用来指示当前FIFO已经写入但未读出的数据个数。

rd_clk:FIFO的读时钟。

rd_en:FIFO的读使能。

dout:FIFO读出的数据。

empty:FIFO的空指示信号。当其为1表示FIFO处于空状态,当其为0,表示FIFO内有数据。

三、定义自用的FIFO模块

从第二步可以看出,xpm_fifo_async是可以参数化深度和位宽的。但xpm_fifo_async有很多参数和信号,并且其中有部分是不使用的。为了使用上的方便,可以自定义自用的FIFO模块。

例如,明德扬就定义了一个模块mdyFifoAsy,该信号的接口信号如下图。可以看出,名称更加规范,并且定义常用的信号,如读时钟rd_clk,写时钟wrclk、写使能wrreq等信号。

一文详解XILINX的可参数化FIFO

明德扬还在模块mdyFifoAsy定义了一些常用的参数,分别是FIFO深度参数:DEPT_W;FIFO位宽的参数:DATA_W,还有FIFO快满参数AL_FUL和快空参数AL_EMP,如下图。

一文详解XILINX的可参数化FIFO

接下来,就是在mdyFifoAsy中例化并使用xpm_fifo_async了。如下图,就是对xpm_fifo_async的参数例化。将DEPT_W传给FIFO_WRITE_DEPTH,DATA_W传给READ_DATA_WIDTH等。

一文详解XILINX的可参数化FIFO

下图是对xpm_fifo_async的信号例化。将不用的信号留空,将dout连到q,din连到data,wr_en连到wrreq等。您可以根据自己情况来定制FIFO。

一文详解XILINX的可参数化FIFO

四、应用

定制完自己的FIFO后,就可以直接例化使用了。

一文详解XILINX的可参数化FIFO

上图就是使用了一个位宽为8,深度为256的FIFO。

一文详解XILINX的可参数化FIFO

上图就是使用了一个位宽为18,深度为1024的FIFO。

FIFO是FPGA、芯片设计中,最常用的IP核,在存储控制、算法实现、接口设计中,都少不了FIFO,因此合理并正确使用FIFO的技术就非常有必要了,明德扬录制了FIFO的训练视频,掌握后技术能力将有大提升。

通过上面介绍可知,通过此种方式,再也不用生成FIFO IP核啦,整个工程大小基本上可以减少一大半。

上面举的例子是xpm_fifo_async,同步FIFO:xpm_fifo_sync的使用方法是类似的。

明德扬(MDY)除了承接项目外,还可为客户提供FPGA芯片、电源芯片、AD芯片等元器件,可找我们了解。

审核编辑:汤梓红

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

反射内存卡编程的三个寄存器组

反射内存卡编程的三个寄存器组

反射内存卡编程的三个寄存器组-反射内存卡编程

基本 RFM5565 反射内存写入和读取操作需要很少或根本不需要编程知识。反射内存板上电后进入功能模式。用户将需要访问 PCI配置寄存器(基址寄存器 0,1,2 和 3)获取系统 BIOS 分配寄存器组和反射内存的基址。反射内存的寄存器组的基址和内存地址可以比较随意,。对于超出了基本的设置,如启用或禁用中断或 DMA 周期的操作,用户必须知道三个寄存器组内具体寄存器分配,本章提供的这些信息。

制导系统测试发挥着越来越重要的作用

制导系统测试发挥着越来越重要的作用

制导系统测试发挥着越来越重要的作用-制导系统的测试要求保证最高级别的可靠性,以达到差错归零的要求。NI 提供的解决方案,从模块化硬件的隔离设计、PXI 平台的电气结构特性、实时操作系统、稳定的驱动和开发软件等多个方面,保证了测试系统可以在7/24 工作条件下满足高可靠性的要求

同步通信和异步通信有什么区别

同步通信和异步通信有什么区别-个人认为即便再过几十年,目前市面上还能看到很多51内核的单片机,作为最基础的型号,它是没有那么快被淘汰的,所以大学教材都还应该坚持51的课程,因为51这个课程可以完整清晰地讲明白单片机的基础内部工作原理,大家可以回过头去看看计算机原理这本书,看完之后不知道如何搭建一个CPU,学过模拟电路,数字电路等其它电学课程也都做不能做出一个处理器,但是唯独学了51这个基础课程就可以尝试用电路去搭建一个简单的单片机,所以我认为51单片机是大学电学课程里面为数不多的精品课程,在读学生一定是不能抛弃的。

限流式保护器在防范电动自行车火灾等低压电气火灾中的应用

限流式保护器在防范电动自行车火灾等低压电气火灾中的应用-前言        众所周知,电动自行车是以轮毂电机、电机控制器、金属车架等部件为主要结构,以动力电池为行动能源,以多元化低压电气系统为控制手段。其以轻便快捷、价格便宜、绿色环保、通行性高、停车不设限等先天优势,在我国的城乡迅速普及,成为广大群众出行的主要代步工具。与此同时,电动自行车引发的火灾事故不断上升,亡人伤人风险与日俱增。防范电动自行车火灾是当前消防安全管理的重要内容之一。本文从电动自行车构成部分低

智慧消防应用中多设备联动火灾报警系统

智慧消防应用中多设备联动火灾报警系统-1 概述   进入新时期后,信息化手段正在全方面渗透于智能城市的全方面建设中,而与之有关的消防系统也具备了智能化的显著特征。然而不应当忽视,当前多数消防系统仍然设置为独立式的,针对各种类型的消防报警设施也是单独安装并且单独购置的。在此种状态下,消防系统存在较大可能将会表现为错误报告的现象,以至于延误了珍贵的救灾时间。与之相比,具备联动特征的火灾报警模式更加有助于杜绝误报火情的现象,这是因为其配置了联动性的

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部