如何添加IP核到Libero软件 *** 作指南

如何添加IP核到Libero软件 *** 作指南,第1张

一、在安装完软件后,我们新建一个工程,以SmartFusion2器件为例,新建工程

这里的MSS核很明显是红色的,证明我们缺少了MSS核(用于 *** 作Cotex-M3)。我们先把上面Use Design Tool这一项的勾取消掉,点击OK。

二、单击软件左下角的Catalog,

这里罗列的就是软件关联到的IP核了,可以看到有的是灰色,有的是红色;其中灰色表示下载可以用,红色表示该IP核为最新版本开发软件可以用,现在的软件版本太低无法使用。然后你可以点击下方的Download them now,这样所有的IP核都能下载到;也可以在某个IP核上右键点击,选择Download,单独下载这个IP核。

三、下载完IP核,如果你的版本太低对不上,那么你就得更换对应版本IP核了。在对应的IP核上右键点击,选择show details,

我用的是Libero11.3,而最新的版本是11.4,对应这个IP核是1.1.209,如此我的这个IP核就用不了了,我必须使用上面的1.1.100这个才可以。

四、选择这个链接这里面有老版本的IP核,可以全部下载,也可以选择要的那个IP核下载,

选择要的IP核,下载后就可以了。

五、点击上面的配置选项,

选择Add Core to Vault,然后找到对应的IP核文件,

点击打开,将其导入即可。

六、如果你的软件版本低,即使下载了IP核,IP核选项里依然显示是最新版本对应的IP核,这样你需要在对应的IP核上右键点击Remove from vault,这样就将其去掉,你的低版本IP核就会出现了、

一、背景

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,直接例化就可以使用了。

二、获得参考代码

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

在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。

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

上图是对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:写侧数据统计值的位宽。

上图是对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等信号。

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

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

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

四、应用

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

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

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

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

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

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

如果是QII的IP核,在QII软件中通过Megacore Wizard加入,就可以了。

如果是第三方的IP核,你应该有他的全部代码。把所有代码都加入到你的工程中,在需要的位置,例化顶层文件,连接好所有的接口,就行。

我想,如果你需要使用这个IP,那么你对这个IP的顶层接口应该了解,对它的功能,应该知道。只要把它当做一些模块加入进来就好了。

如果是没有代码的网表文件,那就在工程中加入网表文件并例化。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11564501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存