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設備。

 


 

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