一、配置好XDMA和MIG,二者通过AXI Interconnect 连接,系统整体工程如下:
需要注意的地方是:
1、MIG是的复位是高电平复位,当接到axi interconnect时需要加一个反相器再接过去。
2、XDMA的user_lnk_up是用来表示PCIE是否与电脑连接起来的信号,把它接到LED灯,LED低电平有效,所以这里也接一个反相器。
3、在想观测的信号上添加DEBUG信号,之后run automation时vivado会为我们自动生成ILA。
4、中断信号暂时不用,make external, 然后把XDMA和MIG的时钟复位都make external,并将名字修改得容易分辨。
5、XDMA映射地址要改一下:
6、、对design进行generate output products并重新生成顶层,生成顶层时选择第一个选项,不要让vivado自动管理,否则无法编辑顶层。(因为待会儿要将XDMA的差分时钟信号转成单端)
附:第一个选项,用户可以根据需要修改顶层; 第二个选项:用户无法修改顶层,让vivado来自动更新
二、顶层文件的修改
先大概看下顶层有些什么信号:
①MIG的时钟及复位就不用了,要把input那里的sys_rst_mig 和clk删了,复位的话下面直接给他赋1。 同样的,暂时不用中断,给0;
②原理图上PCIE的参考时钟是差分的,但BD界面中xdma核的参考时钟是单端的,这里需要转换一下,使用IBUFDS原语,IBUFDS_GTE2。(在vivado的Language Templates中搜索IBUFDS即可找到),复制到顶层中修改。
修改后的顶层如下:
三、跑下综合看有没有报错,接着绑定引脚。
综合设计的默认界面是这样的:
在右上角小框里选IO Planning就可以绑定引脚了
四、引脚绑定
这里需要绑定的引脚有pcie的单端输入时钟、pcie复位信号, 接到led灯的link_up信号,这个时候需要看原理图了。
这里PCIE的参考时钟接到N8, 复位的话不知道为什么没接引脚,它是这样说的
后来得知,板子需要转接板来复位,所以这里就没绑定引脚了。
DDR3与PCIE的管脚已经默认分配好了,但还是需要注意下,板子的数据差分对是倒序还是顺序连接,vivado默认的是倒序连,比如T0--->TX3 T1--->TX2…..,去原理图里看下对不对,因为有些板子会顺序连接,比如tx0 -->tx0,tx1-->tx1这样。如果需要修改线序的话,要在这个地方修改,把顺序倒一下:
在这下面找到一个.xdc文件,比如我的叫做 design_1_xdma_0_0_pcie2_ip-PCIE_X0Y0.xdc
五、生成比特流
个人学习笔记,仅供参考,欢迎指正,后面有空会介绍XDMA上机测试前的准备工作。