VIVADO及ZYNQ使用經驗

1.添加debug核的合理方法是在源代碼中添加(*mark_debug="true"*),綜合後,打開綜合結果,set debug內這些標記的信號全部在網標內,不會被優化掉。如果不在代碼里加這些標記,直接在綜合結果裏添加net,很多感興趣的信號會被優化掉,且殘缺不全。

2.若果debug核使用的時鐘是zynq ps端輸出的時鐘,那麼燒錄完bit文件後,是不會自動彈出debug界面的,需要在軟件工程裏,debug軟件工程,讓cpu跑起來,產生時鐘信號,再回vivado內refresh device,即可彈出debug界面。

3.自定義IP內代碼被改動後,Block Design內會提醒刷新IP路徑,然後在窗口下方勾選改動的IP,點擊UPDATE IP按鈕,即可更新IP核。

4.重新生成bit文件後,建議關閉eclipse軟件工程,vivado內file-> export hardware,重新輸出.hdf等硬件信息文件,然後重新打開eclipse軟件工程,eclipse會自動更新硬件信息,並重新編譯整個工程。

5.邏輯模塊IP的多箇中斷不能直接與CPU的中斷輸入連接,需要通過xlconcat組件合併後,一起連接至CPU上。且邏輯模塊IP的中斷最好在Block Design內連接到CPU上,如果引出BD,然後在頂層模塊用代碼方式連接到CPU的中斷輸入端,產生的.hdf文件生成的xparamerters.h中,不會產生中斷號,導致無法在c程序中註冊中斷函數。

6.vivado IP封裝時,如何設置模塊的某個中斷輸出爲中斷類型?interface and port (大概是這個名字)標籤裏,選中該ip port信號,右鍵->auto infer single bit interface 爲interrupt即可。隨後選中該信號的上一級目錄ip bus,右鍵->edit interface ->paramerters裏可設置中斷觸發類型。

7.Block Design內的axi interconnect 組件,在輸入輸出位寬不一致的時候,會引入位寬轉換功能,該功能引入後,會嚴重降低axi總線的傳輸效率,降低帶寬。所以使用該組件時,兩端的總線位寬應一致。

8.zynq HP總線只用的是axi3協議,而自定義封裝的IP都是axi4協議,因此,axi interconnect組件輸入端接axi4主端口,輸出接CPU的HP從端口,即便位寬一致,BD自動連線時也會調用axi interconncet組件,引入協議轉換功能。該功能在某些情況下會降低傳輸效率(axi 亂序傳輸時),將連續讀指令multiple outstanding 轉換爲single outstanding(即讀數據返回後纔會發出下一次讀請求,嚴重降低傳輸效率)。一般情況下該功能不會降低傳輸效率。爲避免這種可能,可將主從端口信號引出BD,在頂層代碼中強行連接axi3 axi4協議(前提是設計中未使用axi3/4有差異的aqos,aid等幾個信號),可避免調用axi interconnect組件。

9.zynq中欲利用CPU讀寫小數據量到DDR,須使用BSP函數Xil_DCache_Disable();關閉數據緩存使能,否則,讀寫操作可能被執行到CPU的32KB DCache中,而沒有實際讀寫到DDR上。

10.vivado2016.4下,不要在子模塊中定義inout接口,並做三態選擇。而應該將輸入,輸出,選擇信號寄存器引出到top層,在top層內定義inout並做三態選擇,否則,1.inout口無法被佈局佈線爲iobuf/obuft三態門 2.inout的輸入輸出三態選擇信號寄存器無法被綁定到IOB(IO Block)的寄存器上。

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