pcie金手指逆序导致主机不识别xdma解决方法

先上图,图1为自制底板的原理图,图2为官方底板的原理图,可以看出自制底板的rx和tx管脚和官方是相反的,这就导致了主机的设备管理不能识别到xdma设备(复位信号也可能导致不识别,故先确认复位信号),这是物理层的接线原因导致的,解决只有两种方案:重新画板和FPGA修改xdc约束,下面详细介绍xdc约束文件修改。

38d81a523ee34624a3f28f56a733f256.png

图1 自制底板原理图

476a8a008adc44b480295f187db1159e.png

图2 官方底板原理图

在bd文件中生成xdmaIP核后,找到底层的xdc约束文件,路径如下:

工程文件 \工程名.srcs\sources_1\bd\system\ip\system_xdma_0_0\ip_0\source。

该路径下拉到最后,可以看到一个xdc约束文件,如图3所示:

12a56a4b85b64786beb0447995cf3090.png

图3 xdc文件

打开后可以看到所有的通道约束,由于此版本使用pciex4接口,故只有4路通道,如图4所示:

c9317269a4f04e2b82ab4dbdbb6db7c5.png

图4 原版底层xdc文件

此时绑定管脚是按照官方的顺序,我们要修改成自定义的顺序,修改后为下图所示:

df03ca39eaf040cb89b9f6f70c9010f0.png

图5 修改后xdc文件

修改后vivado中的bd文件就不要动了,如果重新generate后,该约束文件会恢复,需要重新修改。

修改完底层后,在vivado中的顶层约束文件中按照自制板卡的引脚顺序去约束,如下图所示:

3313ca7c94634a75a07f413cb68a97ce.png

图6 vivado顶层自定义xdc文件

保存后就可以直接生成bit文件了,上板测试就可以看到设备可以识别。

7b10ed7f3dee40f8830589a095af9161.png

图7 设备识别

当然这是rx和tx一起逆序了,也就是说rx0_p、rx0_n、tx0_p、tx0_n这四组仍然绑定在同一个区块中,从原来的x0y7变成了后来的x0y4,所以可以直接修改通道顺序,但是如果同一个通道中的rx和tx并非绑定在同一区块的高速引脚上时,就需要注意,可以先在底层同样位置的xdc文件中用户位置约束之前用{}设置空引脚:

set_property PACKAGE_PIN {} [get_ports RX0_P]

set_property PACKAGE_PIN {} [get_ports RX1_P]

set_property PACKAGE_PIN {} [get_ports RX2_P]

set_property PACKAGE_PIN {} [get_ports RX3_P]

然后把引脚约束成自定义引脚:

set_property PACKAGE_PIN B11 [get_ports RX0_P]

set_property PACKAGE_PIN D14 [get_ports RX1_P]

set_property PACKAGE_PIN B13 [get_ports RX2_P]

set_property PACKAGE_PIN D12 [get_ports RX3_P]

然后打开工程,在顶层的xdc中加入约束,注意极性:

set_property PACKAGE_PIN {} [get_ports {pcie_mgt_rxn[0]}]

set_property PACKAGE_PIN {} [get_ports {pcie_mgt_rxn[1]}]

set_property PACKAGE_PIN {} [get_ports {pcie_mgt_rxn[2]}]

set_property PACKAGE_PIN {} [get_ports {pcie_mgt_rxn[3]}]

set_property PACKAGE_PIN A11 [get_ports {pcie_mgt_rxn[0]}]

set_property PACKAGE_PIN C14 [get_ports {pcie_mgt_rxn[1]}]

set_property PACKAGE_PIN A13 [get_ports {pcie_mgt_rxn[2]}]

set_property PACKAGE_PIN C12 [get_ports {pcie_mgt_rxn[3]}]

然后烧录板卡,重启电脑。

第二种方案我没试过,但是大致的操作流程是这样的,有需要可以自己尝试一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值