本篇簡單介紹Xilinx的A7 FPGA板卡在連接著下載器時,無法從flash中讀取配置信息。
在測試新的FPGA板卡時,發(fā)現(xiàn)板卡連接著下載器時,無法從flash中讀取配置好的數(shù)據(jù)。
經(jīng)過多次嘗試,發(fā)現(xiàn)以下幾個現(xiàn)象:
····不連接下載器時,重啟板卡后,直接可以獲取到flash內(nèi)的內(nèi)容。
····連接下載器時,且打開著vivado的下載界面時,重啟板卡后,無法獲取到flash內(nèi)的內(nèi)容。
····連接下載器時,關(guān)閉著vivado的下載器界面時,重啟板卡后,可以獲取到flash內(nèi)的內(nèi)容。
經(jīng)過查詢,從xilinx的官網(wǎng)上,得到以下信息:
Vivado 2016.1以后的硬件管理器新增的功能:當(dāng)某個板卡斷電或電纜斷開時,Vivado會關(guān)閉硬件管理器中的硬件目標(biāo)。
當(dāng)板卡重新通電或重新連接電纜時,Vivado將自動嘗試在硬件管理器中重新打開硬件目標(biāo)。除了重新打開硬件目標(biāo),硬件管理器將嘗試刷新所有設(shè)備寄存器,包括讀取配置狀態(tài)寄存器。
由于這種新行為,如果滿足以下所有條件,則可能會出現(xiàn)間歇性配置故障:
····使用除JTAG以外的任何配置接口
····Vivado硬件管理器已打開,并連接了Digilent或Xilinx USB編程電纜
····主板重啟或通電。
如果使用了任何配置接口(除了JTAG ),并且還連接了JTAG電纜,則配置可能會被JTAG鏈自動檢測和/或寄存器讀取中斷,并且不會在加電或重啟時完成配置。
產(chǎn)生這種問題的深入分析
該問題可能在三種情況下發(fā)生:
····設(shè)備通電或重啟。脈沖PROGRAM_B不會導(dǎo)致此問題,因?yàn)閂ivado硬件管理器不會看到電纜斷開,并執(zhí)行電纜自動檢測。
····用戶發(fā)出“刷新硬件設(shè)備“命令
····用戶插入JTAG電纜
解決方案如下:
1)設(shè)置以下參數(shù),禁用通電檢測set_param labtools.auto_update_hardware 0注意:您需要創(chuàng)建一個Vivado_init.tcl腳本并在其中添加上述參數(shù)。
關(guān)于Vivado_init.tcl的其他信息:當(dāng)您啟動Xilinx設(shè)計工具時,它會尋找Vivado_init.tcl兩個不同位置的初始化腳本:
1)在軟件安裝中:安裝目錄/viva do/version/scripts/viva do _ init . TCL安裝目錄是Vivado設(shè)計套件的安裝目錄。
2)在本地用戶目錄中:對于Windows 7:% APPDATA % Roaming Xilinx viva do viva do _ init . TCL對于Linux:$HOME/。Xilinx/Vivado/Vivado_init.tcl?如果Vivado_init.tcl存在于這兩個位置,Vivado首先從安裝目錄獲取文件,然后從您的主目錄獲取文件。如需更多信息,請參閱(UG894)中的加載和運(yùn)行Tcl腳本一章使用Tcl腳本的Vivado設(shè)計套件用戶指南.https://docs.amd.com/access/sources/dita/map?Isla test = true & URL = ug 894-vivado-TCL-scripting & ft:locale = en-US2)在通電或重啟之前,拔下電纜。
3)減緩輪詢的發(fā)生。例如,要每小時輪詢一次,請使用以下選項啟動hw_server:hw_server -e "set jtag-poll-delay 3600000000"This command should be called in the CMD window instead of Vivado Tcl console.
4)按如下方式在JTAG模式下關(guān)閉并重新打開目標(biāo),以防止發(fā)生任何輪詢,然后恢復(fù)到正常模式: a)在JTAG模式下關(guān)閉并重新打開目標(biāo):set tmp_target [ get_hw_targets -filter { IS_OPENED == 1 }]close_hw_target $tmp_targetopen_hw_target -jtag_mode on $tmp_targetset_property LOCK true [get_property ?HW_JTAG $tmp_target]b)一旦部件啟動,恢復(fù)到正常模式:set_property LOCK false [get_property ?HW_JTAG $tmp_targetclose_hw_target $tmp_targetopen_hw_target $tmp_target
上述方式,歡迎小伙伴進(jìn)行驗(yàn)證(筆者暫未驗(yàn)證,以上信息來自xilinx的官方網(wǎng)站)。
本篇內(nèi)容中有部分資源來源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系作者。