导言
之前发过riffa的PCIe核,很多朋友反应不会综合,或者出现很多报错,常见的报错就是无法处理,这里出一个简单的教程教大家怎么使用这个IP核,最近有计划在出PCIe的基础教程,已经在收集资料和做PPT。
这次这个简单教程主要教大家怎么综合好这个PCIe核以及处理一些奇怪的报错。
版本信息
软件版本:Vivado2018.3
riffa版本:2.2.2
编辑器:VsCode
平台:Win10
操作步骤
第一步
在方便的位置新建一个文件夹,并使用Vivado2018.3在该文件夹下建立一个新的空工程,芯片自己选,我这里选的是K7325.
第二步
将riffa-master(从公众号下载的PCIe 的IP核)目录下下载的riffa_hdl文件夹拷贝到你自己的工程目录下,路径如下。
Desktopriffa-masterfpgariffa_hdl
拷贝完后,打开自己工程下的riffa_hdl件夹,删除掉两个文件,如下:
altera.vhtranslation_altera.v
将你从公众号下载的riffaip核复制3个文件至你的工程下,因为我是使用K7,所以打开xilinx的kc705,路径如下:
Desktopriffa-masterfpgaxilinxkc705riffa_wrapper_kc705.v
Desktopriffa-masterfpgaxilinxkc705KC705_Gen2x8If128hdlKC705_Gen2x8If128.v
Desktopriffa-masterfpgaxilinxkc705KC705_Gen2x8If128constrKC705_Gen2x8If128.xdc
第三步:
打开你新建的空工程,开始配置赛灵思的PCIe IP,选择第一个IP核,配置按照自己的需求以及板子和上位机的设计进行选择,不多讲解,以后会讲。
值得注意的是,你配置的赛灵思IP和KC705_Gen2x8If128文件里面的参数应该有一致性。如下图:
第四步:
添加之前复制过来的两个文件到Vivado的Design Sources里面,将之前复制过来的riffa_hdl文件夹下所有文件一并添加到该位置。
KC705_Gen2x8If128.vriffa_wrapper_kc705.v
将之前的约束文件添加到Vivado的Constraints目录下。
第五步:
开始例化赛灵思的PCIe的集成IP,打开文件KC705_Gen2x8If128,到197行将PCIeGen2x8If128替换成赛灵思IP的名字,这里没有改过,是默认的名字,即pcie_7x_0,不清楚也可以打开例化模板复制过来,然后保存。Vivado设计文件中从第一幅图状态变为第二幅图状态。
第六步:
修改报错,这个时候如果直接综合会出现如下报错,网上也找过很多解决方案,不太成功,也比较麻烦,定位是一个取log的函数没有被包含,所以解决的方法是,按照网上,改为sv类型文件,直接调用sv的取对数函数,但都比较麻烦,所以我放弃网上的方案,自己写一个取对数的函数放到头文件,结果发现重复定义,最终定位到function.vh中已经有这个函数,但没有被全局包含,这是由于Vivado2017之后对做了一个文件包含的改变导致的,Vivado2017之前的版本都不会遇到这样问题。
这里把function.vh这个头文件设置为全局包含即可。右键function.vh点击Set Global Include即可通过编译。
B站账号:
没有回复内容