vivado 覆盖ip核生成的xdc约束

http://bbs.elecfans.com/jishu_1681130_1_1.html

使用PCIE等IP时,IP核例化生成的文件中包含了xdc以固定引脚分配,该xdc是read only的,但还是有办法修改,麻烦一些而已。Vivado默认使用此xdc文件,因此用户在综合后重新设定引脚绑定后,生成的用户xdc与ip xdc冲突,用户的约束不管用。解决此问题的方法是,在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 Y2 [get_ports RX0_P]
set_property PACKAGE_PIN W4 [get_ports RX1_P]
set_property PACKAGE_PIN V2 [get_ports RX2_P]
set_property PACKAGE_PIN U4 [get_ports RX3_P]

这个问题出现在黑金的AX7103开发板上,当我用vivado 2018.2生成XDMA后,无论怎么调试电脑都识别不了PCIE。老版本的教程中并没有指出引脚绑定有什么不同,直到我查看了kc705板子的pcie引脚后,发现PCIE的0-3通道对应GTP的3-0通道,这也是生成XMDA IP后,自带XDC约束的引脚顺序,而黑金在设计时,PCIE的0 1 2 3 通道分别对应GTP的1 0 2 3通道。该工程综合后,打开综合,IO约束,绑定好正确的引脚后,在xdc文件中加入以下几句话就可以了。

set_property PACKAGE_PIN {} [get_ports {pci_exp_rxn[3]}]
set_property PACKAGE_PIN {} [get_ports {pci_exp_rxn[2]}]
set_property PACKAGE_PIN {} [get_ports {pci_exp_rxn[1]}]
set_property PACKAGE_PIN {} [get_ports {pci_exp_rxn[0]}]

set_property PACKAGE_PIN C9 [get_ports {pci_exp_rxn[3]}]
set_property PACKAGE_PIN A10 [get_ports {pci_exp_rxn[2]}]
set_property PACKAGE_PIN A8 [get_ports {pci_exp_rxn[1]}]
set_property PACKAGE_PIN C11 [get_ports {pci_exp_rxn[0]}]

此外,AX7103插入电脑后,开机,下载程序后,用winDriver即可以看到有xilinx的设备ID7024,10EE就是xilinx厂商ID。装驱动的顺序无所谓,下载程序后,在设备管理器里,jungo下可以看到装好驱动(黑金提供的)后的AX7103设备,不断电重启电脑,再打开上位机就可以测试了。该上位机是和黑金提供的bit配套使用,2018.2版本生成的bit,黑金的上位机只能读,不能写。总结说就是,开机后再烧写程序,加载驱动,重启电脑才能正确驱动PCIE设备。

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章